1174 //////////////////////////////////////////////////////////////////////////////// |
1174 //////////////////////////////////////////////////////////////////////////////// |
1175 procedure doStepAirAttackWork(Gear: PGear); |
1175 procedure doStepAirAttackWork(Gear: PGear); |
1176 begin |
1176 begin |
1177 AllInactive:= false; |
1177 AllInactive:= false; |
1178 Gear^.X:= Gear^.X + cAirPlaneSpeed * Gear^.Tag; |
1178 Gear^.X:= Gear^.X + cAirPlaneSpeed * Gear^.Tag; |
|
1179 |
1179 if (Gear^.Health > 0)and(not (Gear^.X < Gear^.dX))and(Gear^.X < Gear^.dX + cAirPlaneSpeed) then |
1180 if (Gear^.Health > 0)and(not (Gear^.X < Gear^.dX))and(Gear^.X < Gear^.dX + cAirPlaneSpeed) then |
1180 begin |
1181 begin |
1181 dec(Gear^.Health); |
1182 dec(Gear^.Health); |
1182 case Gear^.State of |
1183 case Gear^.State of |
1183 0: FollowGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, cBombsSpeed * Gear^.Tag, _0, 0); |
1184 0: FollowGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, cBombsSpeed * Gear^.Tag, _0, 0); |
1184 1: FollowGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtMine, 0, cBombsSpeed * Gear^.Tag, _0, 0); |
1185 1: FollowGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtMine, 0, cBombsSpeed * Gear^.Tag, _0, 0); |
1185 end; |
1186 end; |
1186 Gear^.dX:= Gear^.dX + int2hwFloat(30 * Gear^.Tag) |
1187 Gear^.dX:= Gear^.dX + int2hwFloat(30 * Gear^.Tag) |
1187 end; |
1188 end; |
|
1189 |
|
1190 if (GameTicks and $3F) = 0 then |
|
1191 AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0); |
|
1192 |
1188 if (hwRound(Gear^.X) > 3072) or (hwRound(Gear^.X) < -1024) then DeleteGear(Gear) |
1193 if (hwRound(Gear^.X) > 3072) or (hwRound(Gear^.X) < -1024) then DeleteGear(Gear) |
1189 end; |
1194 end; |
1190 |
1195 |
1191 procedure doStepAirAttack(Gear: PGear); |
1196 procedure doStepAirAttack(Gear: PGear); |
1192 begin |
1197 begin |
1193 AllInactive:= false; |
1198 AllInactive:= false; |
1194 |
1199 |
1195 if Gear^.X.QWordValue = 0 then Gear^.Tag:= 1 |
1200 if Gear^.X.QWordValue = 0 then Gear^.Tag:= 1 |
1196 else Gear^.Tag:= -1; |
1201 else Gear^.Tag:= -1; |
1197 Gear^.X:= _1024 - _2048 * Gear^.Tag; |
1202 Gear^.X:= _1024 - _2048 * Gear^.Tag; |
1198 Gear^.Y:= -_128; |
1203 Gear^.Y:= -_300; |
1199 Gear^.dX:= int2hwFloat(TargetPoint.X - 5 * Gear^.Tag * 15); |
1204 Gear^.dX:= int2hwFloat(TargetPoint.X - 5 * Gear^.Tag * 15); |
1200 |
1205 |
1201 if int2hwFloat(TargetPoint.Y) - Gear^.Y > _0 then |
1206 if int2hwFloat(TargetPoint.Y) - Gear^.Y > _0 then |
1202 Gear^.dX:= Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 / cGravity) * Gear^.Tag; |
1207 Gear^.dX:= Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 / cGravity) * Gear^.Tag; |
1203 |
1208 |