alright so recently i must have screwed with my gsc files, and it screwed things up so... yeah. below are the GSC files that i think are causing the problem.
#include maps\_anim; #include maps\_utility; #include common_scripts\utility; #include maps\_music; #include maps\_zombiemode_utility; #include maps\_busing; #using_animtree( "generic_human" ); main(init_zombie_spawner_name) { precache_shaders(); precache_models(); PrecacheItem( "fraggrenade" ); PrecacheItem( "colt" ); init_strings(); init_levelvars(); init_animscripts(); init_sounds(); init_shellshocks(); init_flags(); //Limit zombie to 24 max, must have for network purposes SetAILimit( 24 ); // the initial spawners if( !IsDefined( init_zombie_spawner_name) ) { level.enemy_spawns = getEntArray( "zombie_spawner_init", "targetname" ); } else { level.enemy_spawns = getEntArray( init_zombie_spawner_name, "targetname" ); } level.zombie_rise_spawners = []; //maps\_destructible_type94truck::init(); level.custom_introscreen = ::zombie_intro_screen; level.custom_intermission = ::player_intermission; level.reset_clientdvars = ::onPlayerConnect_clientDvars; init_fx(); // load map defaults maps\_load::main(); level.hudelem_count = 0; // Call the other zombiemode scripts if( level.script == "nazi_zombie_sumpf" ) { maps\_zombiemode_weapons_sumpf::init(); } else { maps\_zombiemode_weapons::init(); } maps\_zombiemode_blockers_new::init(); maps\_zombiemode_spawner::init(); maps\_zombiemode_powerups::init(); maps\_zombiemode_radio::init(); maps\_zombiemode_perks::init(); maps\_zombiemode_tesla::init(); maps\_zombiemode_bowie::bowie_init(); maps\_zombiemode_cymbal_monkey::init(); maps\_zombiemode_betty::init(); maps\_zombiemode_timer::init(); maps\_zombiemode_auto_turret::init(); /# maps\_zombiemode_devgui::init(); #/ init_utility(); // register a client system... maps\_utility::registerClientSys("zombify";); // level thread coop_player_spawn_placement(); // zombie ai and anim inits init_anims(); if( isDefined( level.custom_ai_type ) ) { for( i = 0; i < level.custom_ai_type.size; i++ ) { [[ level.custom_ai_type ]](); } } // Sets up function pointers for animscripts to refer to level.playerlaststand_func = ::player_laststand; // level.global_kill_func = maps\_zombiemode_spawner::zombie_death; level.global_damage_func = maps\_zombiemode_spawner::zombie_damage; level.global_damage_func_ads = maps\_zombiemode_spawner::zombie_damage_ads; level.overridePlayerKilled = ::player_killed_override; level.overridePlayerDamage = ::player_damage_override; level.melee_miss_func = maps\_zombiemode::zombiemode_melee_miss; if( !IsDefined( level.Player_Spawn_func ) ) { level.Player_Spawn_func = ::coop_player_spawn_placement; } level thread [[level.Player_Spawn_func]](); // used to a check in last stand for players to become zombies level.is_zombie_level = true; level.player_becomes_zombie = ::zombify_player; // so we dont get the uber colt when we're knocked out level.laststandpistol = "colt"; level.round_start_time = 0; level thread onPlayerConnect(); init_dvars(); initZombieLeaderboardData(); flag_wait( "all_players_connected" ); bbPrint( "sessions: mapname %s gametype zom isserver 1", level.script ); //thread zombie_difficulty_ramp_up(); // Start the Zombie MODE! level thread end_game(); level thread round_start(); level thread players_playing(); if ( IsDefined( level.crawlers_enabled ) && level.crawlers_enabled == 1 ) { level thread crawler_round_tracker(); } //chrisp - adding spawning vo level thread spawn_vo(); //add ammo tracker for VO level thread track_players_ammo_count(); //level thread prevent_near_origin(); DisableGrenadeSuicide(); level.startInvulnerableTime = GetDvarInt( "player_deathInvulnerableTime" ); // Do a SaveGame, so we can restart properly when we die SaveGame( "zombie_start", &"AUTOSAVE_LEVELSTART", "", true ); // TESTING // wait( 3 ); // level thread intermission(); // thread testing_spawner_bug(); if(!IsDefined(level.eggs) ) { level.eggs = 0; } } zombiemode_melee_miss() { if( isDefined( self.enemy.curr_pay_turret ) ) { self.enemy DoDamage( (60 / GetDvarFloat("player_damageMultiplier";)), self.origin, self, self ); } } /*------------------------------------ chrisp - adding vo to track players ammo ------------------------------------*/ track_players_ammo_count() { self endon("disconnect";); self endon("death";); if(!IsDefined (level.player_ammo_low)) { level.player_ammo_low = 0; } if(!IsDefined(level.player_ammo_out)) { level.player_ammo_out = 0; } while(1) { players = get_players(); for(i=0;i<players.size;i++) { weap = players getcurrentweapon(); //iprintln("current weapon: " + weap); //iprintlnbold(weap); //Excludes all Perk based 'weapons' so that you don't get low ammo spam. if(!isDefined(weap) || weap == "none" || weap == "zombie_perk_bottle_doubletap" || weap == "zombie_perk_bottle_jugg" || weap == "zombie_perk_bottle_revive" || weap == "zombie_perk_bottle_sleight" || weap == "mine_bouncing_betty" || weap == "syrette" || weap == "zombie_knuckle_crack" || weap == "zombie_bowie_flourish" ) { continue; } //iprintln("checking ammo for " + weap); if ( players GetAmmoCount( weap ) > 5) { continue; } if ( players maps\_laststand::player_is_in_laststand() ) { continue; } else if (players GetAmmoCount( weap ) < 5 && players GetAmmoCount( weap ) > 0) { if (level.player_ammo_low == 0) { level.player_ammo_low = 1; players thread add_low_ammo_dialog(); players thread ammo_dialog_timer(); level waittill("send_dialog_reminder";); level.player_ammo_low = 0; } } else if (players GetAmmoCount( weap ) == 0) { if(!isDefined(weap) || weap == "none";) { continue; } level.player_ammo_out = 1; players thread add_no_ammo_dialog( weap ); //put in this wait to keep the game from spamming about being low on ammo. wait(20); level.player_ammo_out = 0; } else { continue; } } wait(.5); } } ammo_dialog_timer() { level endon ("ammo_out";); while(1) { wait(20); level notify ("send_dialog_reminder";); } } add_low_ammo_dialog() { index = maps\_zombiemode_weapons::get_player_index(self); player_index = "plr_" + index + "_"; if(!IsDefined (self.vox_ammo_low)) { num_variants = maps\_zombiemode_spawner::get_number_ iants(player_index + "vox_ammo_low";); self.vox_ammo_low = []; for(i=0;i<num_variants;i++) { self.vox_ammo_low[self.vox_ammo_low.size] = "vox_ammo_low_" + i; } self.vox_ammo_low_available = self.vox_ammo_low; } sound_to_play = random(self.vox_ammo_low_available); self.vox_ammo_low_available = array_remove(self.vox_ammo_low_available,sound_to_play); if (self.vox_ammo_low_available.size < 1 ) { self.vox_ammo_low_available = self.vox_ammo_low; } self maps\_zombiemode_spawner::do_player_playdialog(player_index, sound_to_play, 0.25); } add_no_ammo_dialog( weap ) { self endon( "disconnect" ); // Let's pause here a couple of seconds to see if we're really out of ammo. // If you take a weapon, there's a second or two where your current weapon // will be set to no ammo while you switch to the new one. wait(2); curr_weap = self getcurrentweapon(); if ( !IsDefined(curr_weap) || curr_weap != weap || self GetAmmoCount( curr_weap ) != 0 ) { // False alarm return; } index = maps\_zombiemode_weapons::get_player_index(self); player_index = "plr_" + index + "_"; if(!IsDefined (self.vox_ammo_out)) { num_variants = maps\_zombiemode_spawner::get_number_variants(player_index + "vox_ammo_out";); self.vox_ammo_out = []; for(i=0;i<num_variants;i++) { self.vox_ammo_out[self.vox_ammo_out.size] = "vox_ammo_out_" + i; } self.vox_ammo_out_available = self.vox_ammo_out; } sound_to_play = random(self.vox_ammo_out_available); self.vox_ammo_out_available = array_remove(self.vox_ammo_out_available,sound_to_play); if (self.vox_ammo_out_available.size < 1 ) { self.vox_ammo_out_available = self.vox_ammo_out; } self maps\_zombiemode_spawner::do_player_playdialog(player_index, sound_to_play, 0.25); } /*------------------------------------ audio plays when more than 1 player connects ------------------------------------*/ spawn_vo() { //not sure if we need this wait(1); players = getplayers(); //just pick a random player for now and play some vo if(players.size > 1) { player = random(players); index = maps\_zombiemode_weapons::get_player_index(player); player thread spawn_vo_player(index,players.size); } } spawn_vo_player(index,num) { sound = "plr_" + index + "_vox_" + num +"play"; self playsound(sound, "sound_done";); self waittill("sound_done";); } testing_spawner_bug() { wait( 0.1 ); level.round_number = 7; spawners = []; spawners[0] = GetEnt( "testy", "targetname" ); while( 1 ) { wait( 1 ); level.enemy_spawns = spawners; } } precache_shaders() { PrecacheShader( "hud_chalk_1" ); PrecacheShader( "hud_chalk_2" ); PrecacheShader( "hud_chalk_3" ); PrecacheShader( "hud_chalk_4" ); PrecacheShader( "hud_chalk_5" ); } precache_models() { precachemodel( "char_ger_honorgd_zomb_behead" ); precachemodel( "char_ger_zombieeye" ); PrecacheModel( "tag_origin" ); } init_shellshocks() { level.player_killed_shellshock = "zombie_death"; PrecacheShellshock( level.player_killed_shellshock ); } init_strings() { PrecacheString( &"ZOMBIE_WEAPONCOSTAMMO" ); PrecacheString( &"ZOMBIE_ROUND" ); PrecacheString( &"SCRIPT_PLUS" ); PrecacheString( &"ZOMBIE_GAME_OVER" ); PrecacheString( &"ZOMBIE_SURVIVED_ROUND" ); PrecacheString( &"ZOMBIE_SURVIVED_ROUNDS" ); add_zombie_hint( "undefined", &"ZOMBIE_UNDEFINED" ); // Random Treasure Chest add_zombie_hint( "default_treasure_chest_950", &"ZOMBIE_RANDOM_WEAPON_950" ); // Barrier Pieces add_zombie_hint( "default_buy_barrier_piece_10", &"ZOMBIE_BUTTON_BUY_BACK_BARRIER_10" ); add_zombie_hint( "default_buy_barrier_piece_20", &"ZOMBIE_BUTTON_BUY_BACK_BARRIER_20" ); add_zombie_hint( "default_buy_barrier_piece_50", &"ZOMBIE_BUTTON_BUY_BACK_BARRIER_50" ); add_zombie_hint( "default_buy_barrier_piece_100", &"ZOMBIE_BUTTON_BUY_BACK_BARRIER_100" ); // REWARD Barrier Pieces add_zombie_hint( "default_reward_barrier_piece", &"ZOMBIE_BUTTON_REWARD_BARRIER" ); add_zombie_hint( "default_reward_barrier_piece_10", &"ZOMBIE_BUTTON_REWARD_BARRIER_10" ); add_zombie_hint( "default_reward_barrier_piece_20", &"ZOMBIE_BUTTON_REWARD_BARRIER_20" ); add_zombie_hint( "default_reward_barrier_piece_30", &"ZOMBIE_BUTTON_REWARD_BARRIER_30" ); add_zombie_hint( "default_reward_barrier_piece_40", &"ZOMBIE_BUTTON_REWARD_BARRIER_40" ); add_zombie_hint( "default_reward_barrier_piece_50", &"ZOMBIE_BUTTON_REWARD_BARRIER_50" ); // Debris add_zombie_hint( "default_buy_debris_100", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_100" ); add_zombie_hint( "default_buy_debris_200", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_200" ); add_zombie_hint( "default_buy_debris_250", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_250" ); add_zombie_hint( "default_buy_debris_500", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_500" ); add_zombie_hint( "default_buy_debris_750", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_750" ); add_zombie_hint( "default_buy_debris_1000", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_1000" ); add_zombie_hint( "default_buy_debris_1250", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_1250" ); add_zombie_hint( "default_buy_debris_1500", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_1500" ); add_zombie_hint( "default_buy_debris_1750", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_1750" ); add_zombie_hint( "default_buy_debris_2000", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_2000" ); // Doors add_zombie_hint( "default_buy_door_100", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_100" ); add_zombie_hint( "default_buy_door_200", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_200" ); add_zombie_hint( "default_buy_door_250", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_250" ); add_zombie_hint( "default_buy_door_500", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_500" ); add_zombie_hint( "default_buy_door_750", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_750" ); add_zombie_hint( "default_buy_door_1000", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_1000" ); add_zombie_hint( "default_buy_door_1250", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_1250" ); add_zombie_hint( "default_buy_door_1500", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_1500" ); add_zombie_hint( "default_buy_door_1750", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_1750" ); add_zombie_hint( "default_buy_door_2000", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_2000" ); // Areas add_zombie_hint( "default_buy_area_100", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_100" ); add_zombie_hint( "default_buy_area_200", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_200" ); add_zombie_hint( "default_buy_area_250", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_250" ); add_zombie_hint( "default_buy_area_500", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_500" ); add_zombie_hint( "default_buy_area_750", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_750" ); add_zombie_hint( "default_buy_area_1000", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_1000" ); add_zombie_hint( "default_buy_area_1250", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_1250" ); add_zombie_hint( "default_buy_area_1500", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_1500" ); add_zombie_hint( "default_buy_area_1750", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_1750" ); add_zombie_hint( "default_buy_area_2000", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_2000" ); } init_sounds() { add_sound( "end_of_round", "round_over" ); add_sound( "end_of_game", "mx_game_over" ); //Had to remove this and add a music state switch so that we can add other musical elements. add_sound( "chalk_one_up", "chalk" ); add_sound( "purchase", "cha_ching" ); add_sound( "no_purchase", "no_cha_ching" ); // Zombification // TODO need to vary these up add_sound( "playerzombie_usebutton_sound", "attack_vocals" ); add_sound( "playerzombie_attackbutton_sound", "attack_vocals" ); add_sound( "playerzombie_adsbutton_sound", "attack_vocals" ); // Head gib add_sound( "zombie_head_gib", "zombie_head_gib" ); // Blockers add_sound( "rebuild_barrier_piece", "repair_boards" ); add_sound( "rebuild_barrier_hover", "boards_float" ); add_sound( "debris_hover_loop", "couch_loop" ); add_sound( "break_barrier_piece", "break_boards" ); add_sound("blocker_end_move", "board_slam";); add_sound( "barrier_rebuild_slam", "board_slam" ); // Doors add_sound( "door_slide_open", "door_slide_open" ); add_sound( "door_rotate_open", "door_slide_open" ); // Debris add_sound( "debris_move", "weap_wall" ); // Random Weapon Chest add_sound( "open_chest", "lid_open" ); add_sound( "music_chest", "music_box" ); add_sound( "close_chest", "lid_close" ); // Weapons on walls add_sound( "weapon_show", "weap_wall" ); } init_levelvars() { level.intermission = false; level.dog_intermission = false; level.zombie_total = 0; level.no_laststandmissionfail = true; level.zombie_vars = []; // Default to not zombify the player till further support set_zombie_var( "zombify_player", false ); set_zombie_var( "below_world_check", -1000 ); // Respawn in the spectators in between rounds set_zombie_var( "spectators_respawn", true ); // Round set_zombie_var( "zombie_use_failsafe", true ); set_zombie_var( "zombie_round_time", 30 ); set_zombie_var( "zombie_between_round_time", 10 ); set_zombie_var( "zombie_intermission_time", 15 ); // Spawning set_zombie_var( "zombie_spawn_delay", 2 ); // AI set_zombie_var( "zombie_health_increase", 100 ); set_zombie_var( "zombie_health_increase_percent", 10, 100 ); set_zombie_var( "zombie_health_start", 150 ); set_zombie_var( "zombie_max_ai", 24 ); set_zombie_var( "zombie_ai_per_player", 6); // Scoring set_zombie_var( "zombie_score_start", 1000 ); /# if( GetDvarInt( "zombie_cheat" ) >= 1 ) { set_zombie_var( "zombie_score_start", 1000 ); } #/ set_zombie_var( "zombie_score_kill", 200 ); set_zombie_var( "zombie_score_damage", 5 ); set_zombie_var( "zombie_score_bonus_melee", 80 ); set_zombie_var( "zombie_score_bonus_head", 50 ); set_zombie_var( "zombie_score_bonus_neck", 20 ); set_zombie_var( "zombie_score_bonus_torso", 10 ); set_zombie_var( "zombie_score_bonus_burn", 10 ); set_zombie_var( "penalty_no_revive_percent", 10, 100 ); set_zombie_var( "penalty_died_percent", 0, 100 ); set_zombie_var( "penalty_downed_percent", 5, 100 ); set_zombie_var( "zombie_flame_dmg_point_delay", 500 ); if ( IsSplitScreen() ) { set_zombie_var( "zombie_timer_offset", 280 ); // hud offsets } } init_dvars() { level.zombiemode = true; //coder mod: tkeegan - new code dvar setSavedDvar( "zombiemode", "1" ); SetDvar( "ui_gametype", "zom" ); setSavedDvar( "fire_world_damage", "0" ); setSavedDvar( "fire_world_damage_rate", "0" ); setSavedDvar( "fire_world_damage_duration", "0" ); if( GetDvar( "zombie_debug" ) == "" ) { SetDvar( "zombie_debug", "0" ); } if( GetDvar( "zombie_cheat" ) == "" ) { SetDvar( "zombie_cheat", "0" ); } if(getdvar("magic_chest_movable";) == "";) { SetDvar( "magic_chest_movable", "1" ); } if(getdvar("magic_box_explore_only";) == "";) { SetDvar( "magic_box_explore_only", "1" ); } SetDvar( "revive_trigger_radius", "120" ); } initZombieLeaderboardData() { // Initializing Leaderboard Stat Variables level.zombieLeaderboardStatVariable["nazi_zombie_prototype"]["highestwave"] = "nz_prototype_highestwave"; level.zombieLeaderboardStatVariable["nazi_zombie_prototype"]["timeinwave"] = "nz_prototype_timeinwave"; level.zombieLeaderboardStatVariable["nazi_zombie_prototype"]["totalpoints"] = "nz_prototype_totalpoints"; level.zombieLeaderboardStatVariable["nazi_zombie_asylum"]["highestwave"] = "nz_asylum_highestwave"; level.zombieLeaderboardStatVariable["nazi_zombie_asylum"]["timeinwave"] = "nz_asylum_timeinwave"; level.zombieLeaderboardStatVariable["nazi_zombie_asylum"]["totalpoints"] = "nz_asylum_totalpoints"; level.zombieLeaderboardStatVariable["nazi_zombie_sumpf"]["highestwave"] = "nz_sumpf_highestwave"; level.zombieLeaderboardStatVariable["nazi_zombie_sumpf"]["timeinwave"] = "nz_sumpf_timeinwave"; level.zombieLeaderboardStatVariable["nazi_zombie_sumpf"]["totalpoints"] = "nz_sumpf_totalpoints"; level.zombieLeaderboardStatVariable["nazi_zombie_factory"]["highestwave"] = "nz_factory_highestwave"; level.zombieLeaderboardStatVariable["nazi_zombie_factory"]["timeinwave"] = "nz_factory_timeinwave"; level.zombieLeaderboardStatVariable["nazi_zombie_factory"]["totalpoints"] = "nz_factory_totalpoints"; // Initializing Leaderboard Number level.zombieLeaderboardNumber["nazi_zombie_prototype"]["waves"] = 13; level.zombieLeaderboardNumber["nazi_zombie_prototype"]["points"] = 14; level.zombieLeaderboardNumber["nazi_zombie_asylum"]["waves"] = 15; level.zombieLeaderboardNumber["nazi_zombie_asylum"]["points"] = 16; level.zombieLeaderboardNumber["nazi_zombie_sumpf"]["waves"] = 17; level.zombieLeaderboardNumber["nazi_zombie_sumpf"]["points"] = 18; level.zombieLeaderboardNumber["nazi_zombie_factory"]["waves"] = 19; level.zombieLeaderboardNumber["nazi_zombie_factory"]["points"] = 20; } init_flags() { flag_init("spawn_point_override";); flag_init("electricity_on";); flag_init("crawler_round";); } init_fx() { level._effect["wood_chunk_destory"] = loadfx( "impacts/large_woodhit" ); level._effect["edge_fog"] = LoadFx( "env/smoke/fx_fog_zombie_amb" ); level._effect["chest_light"] = LoadFx( "env/light/fx_ray_sun_sm_short" ); level._effect["eye_glow"] = LoadFx( "misc/fx_zombie_eye_single" ); level._effect["zombie_grain"] = LoadFx( "misc/fx_zombie_grain_cloud" ); level._effect["headshot"] = LoadFX( "impacts/flesh_hit_head_fatal_lg_exit" ); level._effect["headshot_nochunks"] = LoadFX( "misc/fx_zombie_bloodsplat" ); level._effect["bloodspurt"] = LoadFX( "misc/fx_zombie_bloodspurt" ); level._effect["tesla_head_light"] = Loadfx( "maps/zombie/fx_zombie_tesla_neck_spurt";); level._effect["rise_burst_water"] = LoadFx("maps/zombie/fx_zombie_body_wtr_burst";); level._effect["rise_billow_water"] = LoadFx("maps/zombie/fx_zombie_body_wtr_billowing";); level._effect["rise_dust_water"] = LoadFx("maps/zombie/fx_zombie_body_wtr_falling";); level._effect["rise_burst"] = LoadFx("maps/mp_maps/fx_mp_zombie_hand_dirt_burst";); level._effect["rise_billow"] = LoadFx("maps/mp_maps/fx_mp_zombie_body_dirt_billowing";); level._effect["rise_dust"] = LoadFx("maps/mp_maps/fx_mp_zombie_body_dust_falling";); // Flamethrower level._effect["character_fire_pain_sm"] = loadfx( "env/fire/fx_fire_player_sm_1sec" ); level._effect["character_fire_death_sm"] = loadfx( "env/fire/fx_fire_player_md" ); level._effect["character_fire_death_torso"] = loadfx( "env/fire/fx_fire_player_torso" ); } // zombie specific anims init_standard_zombie_anims() { // deaths level.scr_anim["zombie"]["death1"] = %ai_zombie_death_v1; level.scr_anim["zombie"]["death2"] = %ai_zombie_death_v2; level.scr_anim["zombie"]["death3"] = %ai_zombie_crawl_death_v1; level.scr_anim["zombie"]["death4"] = %ai_zombie_crawl_death_v2; // run cycles level.scr_anim["zombie"]["walk1"] = %ai_zombie_walk_v1; level.scr_anim["zombie"]["walk2"] = %ai_zombie_walk_v2; level.scr_anim["zombie"]["walk3"] = %ai_zombie_walk_v3; level.scr_anim["zombie"]["walk4"] = %ai_zombie_walk_v4; level.scr_anim["zombie"]["run1"] = %ai_zombie_walk_fast_v1; level.scr_anim["zombie"]["run2"] = %ai_zombie_walk_fast_v2; level.scr_anim["zombie"]["run3"] = %ai_zombie_walk_fast_v3; level.scr_anim["zombie"]["run4"] = %ai_zombie_run_v2; level.scr_anim["zombie"]["run5"] = %ai_zombie_run_v4; level.scr_anim["zombie"]["run6"] = %ai_zombie_run_v3; //level.scr_anim["zombie"]["run4"] = %ai_zombie_run_v1; //level.scr_anim["zombie"]["run6"] = %ai_zombie_run_v4; level.scr_anim["zombie"]["sprint1"] = %ai_zombie_sprint_v1; level.scr_anim["zombie"]["sprint2"] = %ai_zombie_sprint_v2; level.scr_anim["zombie"]["sprint3"] = %ai_zombie_sprint_v1; level.scr_anim["zombie"]["sprint4"] = %ai_zombie_sprint_v2; //level.scr_anim["zombie"]["sprint3"] = %ai_zombie_sprint_v3; //level.scr_anim["zombie"]["sprint3"] = %ai_zombie_sprint_v4; //level.scr_anim["zombie"]["sprint4"] = %ai_zombie_sprint_v5; // run cycles in prone level.scr_anim["zombie"]["crawl1"] = %ai_zombie_crawl; level.scr_anim["zombie"]["crawl2"] = %ai_zombie_crawl_v1; level.scr_anim["zombie"]["crawl3"] = %ai_zombie_crawl_v2; level.scr_anim["zombie"]["crawl4"] = %ai_zombie_crawl_v3; level.scr_anim["zombie"]["crawl5"] = %ai_zombie_crawl_v4; level.scr_anim["zombie"]["crawl6"] = %ai_zombie_crawl_v5; level.scr_anim["zombie"]["crawl_hand_1"] = %ai_zombie_walk_on_hands_a; level.scr_anim["zombie"]["crawl_hand_2"] = %ai_zombie_walk_on_hands_b; level.scr_anim["zombie"]["crawl_sprint1"] = %ai_zombie_crawl_sprint; level.scr_anim["zombie"]["crawl_sprint2"] = %ai_zombie_crawl_sprint_1; level.scr_anim["zombie"]["crawl_sprint3"] = %ai_zombie_crawl_sprint_2; if( !isDefined( level._zombie_melee ) ) { level._zombie_melee = []; } if( !isDefined( level._zombie_walk_melee ) ) { level._zombie_walk_melee = []; } if( !isDefined( level._zombie_run_melee ) ) { level._zombie_run_melee = []; } level._zombie_melee["zombie"] = []; level._zombie_walk_melee["zombie"] = []; level._zombie_run_melee["zombie"] = []; level._zombie_melee["zombie"][0] = %ai_zombie_attack_forward_v1; level._zombie_melee["zombie"][1] = %ai_zombie_attack_forward_v2; level._zombie_melee["zombie"][2] = %ai_zombie_attack_v1; level._zombie_melee["zombie"][3] = %ai_zombie_attack_v2; level._zombie_melee["zombie"][4] = %ai_zombie_attack_v1; level._zombie_melee["zombie"][5] = %ai_zombie_attack_v4; level._zombie_melee["zombie"][6] = %ai_zombie_attack_v6; level._zombie_run_melee["zombie"][0] = %ai_zombie_run_attack_v1; level._zombie_run_melee["zombie"][1] = %ai_zombie_run_attack_v2; level._zombie_run_melee["zombie"][2] = %ai_zombie_run_attack_v3; level.scr_anim["zombie"]["walk5"] = %ai_zombie_walk_v6; level.scr_anim["zombie"]["walk6"] = %ai_zombie_walk_v7; level.scr_anim["zombie"]["walk7"] = %ai_zombie_walk_v8; level.scr_anim["zombie"]["walk8"] = %ai_zombie_walk_v9; if( isDefined( level.zombie_anim_override ) ) { [[ level.zombie_anim_override ]](); } level._zombie_walk_melee["zombie"][0] = %ai_zombie_walk_attack_v1; level._zombie_walk_melee["zombie"][1] = %ai_zombie_walk_attack_v2; level._zombie_walk_melee["zombie"][2] = %ai_zombie_walk_attack_v3; level._zombie_walk_melee["zombie"][3] = %ai_zombie_walk_attack_v4; // melee in crawl if( !isDefined( level._zombie_melee_crawl ) ) { level._zombie_melee_crawl = []; } level._zombie_melee_crawl["zombie"] = []; level._zombie_melee_crawl["zombie"][0] = %ai_zombie_attack_crawl; level._zombie_melee_crawl["zombie"][1] = %ai_zombie_attack_crawl_lunge; if( !isDefined( level._zombie_stumpy_melee ) ) { level._zombie_stumpy_melee = []; } level._zombie_stumpy_melee["zombie"] = []; level._zombie_stumpy_melee["zombie"][0] = %ai_zombie_walk_on_hands_shot_a; level._zombie_stumpy_melee["zombie"][1] = %ai_zombie_walk_on_hands_shot_b; //level._zombie_melee_crawl["zombie"][2] = %ai_zombie_crawl_attack_A; // tesla deaths if( !isDefined( level._zombie_tesla_death ) ) { level._zombie_tesla_death = []; } level._zombie_tesla_death["zombie"] = []; level._zombie_tesla_death["zombie"][0] = %ai_zombie_tesla_death_a; level._zombie_tesla_death["zombie"][1] = %ai_zombie_tesla_death_b; level._zombie_tesla_death["zombie"][2] = %ai_zombie_tesla_death_c; level._zombie_tesla_death["zombie"][3] = %ai_zombie_tesla_death_d; level._zombie_tesla_death["zombie"][4] = %ai_zombie_tesla_death_e; if( !isDefined( level._zombie_tesla_crawl_death ) ) { level._zombie_tesla_crawl_death = []; } level._zombie_tesla_crawl_death["zombie"] = []; level._zombie_tesla_crawl_death["zombie"][0] = %ai_zombie_tesla_crawl_death_a; level._zombie_tesla_crawl_death["zombie"][1] = %ai_zombie_tesla_crawl_death_b; // deaths if( !isDefined( level._zombie_deaths ) ) { level._zombie_deaths = []; } level._zombie_deaths["zombie"] = []; level._zombie_deaths["zombie"][0] = %ch_dazed_a_death; level._zombie_deaths["zombie"][1] = %ch_dazed_b_death; level._zombie_deaths["zombie"][2] = %ch_dazed_c_death; level._zombie_deaths["zombie"][3] = %ch_dazed_d_death; /* ground crawl */ if( !isDefined( level._zombie_rise_anims ) ) { level._zombie_rise_anims = []; } // set up the arrays level._zombie_rise_anims["zombie"] = []; //level._zombie_rise_anims["zombie"][1]["walk"][0] = %ai_zombie_traverse_ground_v1_crawl; level._zombie_rise_anims["zombie"][1]["walk"][0] = %ai_zombie_traverse_ground_v1_walk; //level._zombie_rise_anims["zombie"][1]["run"][0] = %ai_zombie_traverse_ground_v1_crawlfast; level._zombie_rise_anims["zombie"][1]["run"][0] = %ai_zombie_traverse_ground_v1_run; level._zombie_rise_anims["zombie"][1]["sprint"][0] = %ai_zombie_traverse_ground_climbout_fast; //level._zombie_rise_anims["zombie"][2]["walk"][0] = %ai_zombie_traverse_ground_v2_walk; //!broken level._zombie_rise_anims["zombie"][2]["walk"][0] = %ai_zombie_traverse_ground_v2_walk_altA; //level._zombie_rise_anims["zombie"][2]["walk"][2] = %ai_zombie_traverse_ground_v2_walk_altB;//!broken // ground crawl death if( !isDefined( level._zombie_rise_death_anims ) ) { level._zombie_rise_death_anims = []; } level._zombie_rise_death_anims["zombie"] = []; level._zombie_rise_death_anims["zombie"][1]["in"][0] = %ai_zombie_traverse_ground_v1_deathinside; level._zombie_rise_death_anims["zombie"][1]["in"][1] = %ai_zombie_traverse_ground_v1_deathinside_alt; level._zombie_rise_death_anims["zombie"][1]["out"][0] = %ai_zombie_traverse_ground_v1_deathoutside; level._zombie_rise_death_anims["zombie"][1]["out"][1] = %ai_zombie_traverse_ground_v1_deathoutside_alt; level._zombie_rise_death_anims["zombie"][2]["in"][0] = %ai_zombie_traverse_ground_v2_death_low; level._zombie_rise_death_anims["zombie"][2]["in"][1] = %ai_zombie_traverse_ground_v2_death_low_alt; level._zombie_rise_death_anims["zombie"][2]["out"][0] = %ai_zombie_traverse_ground_v2_death_high; level._zombie_rise_death_anims["zombie"][2]["out"][1] = %ai_zombie_traverse_ground_v2_death_high_alt; //taunts if( !isDefined( level._zombie_run_taunt ) ) { level._zombie_run_taunt = []; } if( !isDefined( level._zombie_board_taunt ) ) { level._zombie_board_taunt = []; } level._zombie_run_taunt["zombie"] = []; level._zombie_board_taunt["zombie"] = []; //level._zombie_taunt["zombie"][0] = %ai_zombie_taunts_1; //level._zombie_taunt["zombie"][1] = %ai_zombie_taunts_4; //level._zombie_taunt["zombie"][2] = %ai_zombie_taunts_5b; //level._zombie_taunt["zombie"][3] = %ai_zombie_taunts_5c; //level._zombie_taunt["zombie"][4] = %ai_zombie_taunts_5d; //level._zombie_taunt["zombie"][5] = %ai_zombie_taunts_5e; //level._zombie_taunt["zombie"][6] = %ai_zombie_taunts_5f; //level._zombie_taunt["zombie"][7] = %ai_zombie_taunts_7; //level._zombie_taunt["zombie"][8] = %ai_zombie_taunts_9; //level._zombie_taunt["zombie"][8] = %ai_zombie_taunts_11; //level._zombie_taunt["zombie"][8] = %ai_zombie_taunts_12; level._zombie_board_taunt["zombie"][0] = %ai_zombie_taunts_4; level._zombie_board_taunt["zombie"][1] = %ai_zombie_taunts_7; level._zombie_board_taunt["zombie"][2] = %ai_zombie_taunts_9; level._zombie_board_taunt["zombie"][3] = %ai_zombie_taunts_5b; level._zombie_board_taunt["zombie"][4] = %ai_zombie_taunts_5c; level._zombie_board_taunt["zombie"][5] = %ai_zombie_taunts_5d; level._zombie_board_taunt["zombie"][6] = %ai_zombie_taunts_5e; level._zombie_board_taunt["zombie"][7] = %ai_zombie_taunts_5f; } init_anims() { init_standard_zombie_anims(); } // Initialize any animscript related variables init_animscripts() { // Setup the animscripts, then override them (we call this just incase an AI has not yet spawned) animscripts\init::firstInit(); anim.idleAnimArray ["stand"] = []; anim.idleAnimWeights ["stand"] = []; anim.idleAnimArray ["stand"][0][0] = %ai_zombie_idle_v1_delta; anim.idleAnimWeights ["stand"][0][0] = 10; anim.idleAnimArray ["crouch"] = []; anim.idleAnimWeights ["crouch"] = []; anim.idleAnimArray ["crouch"][0][0] = %ai_zombie_idle_crawl_delta; anim.idleAnimWeights ["crouch"][0][0] = 10; } // Handles the intro screen zombie_intro_screen( string1, string2, string3, string4, string5 ) { flag_wait( "all_players_connected" ); wait( 1 ); //TUEY Set music state to Splash Screencompass setmusicstate( "SPLASH_SCREEN" ); wait (0.2); //TUEY Set music state to WAVE_1 // setmusicstate("WAVE_1";); } players_playing() { // initialize level.players_playing players = get_players(); level.players_playing = players.size; wait( 20 ); players = get_players(); level.players_playing = players.size; } // // NETWORK SECTION ====================================================================== // // watchGrenadeThrow() { self endon( "disconnect" ); self endon( "death" ); while(1) { self waittill("grenade_fire", grenade); if(isdefined(grenade)) { if(self maps\_laststand::player_is_in_laststand()) { grenade delete(); } } } } onPlayerConnect() { for( ;; ) { level waittill( "connecting", player ); player.entity_num = player GetEntityNumber(); player thread onPlayerSpawned(); player thread onPlayerDisconnect(); player thread player_revive_monitor(); //player thread watchGrenadeThrow(); player.score = level.zombie_vars["zombie_score_start"]; player.score_total = player.score; player.old_score = player.score; player.is_zombie = false; player.initialized = false; player.zombification_time = 0; } } onPlayerConnect_clientDvars() { self SetClientDvars( "cg_deadChatWithDead", "1", "cg_deadChatWithTeam", "1", "cg_deadHearTeamLiving", "1", "cg_deadHearAllLiving", "1", "cg_everyoneHearsEveryone", "1", "compass", "0", "hud_showStance", "0", "cg_thirdPerson", "0", "cg_fov", "65", "cg_thirdPersonAngle", "0", "ammoCounterHide", "0", "miniscoreboardhide", "0", "ui_hud_hardcore", "0" ); self SetDepthOfField( 0, 0, 512, 4000, 4, 0 ); } onPlayerDisconnect() { self waittill( "disconnect" ); self remove_from_spectate_list(); } onPlayerSpawned() { self endon( "disconnect" ); for( ;; ) { self waittill( "spawned_player" ); self SetClientDvars( "cg_thirdPerson", "0", "cg_fov", "65", "cg_thirdPersonAngle", "0" ); self SetDepthOfField( 0, 0, 512, 4000, 4, 0 ); self add_to_spectate_list(); if( isdefined( self.initialized ) ) { if( self.initialized == false ) { self.initialized = true; // self maps\_zombiemode_score::create_player_score_hud(); // set the initial score on the hud self maps\_zombiemode_score::set_player_score_hud( true ); self thread player_zombie_breadcrumb(); //Init stat tracking variables self.stats["kills"] = 0; self.stats["score"] = 0; self.stats["downs"] = 0; self.stats["revives"] = 0; self.stats["perks"] = 0; self.stats["headshots"] = 0; self.stats["zombie_gibs"] = 0; } } } } // // Keep track of players going down and getting revived player_revive_monitor() { self endon( "disconnect" ); while (1) { self waittill( "player_revived", reviver ); if ( IsDefined(reviver) ) { // Check to see how much money you lost from being down. points = self.score_lost_when_downed; if ( points > 300 ) { points = 300; } reviver maps\_zombiemode_score::add_to_player_score( points ); self.score_lost_when_downed = 0; } } } player_laststand() { self maps\_zombiemode_score::player_downed_penalty(); if( IsDefined( self.intermission ) && self.intermission ) { maps\_challenges_coop::doMissionCallback( "playerDied", self ); level waittill( "forever" ); } } spawnSpectator() { self endon( "disconnect" ); self endon( "spawned_spectator" ); self notify( "spawned" ); self notify( "end_respawn" ); if( level.intermission ) { return; } if( IsDefined( level.no_spectator ) && level.no_spectator ) { wait( 3 ); ExitLevel(); } // The check_for_level_end looks for this self.is_zombie = true; // Remove all reviving abilities self notify ( "zombified" ); if( IsDefined( self.revivetrigger ) ) { self.revivetrigger delete(); self.revivetrigger = undefined; } self.zombification_time = getTime(); //set time when player died resetTimeout(); // Stop shellshock and rumble self StopShellshock(); self StopRumble( "damage_heavy" ); self.sessionstate = "spectator"; self.spectatorclient = -1; self remove_from_spectate_list(); self.maxhealth = self.health; self.shellshocked = false; self.inWater = false; self.friendlydamage = undefined; self.hasSpawned = true; self.spawnTime = getTime(); self.afk = false; println( "*************************Zombie Spectator***" ); self detachAll(); self setSpectatePermissions( true ); self thread spectator_thread(); self Spawn( self.origin, self.angles ); self notify( "spawned_spectator" ); } setSpectatePermissions( isOn ) { self AllowSpectateTeam( "allies", isOn ); self AllowSpectateTeam( "axis", false ); self AllowSpectateTeam( "freelook", false ); self AllowSpectateTeam( "none", false ); } spectator_thread() { self endon( "disconnect" ); self endon( "spawned_player" ); if( IsSplitScreen() ) { last_alive = undefined; players = get_players(); for( i = 0; i < players.size; i++ ) { if( !players.is_zombie ) { last_alive = players; } } share_screen( last_alive, true ); return; } self thread spectator_toggle_3rd_person(); } spectator_toggle_3rd_person() { self endon( "disconnect" ); self endon( "spawned_player" ); third_person = true; self set_third_person( true ); // self NotifyOnCommand( "toggle_3rd_person", "weapnext" ); // while( 1 ) // { // self waittill( "toggle_3rd_person" ); // // if( third_person ) // { // third_person = false; // self set_third_person( false ); // wait( 0.5 ); // } // else // { // third_person = true; // self set_third_person( true ); // wait( 0.5 ); // } // } } set_third_person( value ) { if( value ) { self SetClientDvars( "cg_thirdPerson", "1", "cg_fov", "40", "cg_thirdPersonAngle", "354" ); self setDepthOfField( 0, 128, 512, 4000, 6, 1.8 ); } else { self SetClientDvars( "cg_thirdPerson", "0", "cg_fov", "65", "cg_thirdPersonAngle", "0" ); self setDepthOfField( 0, 0, 512, 4000, 4, 0 ); } } spectators_respawn() { level endon( "between_round_over" ); if( !IsDefined( level.zombie_vars["spectators_respawn"] ) || !level.zombie_vars["spectators_respawn"] ) { return; } if( !IsDefined( level.custom_spawnPlayer ) ) { // Custom spawn call for when they respawn from spectator level.custom_spawnPlayer = ::spectator_respawn; } while( 1 ) { players = get_players(); for( i = 0; i < players.size; i++ ) { if( players.sessionstate == "spectator" ) { players [[level.spawnPlayer]](); if( isDefined( players.has_altmelee ) && players.has_altmelee ) { players SetPerk( "specialty_altmelee" ); } if (isDefined(level.script) && level.round_number > 6 && players.score < 1500) { players.old_score = players.score; players.score = 1500; players maps\_zombiemode_score::set_player_score_hud(); } } } wait( 1 ); } } spectator_respawn() { println( "*************************Respawn Spectator***" ); assert( IsDefined( self.spectator_respawn ) ); origin = self.spectator_respawn.origin; angles = self.spectator_respawn.angles; self setSpectatePermissions( false ); new_origin = undefined; new_origin = check_for_valid_spawn_near_team( self );