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