diff --git a/scripts/zm/replaced/zgrief.gsc b/scripts/zm/replaced/zgrief.gsc index aeeb2fc4..1d2431d9 100644 --- a/scripts/zm/replaced/zgrief.gsc +++ b/scripts/zm/replaced/zgrief.gsc @@ -208,6 +208,8 @@ meat_stink( who ) } } + who thread meat_stink_ignoreme_think(); + who thread meat_stink_player_create(); who thread meat_stink_cleanup_on_downed(); @@ -238,6 +240,40 @@ meat_disable_weapons() self.meat_weapons_disabled = undefined; } +meat_stink_ignoreme_think() +{ + level endon("meat_thrown"); + level endon("meat_grabbed"); + self endon("disconnect"); + self endon("player_downed"); + self endon("bled_out"); + + while (1) + { + zombies = get_round_enemy_array(); + + players = get_players(); + foreach (player in players) + { + if (player == self) + { + continue; + } + + if (!is_player_valid(player)) + { + continue; + } + + close_zombies = get_array_of_closest(player.origin, zombies, undefined, 1, 64); + + player.ignoreme = close_zombies.size == 0; + } + + wait 0.05; + } +} + meat_stink_cleanup_on_downed() { level endon("meat_thrown"); @@ -354,6 +390,7 @@ meat_stink_player( who ) player print_meat_msg(who, "has"); } + who thread meat_stink_ignoreme_think(); who thread meat_stink_player_create(); who waittill_any_or_timeout( 30, "disconnect", "player_downed", "bled_out" ); players = get_players(); diff --git a/scripts/zm/zgrief/zgrief_reimagined.gsc b/scripts/zm/zgrief/zgrief_reimagined.gsc index 73a6b296..091a8a18 100644 --- a/scripts/zm/zgrief/zgrief_reimagined.gsc +++ b/scripts/zm/zgrief/zgrief_reimagined.gsc @@ -2599,6 +2599,7 @@ containment_think() start_time = getTime(); while((getTime() - start_time) <= 60000 || containment_zones.size == 1) { + zombies = get_round_enemy_array(); players = get_players(); in_containment_zone = []; in_containment_zone["axis"] = []; @@ -2637,12 +2638,11 @@ containment_think() } else { - if(is_player_valid(player)) + if(is_player_valid(player) && !isDefined(level.meat_player)) { - if(!isDefined(level.meat_player)) - { - player.ignoreme = 1; - } + close_zombies = get_array_of_closest(player.origin, zombies, undefined, 1, 64); + + player.ignoreme = close_zombies.size == 0; } player.obj_waypoint.alpha = 1; @@ -3056,6 +3056,8 @@ meat_think() while(1) { + players = get_players(); + if (isDefined(level.meat_player)) { if (!isDefined(held_time)) @@ -3113,7 +3115,6 @@ meat_think() level.item_meat.obj_waypoint_origin.origin = level.item_meat.origin + (0, 0, 32); - players = get_players(); foreach (player in players) { player.obj_waypoint.alpha = 1; @@ -3133,7 +3134,6 @@ meat_think() level.meat_powerup thread meat_waypoint_origin_destroy_on_death(); } - players = get_players(); foreach (player in players) { player.obj_waypoint.alpha = 1; @@ -3143,7 +3143,6 @@ meat_think() } else { - players = get_players(); foreach (player in players) { player.obj_waypoint.alpha = 0;