# HG changeset patch # User mikade # Date 1313950236 -7200 # Node ID 2224829af8c2f656c4c1ddcf29905c33e1c716a8 # Parent c24d29a538af4cd07f3cb3a681779e5028621157# Parent a9a0c67f9656dc4bfe43ac47f28f92d94c8b0c63 merge diff -r c24d29a538af -r 2224829af8c2 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Sun Aug 21 18:43:59 2011 +0200 +++ b/hedgewars/GSHandlers.inc Sun Aug 21 20:10:36 2011 +0200 @@ -4603,54 +4603,56 @@ procedure doStepHammerHitWork(Gear: PGear); var - i, ei: LongInt; + i, j, ei: LongInt; HitGear: PGear; begin AllInactive := false; HitGear := Gear^.IntersectGear; dec(Gear^.Timer); if (HitGear = nil) or (Gear^.Timer = 0) or ((Gear^.Message and gmDestroy) <> 0) then - begin + begin DeleteGear(Gear); exit - end; + end; if (Gear^.Timer mod 5) = 0 then - begin + begin AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust); - i := hwRound(Gear^.X) - Gear^.Radius - LongInt(GetRandom(2)); - ei := hwRound(Gear^.X) + Gear^.Radius + LongInt(GetRandom(2)); + i := hwRound(Gear^.X) - HitGear^.Radius + 2; + ei := hwRound(Gear^.X) + HitGear^.Radius - 2; + for j := 1 to 4 do DrawExplosion(i - GetRandom(5), hwRound(Gear^.Y) + 6*j, 3); + for j := 1 to 4 do DrawExplosion(ei + GetRandom(5), hwRound(Gear^.Y) + 6*j, 3); while i <= ei do - begin - DrawExplosion(i, hwRound(Gear^.Y) + 3, 3); + begin + for j := 1 to 11 do DrawExplosion(i, hwRound(Gear^.Y) + 3*j, 3); inc(i, 1) - end; + end; if CheckLandValue(hwRound(Gear^.X + Gear^.dX + SignAs(_6,Gear^.dX)), hwRound(Gear^.Y + _1_9) , lfIndestructible) then - begin + begin Gear^.X := Gear^.X + Gear^.dX; Gear^.Y := Gear^.Y + _1_9; + end; end; - SetAllHHToActive; - end; if TestCollisionYwithGear(Gear, 1) then - begin + begin Gear^.dY := _0; SetLittle(HitGear^.dX); HitGear^.dY := _0; - end + end else - begin + begin Gear^.dY := Gear^.dY + cGravity; Gear^.Y := Gear^.Y + Gear^.dY; if hwRound(Gear^.Y) > cWaterLine then Gear^.Timer := 1 - end; + end; Gear^.X := Gear^.X + HitGear^.dX; HitGear^.X := Gear^.X; - HitGear^.Y := Gear^.Y - int2hwFloat(cHHRadius); + SetLittle(HitGear^.dY); + HitGear^.Active:= true; end; procedure doStepHammerHit(Gear: PGear);