2035 or (cMineDudPercent = 0) |
2035 or (cMineDudPercent = 0) |
2036 or (getRandom(100) > cMineDudPercent) then |
2036 or (getRandom(100) > cMineDudPercent) then |
2037 begin |
2037 begin |
2038 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Boom, Gear^.Hedgehog, EXPLAutoSound); |
2038 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Boom, Gear^.Hedgehog, EXPLAutoSound); |
2039 DeleteGear(Gear); |
2039 DeleteGear(Gear); |
2040 exit // redundant but we've had too many delete gear bugs |
2040 exit // redundant but we've had too many delete gear bugs |
2041 end |
2041 end |
2042 else |
2042 else |
2043 begin |
2043 begin |
2044 vg:= AddVisualGear(hwRound(Gear^.X) - 4 + Random(8), hwRound(Gear^.Y) - 4 - Random(4), vgtSmoke); |
2044 vg:= AddVisualGear(hwRound(Gear^.X) - 4 + Random(8), hwRound(Gear^.Y) - 4 - Random(4), vgtSmoke); |
2045 if vg <> nil then |
2045 if vg <> nil then |
2079 EraseLand( |
2079 EraseLand( |
2080 hwRound(Gear^.X) - SpritesData[sprFrozenAirMine].Width div 2, |
2080 hwRound(Gear^.X) - SpritesData[sprFrozenAirMine].Width div 2, |
2081 hwRound(Gear^.Y) - SpritesData[sprFrozenAirMine].Height div 2, |
2081 hwRound(Gear^.Y) - SpritesData[sprFrozenAirMine].Height div 2, |
2082 sprFrozenAirMine, 0, 0, false, false, false, false); |
2082 sprFrozenAirMine, 0, 0, false, false, false, false); |
2083 DeleteGear(Gear); |
2083 DeleteGear(Gear); |
2084 exit |
2084 exit |
2085 end; |
2085 end; |
2086 doStepFallingGear(Gear); |
2086 doStepFallingGear(Gear); |
2087 exit |
2087 exit |
2088 end; |
2088 end; |
2089 isUnderwater:= CheckCoordInWater(hwRound(Gear^.X), hwRound(Gear^.Y) + Gear^.Radius); |
2089 isUnderwater:= CheckCoordInWater(hwRound(Gear^.X), hwRound(Gear^.Y) + Gear^.Radius); |
2468 AddGear(x, y, gtFlame, 0, _0, _0, 0); |
2468 AddGear(x, y, gtFlame, 0, _0, _0, 0); |
2469 end |
2469 end |
2470 else if k = gtTarget then |
2470 else if k = gtTarget then |
2471 uStats.TargetHit() |
2471 uStats.TargetHit() |
2472 else if k = gtExplosives then |
2472 else if k = gtExplosives then |
2473 begin |
2473 begin |
2474 doMakeExplosion(x, y, Gear^.Boom, hog, EXPLAutoSound); |
2474 doMakeExplosion(x, y, Gear^.Boom, hog, EXPLAutoSound); |
2475 for i:= 0 to 31 do |
2475 for i:= 0 to 31 do |
2476 begin |
2476 begin |
2477 dX := AngleCos(i * 64) * _0_5 * (getrandomf + _1); |
2477 dX := AngleCos(i * 64) * _0_5 * (getrandomf + _1); |
2478 dY := AngleSin(i * 64) * _0_5 * (getrandomf + _1); |
2478 dY := AngleSin(i * 64) * _0_5 * (getrandomf + _1); |
2479 AddGear(x, y, gtFlame, 0, dX, dY, 0); |
2479 AddGear(x, y, gtFlame, 0, dX, dY, 0); |
2480 AddGear(x, y, gtFlame, gstTmpFlag, -dX, -dY, 0); |
2480 AddGear(x, y, gtFlame, gstTmpFlag, -dX, -dY, 0); |
2481 end |
2481 end |
2482 end; |
2482 end; |
2483 DeleteGear(Gear); |
2483 DeleteGear(Gear); |
2484 exit |
2484 exit |
2485 end; |
2485 end; |
2486 |
2486 |
2487 if k = gtExplosives then |
2487 if k = gtExplosives then |
2488 begin |
2488 begin |
2489 //if V > _0_03 then Gear^.State:= Gear^.State or gstAnimation; |
2489 //if V > _0_03 then Gear^.State:= Gear^.State or gstAnimation; |
6478 iter^.State:= iter^.State or gstFrozen; |
6478 iter^.State:= iter^.State or gstFrozen; |
6479 if (hwRound(iter^.X) < RightX-16) and (hwRound(iter^.X) > LeftX+16) and |
6479 if (hwRound(iter^.X) < RightX-16) and (hwRound(iter^.X) > LeftX+16) and |
6480 (hwRound(iter^.Y) > topY+16) and (hwRound(iter^.Y) < LAND_HEIGHT-16) then |
6480 (hwRound(iter^.Y) > topY+16) and (hwRound(iter^.Y) < LAND_HEIGHT-16) then |
6481 begin |
6481 begin |
6482 AddCI(iter); |
6482 AddCI(iter); |
6483 iter^.X:= int2hwFloat(min(RightX-16,max(hwRound(iter^.X), LeftX+16))); |
6483 iter^.X:= int2hwFloat(min(RightX-16,max(hwRound(iter^.X), LeftX+16))); |
6484 iter^.Y:= int2hwFloat(min(LAND_HEIGHT-16,max(hwRound(iter^.Y),TopY+16))); |
6484 iter^.Y:= int2hwFloat(min(LAND_HEIGHT-16,max(hwRound(iter^.Y),TopY+16))); |
6485 ForcePlaceOnLand(hwRound(iter^.X)-16, hwRound(iter^.Y)-16, sprFrozenAirMine, 0, lfIce, $FFFFFFFF, false, false, false); |
6485 ForcePlaceOnLand(hwRound(iter^.X)-16, hwRound(iter^.Y)-16, sprFrozenAirMine, 0, lfIce, $FFFFFFFF, false, false, false); |
6486 iter^.State:= iter^.State or gstInvisible |
6486 iter^.State:= iter^.State or gstInvisible |
6487 end |
6487 end |
6488 else |
6488 else |
6489 begin |
6489 begin |
6490 updateTarget(Gear, ndX, ndY); |
6490 updateTarget(Gear, ndX, ndY); |
6491 FlightTime := 0; |
6491 FlightTime := 0; |
6492 Timer := iceWaitCollision; |
6492 Timer := iceWaitCollision; |
6493 Power := GameTicks; |
6493 Power := GameTicks; |
6494 iter^.State:= iter^.State and (not gstNoGravity) |
6494 iter^.State:= iter^.State and (not gstNoGravity) |
6495 end |
6495 end |
6496 end |
6496 end |
6497 else // gtExplosives |
6497 else // gtExplosives |
6498 begin |
6498 begin |
6499 iter^.State:= iter^.State or gstFrozen; |
6499 iter^.State:= iter^.State or gstFrozen; |
6500 iter^.Health:= iter^.Health + cBarrelHealth |
6500 iter^.Health:= iter^.Health + cBarrelHealth |