equal
deleted
inserted
replaced
205 |
205 |
206 New(gear); |
206 New(gear); |
207 FillChar(gear^, sizeof(TGear), 0); |
207 FillChar(gear^, sizeof(TGear), 0); |
208 gear^.X:= int2hwFloat(X); |
208 gear^.X:= int2hwFloat(X); |
209 gear^.Y:= int2hwFloat(Y); |
209 gear^.Y:= int2hwFloat(Y); |
|
210 gear^.TargetX:= NoPointX; |
210 gear^.Kind := Kind; |
211 gear^.Kind := Kind; |
211 gear^.State:= State; |
212 gear^.State:= State; |
212 gear^.Active:= true; |
213 gear^.Active:= true; |
213 gear^.dX:= dX; |
214 gear^.dX:= dX; |
214 gear^.dY:= dY; |
215 gear^.dY:= dY; |
273 gtShell: begin |
274 gtShell: begin |
274 gear^.Radius:= 4; |
275 gear^.Radius:= 4; |
275 gear^.Density:= _1; |
276 gear^.Density:= _1; |
276 end; |
277 end; |
277 gtSnowball: begin |
278 gtSnowball: begin |
|
279 gear^.ImpactSound:= sndMudballImpact; |
|
280 gear^.nImpactSounds:= 1; |
278 gear^.Radius:= 4; |
281 gear^.Radius:= 4; |
279 gear^.Elasticity:= _1; |
282 gear^.Elasticity:= _1; |
280 gear^.Friction:= _1; |
283 gear^.Friction:= _1; |
281 gear^.Density:= _0_5; |
284 gear^.Density:= _0_5; |
282 end; |
285 end; |
308 gear^.Timer:= 500; |
311 gear^.Timer:= 500; |
309 gear^.RenderTimer:= true; |
312 gear^.RenderTimer:= true; |
310 gear^.Elasticity:= _0_9; |
313 gear^.Elasticity:= _0_9; |
311 gear^.Tag:= getRandom(32); |
314 gear^.Tag:= getRandom(32); |
312 end; |
315 end; |
|
316 gtSeduction: begin |
|
317 gear^.Radius:= 250; |
|
318 end; |
313 gtShotgunShot: begin |
319 gtShotgunShot: begin |
314 gear^.Timer:= 900; |
320 gear^.Timer:= 900; |
315 gear^.Radius:= 2 |
321 gear^.Radius:= 2 |
316 end; |
322 end; |
317 gtPickHammer: begin |
323 gtPickHammer: begin |
326 gear^.Radius:= 3; |
332 gear^.Radius:= 3; |
327 gear^.Friction:= _450 * _0_01 * cRopePercent; |
333 gear^.Friction:= _450 * _0_01 * cRopePercent; |
328 RopePoints.Count:= 0; |
334 RopePoints.Count:= 0; |
329 end; |
335 end; |
330 gtMine: begin |
336 gtMine: begin |
|
337 gear^.ImpactSound:= sndMineImpact; |
|
338 gear^.nImpactSounds:= 1; |
331 gear^.Health:= 10; |
339 gear^.Health:= 10; |
332 gear^.State:= gear^.State or gstMoving; |
340 gear^.State:= gear^.State or gstMoving; |
333 gear^.Radius:= 2; |
341 gear^.Radius:= 2; |
334 gear^.Elasticity:= _0_55; |
342 gear^.Elasticity:= _0_55; |
335 gear^.Friction:= _0_995; |
343 gear^.Friction:= _0_995; |
908 delay2:= cInactDelay * 50 |
916 delay2:= cInactDelay * 50 |
909 else |
917 else |
910 begin |
918 begin |
911 dec(delay2); |
919 dec(delay2); |
912 |
920 |
913 if ((delay2 mod cInactDelay) = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) then |
921 if ((delay2 mod cInactDelay) = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) and not CurrentHedgehog^.Unplaced then |
|
922 begin |
|
923 if (CurrentHedgehog^.Gear^.State and gstAttacked <> 0) and (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget <> 0) then |
|
924 begin |
|
925 CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State or gstHHChooseTarget; |
|
926 isCursorVisible := true |
|
927 end; |
914 CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and not gstAttacked; |
928 CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and not gstAttacked; |
|
929 end; |
915 if delay2 = 0 then |
930 if delay2 = 0 then |
916 begin |
931 begin |
917 if (CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.Gear^.State and gstAttacked = 0) then SweepDirty; |
932 if (CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.Gear^.State and gstAttacked = 0) then SweepDirty; |
918 CheckNoDamage; |
933 CheckNoDamage; |
919 AliveCount:= 0; // shorter version of check for win to allow typical step activity to proceed |
934 AliveCount:= 0; // shorter version of check for win to allow typical step activity to proceed |
1208 dmg, dmgRadius, dmgBase: LongInt; |
1223 dmg, dmgRadius, dmgBase: LongInt; |
1209 fX, fY: hwFloat; |
1224 fX, fY: hwFloat; |
1210 vg: PVisualGear; |
1225 vg: PVisualGear; |
1211 i, cnt: LongInt; |
1226 i, cnt: LongInt; |
1212 begin |
1227 begin |
1213 TargetPoint.X:= NoPointX; |
|
1214 if Radius > 4 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')'); |
1228 if Radius > 4 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')'); |
1215 if Radius > 25 then KickFlakes(Radius, X, Y); |
1229 if Radius > 25 then KickFlakes(Radius, X, Y); |
1216 |
1230 |
1217 if ((Mask and EXPLNoGfx) = 0) then |
1231 if ((Mask and EXPLNoGfx) = 0) then |
1218 begin |
1232 begin |
1585 procedure ResurrectHedgehog(gear: PGear); |
1599 procedure ResurrectHedgehog(gear: PGear); |
1586 var tempTeam : PTeam; |
1600 var tempTeam : PTeam; |
1587 begin |
1601 begin |
1588 gear^.dX := _0; |
1602 gear^.dX := _0; |
1589 gear^.dY := _0; |
1603 gear^.dY := _0; |
1590 gear^.State := gstWait; |
|
1591 gear^.Damage := 0; |
1604 gear^.Damage := 0; |
1592 gear^.Health := gear^.Hedgehog^.InitialHealth; |
1605 gear^.Health := gear^.Hedgehog^.InitialHealth; |
1593 gear^.Hedgehog^.Effects[hePoisoned] := false; |
1606 gear^.Hedgehog^.Effects[hePoisoned] := false; |
1594 if not CurrentHedgehog^.Effects[heResurrectable] then |
1607 if not CurrentHedgehog^.Effects[heResurrectable] then |
1595 with CurrentHedgehog^ do |
1608 with CurrentHedgehog^ do |
1602 DeleteCI(gear); |
1615 DeleteCI(gear); |
1603 FindPlace(gear, false, 0, LAND_WIDTH, true); |
1616 FindPlace(gear, false, 0, LAND_WIDTH, true); |
1604 if gear <> nil then begin |
1617 if gear <> nil then begin |
1605 RenderHealth(gear^.Hedgehog^); |
1618 RenderHealth(gear^.Hedgehog^); |
1606 ScriptCall('onGearResurrect', gear^.uid); |
1619 ScriptCall('onGearResurrect', gear^.uid); |
|
1620 gear^.State := gstWait; |
1607 end; |
1621 end; |
1608 RecountTeamHealth(tempTeam); |
1622 RecountTeamHealth(tempTeam); |
1609 end; |
1623 end; |
1610 |
1624 |
1611 function SpawnCustomCrateAt(x, y: LongInt; crate: TCrateType; content: Longword): PGear; |
1625 function SpawnCustomCrateAt(x, y: LongInt; crate: TCrateType; content: Longword): PGear; |