574 procedure doStepMine(Gear: PGear); |
574 procedure doStepMine(Gear: PGear); |
575 begin |
575 begin |
576 if (Gear.dX <> 0) or (Gear.dY <> 0) then |
576 if (Gear.dX <> 0) or (Gear.dY <> 0) then |
577 begin |
577 begin |
578 doStepFallingGear(Gear); |
578 doStepFallingGear(Gear); |
|
579 if Gear.Active = false then |
|
580 begin |
|
581 Gear.dX:= 0; |
|
582 Gear.dY:= 0 |
|
583 end; |
|
584 CalcRotationDirAngle(Gear); |
579 AllInactive:= false |
585 AllInactive:= false |
580 end; |
586 end; |
581 CalcRotationDirAngle(Gear); |
|
582 if TurnTimeLeft = 0 then Gear.State:= Gear.State or gsttmpFlag; |
|
583 if ((Gear.State and gsttmpFlag) <> 0) then |
587 if ((Gear.State and gsttmpFlag) <> 0) then |
584 if ((Gear.State and gstAttacking) = 0) then |
588 if ((Gear.State and gstAttacking) = 0) then |
585 if isGearNear(Gear, gtHedgehog, 42, 25) then Gear.State:= Gear.State or gstAttacking else |
589 if isGearNear(Gear, gtHedgehog, 46, 32) then Gear.State:= Gear.State or gstAttacking else |
586 else // gstAttacking <> 0 |
590 else // gstAttacking <> 0 |
587 begin |
591 begin |
588 AllInactive:= false; |
592 AllInactive:= false; |
589 dec(Gear.Timer); |
593 if (Gear.Timer and $1FF) = 0 then PlaySound(sndMineTick); |
590 if Gear.Timer = 0 then |
594 if Gear.Timer = 0 then |
591 begin |
595 begin |
592 doMakeExplosion(round(Gear.X), round(Gear.Y), 50, 0); |
596 doMakeExplosion(round(Gear.X), round(Gear.Y), 50, EXPLAutoSound); |
|
597 SetAllToActive; |
593 DeleteGear(Gear) |
598 DeleteGear(Gear) |
594 end; |
599 end; |
595 end; |
600 dec(Gear.Timer); |
596 end; |
601 end else // gsttmpFlag = 0 |
|
602 if TurnTimeLeft = 0 then Gear.State:= Gear.State or gsttmpFlag; |
|
603 end; |