#include maps\mp\zombies\_zm_ai_ghost; #include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\zombies\_zm_utility; #include maps\mp\animscripts\zm_utility; #include maps\mp\zombies\_zm_ai_ghost_ffotd; #include maps\mp\zombies\_zm_spawner; #include maps\mp\zombies\_zm_weap_slowgun; #include maps\mp\animscripts\zm_shared; #include maps\mp\zombies\_zm_stats; #include maps\mp\zombies\_zm_score; #include maps\mp\zombies\_zm_laststand; #include maps\mp\zombies\_zm_weap_time_bomb; #include maps\mp\zombies\_zm_powerups; #include maps\mp\zombies\_zm_ai_basic; ghost_zone_spawning_think() { level endon( "intermission" ); if ( isdefined( level.intermission ) && level.intermission ) return; if ( !isdefined( level.female_ghost_spawner ) ) { return; } while ( true ) { if ( level.zombie_ghost_count >= level.zombie_ai_limit_ghost ) { wait 0.1; continue; } valid_player_count = 0; valid_players = []; while ( valid_player_count < 1 ) { players = getplayers(); valid_player_count = 0; foreach ( player in players ) { if ( is_player_valid( player ) && !is_player_fully_claimed( player ) ) { if ( isdefined( player.is_in_ghost_zone ) && player.is_in_ghost_zone ) { valid_player_count++; valid_players[valid_players.size] = player; } } } wait 0.1; } valid_players = array_randomize( valid_players ); spawn_point = get_best_spawn_point( valid_players[0] ); if ( !isdefined( spawn_point ) ) { wait 0.1; continue; } ghost_ai = undefined; if ( isdefined( level.female_ghost_spawner ) ) ghost_ai = spawn_zombie( level.female_ghost_spawner, level.female_ghost_spawner.targetname, spawn_point ); else { return; } if ( isdefined( ghost_ai ) ) { ghost_ai setclientfield( "ghost_fx", 3 ); ghost_ai.spawn_point = spawn_point; ghost_ai.is_ghost = 1; ghost_ai.is_spawned_in_ghost_zone = 1; ghost_ai.find_target = 1; level.zombie_ghost_count++; } else { return; } wait 0.1; } } should_last_ghost_drop_powerup() { if ( flag( "time_bomb_restore_active" ) ) return false; if ( !isdefined( level.ghost_round_last_ghost_origin ) ) return false; if ( !is_true( level.ghost_round_no_damage ) ) return false; return true; }