hedgewars/GSHandlers.inc
changeset 8730 b39f433f8ab4
parent 8727 43b1487f02f6
child 8744 6c87486fd89b
equal deleted inserted replaced
8729:b19be476a2fa 8730:b39f433f8ab4
  4730 end;
  4730 end;
  4731 
  4731 
  4732 procedure doStepResurrector(Gear: PGear);
  4732 procedure doStepResurrector(Gear: PGear);
  4733 var
  4733 var
  4734     graves: PGearArrayS;
  4734     graves: PGearArrayS;
       
  4735     hh: PHedgehog;
  4735     i: LongInt;
  4736     i: LongInt;
  4736 begin
  4737 begin
  4737     AllInactive := false;
  4738     AllInactive := false;
  4738     graves := GearsNear(Gear^.X, Gear^.Y, gtGrave, Gear^.Radius);
  4739     graves := GearsNear(Gear^.X, Gear^.Y, gtGrave, Gear^.Radius);
  4739 
  4740 
  4740     if graves.size > 0 then
  4741     if graves.size > 0 then
  4741         begin
  4742         begin
       
  4743         hh := Gear^.Hedgehog;
  4742         for i:= 0 to graves.size - 1 do
  4744         for i:= 0 to graves.size - 1 do
  4743             begin
  4745             begin
  4744             PHedgehog(graves.ar^[i]^.Hedgehog)^.Gear := nil;
  4746             PHedgehog(graves.ar^[i]^.Hedgehog)^.Gear := nil;
  4745             graves.ar^[i]^.Health := 0;
  4747             graves.ar^[i]^.Health := 0;
  4746             end;
  4748             end;
  4747         Gear^.doStep := @doStepResurrectorWork;
  4749         Gear^.doStep := @doStepResurrectorWork;
       
  4750         if ((Gear^.Message and gmAttack) <> 0) and (hh^.Gear^.Health > 0) and (TurnTimeLeft > 0) then
       
  4751             begin
       
  4752             if LongInt(graves.size) <= Gear^.Tag then Gear^.Tag:= 0;
       
  4753             dec(hh^.Gear^.Health);
       
  4754             if (hh^.Gear^.Health = 0) and (hh^.Gear^.Damage = 0) then
       
  4755                 hh^.Gear^.Damage:= 1;
       
  4756             RenderHealth(hh^);
       
  4757             RecountTeamHealth(hh^.Team);
       
  4758             inc(graves.ar^[Gear^.Tag]^.Health);
       
  4759             inc(Gear^.Tag)
       
  4760             end 
  4748         end 
  4761         end 
  4749     else 
  4762     else 
  4750         begin
  4763         begin
  4751         StopSoundChan(Gear^.SoundChannel);
  4764         StopSoundChan(Gear^.SoundChannel);
  4752         Gear^.Timer := 250;
  4765         Gear^.Timer := 250;