hedgewars/uGears.pas
changeset 75 d2b737858ff7
parent 74 42257fee61ae
child 78 66bb79dd248d
equal deleted inserted replaced
74:42257fee61ae 75:d2b737858ff7
    87                                   end;
    87                                   end;
    88                  end;
    88                  end;
    89 
    89 
    90 procedure DeleteGear(Gear: PGear); forward;
    90 procedure DeleteGear(Gear: PGear); forward;
    91 procedure doMakeExplosion(X, Y, Radius: integer; Mask: LongWord); forward;
    91 procedure doMakeExplosion(X, Y, Radius: integer; Mask: LongWord); forward;
    92 procedure AmmoShove(Ammo: PGear; Power: integer); forward;
    92 procedure AmmoShove(Ammo: PGear; Damage, Power: integer); forward;
    93 function  CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: integer): PGear; forward;
    93 function  CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: integer): PGear; forward;
    94 procedure SpawnBoxOfSmth; forward;
    94 procedure SpawnBoxOfSmth; forward;
    95 procedure AfterAttack; forward;
    95 procedure AfterAttack; forward;
    96 procedure FindPlace(Gear: PGear; withFall: boolean; Left, Right: integer); forward;
    96 procedure FindPlace(Gear: PGear; withFall: boolean; Left, Right: integer); forward;
    97 
    97 
   194                 Result.Elasticity:= 0.55;
   194                 Result.Elasticity:= 0.55;
   195                 Result.Friction:= 0.995;
   195                 Result.Friction:= 0.995;
   196                 Result.Timer:= 3000;
   196                 Result.Timer:= 3000;
   197                 end;
   197                 end;
   198         gtCase: begin
   198         gtCase: begin
   199                 Result.Radius:= 14;
   199                 Result.Radius:= 16;
   200                 Result.Elasticity:= 0.6
   200                 Result.Elasticity:= 0.6
   201                 end;
   201                 end;
   202   gtDEagleShot: begin
   202   gtDEagleShot: begin
   203                 Result.Radius:= 1;
   203                 Result.Radius:= 1;
   204                 Result.Radius:= 1;
   204                 Result.Radius:= 1;
   495                        then DrawSprite(sprMineOff , Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface)
   495                        then DrawSprite(sprMineOff , Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface)
   496                        else DrawSprite(sprMineOn  , Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface);
   496                        else DrawSprite(sprMineOn  , Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface);
   497         gtDynamite: DrawSprite2(sprDynamite, Round(Gear.X) - 16 + WorldDx, Round(Gear.Y) - 25 + WorldDy, Gear.Tag and 1, Gear.Tag shr 1, Surface);
   497         gtDynamite: DrawSprite2(sprDynamite, Round(Gear.X) - 16 + WorldDx, Round(Gear.Y) - 25 + WorldDy, Gear.Tag and 1, Gear.Tag shr 1, Surface);
   498             gtCase: case Gear.Pos of
   498             gtCase: case Gear.Pos of
   499                          posCaseAmmo  : DrawSprite(sprCase, Round(Gear.X) - 16 + WorldDx, Round(Gear.Y) - 16 + WorldDy, 0, Surface);
   499                          posCaseAmmo  : DrawSprite(sprCase, Round(Gear.X) - 16 + WorldDx, Round(Gear.Y) - 16 + WorldDy, 0, Surface);
   500                          posCaseHealth: DrawSprite(sprFAid, Round(Gear.X) - 16 + WorldDx, Round(Gear.Y) - 16 + WorldDy, (GameTicks shr 6) and $F, Surface);
   500                          posCaseHealth: DrawSprite(sprFAid, Round(Gear.X) - 24 + WorldDx, Round(Gear.Y) - 24 + WorldDy, (GameTicks shr 6) mod 13, Surface);
   501                          end;
   501                          end;
   502               end;
   502               end;
   503       Gear:= Gear.NextGear
   503       Gear:= Gear.NextGear
   504       end;
   504       end;
   505 end;
   505 end;
   567          end;
   567          end;
   568       Gear:= Gear.NextGear
   568       Gear:= Gear.NextGear
   569       end
   569       end
   570 end;
   570 end;
   571 
   571 
   572 procedure AmmoShove(Ammo: PGear; Power: integer);
   572 procedure AmmoShove(Ammo: PGear; Damage, Power: integer);
   573 var t: PGearArray;
   573 var t: PGearArray;
   574     i: integer;
   574     i: integer;
   575     Gear: PGear;
   575     Gear: PGear;
   576 begin
   576 begin
   577 t:= CheckGearsCollision(Ammo);
   577 t:= CheckGearsCollision(Ammo);
   581     dec(i);
   581     dec(i);
   582     case t.ar[i].Kind of
   582     case t.ar[i].Kind of
   583            gtHedgehog,
   583            gtHedgehog,
   584                gtMine,
   584                gtMine,
   585                gtCase: begin
   585                gtCase: begin
   586                        inc(t.ar[i].Damage, Power);
   586                        inc(t.ar[i].Damage, Damage);
   587                        t.ar[i].dX:= Ammo.dX * Power * 0.01;
   587                        t.ar[i].dX:= Ammo.dX * Power * 0.01;
   588                        t.ar[i].dY:= Ammo.dY * Power * 0.01;
   588                        t.ar[i].dY:= Ammo.dY * Power * 0.01;
   589                        t.ar[i].Active:= true;
   589                        t.ar[i].Active:= true;
   590                        DeleteCI(t.ar[i]);
   590                        DeleteCI(t.ar[i]);
   591                        FollowGear:= t.ar[i]
   591                        FollowGear:= t.ar[i]