equal
deleted
inserted
replaced
368 AfterAttack; |
368 AfterAttack; |
369 exit |
369 exit |
370 end; |
370 end; |
371 if (Gear^.Timer and $3F) = 0 then |
371 if (Gear^.Timer and $3F) = 0 then |
372 begin |
372 begin |
373 i:= hwRound(Gear^.X) - Gear^.Radius - GetRandom(2); |
373 i:= hwRound(Gear^.X) - Gear^.Radius - integer(GetRandom(2)); |
374 ei:= hwRound(Gear^.X) + Gear^.Radius + GetRandom(2); |
374 ei:= hwRound(Gear^.X) + Gear^.Radius + integer(GetRandom(2)); |
375 while i <= ei do |
375 while i <= ei do |
376 begin |
376 begin |
377 doMakeExplosion(i, hwRound(Gear^.Y) + 3, 3, 0); |
377 doMakeExplosion(i, hwRound(Gear^.Y) + 3, 3, 0); |
378 inc(i, 1) |
378 inc(i, 1) |
379 end; |
379 end; |
411 begin |
411 begin |
412 i:= 0; |
412 i:= 0; |
413 y:= hwRound(Gear^.Y) - cHHRadius*2; |
413 y:= hwRound(Gear^.Y) - cHHRadius*2; |
414 while y < hwRound(Gear^.Y) do |
414 while y < hwRound(Gear^.Y) do |
415 begin |
415 begin |
416 ar[i].Left := hwRound(Gear^.X) - Gear^.Radius - GetRandom(2); |
416 ar[i].Left := hwRound(Gear^.X) - Gear^.Radius - integer(GetRandom(2)); |
417 ar[i].Right:= hwRound(Gear^.X) + Gear^.Radius + GetRandom(2); |
417 ar[i].Right:= hwRound(Gear^.X) + Gear^.Radius + integer(GetRandom(2)); |
418 inc(y, 2); |
418 inc(y, 2); |
419 inc(i) |
419 inc(i) |
420 end; |
420 end; |
421 DrawHLinesExplosions(@ar, 3, hwRound(Gear^.Y) - cHHRadius*2, 2, Pred(i)); |
421 DrawHLinesExplosions(@ar, 3, hwRound(Gear^.Y) - cHHRadius*2, 2, Pred(i)); |
422 Gear^.dY:= PHedgehog(Gear^.Hedgehog)^.Gear^.dY; |
422 Gear^.dY:= PHedgehog(Gear^.Hedgehog)^.Gear^.dY; |
443 if (HHGear^.Angle <> BTPrevAngle) then |
443 if (HHGear^.Angle <> BTPrevAngle) then |
444 begin |
444 begin |
445 Gear^.dX:= hwSign(HHGear^.dX) * AngleSin(HHGear^.Angle) * _0_5; |
445 Gear^.dX:= hwSign(HHGear^.dX) * AngleSin(HHGear^.Angle) * _0_5; |
446 Gear^.dY:= AngleCos(HHGear^.Angle) * ( - _0_5); |
446 Gear^.dY:= AngleCos(HHGear^.Angle) * ( - _0_5); |
447 BTPrevAngle:= HHGear^.Angle; |
447 BTPrevAngle:= HHGear^.Angle; |
448 b:= true |
448 // b:= true |
449 end; |
449 end; |
450 |
450 |
451 if Gear^.Timer mod cHHStepTicks = 0 then |
451 if Gear^.Timer mod cHHStepTicks = 0 then |
452 begin |
452 begin |
453 b:= true; |
453 b:= true; |
454 if Gear^.dX < 0 then HHGear^.Message:= (HHGear^.Message or gm_Left) and not gm_Right |
454 if Gear^.dX < 0 then HHGear^.Message:= (HHGear^.Message or gm_Left) and not gm_Right |
455 else HHGear^.Message:= (HHGear^.Message or gm_Right) and not gm_Left; |
455 else HHGear^.Message:= (HHGear^.Message or gm_Right) and not gm_Left; |
|
456 |
|
457 HHGear^.State:= HHGear^.State and not gstAttacking; |
456 HedgehogStep(HHGear); |
458 HedgehogStep(HHGear); |
|
459 HHGear^.State:= HHGear^.State or gstAttacking; |
457 |
460 |
458 inc(BTSteps); |
461 inc(BTSteps); |
459 if BTSteps = 11 then |
462 if BTSteps = 11 then |
460 begin |
463 begin |
461 BTSteps:= 0; |
464 BTSteps:= 0; |
486 var HHGear: PGear; |
489 var HHGear: PGear; |
487 begin |
490 begin |
488 BTPrevAngle:= High(Longword); |
491 BTPrevAngle:= High(Longword); |
489 BTSteps:= 0; |
492 BTSteps:= 0; |
490 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
493 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear; |
491 HHGear^.State:= HHGear^.State and not gstAttacking; |
|
492 HHGear^.Message:= 0; |
494 HHGear^.Message:= 0; |
493 Gear^.doStep:= @doStepBlowTorchWork |
495 Gear^.doStep:= @doStepBlowTorchWork |
494 end; |
496 end; |
495 |
497 |
496 //////////////////////////////////////////////////////////////////////////////// |
498 //////////////////////////////////////////////////////////////////////////////// |
1015 end; |
1017 end; |
1016 if Gear^.X > 3072 then DeleteGear(Gear) |
1018 if Gear^.X > 3072 then DeleteGear(Gear) |
1017 end; |
1019 end; |
1018 |
1020 |
1019 procedure doStepAirAttack(Gear: PGear); |
1021 procedure doStepAirAttack(Gear: PGear); |
|
1022 var t: integer; |
1020 begin |
1023 begin |
1021 AllInactive:= false; |
1024 AllInactive:= false; |
1022 Gear^.X:= -1024; |
1025 Gear^.X:= -1024; |
1023 Gear^.Y:= -128; |
1026 Gear^.Y:= -128; |
1024 Gear^.dX:= TargetPoint.X - |
1027 Gear^.dX:= TargetPoint.X - |
1025 cBombsDistance * 5 / 2;{ - |
1028 cBombsDistance * 5 / 2; |
1026 cBombsSpeed * sqrt(2 * (TargetPoint.Y - Gear^.Y) / cGravity);} |
1029 |
|
1030 if TargetPoint.Y - Gear^.Y > 0 then |
|
1031 Gear^.dX:= Gear^.dX - cBombsSpeed * hwSqrt(2 * (TargetPoint.Y - Gear^.Y) / cGravity); |
1027 Gear^.Health:= 6; |
1032 Gear^.Health:= 6; |
1028 Gear^.doStep:= @doStepAirAttackWork |
1033 Gear^.doStep:= @doStepAirAttackWork |
1029 end; |
1034 end; |
1030 |
1035 |
1031 //////////////////////////////////////////////////////////////////////////////// |
1036 //////////////////////////////////////////////////////////////////////////////// |