From: terencehill Date: Sat, 14 Aug 2021 13:04:48 +0000 (+0200) Subject: LMS: players joining late get the amount of health / armor as the less healthy player... X-Git-Tag: xonotic-v0.8.5~350^2~4 X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=61ec7040b5c809cc0ff62e92f21d5cbb8183bfb9 LMS: players joining late get the amount of health / armor as the less healthy player with the same number of lives --- diff --git a/qcsrc/common/gamemodes/gamemode/lms/sv_lms.qc b/qcsrc/common/gamemodes/gamemode/lms/sv_lms.qc index e69e1b7d44..dd2c93e503 100644 --- a/qcsrc/common/gamemodes/gamemode/lms/sv_lms.qc +++ b/qcsrc/common/gamemodes/gamemode/lms/sv_lms.qc @@ -197,6 +197,28 @@ MUTATOR_HOOKFUNCTION(lms, PutClientInServer) } } +MUTATOR_HOOKFUNCTION(lms, PlayerSpawn) +{ + entity player = M_ARGV(0, entity); + + if (warmup_stage || time < game_starttime) + return true; + + int pl_lives = GameRules_scoring_add(player, LMS_LIVES, 0); + float min_health = start_health; + float min_armorvalue = start_armorvalue; + FOREACH_CLIENT(it != player && IS_PLAYER(it) && !IS_DEAD(it) && GameRules_scoring_add(it, LMS_LIVES, 0) == pl_lives, { + if (GetResource(it, RES_HEALTH) < min_health) + min_health = GetResource(it, RES_HEALTH); + if (GetResource(it, RES_ARMOR) < min_armorvalue) + min_armorvalue = GetResource(it, RES_ARMOR); + }); + if (min_health != start_health) + SetResource(player, RES_HEALTH, max(1, min_health)); + if (min_armorvalue != start_armorvalue) + SetResource(player, RES_ARMOR, min_armorvalue); +} + MUTATOR_HOOKFUNCTION(lms, ForbidSpawn) { entity player = M_ARGV(0, entity);