65 PlaySound(sndOw4, false, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack) |
65 PlaySound(sndOw4, false, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack) |
66 else |
66 else |
67 PlaySound(sndOw1, false, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); |
67 PlaySound(sndOw1, false, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack); |
68 |
68 |
69 dmg:= modifyDamage(1 + hwRound((hwAbs(Gear^.dY) - _0_4) * 70)); |
69 dmg:= modifyDamage(1 + hwRound((hwAbs(Gear^.dY) - _0_4) * 70)); |
70 inc(Gear^.Damage, dmg); |
70 ApplyDamage(Gear, dmg); |
71 AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y) + cHHRadius, dmg, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color); |
|
72 end |
71 end |
73 end; |
72 end; |
74 |
73 |
75 //////////////////////////////////////////////////////////////////////////////// |
74 //////////////////////////////////////////////////////////////////////////////// |
76 //////////////////////////////////////////////////////////////////////////////// |
75 //////////////////////////////////////////////////////////////////////////////// |
282 |
281 |
283 if hwRound(Gear^.Y) < cWaterLine then |
282 if hwRound(Gear^.Y) < cWaterLine then |
284 Gear^.doStep:= @doStepHealthTagWork |
283 Gear^.doStep:= @doStepHealthTagWork |
285 else |
284 else |
286 Gear^.doStep:= @doStepHealthTagWorkUnderWater; |
285 Gear^.doStep:= @doStepHealthTagWorkUnderWater; |
|
286 |
|
287 Gear^.Y:= Gear^.Y - int2hwFloat(Gear^.Tex^.h) |
|
288 end; |
|
289 |
|
290 procedure doStepSpeechBubbleWork(Gear: PGear); |
|
291 begin |
|
292 dec(Gear^.Timer); |
|
293 |
|
294 if (PHedgehog(Gear^.Hedgehog)^.Gear <> nil) then |
|
295 begin |
|
296 Gear^.X:= PHedgehog(Gear^.Hedgehog)^.Gear^.X+int2hwFloat(Gear^.Tex^.w div 2 - Gear^.State); |
|
297 Gear^.Y:= PHedgehog(Gear^.Hedgehog)^.Gear^.Y-int2hwFloat(16+Gear^.Tex^.h); |
|
298 end; |
|
299 |
|
300 if Gear^.Timer = 0 then |
|
301 begin |
|
302 CurrentHedgehog^.SpeechGear:= nil; |
|
303 DeleteGear(Gear) |
|
304 end; |
|
305 end; |
|
306 |
|
307 procedure doStepSpeechBubble(Gear: PGear); |
|
308 begin |
|
309 if (CurrentHedgehog^.SpeechGear <> nil) then DeleteGear(CurrentHedgehog^.SpeechGear); |
|
310 CurrentHedgehog^.SpeechGear:= Gear; |
|
311 |
|
312 Gear^.Timer:= max(Length(Gear^.Text)*150,3000); |
|
313 |
|
314 Gear^.Tex:= RenderSpeechBubbleTex(Gear^.Text, Gear^.State, fnt16); |
|
315 |
|
316 // Arbitrary offsets added to the widths based on shape of current tails |
|
317 case Gear^.State of |
|
318 1: Gear^.State:= SpritesData[sprSpeechTail].Width-28; |
|
319 2: Gear^.State:= SpritesData[sprThoughtTail].Width-20; |
|
320 3: Gear^.State:= SpritesData[sprShoutTail].Width-10; |
|
321 end; |
|
322 |
|
323 Gear^.doStep:= @doStepSpeechBubbleWork; |
287 |
324 |
288 Gear^.Y:= Gear^.Y - int2hwFloat(Gear^.Tex^.h) |
325 Gear^.Y:= Gear^.Y - int2hwFloat(Gear^.Tex^.h) |
289 end; |
326 end; |
290 |
327 |
291 //////////////////////////////////////////////////////////////////////////////// |
328 //////////////////////////////////////////////////////////////////////////////// |