4082 DeleteCI(HHGear); |
4082 DeleteCI(HHGear); |
4083 |
4083 |
4084 doStepHammerHitWork(Gear); |
4084 doStepHammerHitWork(Gear); |
4085 Gear^.doStep := @doStepHammerHitWork |
4085 Gear^.doStep := @doStepHammerHitWork |
4086 end; |
4086 end; |
|
4087 |
|
4088 |
|
4089 procedure doStepResurrectorWork(Gear: PGear); |
|
4090 var |
|
4091 graves: TPGearArray; |
|
4092 resgear: PGear; |
|
4093 hh: PHedgehog; |
|
4094 i: LongInt; |
|
4095 begin |
|
4096 AllInactive := false; |
|
4097 hh := PHedgehog(Gear^.Hedgehog); |
|
4098 RenderHealth(hh^); |
|
4099 DrawCentered(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy - |
|
4100 cHHRadius - 14 - hh^.HealthTagTex^.h, hh^.HealthTagTex); |
|
4101 DrawCircle(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Radius, 1.5, 0, 0, $FF, |
|
4102 $FF); |
|
4103 |
|
4104 if ((Gear^.Message and gmUp) <> 0) then begin |
|
4105 if (GameTicks and $F) <> 0 then exit; |
|
4106 end else begin |
|
4107 if (GameTicks and $1FF) <> 0 then exit; |
|
4108 end; |
|
4109 |
|
4110 graves := GearsNear(hh^.Gear, gtGrave, Gear^.Radius); |
|
4111 |
|
4112 if ((Gear^.Message and gmAttack) <> 0) and (hh^.Gear^.Health > 0) then begin |
|
4113 i := getRandom(Length(graves)); |
|
4114 writeln(i); |
|
4115 dec(hh^.Gear^.Health); |
|
4116 inc(graves[i]^.Health); |
|
4117 {-for i:= 0 to High(graves) do begin |
|
4118 if hh^.Gear^.Health > 0 then begin |
|
4119 dec(hh^.Gear^.Health); |
|
4120 inc(graves[i]^.Health); |
|
4121 end; |
|
4122 end; -} |
|
4123 end else begin |
|
4124 // now really resurrect the hogs with the hp saved in the graves |
|
4125 for i:= 0 to High(graves) do begin |
|
4126 if graves[i]^.Health > 0 then begin |
|
4127 resgear := AddGear(hwRound(graves[i]^.X), hwRound(graves[i]^.Y), |
|
4128 gtHedgehog, gstWait, _0, _0, 0); |
|
4129 resgear^.Hedgehog := graves[i]^.Hedgehog; |
|
4130 resgear^.Health := graves[i]^.Health; |
|
4131 PHedgehog(graves[i]^.Hedgehog)^.Gear := resgear; |
|
4132 DeleteGear(graves[i]); |
|
4133 RenderHealth(PHedgehog(resgear^.Hedgehog)^); |
|
4134 RecountTeamHealth(Phedgehog(resgear^.Hedgehog)^.Team); |
|
4135 end; |
|
4136 end; |
|
4137 Gear^.Timer := 250; |
|
4138 Gear^.doStep := @doStepIdle; |
|
4139 end; |
|
4140 end; |
|
4141 |
|
4142 procedure doStepResurrector(Gear: PGear); |
|
4143 var |
|
4144 graves: TPGearArray; |
|
4145 hh: PHedgehog; |
|
4146 i: LongInt; |
|
4147 begin |
|
4148 AllInactive := false; |
|
4149 hh := PHedgehog(Gear^.Hedgehog); |
|
4150 graves := GearsNear(hh^.Gear, gtGrave, Gear^.Radius); |
|
4151 |
|
4152 if Length(graves) > 0 then begin |
|
4153 for i:= 0 to High(graves) do begin |
|
4154 PHedgehog(graves[i]^.Hedgehog)^.Gear := nil; |
|
4155 graves[i]^.Health := 0; |
|
4156 end; |
|
4157 Gear^.doStep := @doStepResurrectorWork; |
|
4158 end else begin |
|
4159 Gear^.Timer := 250; |
|
4160 Gear^.doStep := @doStepIdle; |
|
4161 end; |
|
4162 end; |
|
4163 |