equal
deleted
inserted
replaced
79 var Gear: PGear; |
79 var Gear: PGear; |
80 dmg, dmgBase: LongInt; |
80 dmg, dmgBase: LongInt; |
81 fX, fY, tdX, tdY: hwFloat; |
81 fX, fY, tdX, tdY: hwFloat; |
82 vg: PVisualGear; |
82 vg: PVisualGear; |
83 i, cnt: LongInt; |
83 i, cnt: LongInt; |
|
84 wrap: boolean; |
84 begin |
85 begin |
85 if Radius > 4 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')'); |
86 if Radius > 4 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')'); |
86 if Radius > 25 then KickFlakes(Radius, X, Y); |
87 if Radius > 25 then KickFlakes(Radius, X, Y); |
87 |
88 |
88 if ((Mask and EXPLNoGfx) = 0) then |
89 if ((Mask and EXPLNoGfx) = 0) then |
102 dmgBase:= dmgRadius + cHHRadius div 2;*) |
103 dmgBase:= dmgRadius + cHHRadius div 2;*) |
103 dmgBase:= Radius shl 1 + cHHRadius div 2; |
104 dmgBase:= Radius shl 1 + cHHRadius div 2; |
104 fX:= int2hwFloat(X); |
105 fX:= int2hwFloat(X); |
105 fY:= int2hwFloat(Y); |
106 fY:= int2hwFloat(Y); |
106 Gear:= GearsList; |
107 Gear:= GearsList; |
|
108 |
|
109 // we might have to run twice if weWrap is enabled |
|
110 wrap:= false; |
|
111 repeat; |
|
112 |
107 while Gear <> nil do |
113 while Gear <> nil do |
108 begin |
114 begin |
109 dmg:= 0; |
115 dmg:= 0; |
110 //dmg:= dmgRadius + cHHRadius div 2 - hwRound(Distance(Gear^.X - int2hwFloat(X), Gear^.Y - int2hwFloat(Y))); |
116 //dmg:= dmgRadius + cHHRadius div 2 - hwRound(Distance(Gear^.X - int2hwFloat(X), Gear^.Y - int2hwFloat(Y))); |
111 //if (dmg > 1) and |
117 //if (dmg > 1) and |
186 if (cnt > 0) and (SpritesData[sprChunk].Texture <> nil) then |
192 if (cnt > 0) and (SpritesData[sprChunk].Texture <> nil) then |
187 for i:= 0 to cnt do |
193 for i:= 0 to cnt do |
188 AddVisualGear(X, Y, vgtChunk) |
194 AddVisualGear(X, Y, vgtChunk) |
189 end; |
195 end; |
190 |
196 |
|
197 if (WorldEdge = weWrap) then |
|
198 begin |
|
199 // already wrapped? let's not wrap again! |
|
200 if wrap then |
|
201 break; |
|
202 |
|
203 // Radius + 5 because that's the actual radius the explosion changes graphically |
|
204 if X + (Radius + 5) > LongInt(rightX) then |
|
205 begin |
|
206 dec(X, playWidth); |
|
207 wrap:= true; |
|
208 end |
|
209 else if X - (Radius + 5) < LongInt(leftX) then |
|
210 begin |
|
211 inc(X, playWidth); |
|
212 wrap:= true; |
|
213 end; |
|
214 end; |
|
215 |
|
216 until (not wrap); |
|
217 |
191 uAIMisc.AwareOfExplosion(0, 0, 0) |
218 uAIMisc.AwareOfExplosion(0, 0, 0) |
192 end; |
219 end; |
193 |
220 |
194 function ModifyDamage(dmg: Longword; Gear: PGear): Longword; |
221 function ModifyDamage(dmg: Longword; Gear: PGear): Longword; |
195 var i: hwFloat; |
222 var i: hwFloat; |