hedgewars/GSHandlers.inc
changeset 2017 7845c77c8d31
parent 2005 aa79f631711b
child 2023 41d3afaa20c7
equal deleted inserted replaced
2016:73b0bcc4396d 2017:7845c77c8d31
    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 ////////////////////////////////////////////////////////////////////////////////
   253 dec(Gear^.Timer);
   252 dec(Gear^.Timer);
   254 Gear^.Y:= Gear^.Y + Gear^.dY;
   253 Gear^.Y:= Gear^.Y + Gear^.dY;
   255 
   254 
   256 if Gear^.Timer = 0 then
   255 if Gear^.Timer = 0 then
   257 	begin
   256 	begin
   258 	if Gear^.Kind = gtHealthTag then
   257 	if (Gear^.Kind = gtHealthTag) and (PHedgehog(Gear^.Hedgehog)^.Gear <> nil) then
   259 		PHedgehog(Gear^.Hedgehog)^.Gear^.Active:= true; // to let current hh die
   258 		PHedgehog(Gear^.Hedgehog)^.Gear^.Active:= true; // to let current hh die
   260 	DeleteGear(Gear)
   259 	DeleteGear(Gear)
   261 	end
   260 	end
   262 end;
   261 end;
   263 
   262 
   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 ////////////////////////////////////////////////////////////////////////////////