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; |