hedgewars/uGearsList.pas
branchqmlfrontend
changeset 12855 1b2b84315d27
parent 12828 948eae885eac
child 12898 8a40ce061d94
equal deleted inserted replaced
11843:01f88c3b7b66 12855:1b2b84315d27
   103 (*         gtTardis *) , amTardis
   103 (*         gtTardis *) , amTardis
   104 (*         gtIceGun *) , amIceGun
   104 (*         gtIceGun *) , amIceGun
   105 (*        gtAddAmmo *) , amNothing
   105 (*        gtAddAmmo *) , amNothing
   106 (*  gtGenericFaller *) , amNothing
   106 (*  gtGenericFaller *) , amNothing
   107 (*          gtKnife *) , amKnife
   107 (*          gtKnife *) , amKnife
       
   108 (*           gtDuck *) , amDuck
   108     );
   109     );
   109 
   110 
   110 
   111 
   111 var GCounter: LongWord = 0; // this does not get re-initialized, but should be harmless
   112 var GCounter: LongWord = 0; // this does not get re-initialized, but should be harmless
   112 
   113 
   261          gtHammer: if cDamageModifier > _1 then // scale it based on cDamageModifier?
   262          gtHammer: if cDamageModifier > _1 then // scale it based on cDamageModifier?
   262                          Gear^.Boom := 2
   263                          Gear^.Boom := 2
   263                     else Gear^.Boom := 3;
   264                     else Gear^.Boom := 3;
   264     gtPoisonCloud: Gear^.Boom := 20;
   265     gtPoisonCloud: Gear^.Boom := 20;
   265           gtKnife: Gear^.Boom := 40000; // arbitrary scaling factor since impact-based
   266           gtKnife: Gear^.Boom := 40000; // arbitrary scaling factor since impact-based
       
   267            gtDuck: Gear^.Boom := 40;
   266     end;
   268     end;
   267 
   269 
   268 case Kind of
   270 case Kind of
   269      gtGrenade,
   271      gtGrenade,
   270      gtClusterBomb,
   272      gtClusterBomb,
   505                 gear^.Friction:= _0_8;
   507                 gear^.Friction:= _0_8;
   506                 gear^.Radius:= 2;
   508                 gear^.Radius:= 2;
   507                 gear^.Density:= _1_5;
   509                 gear^.Density:= _1_5;
   508                 gear^.RenderTimer:= true
   510                 gear^.RenderTimer:= true
   509                 end;
   511                 end;
   510       gtShover: gear^.Radius:= 20;
   512       gtShover: begin
       
   513                 gear^.Radius:= 20;
       
   514                 gear^.Tag:= 0;
       
   515                 gear^.Timer:= 50;
       
   516                 end;
   511        gtFlame: begin
   517        gtFlame: begin
   512                 gear^.Tag:= GetRandom(32);
   518                 gear^.Tag:= GetRandom(32);
   513                 gear^.Radius:= 1;
   519                 gear^.Radius:= 1;
   514                 gear^.Health:= 5;
   520                 gear^.Health:= 5;
   515                 gear^.Density:= _1;
   521                 gear^.Density:= _1;
   572                 gear^.Health:= 2048;
   578                 gear^.Health:= 2048;
   573                 gear^.Radius:= 7;
   579                 gear^.Radius:= 7;
   574                 gear^.Z:= cOnHHZ;
   580                 gear^.Z:= cOnHHZ;
   575                 gear^.RenderTimer:= false;
   581                 gear^.RenderTimer:= false;
   576                 gear^.DirAngle:= -90 * hwSign(Gear^.dX);
   582                 gear^.DirAngle:= -90 * hwSign(Gear^.dX);
       
   583                 gear^.FlightTime:= 100; // (roughly) ticks spent dropping, used to skip getting up anim when stuck.
       
   584                                         // Initially set to a high value so cake has at least one getting up anim.
   577                 if not dX.isNegative then
   585                 if not dX.isNegative then
   578                     gear^.Angle:= 1
   586                     gear^.Angle:= 1
   579                 else
   587                 else
   580                     gear^.Angle:= 3;
   588                     gear^.Angle:= 3;
   581                 New(cakeData);
   589                 New(cakeData);
   629                 gear^.State:= Gear^.State or gstSubmersible
   637                 gear^.State:= Gear^.State or gstSubmersible
   630                 end;
   638                 end;
   631      gtMolotov: begin
   639      gtMolotov: begin
   632                 gear^.AdvBounce:= 1;
   640                 gear^.AdvBounce:= 1;
   633                 gear^.Radius:= 6;
   641                 gear^.Radius:= 6;
       
   642                 gear^.Elasticity:= _0_8;
       
   643                 gear^.Friction:= _0_8;
   634                 gear^.Density:= _2
   644                 gear^.Density:= _2
   635                 end;
   645                 end;
   636        gtBirdy: begin
   646        gtBirdy: begin
   637                 gear^.Radius:= 16; // todo: check
   647                 gear^.Radius:= 16; // todo: check
   638                 gear^.Health := 2000;
   648                 gear^.Health := 2000;
   710                 end;
   720                 end;
   711 }
   721 }
   712       gtIceGun: begin
   722       gtIceGun: begin
   713                 gear^.Health:= 1000;
   723                 gear^.Health:= 1000;
   714                 gear^.Radius:= 8;
   724                 gear^.Radius:= 8;
       
   725                 end;
       
   726         gtDuck: begin
       
   727                 gear^.Pos:= 0;               // 0: in air, 1-4: on water, 5-8: underwater
       
   728                                              // 1: bottom, 2: bottom (mirrored),
       
   729                                              // 3: left Sea edge, 4: right Sea edge
       
   730                                              // 6: bottom, 7: bottom (mirrored)
       
   731                                              // 7: left Sea edge, 8: right Sea edge
       
   732                 gear^.Tag:= 1;               // 1: facing right, -1: facing left
       
   733                 if gear^.Timer = 0 then      
       
   734                     gear^.Timer:= 15000;     // Explosion timer to avoid duck existing forever
       
   735                 gear^.Radius:= 9;            // Collision radius (with landscape)
       
   736                 gear^.Karma:= 24;            // Distance from water when swimming
       
   737                 gear^.Damage:= 500;          // Speed factor when swimming on water (multiplied with wind speed)
       
   738                 gear^.State:= gear^.State or gstSubmersible;
       
   739                 gear^.Elasticity:= _0_6;
       
   740                 gear^.Friction:= _0_8;
       
   741                 gear^.Density:= _0_5;
       
   742                 gear^.AdvBounce:= 1;
   715                 end;
   743                 end;
   716 gtGenericFaller:begin
   744 gtGenericFaller:begin
   717                 gear^.AdvBounce:= 1;
   745                 gear^.AdvBounce:= 1;
   718                 gear^.Radius:= 1;
   746                 gear^.Radius:= 1;
   719                 gear^.Elasticity:= _0_9;
   747                 gear^.Elasticity:= _0_9;