267 begin |
267 begin |
268 case Gear^.Kind of |
268 case Gear^.Kind of |
269 gtAmmo_Bomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); |
269 gtAmmo_Bomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound); |
270 gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, EXPLAutoSound); |
270 gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, EXPLAutoSound); |
271 gtClusterBomb: begin |
271 gtClusterBomb: begin |
272 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound); |
272 x:= hwRound(Gear^.X); |
|
273 y:= hwRound(Gear^.Y); |
|
274 doMakeExplosion(x, y, 20, EXPLAutoSound); |
273 for i:= 0 to 4 do |
275 for i:= 0 to 4 do |
274 begin |
276 begin |
275 dX:= rndSign(GetRandom * _0_1); |
277 dX:= rndSign(GetRandom * _0_1); |
276 dY:= (GetRandom - _3) * _0_08; |
278 dY:= (GetRandom - _3) * _0_08; |
277 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 25); |
279 AddGear(x, y, gtCluster, 0, dX, dY, 25); |
278 end |
280 end |
279 end; |
281 end; |
280 gtWatermelon: begin |
282 gtWatermelon: begin |
281 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 75, EXPLAutoSound); |
283 x:= hwRound(Gear^.X); |
|
284 y:= hwRound(Gear^.Y); |
|
285 doMakeExplosion(x, y, 75, EXPLAutoSound); |
282 for i:= 0 to 5 do |
286 for i:= 0 to 5 do |
283 begin |
287 begin |
284 dX:= rndSign(GetRandom * _0_1); |
288 dX:= rndSign(GetRandom * _0_1); |
285 dY:= (GetRandom - _1_5) * _0_3; |
289 dY:= (GetRandom - _1_5) * _0_3; |
286 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtMelonPiece, 0, dX, dY, 75)^.DirAngle:= i * 60; |
290 AddGear(x, y, gtMelonPiece, 0, dX, dY, 75)^.DirAngle:= i * 60; |
287 end |
291 end |
288 end; |
292 end; |
289 gtHellishBomb: begin |
293 gtHellishBomb: begin |
290 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 90, EXPLAutoSound); |
294 x:= hwRound(Gear^.X); |
|
295 y:= hwRound(Gear^.Y); |
|
296 doMakeExplosion(x, y, 90, EXPLAutoSound); |
|
297 |
291 for i:= 0 to 127 do |
298 for i:= 0 to 127 do |
292 begin |
299 begin |
293 dX:= AngleCos(i * 16) * _0_5 * (GetRandom + _1); |
300 dX:= AngleCos(i * 16) * _0_5 * (GetRandom + _1); |
294 dY:= AngleSin(i * 16) * _0_5 * (GetRandom + _1); |
301 dY:= AngleSin(i * 16) * _0_5 * (GetRandom + _1); |
295 Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, dY, 0); |
302 Fire:= AddGear(x, y, gtFlame, 0, dX, dY, 0); |
296 if i mod 2 = 0 then Fire^.State:= Fire^.State or gsttmpFlag; |
303 if i mod 2 = 0 then Fire^.State:= Fire^.State or gsttmpFlag; |
297 Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, -dY, 0); |
304 Fire:= AddGear(x, y, gtFlame, 0, dX, -dY, 0); |
298 if i mod 2 <> 0 then Fire^.State:= Fire^.State or gsttmpFlag; |
305 if i mod 2 <> 0 then Fire^.State:= Fire^.State or gsttmpFlag; |
299 end |
306 end |
300 end; |
307 end; |
301 end; |
308 end; |
302 DeleteGear(Gear); |
309 DeleteGear(Gear); |