47 else |
47 else |
48 PlaySound(sndOw1, false); |
48 PlaySound(sndOw1, false); |
49 |
49 |
50 dmg:= 1 + hwRound((hwAbs(Gear^.dY) - _0_4) * 70); |
50 dmg:= 1 + hwRound((hwAbs(Gear^.dY) - _0_4) * 70); |
51 inc(Gear^.Damage, dmg); |
51 inc(Gear^.Damage, dmg); |
52 AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y) + cHHRadius, dmg, Gear); |
52 AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y) + cHHRadius, dmg, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color); |
53 end |
53 end |
54 end; |
54 end; |
55 |
55 |
56 //////////////////////////////////////////////////////////////////////////////// |
56 //////////////////////////////////////////////////////////////////////////////// |
57 //////////////////////////////////////////////////////////////////////////////// |
57 //////////////////////////////////////////////////////////////////////////////// |
217 |
217 |
218 //////////////////////////////////////////////////////////////////////////////// |
218 //////////////////////////////////////////////////////////////////////////////// |
219 procedure doStepHealthTagWork(Gear: PGear); |
219 procedure doStepHealthTagWork(Gear: PGear); |
220 begin |
220 begin |
221 if Gear^.Kind = gtHealthTag then |
221 if Gear^.Kind = gtHealthTag then |
222 AllInactive:= false; |
222 AllInactive:= false; |
|
223 |
223 dec(Gear^.Timer); |
224 dec(Gear^.Timer); |
224 Gear^.Y:= Gear^.Y + Gear^.dY; |
225 Gear^.Y:= Gear^.Y + Gear^.dY; |
|
226 |
225 if Gear^.Timer = 0 then |
227 if Gear^.Timer = 0 then |
226 begin |
228 begin |
227 if Gear^.Kind = gtHealthTag then |
229 if Gear^.Kind = gtHealthTag then |
228 PHedgehog(Gear^.Hedgehog)^.Gear^.Active:= true; // to let current hh die |
230 PHedgehog(Gear^.Hedgehog)^.Gear^.Active:= true; // to let current hh die |
229 DeleteGear(Gear) |
231 DeleteGear(Gear) |
230 end |
232 end |
231 end; |
233 end; |
232 |
234 |
233 procedure doStepHealthTagWorkUnderWater(Gear: PGear); |
235 procedure doStepHealthTagWorkUnderWater(Gear: PGear); |
234 begin |
236 begin |
235 if Gear^.Kind = gtHealthTag then |
237 AllInactive:= false; |
236 AllInactive:= false; |
|
237 |
238 |
238 Gear^.Y:= Gear^.Y - _0_08; |
239 Gear^.Y:= Gear^.Y - _0_08; |
239 |
240 |
240 if hwRound(Gear^.Y) < cWaterLine + 10 then |
241 if hwRound(Gear^.Y) < cWaterLine + 10 then |
241 DeleteGear(Gear) |
242 DeleteGear(Gear) |
242 end; |
243 end; |
243 |
244 |
244 procedure doStepHealthTag(Gear: PGear); |
245 procedure doStepHealthTag(Gear: PGear); |
245 var s: shortstring; |
246 var s: shortstring; |
246 font: THWFont; |
247 begin |
247 begin |
248 AllInactive:= false; |
248 if Gear^.Kind = gtHealthTag then |
249 Gear^.dY:= -_0_08; |
249 begin |
|
250 AllInactive:= false; |
|
251 font:= fnt16; |
|
252 Gear^.dY:= -_0_08 |
|
253 end else |
|
254 begin |
|
255 font:= fntSmall; |
|
256 Gear^.dY:= -_0_02 |
|
257 end; |
|
258 |
250 |
259 str(Gear^.State, s); |
251 str(Gear^.State, s); |
260 Gear^.Tex:= RenderStringTex(s, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color, font); |
252 Gear^.Tex:= RenderStringTex(s, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color, fnt16); |
261 if hwRound(Gear^.Y) < cWaterLine then Gear^.doStep:= @doStepHealthTagWork |
253 |
262 else Gear^.doStep:= @doStepHealthTagWorkUnderWater; |
254 if hwRound(Gear^.Y) < cWaterLine then |
|
255 Gear^.doStep:= @doStepHealthTagWork |
|
256 else |
|
257 Gear^.doStep:= @doStepHealthTagWorkUnderWater; |
|
258 |
263 Gear^.Y:= Gear^.Y - int2hwFloat(Gear^.Tex^.h) |
259 Gear^.Y:= Gear^.Y - int2hwFloat(Gear^.Tex^.h) |
264 end; |
260 end; |
265 |
261 |
266 //////////////////////////////////////////////////////////////////////////////// |
262 //////////////////////////////////////////////////////////////////////////////// |
267 procedure doStepGrave(Gear: PGear); |
263 procedure doStepGrave(Gear: PGear); |
278 begin |
274 begin |
279 Gear^.Active:= false; |
275 Gear^.Active:= false; |
280 exit |
276 exit |
281 end else if Gear^.dY < - _0_03 then PlaySound(sndGraveImpact, false) |
277 end else if Gear^.dY < - _0_03 then PlaySound(sndGraveImpact, false) |
282 end; |
278 end; |
|
279 |
283 Gear^.Y:= Gear^.Y + Gear^.dY; |
280 Gear^.Y:= Gear^.Y + Gear^.dY; |
284 CheckGearDrowning(Gear); |
281 CheckGearDrowning(Gear); |
285 Gear^.dY:= Gear^.dY + cGravity |
282 Gear^.dY:= Gear^.dY + cGravity |
286 end; |
283 end; |
287 |
284 |