hedgewars/uGearsList.pas
branchwebgl
changeset 9197 e4e366013e9a
parent 9127 e350500c4edb
parent 9195 e653e96b0ec3
child 9521 8054d9d775fd
--- a/hedgewars/uGearsList.pas	Sun Jun 16 00:46:11 2013 +0400
+++ b/hedgewars/uGearsList.pas	Mon Jun 17 16:56:58 2013 +0200
@@ -267,7 +267,7 @@
                         end;
                     State:= State or gstInvisible;
                     Health:= random(vobFrameTicks);
-                    Timer:= random(vobFramesCount);
+                    if gear^.Timer = 0 then Timer:= random(vobFramesCount);
                     Damage:= (random(2) * 2 - 1) * (vobVelocity + random(vobVelocity)) * 8;
                     end
                 end;
@@ -279,7 +279,7 @@
                 end;
          gtBee: begin
                 gear^.Radius:= 5;
-                gear^.Timer:= 500;
+                if gear^.Timer = 0 then gear^.Timer:= 500;
                 gear^.RenderTimer:= true;
                 gear^.Elasticity:= _0_9;
                 gear^.Tag:= 0;
@@ -288,16 +288,16 @@
                 gear^.Radius:= 250;
                 end;
  gtShotgunShot: begin
-                gear^.Timer:= 900;
+                if gear^.Timer = 0 then gear^.Timer:= 900;
                 gear^.Radius:= 2
                 end;
   gtPickHammer: begin
                 gear^.Radius:= 10;
-                gear^.Timer:= 4000
+                if gear^.Timer = 0 then gear^.Timer:= 4000
                 end;
    gtHammerHit: begin
                 gear^.Radius:= 8;
-                gear^.Timer:= 125
+                if gear^.Timer = 0 then gear^.Timer:= 125
                 end;
         gtRope: begin
                 gear^.Radius:= 3;
@@ -313,10 +313,13 @@
                 gear^.Elasticity:= _0_55;
                 gear^.Friction:= _0_995;
                 gear^.Density:= _1;
-                if cMinesTime < 0 then
-                    gear^.Timer:= getrandom(51)*100
-                else
-                    gear^.Timer:= cMinesTime;
+                if gear^.Timer = 0 then
+                    begin
+                    if cMinesTime < 0 then
+                        gear^.Timer:= getrandom(51)*100
+                    else
+                        gear^.Timer:= cMinesTime
+                    end
                 end;
        gtSMine: begin
                 gear^.Health:= 10;
@@ -325,7 +328,7 @@
                 gear^.Elasticity:= _0_55;
                 gear^.Friction:= _0_995;
                 gear^.Density:= _1_6;
-                gear^.Timer:= 500;
+                if gear^.Timer = 0 then gear^.Timer:= 500;
                 end;
        gtKnife: begin
                 gear^.Density:= _4;
@@ -336,7 +339,7 @@
                 gear^.nImpactSounds:= 1;
                 gear^.Radius:= 16;
                 gear^.Elasticity:= _0_3;
-                gear^.Timer:= 500
+                if gear^.Timer = 0 then gear^.Timer:= 500
                 end;
   gtExplosives: begin
                 gear^.ImpactSound:= sndGrenadeImpact;
@@ -361,7 +364,7 @@
                 gear^.Elasticity:= _0_55;
                 gear^.Friction:= _0_03;
                 gear^.Density:= _2;
-                gear^.Timer:= 5000;
+                if gear^.Timer = 0 then gear^.Timer:= 5000;
                 end;
      gtCluster: begin
                 gear^.Radius:= 2;
@@ -391,7 +394,7 @@
                 end;
    gtBlowTorch: begin
                 gear^.Radius:= cHHRadius + cBlowTorchC;
-                gear^.Timer:= 7500
+                if gear^.Timer = 0 then gear^.Timer:= 7500
                 end;
     gtSwitcher: begin
                 gear^.Z:= cCurrHHZ
@@ -401,10 +404,8 @@
                 gear^.nImpactSounds:= 1;
                 gear^.Radius:= 10;
                 gear^.Elasticity:= _0_3;
-                gear^.Timer:= 0
                 end;
       gtTardis: begin
-                gear^.Timer:= 0;
                 gear^.Pos:= 1;
                 gear^.Z:= cCurrHHZ+1;
                 end;
@@ -440,7 +441,7 @@
                 gear^.Friction:= _0_96;
                 gear^.Density:= _1_5;
                 gear^.RenderTimer:= true;
-                gear^.Timer:= 5000
+                if gear^.Timer = 0 then gear^.Timer:= 5000
                 end;
        gtDrill: begin
                 if gear^.Timer = 0 then
@@ -456,23 +457,23 @@
                 gear^.AdvBounce:= 1;
                 gear^.Radius:= 5;
                 gear^.Tag:= random(8);
-                gear^.Timer:= 5000;
+                if gear^.Timer = 0 then gear^.Timer:= 5000;
                 gear^.Elasticity:= _0_7;
                 gear^.Friction:= _0_995;
                 gear^.Density:= _1_5;
                 end;
      gtBallgun: begin
-                gear^.Timer:= 5001;
+                if gear^.Timer = 0 then gear^.Timer:= 5001;
                 end;
      gtRCPlane: begin
-                gear^.Timer:= 15000;
+                if gear^.Timer = 0 then gear^.Timer:= 15000;
                 gear^.Health:= 3;
                 gear^.Radius:= 8
                 end;
      gtJetpack: begin
                 gear^.Health:= 2000;
                 gear^.Damage:= 100;
-                gear^.State:= gstSubmersible
+                gear^.State:= Gear^.State or gstSubmersible
                 end;
      gtMolotov: begin
                 gear^.Radius:= 6;
@@ -480,7 +481,6 @@
                 end;
        gtBirdy: begin
                 gear^.Radius:= 16; // todo: check
-                gear^.Timer:= 0;
                 gear^.Health := 2000;
                 gear^.FlightTime := 2;
                 end;
@@ -513,18 +513,18 @@
                 end;
 gtFlamethrower: begin
                 gear^.Tag:= 10;
-                gear^.Timer:= 10;
+                if gear^.Timer = 0 then gear^.Timer:= 10;
                 gear^.Health:= 500;
                 gear^.Damage:= 100;
                 end;
      gtLandGun: begin
                 gear^.Tag:= 10;
-                gear^.Timer:= 10;
+                if gear^.Timer = 0 then gear^.Timer:= 10;
                 gear^.Health:= 1000;
                 gear^.Damage:= 100;
                 end;
  gtPoisonCloud: begin
-                gear^.Timer:= 5000;
+                if gear^.Timer = 0 then gear^.Timer:= 5000;
                 gear^.dY:= int2hwfloat(-4 + longint(getRandom(8))) / 1000;
                 end;
  gtResurrector: begin
@@ -535,7 +535,7 @@
                 gear^.Tag := 47;
                 end;
   gtNapalmBomb: begin
-                gear^.Timer:= 1000;
+                if gear^.Timer = 0 then gear^.Timer:= 1000;
                 gear^.Radius:= 5;
                 gear^.Density:= _1_5;
                 end;