801 end; |
801 end; |
802 |
802 |
803 if (((GameTicks div 8) mod 64) = Gear.Angle) then |
803 if (((GameTicks div 8) mod 64) = Gear.Angle) then |
804 AmmoFlameWork(Gear); |
804 AmmoFlameWork(Gear); |
805 |
805 |
806 if Gear.Health = 0 then |
806 if Gear.Health = 0 then |
807 DeleteGear(Gear) |
807 DeleteGear(Gear) |
808 end; |
808 end; |
|
809 |
|
810 //////////////////////////////////////////////////////////////////////////////// |
|
811 procedure doStepFirePunchWork(Gear: PGear); |
|
812 var HHGear: PGear; |
|
813 begin |
|
814 AllInactive:= false; |
|
815 if ((Gear.Message and gm_Destroy) <> 0) then |
|
816 begin |
|
817 DeleteGear(Gear); |
|
818 AfterAttack; |
|
819 exit |
|
820 end; |
|
821 |
|
822 HHGear:= PHedgehog(Gear.Hedgehog).Gear; |
|
823 if round(HHGear.Y) <= Gear.Tag - 2 then |
|
824 begin |
|
825 Gear.Tag:= round(HHGear.Y); |
|
826 DrawTunnel(HHGear.X - cHHRadius, HHGear.Y - 1, 0.5, 0.0, cHHRadius * 4, 2); |
|
827 HHGear.State:= HHGear.State or gstNoDamage; |
|
828 Gear.Y:= HHGear.Y; |
|
829 AmmoShove(Gear, 30, 40); |
|
830 HHGear.State:= HHGear.State and not gstNoDamage |
|
831 end; |
|
832 |
|
833 HHGear.dY:= HHGear.dY + cGravity; |
|
834 if HHGear.dY >= 0 then |
|
835 begin |
|
836 HHGear.State:= HHGear.State or gstFalling; |
|
837 DeleteGear(Gear); |
|
838 AfterAttack; |
|
839 exit |
|
840 end; |
|
841 HHGear.Y:= HHGear.Y + HHGear.dY |
|
842 end; |
|
843 |
|
844 procedure doStepFirePunch(Gear: PGear); |
|
845 var HHGear: PGear; |
|
846 begin |
|
847 AllInactive:= false; |
|
848 HHGear:= PHedgehog(Gear.Hedgehog).Gear; |
|
849 HHGear.X:= round(HHGear.X) - 0.5; |
|
850 HHGear.dX:= 0.0000001 * Sign(HHGear.dX); |
|
851 HHGear.dY:= -0.30; |
|
852 |
|
853 Gear.X:= HHGear.X; |
|
854 Gear.dX:= Sign(HHGear.dX)* 0.45; |
|
855 Gear.dY:= -0.9; |
|
856 Gear.doStep:= doStepFirePunchWork; |
|
857 DrawTunnel(HHGear.X - cHHRadius, HHGear.Y + 1, 0.5, 0.0, cHHRadius * 4, 5); |
|
858 end; |
|
859 |
|
860 |