hedgewars/uGears.pas
changeset 3136 326a8cb7d9b7
parent 3135 a7d0e22eaf28
child 3149 08c4d9670b54
equal deleted inserted replaced
3135:a7d0e22eaf28 3136:326a8cb7d9b7
    55             Tex: PTexture;
    55             Tex: PTexture;
    56             Z: Longword;
    56             Z: Longword;
    57             IntersectGear: PGear;
    57             IntersectGear: PGear;
    58             FlightTime: Longword;
    58             FlightTime: Longword;
    59             uid: Longword;
    59             uid: Longword;
    60             ImpactSound: TSound;
    60             ImpactSound: TSound; // first sound, others have to be after it in the sounds def.
       
    61             nImpactSounds: ShortInt; // count of ImpactSounds
    61             SoundChannel: LongInt
    62             SoundChannel: LongInt
    62         end;
    63         end;
    63 
    64 
    64 var AllInactive: boolean;
    65 var AllInactive: boolean;
    65     PrvInactive: boolean;
    66     PrvInactive: boolean;
   246 gear^.Z:= cUsualZ;
   247 gear^.Z:= cUsualZ;
   247 gear^.FlightTime:= 0;
   248 gear^.FlightTime:= 0;
   248 gear^.uid:= Counter;
   249 gear^.uid:= Counter;
   249 gear^.SoundChannel:= -1;
   250 gear^.SoundChannel:= -1;
   250 gear^.ImpactSound:= sndNone;
   251 gear^.ImpactSound:= sndNone;
       
   252 gear^.nImpactSounds:= 0;
   251 
   253 
   252 if CurrentTeam <> nil then
   254 if CurrentTeam <> nil then
   253     begin
   255     begin
   254     gear^.Hedgehog:= CurrentHedgehog;
   256     gear^.Hedgehog:= CurrentHedgehog;
   255     gear^.IntersectGear:= CurrentHedgehog^.Gear
   257     gear^.IntersectGear:= CurrentHedgehog^.Gear
   257 
   259 
   258 case Kind of
   260 case Kind of
   259    gtAmmo_Bomb,
   261    gtAmmo_Bomb,
   260  gtClusterBomb: begin
   262  gtClusterBomb: begin
   261                 gear^.ImpactSound:= sndGrenadeImpact;
   263                 gear^.ImpactSound:= sndGrenadeImpact;
       
   264                 gear^.nImpactSounds:= 1;
   262                 gear^.AdvBounce:= 1;
   265                 gear^.AdvBounce:= 1;
   263                 gear^.Radius:= 4;
   266                 gear^.Radius:= 4;
   264                 gear^.Elasticity:= _0_6;
   267                 gear^.Elasticity:= _0_6;
   265                 gear^.Friction:= _0_96;
   268                 gear^.Friction:= _0_96;
   266                 gear^.RenderTimer:= true;
   269                 gear^.RenderTimer:= true;
   267                 if gear^.Timer = 0 then gear^.Timer:= 3000
   270                 if gear^.Timer = 0 then gear^.Timer:= 3000
   268                 end;
   271                 end;
   269   gtWatermelon: begin
   272   gtWatermelon: begin
   270                 gear^.ImpactSound:= sndMelonImpact;
   273                 gear^.ImpactSound:= sndMelonImpact;
       
   274                 gear^.nImpactSounds:= 1;
   271                 gear^.AdvBounce:= 1;
   275                 gear^.AdvBounce:= 1;
   272                 gear^.Radius:= 4;
   276                 gear^.Radius:= 4;
   273                 gear^.Elasticity:= _0_8;
   277                 gear^.Elasticity:= _0_8;
   274                 gear^.Friction:= _0_995;
   278                 gear^.Friction:= _0_995;
   275                 gear^.RenderTimer:= true;
   279                 gear^.RenderTimer:= true;
   290                 gear^.Timer:= 1500;
   294                 gear^.Timer:= 1500;
   291                 gear^.Z:= 2002;
   295                 gear^.Z:= 2002;
   292                 end;
   296                 end;
   293        gtGrave: begin
   297        gtGrave: begin
   294                 gear^.ImpactSound:= sndGraveImpact;
   298                 gear^.ImpactSound:= sndGraveImpact;
       
   299                 gear^.nImpactSounds:= 1;
   295                 gear^.Radius:= 10;
   300                 gear^.Radius:= 10;
   296                 gear^.Elasticity:= _0_6;
   301                 gear^.Elasticity:= _0_6;
   297                 end;
   302                 end;
   298          gtBee: begin
   303          gtBee: begin
   299                 gear^.Radius:= 5;
   304                 gear^.Radius:= 5;
   333                 else
   338                 else
   334                     gear^.Timer:= cMinesTime*1;
   339                     gear^.Timer:= cMinesTime*1;
   335                 end;
   340                 end;
   336         gtCase: begin
   341         gtCase: begin
   337                 gear^.ImpactSound:= sndGraveImpact;
   342                 gear^.ImpactSound:= sndGraveImpact;
       
   343                 gear^.nImpactSounds:= 1;
   338                 gear^.Radius:= 16;
   344                 gear^.Radius:= 16;
   339                 gear^.Elasticity:= _0_3
   345                 gear^.Elasticity:= _0_3
   340                 end;
   346                 end;
   341   gtExplosives: begin
   347   gtExplosives: begin
   342                 gear^.ImpactSound:= sndGrenadeImpact;
   348                 gear^.ImpactSound:= sndGrenadeImpact;
       
   349                 gear^.nImpactSounds:= 1;
   343                 gear^.Radius:= 16;
   350                 gear^.Radius:= 16;
   344                 gear^.Elasticity:= _0_4;
   351                 gear^.Elasticity:= _0_4;
   345                 gear^.Friction:= _0_995;
   352                 gear^.Friction:= _0_995;
   346                 gear^.Health:= cBarrelHealth
   353                 gear^.Health:= cBarrelHealth
   347                 end;
   354                 end;
   409                 gear^.Z:= cOnHHZ;
   416                 gear^.Z:= cOnHHZ;
   410                 gear^.RenderTimer:= true;
   417                 gear^.RenderTimer:= true;
   411                 if not dX.isNegative then gear^.Angle:= 1 else gear^.Angle:= 3
   418                 if not dX.isNegative then gear^.Angle:= 1 else gear^.Angle:= 3
   412                 end;
   419                 end;
   413  gtHellishBomb: begin
   420  gtHellishBomb: begin
   414                 case random(4) of
   421                 gear^.ImpactSound:= sndHellishImpact1;
   415                     0: gear^.ImpactSound:= sndHellishImpact1;
   422                 gear^.nImpactSounds:= 4;
   416                     1: gear^.ImpactSound:= sndHellishImpact2;
       
   417                     2: gear^.ImpactSound:= sndHellishImpact3;
       
   418                     3: gear^.ImpactSound:= sndHellishImpact4
       
   419                 end;
       
   420                 gear^.AdvBounce:= 1;
   423                 gear^.AdvBounce:= 1;
   421                 gear^.Radius:= 4;
   424                 gear^.Radius:= 4;
   422                 gear^.Elasticity:= _0_5;
   425                 gear^.Elasticity:= _0_5;
   423                 gear^.Friction:= _0_96;
   426                 gear^.Friction:= _0_96;
   424                 gear^.RenderTimer:= true;
   427                 gear^.RenderTimer:= true;
   428                 gear^.Timer:= 5000;
   431                 gear^.Timer:= 5000;
   429                 gear^.Radius:= 4
   432                 gear^.Radius:= 4
   430                 end;
   433                 end;
   431         gtBall: begin
   434         gtBall: begin
   432                 gear^.ImpactSound:= sndGrenadeImpact;
   435                 gear^.ImpactSound:= sndGrenadeImpact;
       
   436                 gear^.nImpactSounds:= 1;
   433                 gear^.AdvBounce:= 1;
   437                 gear^.AdvBounce:= 1;
   434                 gear^.Radius:= 5;
   438                 gear^.Radius:= 5;
   435                 gear^.Tag:= random(8);
   439                 gear^.Tag:= random(8);
   436                 gear^.Timer:= 5000;
   440                 gear^.Timer:= 5000;
   437                 gear^.Elasticity:= _0_7;
   441                 gear^.Elasticity:= _0_7;