hedgewars/GSHandlers.inc
changeset 15 6200cca92480
parent 14 81f125629b25
child 16 b6f4b413dd41
equal deleted inserted replaced
14:81f125629b25 15:6200cca92480
   588    if ((Gear.State and gstAttacking) = 0) then
   588    if ((Gear.State and gstAttacking) = 0) then
   589       begin
   589       begin
   590       if (Gear.Tag = 0) then
   590       if (Gear.Tag = 0) then
   591          begin
   591          begin
   592          Gear.Tag:= 10;
   592          Gear.Tag:= 10;
   593          if isGearNear(Gear, gtHedgehog, 46, 32) then Gear.State:= Gear.State or gstAttacking
   593          if CheckGearNear(Gear, gtHedgehog, 46, 32) <> nil then Gear.State:= Gear.State or gstAttacking
   594          end else dec(Gear.Tag)
   594          end else dec(Gear.Tag)
   595       end else // gstAttacking <> 0
   595       end else // gstAttacking <> 0
   596       begin
   596       begin
   597       AllInactive:= false;
   597       AllInactive:= false;
   598       if (Gear.Timer and $1FF) = 0 then PlaySound(sndMineTick);
   598       if (Gear.Timer and $1FF) = 0 then PlaySound(sndMineTick);
   605       dec(Gear.Timer);
   605       dec(Gear.Timer);
   606       end else // gsttmpFlag = 0
   606       end else // gsttmpFlag = 0
   607    if TurnTimeLeft = 0 then Gear.State:= Gear.State or gsttmpFlag;
   607    if TurnTimeLeft = 0 then Gear.State:= Gear.State or gsttmpFlag;
   608 end;
   608 end;
   609 
   609 
       
   610 ////////////////////////////////////////////////////////////////////////////////
   610 procedure doStepCase(Gear: PGear);
   611 procedure doStepCase(Gear: PGear);
   611 begin
   612 begin
       
   613 if (Gear.Message and gm_Destroy) > 0 then
       
   614    begin
       
   615    DeleteGear(Gear);
       
   616    exit
       
   617    end;
       
   618 
   612 if (Gear.dY <> 0) or (not TestCollisionY(Gear, 1)) then
   619 if (Gear.dY <> 0) or (not TestCollisionY(Gear, 1)) then
   613    begin
   620    begin
   614    AllInactive:= false;
   621    AllInactive:= false;
   615    Gear.dY:= Gear.dY + cGravity;
   622    Gear.dY:= Gear.dY + cGravity;
   616    Gear.Y:= Gear.Y + Gear.dY;
   623    Gear.Y:= Gear.Y + Gear.dY;
   625    end;
   632    end;
   626 
   633 
   627 if (Gear.CollIndex = High(Longword)) and (Gear.dY = 0) then AddGearCR(Gear)
   634 if (Gear.CollIndex = High(Longword)) and (Gear.dY = 0) then AddGearCR(Gear)
   628    else if (Gear.CollIndex < High(Longword)) and (Gear.dY <> 0) then DeleteCR(Gear);
   635    else if (Gear.CollIndex < High(Longword)) and (Gear.dY <> 0) then DeleteCR(Gear);
   629 
   636 
   630 if (Gear.Tag = 0) then
       
   631    begin
       
   632    Gear.Tag:= 10;
       
   633    if isGearNear(Gear, gtHedgehog, 25, 25) then
       
   634       begin
       
   635       ;//give ammo to hedgehog
       
   636       DeleteGear(Gear);
       
   637       SetAllToActive;
       
   638       end;
       
   639    end else dec(Gear.Tag);
       
   640 
       
   641 if Gear.Damage > 0 then
   637 if Gear.Damage > 0 then
   642    begin
   638    begin
   643    DeleteGear(Gear);
   639    DeleteGear(Gear);
   644    doMakeExplosion(round(Gear.X), round(Gear.Y), 50, EXPLAutoSound)
   640    doMakeExplosion(round(Gear.X), round(Gear.Y), 50, EXPLAutoSound)
   645    end
   641    end