hedgewars/GSHandlers.inc
changeset 5715 59a8dd33f274
parent 5710 0fec06ac8776
child 5716 9505a6f3fe05
equal deleted inserted replaced
5714:efd8b227cc71 5715:59a8dd33f274
  4921 HH:= Gear^.Hedgehog;
  4921 HH:= Gear^.Hedgehog;
  4922 if Gear^.Pos = 2 then
  4922 if Gear^.Pos = 2 then
  4923     begin
  4923     begin
  4924     if (Gear^.Timer = 0) then
  4924     if (Gear^.Timer = 0) then
  4925         begin
  4925         begin
  4926         if HH^.Gear <> nil then
  4926         if (HH^.Gear <> nil) and (HH^.Gear^.State and gstInvisible = 0) then
  4927             begin
  4927             begin
  4928             if Gear = CurAmmoGear then CurAmmoGear := nil;
  4928             if Gear = CurAmmoGear then CurAmmoGear := nil;
  4929             DeleteCI(HH^.Gear);
  4929             DeleteCI(HH^.Gear);
  4930             RemoveGearFromList(HH^.Gear);
  4930             RemoveGearFromList(HH^.Gear);
  4931             with HH^.Gear^ do
  4931             with HH^.Gear^ do
  4936                 Message := Message and not gmAttack;
  4936                 Message := Message and not gmAttack;
  4937                 end;
  4937                 end;
  4938             HH^.GearHidden:= HH^.Gear;
  4938             HH^.GearHidden:= HH^.Gear;
  4939             HH^.Gear:= nil
  4939             HH^.Gear:= nil
  4940             end
  4940             end
  4941         else if HH^.GearHidden <> nil then
  4941         else if (HH^.Gear <> nil) and (HH^.Gear^.State and gstInvisible <> 0) then
  4942             begin
  4942             begin
  4943             HH^.Gear:= HH^.GearHidden;
       
  4944             HH^.GearHidden:= nil;
       
  4945             InsertGearToList(HH^.Gear);
  4943             InsertGearToList(HH^.Gear);
  4946             HH^.Gear^.State:= HH^.Gear^.State and not gstHHDriven;
  4944             HH^.Gear^.State:= HH^.Gear^.State and not (gstHHDriven or gstInvisible);
  4947             AddGearCI(HH^.Gear);
  4945             AddGearCI(HH^.Gear);
  4948             HH^.Gear^.Active:= true
  4946             HH^.Gear^.Active:= true
  4949             end;
  4947             end;
  4950         end;
  4948         end;
  4951 
  4949 
  4986         Gear^.Power:= 0;
  4984         Gear^.Power:= 0;
  4987         Gear^.Timer:= 0;
  4985         Gear^.Timer:= 0;
  4988         if HH^.GearHidden <> nil then FindPlace(HH^.GearHidden, false, 0, LAND_WIDTH,true);
  4986         if HH^.GearHidden <> nil then FindPlace(HH^.GearHidden, false, 0, LAND_WIDTH,true);
  4989         if HH^.GearHidden <> nil then 
  4987         if HH^.GearHidden <> nil then 
  4990             begin
  4988             begin
  4991             Gear^.X:= HH^.GearHidden^.X;
  4989             HH^.Gear:=HH^.GearHidden;
  4992             Gear^.Y:= HH^.GearHidden^.Y;
  4990             HH^.GearHidden:= nil;
       
  4991             HH^.Gear^.State:= HH^.Gear^.State or gstInvisible;
       
  4992             Gear^.X:= HH^.Gear^.X;
       
  4993             Gear^.Y:= HH^.Gear^.Y;
  4993             end
  4994             end
  4994         end
  4995         end
  4995     else dec(Gear^.Timer);
  4996     else dec(Gear^.Timer);
  4996     end;
  4997     end;
  4997 
  4998 
  5005     Conditions for not activating.
  5006     Conditions for not activating.
  5006     1. Hog is last of his clan
  5007     1. Hog is last of his clan
  5007     2. Sudden Death is in play
  5008     2. Sudden Death is in play
  5008     3. Hog is a king
  5009     3. Hog is a king
  5009 *)
  5010 *)
  5010     AfterAttack;
       
  5011     HH:= Gear^.Hedgehog;
  5011     HH:= Gear^.Hedgehog;
       
  5012     if HH^.Gear <> nil then 
       
  5013         begin
       
  5014         HH^.Gear^.Message := HH^.Gear^.Message and not gmAttack;
       
  5015         HH^.Gear^.State:= HH^.Gear^.State and not gstAttacking;
       
  5016         end;
  5012     if (HH^.Gear = nil) or (HH^.King) or (SuddenDeathDmg) then
  5017     if (HH^.Gear = nil) or (HH^.King) or (SuddenDeathDmg) then
  5013         begin
  5018         begin
       
  5019         PlaySound(sndDenied);
  5014         DeleteGear(gear);
  5020         DeleteGear(gear);
  5015         exit
  5021         exit
  5016         end;
  5022         end;
  5017     cnt:= 0;
  5023     cnt:= 0;
  5018     for j:= 0 to Pred(HH^.Team^.Clan^.TeamsNumber) do
  5024     for j:= 0 to Pred(HH^.Team^.Clan^.TeamsNumber) do
  5021                ((HH^.Team^.Clan^.Teams[j]^.Hedgehogs[i].Gear^.State and gstDrowning) = 0) and
  5027                ((HH^.Team^.Clan^.Teams[j]^.Hedgehogs[i].Gear^.State and gstDrowning) = 0) and
  5022                (HH^.Team^.Clan^.Teams[j]^.Hedgehogs[i].Gear^.Health >
  5028                (HH^.Team^.Clan^.Teams[j]^.Hedgehogs[i].Gear^.Health >
  5023                 HH^.Team^.Clan^.Teams[j]^.Hedgehogs[i].Gear^.Damage) then inc(cnt);
  5029                 HH^.Team^.Clan^.Teams[j]^.Hedgehogs[i].Gear^.Damage) then inc(cnt);
  5024     if cnt < 2 then
  5030     if cnt < 2 then
  5025         begin
  5031         begin
       
  5032         PlaySound(sndDenied);
  5026         DeleteGear(gear);
  5033         DeleteGear(gear);
  5027         exit
  5034         exit
  5028         end;
  5035         end;
  5029     with HH^.Gear^ do
  5036     AfterAttack;
  5030         begin
       
  5031         Message := Message and not gmAttack
       
  5032         end;
       
  5033     Gear^.doStep:= @doStepTardisWarp
  5037     Gear^.doStep:= @doStepTardisWarp
  5034 end;
  5038 end;
  5035 
  5039 
  5036 ////////////////////////////////////////////////////////////////////////////////
  5040 ////////////////////////////////////////////////////////////////////////////////
  5037 
  5041