diff -r de3b3df215c3 -r de2026031833 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Mon Aug 02 23:15:34 2010 +0200 +++ b/hedgewars/GSHandlers.inc Tue Aug 03 00:36:36 2010 +0200 @@ -401,7 +401,12 @@ if i mod 2 <> 0 then Fire^.State := Fire^.State or gsttmpFlag; end end; - gtGasBomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound or EXPLPoisoned); + gtGasBomb: + begin + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound); + for i:= 0 to 2 do + AddGear(hwRound(Gear^.X) - 30 + GetRandom(60), hwRound(Gear^.Y) - 20 + GetRandom(40), gtPoisonCloud, 0, _0, _0, 0); + end; end; DeleteGear(Gear); exit @@ -3864,4 +3869,19 @@ Gear^.doStep := @doStepFlamethrowerWork end; - +procedure doStepPoisonCloud(Gear: PGear); +begin + if Gear^.Timer = 0 then + begin + DeleteGear(Gear); + exit + end; + dec(Gear^.Timer); + Gear^.X:= Gear^.X + Gear^.dX; + Gear^.Y:= Gear^.Y + Gear^.dY; + Gear^.dX := Gear^.dX + cWindSpeed / 2; + Gear^.dY := Gear^.dY + cGravity / 100; + if (GameTicks mod 250) = 0 then + doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLDontDraw or EXPLNoGfx or EXPLNoDamage or EXPLDoNotTouchAny or EXPLPoisoned); + AllInactive:= false; +end; \ No newline at end of file