Merge pull request #672 from 3alTemp/kill-on-leave

Register players leaving after getting damaged as kills
This commit is contained in:
Eric Froemling 2024-03-14 15:45:12 -07:00 committed by GitHub
commit 7fac5a32a2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 8 deletions

View File

@ -40,6 +40,8 @@
EraOSBeta!)
- Added a UI for customizing Series Length in Teams and Points-to-Win in FFA
(Thanks EraOSBeta!)
- Players leaving the game after getting hurt will now grant kills. (Thanks
Temp!)
- Sphinx based Python documentation generation is now wired up (Thanks
Loup-Garou911XD!)
- Renaming & overwriting existing profiles is no longer possible (Thanks Temp!)

View File

@ -223,10 +223,21 @@ class PlayerSpaz(Spaz):
elif isinstance(msg, bs.DieMessage):
# Report player deaths to the game.
if not self._dead:
# Immediate-mode or left-game deaths don't count as 'kills'.
killed = (
not msg.immediate and msg.how is not bs.DeathType.LEFT_GAME
# Was this player killed while being held?
was_held = self.held_count > 0 and self.last_player_held_by
# Was this player attacked before death?
was_attacked_recently = (
self.last_player_attacked_by
and bs.time() - self.last_attacked_time < 4.0
)
# Leaving the game doesn't count as a kill *unless*
# someone does it intentionally while being attacked.
left_game_cleanly = (
msg.how is bs.DeathType.LEFT_GAME
and not (was_held or was_attacked_recently)
)
killed = not (msg.immediate or left_game_cleanly)
activity = self._activity()
@ -236,7 +247,7 @@ class PlayerSpaz(Spaz):
else:
# If this player was being held at the time of death,
# the holder is the killer.
if self.held_count > 0 and self.last_player_held_by:
if was_held:
killerplayer = self.last_player_held_by
else:
# Otherwise, if they were attacked by someone in the
@ -246,10 +257,7 @@ class PlayerSpaz(Spaz):
# all bot kills would register as suicides; need to
# change this from last_player_attacked_by to
# something like last_actor_attacked_by to fix that.
if (
self.last_player_attacked_by
and bs.time() - self.last_attacked_time < 4.0
):
if was_attacked_recently:
killerplayer = self.last_player_attacked_by
else:
# ok, call it a suicide unless we're in co-op