diff --git a/README.md b/README.md index b47ad618..1cf42339 100644 --- a/README.md +++ b/README.md @@ -237,6 +237,7 @@ * Decreased stun time by enemy players from 0.75 seconds to 0.5 seconds * Players can be stunned by enemy players while already stunned * Points awarded for stunning enemy players that are damaged +* Points awarded for downing enemy players * Landing on top of an enemy player downs them * Added player kill feed * Teams win rounds by getting all enemy players down diff --git a/scripts/zm/_zm_reimagined.gsc b/scripts/zm/_zm_reimagined.gsc index dc1267a5..583151cb 100644 --- a/scripts/zm/_zm_reimagined.gsc +++ b/scripts/zm/_zm_reimagined.gsc @@ -1747,15 +1747,7 @@ track_players_intersection_tracker() { if(getDvar("g_gametype") == "zgrief" && players[i]._encounters_team != players[j]._encounters_team) { - players[j] notify("new_griefer"); - if(!isDefined(players[j].last_griefed_by)) - { - players[j].last_griefed_by = spawnStruct(); - } - players[j].last_griefed_by.attacker = players[i]; - players[j].last_griefed_by.weapon = "none"; - players[j].last_griefed_by.meansofdeath = "MOD_FALLING"; - + players[j] scripts/zm/_zm_reimagined_grief::store_damage_info(players[i], "none", "MOD_FALLING"); players[j] dodamage( 1000, (0, 0, 0) ); } @@ -1765,15 +1757,7 @@ track_players_intersection_tracker() { if(getDvar("g_gametype") == "zgrief" && players[i]._encounters_team != players[j]._encounters_team) { - players[i] notify("new_griefer"); - if(!isDefined(players[i].last_griefed_by)) - { - players[i].last_griefed_by = spawnStruct(); - } - players[i].last_griefed_by.attacker = players[j]; - players[i].last_griefed_by.weapon = "none"; - players[i].last_griefed_by.meansofdeath = "MOD_FALLING"; - + players[i] scripts/zm/_zm_reimagined_grief::store_damage_info(players[j], "none", "MOD_FALLING"); players[i] dodamage( 1000, (0, 0, 0) ); } diff --git a/scripts/zm/_zm_reimagined_grief.gsc b/scripts/zm/_zm_reimagined_grief.gsc index b103c622..66acbff2 100644 --- a/scripts/zm/_zm_reimagined_grief.gsc +++ b/scripts/zm/_zm_reimagined_grief.gsc @@ -55,7 +55,8 @@ on_player_downed() { self waittill( "entering_last_stand" ); - self thread kill_feed(); + self kill_feed(); + self add_grief_downed_score(); } } @@ -178,7 +179,6 @@ kill_feed() if(isDefined(self.last_griefed_by)) { obituary(self, self.last_griefed_by.attacker, self.last_griefed_by.weapon, self.last_griefed_by.meansofdeath); - self.last_griefed_by = undefined; } else { @@ -186,6 +186,14 @@ kill_feed() } } +add_grief_downed_score() +{ + if(isDefined(self.score_lost_when_downed) && isDefined(self.last_griefed_by) && is_player_valid(self.last_griefed_by.attacker)) + { + self.last_griefed_by.attacker maps/mp/zombies/_zm_score::add_to_player_score(self.score_lost_when_downed); + } +} + init_round_start_wait(time) { flag_clear("spawn_zombies"); @@ -608,7 +616,7 @@ game_module_player_damage_callback( einflictor, eattacker, idamage, idflags, sme self thread do_game_mode_shellshock(); self playsound( "zmb_player_hit_ding" ); - self thread add_grief_score(eattacker); + self thread add_grief_stun_score(eattacker); self thread store_damage_info(eattacker, sweapon, smeansofdeath); } } @@ -625,7 +633,7 @@ do_game_mode_shellshock() self._being_shellshocked = 0; } -add_grief_score(attacker) +add_grief_stun_score(attacker) { if(is_player_valid(attacker) && self.health < self.maxhealth) { @@ -655,7 +663,9 @@ remove_damage_info() self endon("new_griefer"); self endon("disconnect"); - while(is_true(self._being_shellshocked) || self.health < self.maxhealth) + wait_network_frame(); // need to wait at least one frame + + while((is_true(self._being_shellshocked) || self.health < self.maxhealth) && is_player_valid(self)) { wait_network_frame(); }