equal
deleted
inserted
replaced
3077 doStepParachuteWork(Gear) |
3077 doStepParachuteWork(Gear) |
3078 end; |
3078 end; |
3079 |
3079 |
3080 //////////////////////////////////////////////////////////////////////////////// |
3080 //////////////////////////////////////////////////////////////////////////////// |
3081 procedure doStepAirAttackWork(Gear: PGear); |
3081 procedure doStepAirAttackWork(Gear: PGear); |
|
3082 var uw, nuw: boolean; |
|
3083 tmpFloat: hwFloat; |
3082 begin |
3084 begin |
3083 AllInactive := false; |
3085 AllInactive := false; |
3084 Gear^.X := Gear^.X + cAirPlaneSpeed * Gear^.Tag; |
3086 Gear^.X := Gear^.X + cAirPlaneSpeed * Gear^.Tag; |
3085 if (Gear^.Health > 0) and (not (Gear^.X < Gear^.dX)) and (Gear^.X < Gear^.dX + cAirPlaneSpeed) then |
3087 if (Gear^.Health > 0) and (not (Gear^.X < Gear^.dX)) and (Gear^.X < Gear^.dX + cAirPlaneSpeed) then |
3086 begin |
3088 begin |
3093 3: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtDrill, gsttmpFlag, cBombsSpeed * Gear^.Tag, _0, Gear^.Timer + 1); |
3095 3: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtDrill, gsttmpFlag, cBombsSpeed * Gear^.Tag, _0, Gear^.Timer + 1); |
3094 end; |
3096 end; |
3095 Gear^.dX := Gear^.dX + int2hwFloat(Gear^.Damage * Gear^.Tag); |
3097 Gear^.dX := Gear^.dX + int2hwFloat(Gear^.Damage * Gear^.Tag); |
3096 if CheckCoordInWater(hwRound(Gear^.X), hwRound(Gear^.Y)) then |
3098 if CheckCoordInWater(hwRound(Gear^.X), hwRound(Gear^.Y)) then |
3097 FollowGear^.State:= FollowGear^.State or gstSubmersible; |
3099 FollowGear^.State:= FollowGear^.State or gstSubmersible; |
3098 if (Gear^.SoundChannel <> -1) then |
3100 if (Gear^.SoundChannel <> -1) and (WorldEdge <> weSea) then |
3099 begin |
3101 begin |
3100 StopSoundChan(Gear^.SoundChannel, 4000); |
3102 StopSoundChan(Gear^.SoundChannel, 4000); |
3101 Gear^.SoundChannel := -1; |
3103 Gear^.SoundChannel := -1; |
3102 end; |
3104 end; |
3103 end; |
3105 end; |
3116 if (Gear^.SoundChannel <> -1) then |
3118 if (Gear^.SoundChannel <> -1) then |
3117 begin |
3119 begin |
3118 StopSoundChan(Gear^.SoundChannel); |
3120 StopSoundChan(Gear^.SoundChannel); |
3119 Gear^.SoundChannel := -1; |
3121 Gear^.SoundChannel := -1; |
3120 end; |
3122 end; |
3121 DeleteGear(Gear) |
3123 DeleteGear(Gear); |
3122 end |
3124 exit; |
|
3125 end; |
|
3126 |
|
3127 uw := (Gear^.Karma <> 0); // Was plane underwater last tick? |
|
3128 nuw := CheckCoordInWater(hwRound(Gear^.X) + Gear^.Radius * Gear^.Tag, hwRound(Gear^.Y)); // Is plane underwater now? |
|
3129 |
|
3130 // if water entered or left |
|
3131 if nuw <> uw then |
|
3132 begin |
|
3133 tmpFloat:= Gear^.dX; |
|
3134 Gear^.dX := cAirPlaneSpeed * Gear^.Tag; |
|
3135 AddSplashForGear(Gear, false); |
|
3136 Gear^.dX := tmpFloat; |
|
3137 StopSoundChan(Gear^.SoundChannel); |
|
3138 if nuw then |
|
3139 begin |
|
3140 Gear^.SoundChannel := LoopSound(sndPlaneWater); |
|
3141 StopSoundChan(Gear^.SoundChannel, 4000); |
|
3142 Gear^.SoundChannel := -1; |
|
3143 Gear^.Karma := 1; |
|
3144 end |
|
3145 else |
|
3146 begin |
|
3147 Gear^.SoundChannel := LoopSound(sndPlane); |
|
3148 Gear^.Karma := 0; |
|
3149 end; |
|
3150 end; |
|
3151 |
3123 end; |
3152 end; |
3124 |
3153 |
3125 procedure doStepAirAttack(Gear: PGear); |
3154 procedure doStepAirAttack(Gear: PGear); |
3126 var HHGear: PGear; |
3155 var HHGear: PGear; |
3127 begin |
3156 begin |
3156 else if (int2hwFloat(Gear^.Target.Y) - Gear^.Y > _0) then |
3185 else if (int2hwFloat(Gear^.Target.Y) - Gear^.Y > _0) then |
3157 Gear^.dX := Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(Gear^.Target.Y) - Gear^.Y) * 2 / |
3186 Gear^.dX := Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(Gear^.Target.Y) - Gear^.Y) * 2 / |
3158 cGravity) * Gear^.Tag; |
3187 cGravity) * Gear^.Tag; |
3159 |
3188 |
3160 Gear^.doStep := @doStepAirAttackWork; |
3189 Gear^.doStep := @doStepAirAttackWork; |
3161 Gear^.SoundChannel := LoopSound(sndPlane, 4000); |
3190 |
|
3191 if (WorldEdge = weSea) then |
|
3192 begin |
|
3193 Gear^.SoundChannel := LoopSound(sndPlaneWater, 4000); |
|
3194 Gear^.Karma := 1; |
|
3195 end |
|
3196 else |
|
3197 begin |
|
3198 Gear^.SoundChannel := LoopSound(sndPlane, 4000); |
|
3199 Gear^.Karma := 0; |
|
3200 end; |
3162 |
3201 |
3163 end; |
3202 end; |
3164 |
3203 |
3165 //////////////////////////////////////////////////////////////////////////////// |
3204 //////////////////////////////////////////////////////////////////////////////// |
3166 |
3205 |
3471 |
3510 |
3472 DeleteGear(Gear); |
3511 DeleteGear(Gear); |
3473 exit |
3512 exit |
3474 end; |
3513 end; |
3475 |
3514 |
|
3515 // particles |
3476 if (GameTicks and $3F) = 0 then |
3516 if (GameTicks and $3F) = 0 then |
3477 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); |
3517 AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace); |
3478 end; |
3518 end; |
3479 |
3519 |
3480 //////////////////////////////////////////////////////////////////////////////// |
3520 //////////////////////////////////////////////////////////////////////////////// |