20 |
20 |
21 unit uAIAmmoTests; |
21 unit uAIAmmoTests; |
22 interface |
22 interface |
23 uses SDLh, uConsts, uFloat, uTypes; |
23 uses SDLh, uConsts, uFloat, uTypes; |
24 const amtest_OnTurn = $00000001; |
24 const amtest_OnTurn = $00000001; |
|
25 |
|
26 var windSpeed: real; |
25 |
27 |
26 type TAttackParams = record |
28 type TAttackParams = record |
27 Time: Longword; |
29 Time: Longword; |
28 Angle, Power: LongInt; |
30 Angle, Power: LongInt; |
29 ExplX, ExplY, ExplR: LongInt; |
31 ExplX, ExplY, ExplR: LongInt; |
104 (proc: nil; flags: 0), // amFlamethrower |
106 (proc: nil; flags: 0), // amFlamethrower |
105 (proc: @TestGrenade; flags: 0), // amSMine |
107 (proc: @TestGrenade; flags: 0), // amSMine |
106 (proc: @TestHammer; flags: 0), // amHammer |
108 (proc: @TestHammer; flags: 0), // amHammer |
107 (proc: nil; flags: 0), // amResurrector |
109 (proc: nil; flags: 0), // amResurrector |
108 (proc: nil; flags: 0), // amDrillStrike |
110 (proc: nil; flags: 0), // amDrillStrike |
109 (proc: @TestSnowball; flags: 0), // amSnowball |
111 (proc: nil; flags: 0), // amSnowball |
110 (proc: nil; flags: 0), // amTardis |
112 (proc: nil; flags: 0), // amTardis |
111 (proc: nil; flags: 0), // amStructure |
113 (proc: nil; flags: 0), // amStructure |
112 (proc: nil; flags: 0), // amLandGun |
114 (proc: nil; flags: 0), // amLandGun |
113 (proc: nil; flags: 0) // amIceGun |
115 (proc: nil; flags: 0) // amIceGun |
114 ); |
116 ); |
138 rTime:= 350; |
140 rTime:= 350; |
139 ap.ExplR:= 0; |
141 ap.ExplR:= 0; |
140 valueResult:= BadTurn; |
142 valueResult:= BadTurn; |
141 repeat |
143 repeat |
142 rTime:= rTime + 300 + Level * 50 + random(300); |
144 rTime:= rTime + 300 + Level * 50 + random(300); |
143 Vx:= - cWindSpeedf * rTime * 0.5 + (Targ.X + AIrndSign(2) - mX) / rTime; |
145 Vx:= - windSpeed * rTime * 0.5 + (Targ.X + AIrndSign(2) - mX) / rTime; |
144 Vy:= cGravityf * rTime * 0.5 - (Targ.Y - mY) / rTime; |
146 Vy:= cGravityf * rTime * 0.5 - (Targ.Y - mY) / rTime; |
145 r:= sqr(Vx) + sqr(Vy); |
147 r:= sqr(Vx) + sqr(Vy); |
146 if not (r > 1) then |
148 if not (r > 1) then |
147 begin |
149 begin |
148 x:= mX; |
150 x:= mX; |
196 rTime:= 350; |
198 rTime:= 350; |
197 ap.ExplR:= 0; |
199 ap.ExplR:= 0; |
198 valueResult:= BadTurn; |
200 valueResult:= BadTurn; |
199 repeat |
201 repeat |
200 rTime:= rTime + 300 + Level * 50 + random(1000); |
202 rTime:= rTime + 300 + Level * 50 + random(1000); |
201 Vx:= - cWindSpeedf * rTime * 0.5 + ((Targ.X + AIrndSign(2)) - meX) / rTime; |
203 Vx:= - windSpeed * rTime * 0.5 + ((Targ.X + AIrndSign(2)) - meX) / rTime; |
202 Vy:= cGravityf * rTime * 0.5 - (Targ.Y - meY) / rTime; |
204 Vy:= cGravityf * rTime * 0.5 - (Targ.Y - meY) / rTime; |
203 r:= sqr(Vx) + sqr(Vy); |
205 r:= sqr(Vx) + sqr(Vy); |
204 if not (r > 1) then |
206 if not (r > 1) then |
205 begin |
207 begin |
206 x:= meX; |
208 x:= meX; |