# HG changeset patch # User nemo # Date 1324145553 18000 # Node ID 76d63e00002f49159c4c27b95646a57150425ce0 # Parent c938a35588af7ca79e0fee01d7a745f7a374b73c Little tweak to reduce noob fail. Delay drill rocket explosion by 250ms after spawn in Attack. Unless you drop it straight down w/ no power, it should not explode immediately in your face. diff -r c938a35588af -r 76d63e00002f hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Thu Dec 15 12:57:26 2011 -0500 +++ b/hedgewars/GSHandlers.inc Sat Dec 17 13:12:33 2011 -0500 @@ -3169,9 +3169,10 @@ end end; - t := CheckGearsCollision(Gear); + if GameTicks > Gear^.FlightTime then t := CheckGearsCollision(Gear) + else t := nil; //fixes drill not exploding when touching HH bug - if (Gear^.Timer = 0) or (t^.Count <> 0) or + if (Gear^.Timer = 0) or ((t <> nil) and (t^.Count <> 0)) or ( ((Gear^.State and gsttmpFlag) = 0) and (TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) = 0) and (not TestCollisionXWithGear(Gear, hwSign(Gear^.dX)))) @@ -3222,16 +3223,17 @@ Gear^.dX := oldDx; Gear^.dY := oldDy; - t := CheckGearsCollision(Gear); - if (t^.Count = 0) then - begin + if GameTicks > Gear^.FlightTime then t := CheckGearsCollision(Gear) + else t := nil; + if (t = nil) or (t^.Count = 0) then + begin //hit the ground not the HH t2 := _0_5 / Distance(Gear^.dX, Gear^.dY); Gear^.dX := Gear^.dX * t2; Gear^.dY := Gear^.dY * t2; - end - else - begin + end + else if (t <> nil) then + begin //explode right on contact with HH if (Gear^.State and gsttmpFlag) <> 0 then doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound) @@ -3239,7 +3241,7 @@ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound); DeleteGear(Gear); exit; - end; + end; Gear^.SoundChannel := LoopSound(sndDrillRocket); Gear^.doStep := @doStepDrillDrilling; diff -r c938a35588af -r 76d63e00002f hedgewars/uGearsHedgehog.pas --- a/hedgewars/uGearsHedgehog.pas Thu Dec 15 12:57:26 2011 -0500 +++ b/hedgewars/uGearsHedgehog.pas Sat Dec 17 13:12:33 2011 -0500 @@ -367,7 +367,9 @@ amResurrector, amStructure, amTardis, amPiano: CurAmmoGear:= newGear; end; - if (CurAmmoType = amMine) or (CurAmmoType = amSMine) and (GameFlags and gfInfAttack <> 0) then newGear^.FlightTime:= GameTicks + 1000; + if ((CurAmmoType = amMine) or (CurAmmoType = amSMine)) and (GameFlags and gfInfAttack <> 0) then + newGear^.FlightTime:= GameTicks + 1000 + else if CurAmmoType = amDrill then newGear^.FlightTime:= GameTicks + 250; if Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NeedTarget <> 0 then begin newGear^.Target.X:= TargetPoint.X;