3988 //////////////////////////////////////////////////////////////////////////////// |
3988 //////////////////////////////////////////////////////////////////////////////// |
3989 procedure doStepFlamethrowerWork(Gear: PGear); |
3989 procedure doStepFlamethrowerWork(Gear: PGear); |
3990 var |
3990 var |
3991 HHGear: PGear; |
3991 HHGear: PGear; |
3992 rx, ry, speed: hwFloat; |
3992 rx, ry, speed: hwFloat; |
3993 gX, gY: LongInt; |
3993 i, gX, gY: LongInt; |
3994 Fire: PGear; |
3994 Fire: PGear; |
3995 begin |
3995 begin |
3996 AllInactive := false; |
3996 AllInactive := false; |
3997 HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; |
3997 HHGear := PHedgehog(Gear^.Hedgehog)^.Gear; |
3998 HedgehogChAngle(HHGear); |
3998 HedgehogChAngle(HHGear); |
3999 gX := hwRound(Gear^.X) + GetLaunchX(amBallgun, hwSign(HHGear^.dX), HHGear^.Angle); |
3999 gX := hwRound(Gear^.X) + GetLaunchX(amBallgun, hwSign(HHGear^.dX), HHGear^.Angle); |
4000 gY := hwRound(Gear^.Y) + GetLaunchY(amBallgun, HHGear^.Angle); |
4000 gY := hwRound(Gear^.Y) + GetLaunchY(amBallgun, HHGear^.Angle); |
4001 |
4001 |
4002 if (GameTicks and $FF) = 0 then |
4002 if (GameTicks and $FF) = 0 then |
4003 begin |
4003 begin |
4004 if (HHGear^.Message and gmRight) <> 0 then |
4004 if (HHGear^.Message and gmRight) <> 0 then |
4005 begin |
4005 begin |
4006 if HHGear^.dX.isNegative and (Gear^.Tag < 20) then inc(Gear^.Tag) |
4006 if HHGear^.dX.isNegative and (Gear^.Tag < 20) then inc(Gear^.Tag) |
4007 else if Gear^.Tag > 5 then dec(Gear^.Tag); |
4007 else if Gear^.Tag > 5 then dec(Gear^.Tag); |
4008 end |
4008 end |
4009 else if (HHGear^.Message and gmLeft) <> 0 then |
4009 else if (HHGear^.Message and gmLeft) <> 0 then |
4010 begin |
4010 begin |
4011 if HHGear^.dX.isNegative and (Gear^.Tag > 5) then dec(Gear^.Tag) |
4011 if HHGear^.dX.isNegative and (Gear^.Tag > 5) then dec(Gear^.Tag) |
4012 else if Gear^.Tag < 20 then inc(Gear^.Tag); |
4012 else if Gear^.Tag < 20 then inc(Gear^.Tag); |
4013 end |
4013 end |
4014 end; |
4014 end; |
4015 |
4015 |
4016 dec(Gear^.Timer); |
4016 dec(Gear^.Timer); |
4017 if Gear^.Timer = 0 then |
4017 if Gear^.Timer = 0 then |
4018 begin |
4018 begin |
4019 dec(Gear^.Health); |
4019 dec(Gear^.Health); |
4020 if (Gear^.Health mod 10) = 0 then |
4020 if (Gear^.Health mod 10) = 0 then |
4021 begin |
4021 begin |
4022 rx := rndSign(getRandom * _0_1); |
4022 rx := rndSign(getRandom * _0_1); |
4023 ry := rndSign(getRandom * _0_1); |
4023 ry := rndSign(getRandom * _0_1); |
4024 speed := _0_8 * (_10 / Gear^.Tag); |
4024 speed := _0_8 * (_10 / Gear^.Tag); |
4025 |
4025 |
4026 Fire := AddGear(gx, gy, gtFlame, 0, |
4026 Fire := AddGear(gx, gy, gtFlame, 0, |
4030 |
4030 |
4031 if (Gear^.Health mod 20) = 0 then |
4031 if (Gear^.Health mod 20) = 0 then |
4032 Fire := AddGear(gx, gy, gtFlame, 0, |
4032 Fire := AddGear(gx, gy, gtFlame, 0, |
4033 SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, |
4033 SignAs(AngleSin(HHGear^.Angle) * speed, HHGear^.dX) + rx, |
4034 AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); |
4034 AngleCos(HHGear^.Angle) * ( - speed) + ry, 0); |
4035 end; |
4035 end; |
4036 Gear^.Timer:= Gear^.Tag |
4036 Gear^.Timer:= Gear^.Tag |
4037 end; |
4037 end; |
4038 |
4038 |
4039 if (Gear^.Health = 0) or (HHGear^.Damage <> 0) then |
4039 if (Gear^.Health = 0) or (HHGear^.Damage <> 0) then |
4040 begin |
4040 begin |
4041 DeleteGear(Gear); |
4041 DeleteGear(Gear); |
4042 AfterAttack |
4042 AfterAttack |
4043 end |
4043 end |
4044 else |
4044 else |
4045 begin |
4045 begin |
4046 if Gear^.Tex <> nil then FreeTexture(Gear^.Tex); |
4046 i:= round(Gear^.Health / 5); |
4047 Gear^.Tex := RenderStringTex(trmsg[sidFuel] + ': ' + inttostr(round(Gear^.Health / 5)) + |
4047 if i <> Gear^.Tag then |
4048 '%', cWhiteColor, fntSmall) |
4048 begin |
4049 end |
4049 Gear^.Tag:= i; |
|
4050 if Gear^.Tex <> nil then FreeTexture(Gear^.Tex); |
|
4051 Gear^.Tex := RenderStringTex(trmsg[sidFuel] + ': ' + inttostr(i) + |
|
4052 '%', cWhiteColor, fntSmall) |
|
4053 end |
|
4054 end |
4050 end; |
4055 end; |
4051 |
4056 |
4052 procedure doStepFlamethrower(Gear: PGear); |
4057 procedure doStepFlamethrower(Gear: PGear); |
4053 var |
4058 var |
4054 HHGear: PGear; |
4059 HHGear: PGear; |