equal
deleted
inserted
replaced
44 procedure HideHog(HH: PHedgehog); |
44 procedure HideHog(HH: PHedgehog); |
45 procedure RestoreHog(HH: PHedgehog); |
45 procedure RestoreHog(HH: PHedgehog); |
46 procedure ProcessGears; |
46 procedure ProcessGears; |
47 procedure EndTurnCleanup; |
47 procedure EndTurnCleanup; |
48 procedure SetAllToActive; |
48 procedure SetAllToActive; |
49 procedure SetAllHHToActive; |
49 procedure SetAllHHToActive; inline; |
|
50 procedure SetAllHHToActive(Ice: boolean); |
50 procedure DrawGears; |
51 procedure DrawGears; |
51 procedure FreeGearsList; |
52 procedure FreeGearsList; |
52 procedure AddMiscGears; |
53 procedure AddMiscGears; |
53 procedure AssignHHCoords; |
54 procedure AssignHHCoords; |
54 function GearByUID(uid : Longword) : PGear; |
55 function GearByUID(uid : Longword) : PGear; |
439 end |
440 end |
440 end; |
441 end; |
441 |
442 |
442 if TurnTimeLeft > 0 then |
443 if TurnTimeLeft > 0 then |
443 if CurrentHedgehog^.Gear <> nil then |
444 if CurrentHedgehog^.Gear <> nil then |
444 if ((CurrentHedgehog^.Gear^.State and gstAttacking) = 0) |
445 if ((CurrentHedgehog^.Gear^.State and gstAttacking) = 0) and |
445 and (not isInMultiShoot) then |
446 not(isInMultiShoot and (CurrentHedgehog^.CurAmmoType in [amShotgun, amDEagle, amSniperRifle])) then |
446 begin |
447 begin |
447 if (TurnTimeLeft = 5000) |
448 if (TurnTimeLeft = 5000) |
448 and (cHedgehogTurnTime >= 10000) |
449 and (cHedgehogTurnTime >= 10000) |
449 and (not PlacingHogs) |
450 and (not PlacingHogs) |
450 and (CurrentHedgehog^.Gear <> nil) |
451 and (CurrentHedgehog^.Gear <> nil) |
559 t^.Active:= true; |
560 t^.Active:= true; |
560 t:= t^.NextGear |
561 t:= t^.NextGear |
561 end |
562 end |
562 end; |
563 end; |
563 |
564 |
564 procedure SetAllHHToActive; |
565 procedure SetAllHHToActive; inline; |
|
566 begin |
|
567 SetAllHHToActive(true) |
|
568 end; |
|
569 |
|
570 procedure SetAllHHToActive(Ice: boolean); |
565 var t: PGear; |
571 var t: PGear; |
566 begin |
572 begin |
567 AllInactive:= false; |
573 AllInactive:= false; |
568 t:= GearsList; |
574 t:= GearsList; |
569 while t <> nil do |
575 while t <> nil do |
570 begin |
576 begin |
571 if (t^.Kind = gtHedgehog) or (t^.Kind = gtExplosives) then |
577 if (t^.Kind = gtHedgehog) or (t^.Kind = gtExplosives) then |
572 t^.Active:= true; |
578 begin |
|
579 if (t^.Kind = gtHedgehog) and Ice then CheckIce(t); |
|
580 t^.Active:= true |
|
581 end; |
573 t:= t^.NextGear |
582 t:= t^.NextGear |
574 end |
583 end |
575 end; |
584 end; |
576 |
|
577 |
585 |
578 procedure DrawGears; |
586 procedure DrawGears; |
579 var Gear: PGear; |
587 var Gear: PGear; |
580 x, y: LongInt; |
588 x, y: LongInt; |
581 begin |
589 begin |
764 Ammo^.Health:= 0; |
772 Ammo^.Health:= 0; |
765 while i > 0 do |
773 while i > 0 do |
766 begin |
774 begin |
767 dec(i); |
775 dec(i); |
768 Gear:= t^.ar[i]; |
776 Gear:= t^.ar[i]; |
|
777 if (Ammo^.Kind = gtFlame) and (Gear^.Kind = gtHedgehog) and (Gear^.Hedgehog^.Effects[heFrozen] > 255) then |
|
778 Gear^.Hedgehog^.Effects[heFrozen]:= max(255,Gear^.Hedgehog^.Effects[heFrozen]-10000); |
769 tmpDmg:= ModifyDamage(Damage, Gear); |
779 tmpDmg:= ModifyDamage(Damage, Gear); |
770 if (Gear^.State and gstNoDamage) = 0 then |
780 if (Gear^.State and gstNoDamage) = 0 then |
771 begin |
781 begin |
772 |
782 |
773 if (Ammo^.Kind = gtDEagleShot) or (Ammo^.Kind = gtSniperRifleShot) then |
783 if (Ammo^.Kind = gtDEagleShot) or (Ammo^.Kind = gtSniperRifleShot) then |
777 VGear^.Angle := DxDy2Angle(-Ammo^.dX, Ammo^.dY); |
787 VGear^.Angle := DxDy2Angle(-Ammo^.dX, Ammo^.dY); |
778 end; |
788 end; |
779 |
789 |
780 if (Gear^.Kind = gtHedgehog) and (Ammo^.State and gsttmpFlag <> 0) and (Ammo^.Kind = gtShover) then |
790 if (Gear^.Kind = gtHedgehog) and (Ammo^.State and gsttmpFlag <> 0) and (Ammo^.Kind = gtShover) then |
781 Gear^.FlightTime:= 1; |
791 Gear^.FlightTime:= 1; |
|
792 |
782 |
793 |
783 case Gear^.Kind of |
794 case Gear^.Kind of |
784 gtHedgehog, |
795 gtHedgehog, |
785 gtMine, |
796 gtMine, |
786 gtSMine, |
797 gtSMine, |
825 if (Ammo^.Hedgehog^.Gear <> nil) then |
836 if (Ammo^.Hedgehog^.Gear <> nil) then |
826 Ammo^.Hedgehog^.Gear^.State:= (Ammo^.Hedgehog^.Gear^.State and (not gstNotKickable)); |
837 Ammo^.Hedgehog^.Gear^.State:= (Ammo^.Hedgehog^.Gear^.State and (not gstNotKickable)); |
827 ApplyDamage(Gear, Ammo^.Hedgehog, tmpDmg * 100, dsUnknown); // crank up damage for explosives + blowtorch |
838 ApplyDamage(Gear, Ammo^.Hedgehog, tmpDmg * 100, dsUnknown); // crank up damage for explosives + blowtorch |
828 end; |
839 end; |
829 |
840 |
830 if (Gear^.Kind = gtHedgehog) and Gear^.Hedgehog^.King then |
841 if (Gear^.Kind = gtHedgehog) and (Gear^.Hedgehog^.King or (Gear^.Hedgehog^.Effects[heFrozen] > 0)) then |
831 begin |
842 begin |
832 Gear^.dX:= Ammo^.dX * Power * _0_005; |
843 Gear^.dX:= Ammo^.dX * Power * _0_005; |
833 Gear^.dY:= Ammo^.dY * Power * _0_005 |
844 Gear^.dY:= Ammo^.dY * Power * _0_005 |
834 end |
845 end |
835 else if ((Ammo^.Kind <> gtFlame) or (Gear^.Kind = gtHedgehog)) and (Power <> 0) then |
846 else if ((Ammo^.Kind <> gtFlame) or (Gear^.Kind = gtHedgehog)) and (Power <> 0) then |