hedgewars/uGearsList.pas
branchwebgl
changeset 9950 2759212a27de
parent 9521 8054d9d775fd
parent 9825 de0da12b7d0e
child 10015 4feced261c68
--- a/hedgewars/uGearsList.pas	Fri Oct 11 17:43:13 2013 +0200
+++ b/hedgewars/uGearsList.pas	Sat Jan 04 23:55:54 2014 +0400
@@ -223,7 +223,8 @@
                     gear^.Timer:= 3000
                 end;
   gtMelonPiece: begin
-                gear^.Density:= _2;
+                gear^.AdvBounce:= 1;
+                gear^.Density:= _2
                 end;
     gtHedgehog: begin
                 gear^.AdvBounce:= 1;
@@ -238,16 +239,20 @@
                         gear^.Hedgehog^.Effects[heResurrectable] := 1;
                 end;
        gtShell: begin
+                gear^.Elasticity:= _0_8;
+                gear^.Friction:= _0_8;
                 gear^.Radius:= 4;
                 gear^.Density:= _1;
+                gear^.AdvBounce:= 1;
                 end;
        gtSnowball: begin
                 gear^.ImpactSound:= sndMudballImpact;
                 gear^.nImpactSounds:= 1;
                 gear^.Radius:= 4;
-                gear^.Elasticity:= _1;
-                gear^.Friction:= _1;
                 gear^.Density:= _0_5;
+                gear^.AdvBounce:= 1;
+                gear^.Elasticity:= _0_8;
+                gear^.Friction:= _0_8;
                 end;
 
      gtFlake: begin
@@ -259,9 +264,9 @@
                     if State and gstTmpFlag = 0 then
                         begin
                         dx.isNegative:= GetRandom(2) = 0;
-                        dx.QWordValue:= $40DA * GetRandom(10000) * 8;
+                        dx.QWordValue:= QWord($40DA) * GetRandom(10000) * 8;
                         dy.isNegative:= false;
-                        dy.QWordValue:= $3AD3 * GetRandom(7000) * 8;
+                        dy.QWordValue:= QWord($3AD3) * GetRandom(7000) * 8;
                         if GetRandom(2) = 0 then
                             dx := -dx
                         end;
@@ -329,9 +334,13 @@
                 gear^.Elasticity:= _0_55;
                 gear^.Friction:= _0_995;
                 gear^.Density:= _1_6;
+                gear^.AdvBounce:= 1;
                 if gear^.Timer = 0 then gear^.Timer:= 500;
                 end;
        gtKnife: begin
+                gear^.AdvBounce:= 1;
+                gear^.Elasticity:= _0_8;
+                gear^.Friction:= _0_8;
                 gear^.Density:= _4;
                 gear^.Radius:= 7
                 end;
@@ -343,6 +352,7 @@
                 if gear^.Timer = 0 then gear^.Timer:= 500
                 end;
   gtExplosives: begin
+                gear^.AdvBounce:= 1;
                 gear^.ImpactSound:= sndGrenadeImpact;
                 gear^.nImpactSounds:= 1;
                 gear^.Radius:= 16;
@@ -368,6 +378,9 @@
                 if gear^.Timer = 0 then gear^.Timer:= 5000;
                 end;
      gtCluster: begin
+                gear^.AdvBounce:= 1;
+                gear^.Elasticity:= _0_8;
+                gear^.Friction:= _0_8;
                 gear^.Radius:= 2;
                 gear^.Density:= _1_5;
                 gear^.RenderTimer:= true
@@ -385,6 +398,7 @@
                     end
                 end;
    gtFirePunch: begin
+                if gear^.Timer = 0 then gear^.Timer:= 3000;
                 gear^.Radius:= 15;
                 gear^.Tag:= Y
                 end;
@@ -411,6 +425,7 @@
                 gear^.Z:= cCurrHHZ+1;
                 end;
       gtMortar: begin
+                gear^.AdvBounce:= 1;
                 gear^.Radius:= 4;
                 gear^.Elasticity:= _0_2;
                 gear^.Friction:= _0_08;
@@ -445,6 +460,9 @@
                 if gear^.Timer = 0 then gear^.Timer:= 5000
                 end;
        gtDrill: begin
+                gear^.AdvBounce:= 1;
+                gear^.Elasticity:= _0_8;
+                gear^.Friction:= _0_8;
                 if gear^.Timer = 0 then
                     gear^.Timer:= 5000;
                 // Tag for drill strike. if 1 then first impact occured already
@@ -477,15 +495,17 @@
                 gear^.State:= Gear^.State or gstSubmersible
                 end;
      gtMolotov: begin
+                gear^.AdvBounce:= 1;
                 gear^.Radius:= 6;
-                gear^.Density:= _2;
+                gear^.Density:= _2
                 end;
        gtBirdy: begin
                 gear^.Radius:= 16; // todo: check
                 gear^.Health := 2000;
-                gear^.FlightTime := 2;
+                gear^.FlightTime := 2
                 end;
          gtEgg: begin
+                gear^.AdvBounce:= 1;
                 gear^.Radius:= 4;
                 gear^.Elasticity:= _0_6;
                 gear^.Friction:= _0_96;
@@ -496,7 +516,6 @@
       gtPortal: begin
                 gear^.ImpactSound:= sndMelonImpact;
                 gear^.nImpactSounds:= 1;
-                gear^.AdvBounce:= 0;
                 gear^.Radius:= 17;
                 // set color
                 gear^.Tag:= 2 * gear^.Timer;
@@ -536,6 +555,8 @@
                 gear^.Tag := 47;
                 end;
   gtNapalmBomb: begin
+                gear^.Elasticity:= _0_8;
+                gear^.Friction:= _0_8;
                 if gear^.Timer = 0 then gear^.Timer:= 1000;
                 gear^.Radius:= 5;
                 gear^.Density:= _1_5;