#include maps\mp\gametypes_zm\zmeat; #include maps\mp\zm_alcatraz_traps; #include maps\mp\zombies\_zm_game_module; #include maps\mp\zombies\_zm_blockers; #include maps\mp\zombies\_zm_ai_brutus; #include maps\mp\gametypes_zm\_zm_gametype; #include maps\mp\zombies\_zm_magicbox; #include maps\mp\zombies\_zm_weapons; #include maps\mp\zm_prison; #include maps\mp\zombies\_zm_race_utility; #include maps\mp\zombies\_zm_utility; #include common_scripts\utility; #include maps\mp\_utility; precache() { } zgrief_preinit() { registerclientfield( "toplayer", "meat_stink", 1, 1, "int" ); level.givecustomloadout = maps\mp\zm_prison::givecustomloadout; zgrief_init(); } zgrief_init() { encounter_init(); } encounter_init() { level.precachecustomcharacters = ::precache_team_characters; level.givecustomcharacters = ::give_team_characters; level.gamemode_post_spawn_logic = ::give_player_shiv; } precache_team_characters() { precachemodel( "c_zom_player_grief_guard_fb" ); precachemodel( "c_zom_oleary_shortsleeve_viewhands" ); precachemodel( "c_zom_player_grief_inmate_fb" ); precachemodel( "c_zom_grief_guard_viewhands" ); } give_team_characters() { self detachall(); self set_player_is_female( 0 ); if ( !isDefined( self.characterindex ) ) { self.characterindex = 1; if ( self.team == "axis" ) { self.characterindex = 0; } } switch( self.characterindex ) { case 0: case 2: self setmodel( "c_zom_player_grief_inmate_fb" ); self.voice = "american"; self.skeleton = "base"; self setviewmodel( "c_zom_oleary_shortsleeve_viewhands" ); self.characterindex = 0; break; case 1: case 3: self setmodel( "c_zom_player_grief_guard_fb" ); self.voice = "american"; self.skeleton = "base"; self setviewmodel( "c_zom_grief_guard_viewhands" ); self.characterindex = 1; break; } self setmovespeedscale( 1 ); self setsprintduration( 4 ); self setsprintcooldown( 0 ); } give_player_shiv() { self takeweapon( "knife_zm" ); self giveweapon( "knife_zm_alcatraz" ); } grief_treasure_chest_init() { chest1 = getstruct( "start_chest", "script_noteworthy" ); chest2 = getstruct( "cafe_chest", "script_noteworthy" ); setdvar( "disableLookAtEntityLogic", 1 ); level.chests = []; level.chests[ level.chests.size ] = chest1; level.chests[ level.chests.size ] = chest2; maps\mp\zombies\_zm_magicbox::treasure_chest_init( "start_chest" ); } main() { maps\mp\gametypes_zm\_zm_gametype::setup_standard_objects( "cellblock" ); grief_treasure_chest_init(); precacheshader( "zm_al_wth_zombie" ); array_thread( level.zombie_spawners, ::add_spawn_function, ::remove_zombie_hats_for_grief ); maps\mp\zombies\_zm_ai_brutus::precache(); maps\mp\zombies\_zm_ai_brutus::init(); level.enemy_location_override_func = ::enemy_location_override; level._effect[ "butterflies" ] = loadfx( "maps\zombie_alcatraz\fx_alcatraz_skull_elec" ); a_t_door_triggers = getentarray( "zombie_door", "targetname" ); triggers = a_t_door_triggers; i = 0; while ( i < triggers.size ) { if ( isDefined( triggers[ i ].script_flag ) ) { if ( triggers[ i ].script_flag == "activate_cellblock_citadel" || triggers[ i ].script_flag == "activate_shower_room" || triggers[ i ].script_flag == "activate_cellblock_infirmary" || triggers[ i ].script_flag == "activate_infirmary" ) { triggers[ i ] delete(); i++; continue; } if ( triggers[ i ].script_flag == "activate_cafeteria" || triggers[ i ].script_flag == "activate_cellblock_east" || triggers[ i ].script_flag == "activate_cellblock_west" || triggers[ i ].script_flag == "activate_cellblock_barber" || triggers[ i ].script_flag == "activate_cellblock_gondola" || triggers[ i ].script_flag == "activate_cellblock_east_west" || triggers[ i ].script_flag == "activate_warden_office" ) { i++; continue; } if ( isDefined( triggers[ i ].target ) ) { str_target = triggers[ i ].target; a_door_and_clip = getentarray( str_target, "targetname" ); foreach ( ent in a_door_and_clip ) { ent delete(); } } triggers[ i ] delete(); } i++; } a_t_doors = getentarray( "zombie_door", "targetname" ); foreach ( t_door in a_t_doors ) { if ( isDefined( t_door.script_flag ) ) { if ( t_door.script_flag == "activate_cellblock_east_west" || t_door.script_flag == "activate_cellblock_barber" ) { t_door maps\mp\zombies\_zm_blockers::door_opened( self.zombie_cost ); } } } zbarriers = getzbarrierarray(); a_str_zones = []; a_str_zones[ 0 ] = "zone_start"; a_str_zones[ 1 ] = "zone_library"; a_str_zones[ 2 ] = "zone_cafeteria"; a_str_zones[ 3 ] = "zone_cafeteria_end"; a_str_zones[ 4 ] = "zone_warden_office"; a_str_zones[ 5 ] = "zone_cellblock_east"; a_str_zones[ 6 ] = "zone_cellblock_west_warden"; a_str_zones[ 7 ] = "zone_cellblock_west_barber"; a_str_zones[ 8 ] = "zone_cellblock_west"; a_str_zones[ 9 ] = "zone_cellblock_west_gondola"; foreach ( barrier in zbarriers ) { if ( isDefined( barrier.script_noteworthy ) && barrier.script_noteworthy == "cafe_chest_zbarrier" || isDefined( barrier.script_noteworthy ) && barrier.script_noteworthy == "start_chest_zbarrier" ) { } else { str_model = barrier.model; b_delete_barrier = 1; if ( isdefined( barrier.script_string ) ) { for ( i = 0; i < a_str_zones.size; i++ ) { if ( str_model == a_str_zones[ i ] ) { b_delete_barrier = 0; break; } } } else if ( b_delete_barrier == 1 ) { barrier delete(); } } } t_temp = getent( "tower_trap_activate_trigger", "targetname" ); t_temp delete(); t_temp = getent( "tower_trap_range_trigger", "targetname" ); t_temp delete(); e_model = getent( "trap_control_docks", "targetname" ); e_model delete(); e_brush = getent( "tower_shockbox_door", "targetname" ); e_brush delete(); a_t_travel_triggers = getentarray( "travel_trigger", "script_noteworthy" ); foreach ( trigger in a_t_travel_triggers ) { trigger delete(); } a_e_gondola_lights = getentarray( "gondola_state_light", "targetname" ); foreach ( light in a_e_gondola_lights ) { light delete(); } a_e_gondola_landing_gates = getentarray( "gondola_landing_gates", "targetname" ); foreach ( model in a_e_gondola_landing_gates ) { model delete(); } a_e_gondola_landing_doors = getentarray( "gondola_landing_doors", "targetname" ); foreach ( model in a_e_gondola_landing_doors ) { model delete(); } a_e_gondola_gates = getentarray( "gondola_gates", "targetname" ); foreach ( model in a_e_gondola_gates ) { model delete(); } a_e_gondola_doors = getentarray( "gondola_doors", "targetname" ); foreach ( model in a_e_gondola_doors ) { model delete(); } m_gondola = getent( "zipline_gondola", "targetname" ); m_gondola delete(); t_ride_trigger = getent( "gondola_ride_trigger", "targetname" ); t_ride_trigger delete(); a_classic_clips = getentarray( "classic_clips", "targetname" ); foreach ( clip in a_classic_clips ) { clip connectpaths(); clip delete(); } a_afterlife_props = getentarray( "afterlife_show", "targetname" ); foreach ( m_prop in a_afterlife_props ) { m_prop delete(); } spork_portal = getent( "afterlife_show_spork", "targetname" ); spork_portal delete(); a_audio = getentarray( "at_headphones", "script_noteworthy" ); foreach ( model in a_audio ) { model delete(); } m_spoon_pickup = getent( "pickup_spoon", "targetname" ); m_spoon_pickup delete(); t_sq_bg = getent( "sq_bg_reward_pickup", "targetname" ); t_sq_bg delete(); t_crafting_table = getentarray( "open_craftable_trigger", "targetname" ); foreach ( trigger in t_crafting_table ) { trigger delete(); } t_warden_fence = getent( "warden_fence_damage", "targetname" ); t_warden_fence delete(); m_plane_about_to_crash = getent( "plane_about_to_crash", "targetname" ); m_plane_about_to_crash delete(); m_plane_craftable = getent( "plane_craftable", "targetname" ); m_plane_craftable delete(); for ( i = 1; i <= 5; i++ ) { m_key_lock = getent( "masterkey_lock_" + i, "targetname" ); m_key_lock delete(); } m_shower_door = getent( "shower_key_door", "targetname" ); m_shower_door delete(); m_nixie_door = getent( "nixie_door_left", "targetname" ); m_nixie_door delete(); m_nixie_door = getent( "nixie_door_right", "targetname" ); m_nixie_door delete(); m_nixie_brush = getent( "nixie_tube_weaponclip", "targetname" ); m_nixie_brush delete(); for ( i = 1; i <= 3; i++ ) { m_nixie_tube = getent( "nixie_tube_" + i, "targetname" ); m_nixie_tube delete(); } t_elevator_door = getent( "nixie_elevator_door", "targetname" ); t_elevator_door delete(); e_elevator_clip = getent( "elevator_door_playerclip", "targetname" ); e_elevator_clip delete(); e_elevator_bottom_gate = getent( "elevator_bottom_gate_l", "targetname" ); e_elevator_bottom_gate delete(); e_elevator_bottom_gate = getent( "elevator_bottom_gate_r", "targetname" ); e_elevator_bottom_gate delete(); m_docks_puzzle = getent( "cable_puzzle_gate_01", "targetname" ); m_docks_puzzle delete(); m_docks_puzzle = getent( "cable_puzzle_gate_02", "targetname" ); m_docks_puzzle delete(); m_infirmary_case = getent( "infirmary_case_door_left", "targetname" ); m_infirmary_case delete(); m_infirmary_case = getent( "infirmary_case_door_right", "targetname" ); m_infirmary_case delete(); fake_plane_part = getent( "fake_veh_t6_dlc_zombie_part_control", "targetname" ); fake_plane_part delete(); for ( i = 1; i <= 3; i++ ) { m_generator = getent( "generator_panel_" + i, "targetname" ); m_generator delete(); } a_m_generator_core = getentarray( "generator_core", "targetname" ); foreach ( generator in a_m_generator_core ) { generator delete(); } e_playerclip = getent( "electric_chair_playerclip", "targetname" ); e_playerclip delete(); for ( i = 1; i <= 4; i++ ) { t_use = getent( "trigger_electric_chair_" + i, "targetname" ); t_use delete(); m_chair = getent( "electric_chair_" + i, "targetname" ); m_chair delete(); } a_afterlife_interact = getentarray( "afterlife_interact", "targetname" ); foreach ( model in a_afterlife_interact ) { model turn_afterlife_interact_on(); wait 0.1; } flag_wait( "initial_blackscreen_passed" ); maps\mp\zombies\_zm_game_module::turn_power_on_and_open_doors(); flag_wait( "start_zombie_round_logic" ); level thread maps\mp\zm_alcatraz_traps::init_fan_trap_trigs(); level thread maps\mp\zm_alcatraz_traps::init_acid_trap_trigs(); wait 1; level notify( "sleight_on" ); wait_network_frame(); level notify( "doubletap_on" ); wait_network_frame(); level notify( "juggernog_on" ); wait_network_frame(); level notify( "electric_cherry_on" ); wait_network_frame(); level notify( "deadshot_on" ); wait_network_frame(); level notify( "divetonuke_on" ); wait_network_frame(); level notify( "additionalprimaryweapon_on" ); wait_network_frame(); level notify( "Pack_A_Punch_on" ); wait_network_frame(); } remove_zombie_hats_for_grief() { self detach( "c_zom_guard_hat" ); } enemy_location_override( zombie, enemy ) { location = enemy.origin; if ( is_true( self.reroute ) ) { if ( isDefined( self.reroute_origin ) ) { location = self.reroute_origin; } } return location; } magicbox_face_spawn() { self endon( "disconnect" ); if ( !is_gametype_active( "zgrief" ) ) { return; } while ( 1 ) { self waittill( "user_grabbed_weapon" ); if ( randomint( 50000 ) == 115 ) { self playsoundtoplayer( "zmb_easteregg_face", self ); self.wth_elem = newclienthudelem( self ); self.wth_elem.horzalign = "fullscreen"; self.wth_elem.vertalign = "fullscreen"; self.wth_elem.sort = 1000; self.wth_elem.foreground = 0; self.wth_elem.alpha = 1; self.wth_elem setshader( "zm_al_wth_zombie", 640, 480 ); self.wth_elem.hidewheninmenu = 1; wait 0.25; self.wth_elem destroy(); } wait 0.05; } } #using_animtree("fxanim_props"); turn_afterlife_interact_on() { if ( self.script_string == "cell_1_powerup_activate" || self.script_string == "intro_powerup_activate" || self.script_string == "cell_2_powerup_activate" || self.script_string == "wires_shower_door" ) { return; } if ( self.script_string == "electric_cherry_on" || self.script_string == "sleight_on" || self.script_string == "wires_admin_door" ) { if ( !isDefined( level.shockbox_anim ) ) { level.shockbox_anim[ "on" ] = %fxanim_zom_al_shock_box_on_anim; level.shockbox_anim[ "off" ] = %fxanim_zom_al_shock_box_off_anim; } if ( issubstr( self.model, "p6_zm_al_shock_box" ) ) { self useanimtree( -1 ); self setmodel( "p6_zm_al_shock_box_on" ); self setanim( level.shockbox_anim[ "on" ] ); } } else { self delete(); } }