diff -r 9237bfb198c7 -r 29f1ea94488b hedgewars/uStats.pas --- a/hedgewars/uStats.pas Thu Apr 06 22:34:02 2017 +0200 +++ b/hedgewars/uStats.pas Thu Apr 06 23:28:13 2017 +0200 @@ -30,6 +30,7 @@ procedure freeModule; procedure AmmoUsed(am: TAmmoType); +procedure HedgehogPoisoned(Gear: PGear; Attacker: PHedgehog); procedure HedgehogDamaged(Gear: PGear; Attacker: PHedgehog; Damage: Longword; killed: boolean); procedure Skipped; procedure TurnReaction; @@ -45,6 +46,9 @@ var DamageClan : Longword = 0; DamageTotal : Longword = 0; DamageTurn : Longword = 0; + PoisonTurn : Longword = 0; // Poisoned enemies per turn + PoisonClan : Longword = 0; // Poisoned own clan members in turn + PoisonTotal : Longword = 0; // Poisoned hogs in whole round KillsClan : LongWord = 0; Kills : LongWord = 0; KillsTotal : LongWord = 0; @@ -55,6 +59,21 @@ vpHurtSameClan: PVoicepack = nil; vpHurtEnemy: PVoicepack = nil; +procedure HedgehogPoisoned(Gear: PGear; Attacker: PHedgehog); +begin + if Attacker^.Team^.Clan = Gear^.HEdgehog^.Team^.Clan then + begin + vpHurtSameClan:= CurrentHedgehog^.Team^.voicepack; + inc(PoisonClan) + end + else + begin + vpHurtEnemy:= Gear^.Hedgehog^.Team^.voicepack; + inc(PoisonTurn) + end; + inc(PoisonTotal) +end; + procedure HedgehogDamaged(Gear: PGear; Attacker: PHedgehog; Damage: Longword; killed: boolean); begin if Attacker^.Team^.Clan = Gear^.Hedgehog^.Team^.Clan then @@ -109,8 +128,8 @@ s:= ansistring(CurrentHedgehog^.Name); inc(CurrentHedgehog^.stats.FinishedTurns); - // First blood (first damage or kill) - if ((DamageTotal > 0) or (KillsTotal > 0)) and ((CurrentHedgehog^.stats.DamageGiven = DamageTotal) and (CurrentHedgehog^.stats.StepKills = KillsTotal)) then + // First blood (first damage, poison or kill) + if ((DamageTotal > 0) or (KillsTotal > 0) or (PoisonTotal > 0)) and ((CurrentHedgehog^.stats.DamageGiven = DamageTotal) and (CurrentHedgehog^.stats.StepKills = KillsTotal) and (PoisonTotal = PoisonTurn + PoisonClan)) then AddVoice(sndFirstBlood, CurrentTeam^.voicepack) // Hog hurts itself only @@ -121,8 +140,8 @@ AddCaption(FormatA(GetEventString(eidHurtSelf), s), cWhiteColor, capgrpMessage); end - // Hog hurts own team/clan - else if (DamageClan <> 0) or (KillsClan <> 0) then + // Hog hurts, poisons or kills own team/clan member + else if (DamageClan <> 0) or (KillsClan <> 0) or (PoisonClan <> 0) then if (DamageTurn > DamageClan) or (Kills > KillsClan) then if random(2) = 0 then AddVoice(sndNutter, CurrentTeam^.voicepack) @@ -134,15 +153,15 @@ else AddVoice(sndTraitor, vpHurtSameClan) - // Hog hurts or kills enemy - else if (CurrentHedgehog^.stats.StepDamageGiven <> 0) or (CurrentHedgehog^.stats.StepKills <> 0) then + // Hog hurts, kills or poisons enemy + else if (CurrentHedgehog^.stats.StepDamageGiven <> 0) or (CurrentHedgehog^.stats.StepKills <> 0) or (PoisonTurn <> 0) then if Kills > 0 then AddVoice(sndEnemyDown, CurrentTeam^.voicepack) else AddVoice(sndRegret, vpHurtEnemy) // Missed shot - else if AmmoDamagingUsed and (Kills = 0) then + else if AmmoDamagingUsed and (Kills = 0) and (PoisonTurn = 0) and (PoisonClan = 0) and (DamageTurn = 0) then AddVoice(sndMissed, PreviousTeam^.voicepack) // Timeout @@ -187,6 +206,8 @@ KillsClan:= 0; DamageClan:= 0; DamageTurn:= 0; +PoisonClan:= 0; +PoisonTurn:= 0; AmmoUsedCount:= 0; AmmoDamagingUsed:= false; isTurnSkipped:= false @@ -349,6 +370,8 @@ DamageClan := 0; DamageTotal := 0; DamageTurn := 0; + PoisonClan := 0; + PoisonTurn := 0; KillsClan := 0; Kills := 0; KillsTotal := 0;