343 x := hwRound(Gear^.X); |
343 x := hwRound(Gear^.X); |
344 y := hwRound(Gear^.Y); |
344 y := hwRound(Gear^.Y); |
345 doMakeExplosion(x, y, 20, Gear^.Hedgehog, EXPLAutoSound); |
345 doMakeExplosion(x, y, 20, Gear^.Hedgehog, EXPLAutoSound); |
346 for i:= 0 to 4 do |
346 for i:= 0 to 4 do |
347 begin |
347 begin |
348 dX := rndSign(GetRandom * _0_1) + Gear^.dX / 5; |
348 dX := rndSign(GetRandomf * _0_1) + Gear^.dX / 5; |
349 dY := (GetRandom - _3) * _0_08; |
349 dY := (GetRandomf - _3) * _0_08; |
350 FollowGear := AddGear(x, y, gtCluster, 0, dX, dY, 25) |
350 FollowGear := AddGear(x, y, gtCluster, 0, dX, dY, 25) |
351 end |
351 end |
352 end; |
352 end; |
353 gtWatermelon: |
353 gtWatermelon: |
354 begin |
354 begin |
355 x := hwRound(Gear^.X); |
355 x := hwRound(Gear^.X); |
356 y := hwRound(Gear^.Y); |
356 y := hwRound(Gear^.Y); |
357 doMakeExplosion(x, y, 75, Gear^.Hedgehog, EXPLAutoSound); |
357 doMakeExplosion(x, y, 75, Gear^.Hedgehog, EXPLAutoSound); |
358 for i:= 0 to 5 do |
358 for i:= 0 to 5 do |
359 begin |
359 begin |
360 dX := rndSign(GetRandom * _0_1) + Gear^.dX / 5; |
360 dX := rndSign(GetRandomf * _0_1) + Gear^.dX / 5; |
361 dY := (GetRandom - _1_5) * _0_3; |
361 dY := (GetRandomf - _1_5) * _0_3; |
362 FollowGear:= AddGear(x, y, gtMelonPiece, 0, dX, dY, 75); |
362 FollowGear:= AddGear(x, y, gtMelonPiece, 0, dX, dY, 75); |
363 FollowGear^.DirAngle := i * 60 |
363 FollowGear^.DirAngle := i * 60 |
364 end |
364 end |
365 end; |
365 end; |
366 gtHellishBomb: |
366 gtHellishBomb: |
369 y := hwRound(Gear^.Y); |
369 y := hwRound(Gear^.Y); |
370 doMakeExplosion(x, y, 90, Gear^.Hedgehog, EXPLAutoSound); |
370 doMakeExplosion(x, y, 90, Gear^.Hedgehog, EXPLAutoSound); |
371 |
371 |
372 for i:= 0 to 127 do |
372 for i:= 0 to 127 do |
373 begin |
373 begin |
374 dX := AngleCos(i * 16) * _0_5 * (GetRandom + _1); |
374 dX := AngleCos(i * 16) * _0_5 * (GetRandomf + _1); |
375 dY := AngleSin(i * 16) * _0_5 * (GetRandom + _1); |
375 dY := AngleSin(i * 16) * _0_5 * (GetRandomf + _1); |
376 if i mod 2 = 0 then |
376 if i mod 2 = 0 then |
377 begin |
377 begin |
378 AddGear(x, y, gtFlame, gstTmpFlag, dX, dY, 0); |
378 AddGear(x, y, gtFlame, gstTmpFlag, dX, dY, 0); |
379 AddGear(x, y, gtFlame, 0, dX, -dY, 0) |
379 AddGear(x, y, gtFlame, 0, dX, -dY, 0) |
380 end |
380 end |
475 State:= ord(sprEgg) |
475 State:= ord(sprEgg) |
476 end; |
476 end; |
477 end; |
477 end; |
478 for i:= 0 to 24 do |
478 for i:= 0 to 24 do |
479 begin |
479 begin |
480 dX := AngleCos(i * 2) * ((_0_15*(i div 5))) * (GetRandom + _1); |
480 dX := AngleCos(i * 2) * ((_0_15*(i div 5))) * (GetRandomf + _1); |
481 dY := AngleSin(i * 8) * _0_5 * (GetRandom + _1); |
481 dY := AngleSin(i * 8) * _0_5 * (GetRandomf + _1); |
482 AddGear(gX, gY, gtFlame, gstTmpFlag, dX, dY, 0); |
482 AddGear(gX, gY, gtFlame, gstTmpFlag, dX, dY, 0); |
483 AddGear(gX, gY, gtFlame, gstTmpFlag, dX,-dY, 0); |
483 AddGear(gX, gY, gtFlame, gstTmpFlag, dX,-dY, 0); |
484 AddGear(gX, gY, gtFlame, gstTmpFlag,-dX, dY, 0); |
484 AddGear(gX, gY, gtFlame, gstTmpFlag,-dX, dY, 0); |
485 AddGear(gX, gY, gtFlame, gstTmpFlag,-dX,-dY, 0); |
485 AddGear(gX, gY, gtFlame, gstTmpFlag,-dX,-dY, 0); |
486 end; |
486 end; |
2128 else if k = gtExplosives then |
2128 else if k = gtExplosives then |
2129 begin |
2129 begin |
2130 doMakeExplosion(x, y, 75, hog, EXPLAutoSound); |
2130 doMakeExplosion(x, y, 75, hog, EXPLAutoSound); |
2131 for i:= 0 to 31 do |
2131 for i:= 0 to 31 do |
2132 begin |
2132 begin |
2133 dX := AngleCos(i * 64) * _0_5 * (getrandom + _1); |
2133 dX := AngleCos(i * 64) * _0_5 * (getrandomf + _1); |
2134 dY := AngleSin(i * 64) * _0_5 * (getrandom + _1); |
2134 dY := AngleSin(i * 64) * _0_5 * (getrandomf + _1); |
2135 AddGear(x, y, gtFlame, 0, dX, dY, 0); |
2135 AddGear(x, y, gtFlame, 0, dX, dY, 0); |
2136 AddGear(x, y, gtFlame, gstTmpFlag, -dX, -dY, 0); |
2136 AddGear(x, y, gtFlame, gstTmpFlag, -dX, -dY, 0); |
2137 end |
2137 end |
2138 end; |
2138 end; |
2139 exit |
2139 exit |
2798 |
2798 |
2799 Gear^.dX.isNegative := not dxn; |
2799 Gear^.dX.isNegative := not dxn; |
2800 Gear^.dY.isNegative := not dyn; |
2800 Gear^.dY.isNegative := not dyn; |
2801 for i:= 0 to 4 do |
2801 for i:= 0 to 4 do |
2802 begin |
2802 begin |
2803 dX := Gear^.dX + (GetRandom - _0_5) * _0_03; |
2803 dX := Gear^.dX + (GetRandomf - _0_5) * _0_03; |
2804 dY := Gear^.dY + (GetRandom - _0_5) * _0_03; |
2804 dY := Gear^.dY + (GetRandomf - _0_5) * _0_03; |
2805 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 25); |
2805 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 25); |
2806 end; |
2806 end; |
2807 |
2807 |
2808 DeleteGear(Gear); |
2808 DeleteGear(Gear); |
2809 exit |
2809 exit |
3412 HedgehogChAngle(HHGear); |
3412 HedgehogChAngle(HHGear); |
3413 gX := hwRound(Gear^.X) + GetLaunchX(amBallgun, hwSign(HHGear^.dX), HHGear^.Angle); |
3413 gX := hwRound(Gear^.X) + GetLaunchX(amBallgun, hwSign(HHGear^.dX), HHGear^.Angle); |
3414 gY := hwRound(Gear^.Y) + GetLaunchY(amBallgun, HHGear^.Angle); |
3414 gY := hwRound(Gear^.Y) + GetLaunchY(amBallgun, HHGear^.Angle); |
3415 if (Gear^.Timer mod 100) = 0 then |
3415 if (Gear^.Timer mod 100) = 0 then |
3416 begin |
3416 begin |
3417 rx := rndSign(getRandom * _0_1); |
3417 rx := rndSign(getRandomf * _0_1); |
3418 ry := rndSign(getRandom * _0_1); |
3418 ry := rndSign(getRandomf * _0_1); |
3419 |
3419 |
3420 AddGear(gx, gy, gtBall, 0, SignAs(AngleSin(HHGear^.Angle) * _0_8, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - _0_8) + ry, 0); |
3420 AddGear(gx, gy, gtBall, 0, SignAs(AngleSin(HHGear^.Angle) * _0_8, HHGear^.dX) + rx, AngleCos(HHGear^.Angle) * ( - _0_8) + ry, 0); |
3421 |
3421 |
3422 PlaySound(sndGun); |
3422 PlaySound(sndGun); |
3423 end; |
3423 end; |
3536 if ((Gear^.State and gstCollision) <> 0) then |
3536 if ((Gear^.State and gstCollision) <> 0) then |
3537 begin |
3537 begin |
3538 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, Gear^.Hedgehog, EXPLAutoSound); |
3538 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, Gear^.Hedgehog, EXPLAutoSound); |
3539 for i:= 0 to 15 do |
3539 for i:= 0 to 15 do |
3540 begin |
3540 begin |
3541 dX := AngleCos(i * 64) * _0_5 * (GetRandom + _1); |
3541 dX := AngleCos(i * 64) * _0_5 * (GetRandomf + _1); |
3542 dY := AngleSin(i * 64) * _0_5 * (GetRandom + _1); |
3542 dY := AngleSin(i * 64) * _0_5 * (GetRandomf + _1); |
3543 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, dY, 0); |
3543 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, dY, 0); |
3544 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, -dY, 0); |
3544 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, -dY, 0); |
3545 end; |
3545 end; |
3546 DeleteGear(Gear) |
3546 DeleteGear(Gear) |
3547 end; |
3547 end; |
4752 if Gear^.Timer = 0 then |
4752 if Gear^.Timer = 0 then |
4753 begin |
4753 begin |
4754 dec(Gear^.Health); |
4754 dec(Gear^.Health); |
4755 if (Gear^.Health mod 5) = 0 then |
4755 if (Gear^.Health mod 5) = 0 then |
4756 begin |
4756 begin |
4757 rx := rndSign(getRandom * _0_1); |
4757 rx := rndSign(getRandomf * _0_1); |
4758 ry := rndSign(getRandom * _0_1); |
4758 ry := rndSign(getRandomf * _0_1); |
4759 speed := _0_5 * (_10 / Gear^.Tag); |
4759 speed := _0_5 * (_10 / Gear^.Tag); |
4760 |
4760 |
4761 AddGear(gx, gy, gtFlame, gstTmpFlag, |
4761 AddGear(gx, gy, gtFlame, gstTmpFlag, |
4762 SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, |
4762 SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, |
4763 AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); |
4763 AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); |
4832 dec(Gear^.Timer); |
4832 dec(Gear^.Timer); |
4833 if Gear^.Timer = 0 then |
4833 if Gear^.Timer = 0 then |
4834 begin |
4834 begin |
4835 dec(Gear^.Health); |
4835 dec(Gear^.Health); |
4836 |
4836 |
4837 rx := rndSign(getRandom * _0_1); |
4837 rx := rndSign(getRandomf * _0_1); |
4838 ry := rndSign(getRandom * _0_1); |
4838 ry := rndSign(getRandomf * _0_1); |
4839 speed := (_3 / Gear^.Tag); |
4839 speed := (_3 / Gear^.Tag); |
4840 |
4840 |
4841 AddGear(gx, gy, gtFlake, gstTmpFlag, |
4841 AddGear(gx, gy, gtFlake, gstTmpFlag, |
4842 SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, |
4842 SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, |
4843 AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); |
4843 AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); |
5144 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, Gear^.Hedgehog, EXPLAutoSound); |
5144 doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, Gear^.Hedgehog, EXPLAutoSound); |
5145 gX := hwRound(Gear^.X); |
5145 gX := hwRound(Gear^.X); |
5146 gY := hwRound(Gear^.Y); |
5146 gY := hwRound(Gear^.Y); |
5147 for i:= 0 to 10 do |
5147 for i:= 0 to 10 do |
5148 begin |
5148 begin |
5149 dX := AngleCos(i * 2) * ((_0_1*(i div 5))) * (GetRandom + _1); |
5149 dX := AngleCos(i * 2) * ((_0_1*(i div 5))) * (GetRandomf + _1); |
5150 dY := AngleSin(i * 8) * _0_5 * (GetRandom + _1); |
5150 dY := AngleSin(i * 8) * _0_5 * (GetRandomf + _1); |
5151 AddGear(gX, gY, gtFlame, 0, dX, dY, 0); |
5151 AddGear(gX, gY, gtFlame, 0, dX, dY, 0); |
5152 AddGear(gX, gY, gtFlame, 0, dX, -dY, 0); |
5152 AddGear(gX, gY, gtFlame, 0, dX, -dY, 0); |
5153 AddGear(gX, gY, gtFlame, 0, -dX, dY, 0); |
5153 AddGear(gX, gY, gtFlame, 0, -dX, dY, 0); |
5154 AddGear(gX, gY, gtFlame, 0, -dX, -dY, 0); |
5154 AddGear(gX, gY, gtFlame, 0, -dX, -dY, 0); |
5155 end; |
5155 end; |