diff --git a/rust/src/game/mod.rs b/rust/src/game/mod.rs index 0d53e10..de4db44 100644 --- a/rust/src/game/mod.rs +++ b/rust/src/game/mod.rs @@ -738,6 +738,13 @@ impl Game { .insert(*team, self.goals.get(&team).copied().unwrap_or(0) + 1); } + if let Some(scorer_player) = self.find_player_mut(scorer) { + scorer_player.stats.goals += 1; + if teams.contains(&scorer_player.data.team) { + scorer_player.stats.own_goals += 1; + } + } + if let Some(self_player) = self.get_self() && let Some(mut local_player) = self_player.get_local_player() { @@ -1090,6 +1097,7 @@ impl Game { source_player.stats.kills += 1; source_player.killing_spree += 1; source_player.killing_spree_cd = 10.; + source_player.killing_spree } else { 0 @@ -1100,6 +1108,27 @@ impl Game { player.killing_spree_cd = 0.; player.stats.deaths += 1; } + + // Record friendly-fire kills + if let Some(target) = self.find_player(player_id).cloned() + && let DamageSource::Player(source_id) = source + && let Some(source_player) = self.find_player_mut(source_id) + { + if target.data.team == source_player.data.team { + source_player.stats.friendly_kills += 1; + } + } + + // Record friendly-fire deaths + if let DamageSource::Player(source_id) = source + && let Some(source_player) = self.find_player(source_id).cloned() + && let Some(target) = self.find_player_mut(player_id) + { + if target.data.team == source_player.data.team { + target.stats.friendly_deaths += 1; + } + } + self.run_deferred(move |s| { s.signals().on_player_killed().emit(player_id);