336 gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, Gear^.Hedgehog, EXPLAutoSound); |
336 gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, Gear^.Hedgehog, EXPLAutoSound); |
337 gtClusterBomb: |
337 gtClusterBomb: |
338 begin |
338 begin |
339 x := hwRound(Gear^.X); |
339 x := hwRound(Gear^.X); |
340 y := hwRound(Gear^.Y); |
340 y := hwRound(Gear^.Y); |
|
341 gdX:= Gear^.dX; |
341 doMakeExplosion(x, y, 20, Gear^.Hedgehog, EXPLAutoSound); |
342 doMakeExplosion(x, y, 20, Gear^.Hedgehog, EXPLAutoSound); |
342 for i:= 0 to 4 do |
343 for i:= 0 to 4 do |
343 begin |
344 begin |
344 dX := rndSign(GetRandomf * _0_1) + Gear^.dX / 5; |
345 dX := rndSign(GetRandomf * _0_1) + gdX / 5; |
345 dY := (GetRandomf - _3) * _0_08; |
346 dY := (GetRandomf - _3) * _0_08; |
346 FollowGear := AddGear(x, y, gtCluster, 0, dX, dY, 25) |
347 FollowGear := AddGear(x, y, gtCluster, 0, dX, dY, 25) |
347 end |
348 end |
348 end; |
349 end; |
349 gtWatermelon: |
350 gtWatermelon: |
350 begin |
351 begin |
351 x := hwRound(Gear^.X); |
352 x := hwRound(Gear^.X); |
352 y := hwRound(Gear^.Y); |
353 y := hwRound(Gear^.Y); |
|
354 gdX:= Gear^.dX; |
353 doMakeExplosion(x, y, 75, Gear^.Hedgehog, EXPLAutoSound); |
355 doMakeExplosion(x, y, 75, Gear^.Hedgehog, EXPLAutoSound); |
354 for i:= 0 to 5 do |
356 for i:= 0 to 5 do |
355 begin |
357 begin |
356 dX := rndSign(GetRandomf * _0_1) + Gear^.dX / 5; |
358 dX := rndSign(GetRandomf * _0_1) + gdX / 5; |
357 dY := (GetRandomf - _1_5) * _0_3; |
359 dY := (GetRandomf - _1_5) * _0_3; |
358 FollowGear:= AddGear(x, y, gtMelonPiece, 0, dX, dY, 75); |
360 FollowGear:= AddGear(x, y, gtMelonPiece, 0, dX, dY, 75); |
359 FollowGear^.DirAngle := i * 60 |
361 FollowGear^.DirAngle := i * 60 |
360 end |
362 end |
361 end; |
363 end; |
2412 end; |
2414 end; |
2413 |
2415 |
2414 //////////////////////////////////////////////////////////////////////////////// |
2416 //////////////////////////////////////////////////////////////////////////////// |
2415 procedure doStepMortar(Gear: PGear); |
2417 procedure doStepMortar(Gear: PGear); |
2416 var |
2418 var |
2417 dX, dY: hwFloat; |
2419 dX, dY, gdX, gdY: hwFloat; |
2418 i: LongInt; |
2420 i: LongInt; |
2419 dxn, dyn: boolean; |
2421 dxn, dyn: boolean; |
2420 begin |
2422 begin |
2421 AllInactive := false; |
2423 AllInactive := false; |
2422 dxn := Gear^.dX.isNegative; |
2424 dxn := Gear^.dX.isNegative; |
2423 dyn := Gear^.dY.isNegative; |
2425 dyn := Gear^.dY.isNegative; |
2424 |
2426 |
2425 doStepFallingGear(Gear); |
2427 doStepFallingGear(Gear); |
2426 if (Gear^.State and gstCollision) <> 0 then |
2428 if (Gear^.State and gstCollision) <> 0 then |
2427 begin |
2429 begin |
|
2430 gdX := Gear^.dX; |
|
2431 gdY := Gear^.dY; |
2428 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, Gear^.Hedgehog, EXPLAutoSound); |
2432 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, Gear^.Hedgehog, EXPLAutoSound); |
2429 |
2433 |
2430 Gear^.dX.isNegative := not dxn; |
2434 gdX.isNegative := not dxn; |
2431 Gear^.dY.isNegative := not dyn; |
2435 gdY.isNegative := not dyn; |
2432 for i:= 0 to 4 do |
2436 for i:= 0 to 4 do |
2433 begin |
2437 begin |
2434 dX := Gear^.dX + (GetRandomf - _0_5) * _0_03; |
2438 dX := gdX + (GetRandomf - _0_5) * _0_03; |
2435 dY := Gear^.dY + (GetRandomf - _0_5) * _0_03; |
2439 dY := gdY + (GetRandomf - _0_5) * _0_03; |
2436 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 25); |
2440 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 25); |
2437 end; |
2441 end; |
2438 |
2442 |
2439 DeleteGear(Gear); |
2443 DeleteGear(Gear); |
2440 exit |
2444 exit |