2021-02-25 15:17:52 -08:00

1244 lines
49 KiB
Plaintext

//checked includes changed to match cerberus output
#include maps/mp/zombies/_zm_blockers;
#include maps/mp/zombies/_zm_audio;
#include character/c_zom_oleary;
#include character/c_zom_handsome;
#include character/c_zom_deluca;
#include character/c_zom_arlington;
#include maps/mp/zm_prison;
#include maps/mp/_visionset_mgr;
#include maps/mp/zm_alcatraz_grief_cellblock;
#include maps/mp/zm_alcatraz_weap_quest;
#include maps/mp/zombies/_zm_zonemgr;
#include maps/mp/zombies/_zm_weap_tomahawk;
#include maps/mp/zombies/_zm_weap_blundersplat;
#include maps/mp/zombies/_zm_weap_riotshield_prison;
#include maps/mp/zombies/_zm_weap_claymore;
#include maps/mp/zombies/_zm_ai_basic;
#include maps/mp/zombies/_zm_magicbox_prison;
#include maps/mp/zm_alcatraz_travel;
#include maps/mp/zm_alcatraz_traps;
#include maps/mp/zm_alcatraz_distance_tracking;
#include maps/mp/zombies/_zm_perk_divetonuke;
#include maps/mp/zombies/_zm_perk_electric_cherry;
#include maps/mp/gametypes_zm/_spawning;
#include maps/mp/zm_prison_achievement;
#include maps/mp/zombies/_load;
#include maps/mp/zm_alcatraz_amb;
#include maps/mp/animscripts/zm_death;
#include maps/mp/zombies/_zm;
#include maps/mp/zm_prison_ffotd;
#include maps/mp/zm_prison_fx;
#include maps/mp/zm_alcatraz_gamemodes;
#include maps/mp/zm_alcatraz_utility;
#include maps/mp/zombies/_zm_craftables;
#include maps/mp/zombies/_zm_weapons;
#include maps/mp/zombies/_zm_utility;
#include maps/mp/_utility;
#include common_scripts/utility;
//#using_animtree( "fxanim_props" ); //leave commented out for now for compiling
gamemode_callback_setup() //checked matches cerberus output
{
maps/mp/zm_alcatraz_gamemodes::init();
}
init_characters() //checked matches cerberus output
{
level.has_weasel = 0;
level.givecustomloadout = ::givecustomloadout;
level.precachecustomcharacters = ::precache_personality_characters;
level.givecustomcharacters = ::give_personality_characters;
level.setupcustomcharacterexerts = ::setup_personality_character_exerts;
flag_wait( "start_zombie_round_logic" );
}
zclassic_preinit() //checked matches cerberus output
{
init_characters();
}
createfx_callback() //checked changed to match cerberus output
{
ents = getentarray();
for ( i = 0; i < ents.size; i++ )
{
if ( ents[ i ].classname != "info_player_start" )
{
ents[ i ] delete();
}
}
}
main() //checked changed to match cerberus output
{
maps/mp/zm_prison_fx::main();
level thread maps/mp/zm_prison_ffotd::main_start();
level thread title_update_main_start();
precacherumble( "brutus_footsteps" );
level.default_game_mode = "zclassic";
level.default_start_location = "prison";
setup_rex_starts();
maps/mp/zombies/_zm::init_fx();
maps/mp/animscripts/zm_death::precache_gib_fx();
level.zombiemode = 1;
level._no_water_risers = 1;
maps/mp/zm_alcatraz_amb::main();
maps/mp/zombies/_load::main();
level.level_specific_stats_init = maps/mp/zm_prison_achievement::init_player_achievement_stats;
if ( getDvar( "createfx" ) == "1" )
{
return;
}
maps/mp/gametypes_zm/_spawning::level_use_unified_spawning( 1 );
level.fixed_max_player_use_radius = 72;
level.custom_player_fake_death = ::zm_player_fake_death;
level.custom_player_fake_death_cleanup = ::zm_player_fake_death_cleanup;
level.initial_round_wait_func = ::initial_round_wait_func;
level.special_weapon_magicbox_check = ::check_for_special_weapon_limit_exist;
level._door_open_rumble_func = ::door_rumble_on_buy;
level._zombies_round_spawn_failsafe = ::alcatraz_round_spawn_failsafe;
level.zombiemode_using_pack_a_punch = 1;
level.zombiemode_reusing_pack_a_punch = 1;
level.zombie_init_done = ::zombie_init_done;
level.zombiemode_using_doubletap_perk = 1;
level.zombiemode_using_juggernaut_perk = 1;
level.zombiemode_using_sleightofhand_perk = 1;
level.zombiemode_using_deadshot_perk = 1;
if ( maps/mp/zombies/_zm_utility::is_gametype_active( "zclassic" ) )
{
level.zombiemode_using_electric_cherry_perk = 1;
maps/mp/zombies/_zm_perk_electric_cherry::enable_electric_cherry_perk_for_level();
}
else if ( maps/mp/zombies/_zm_utility::is_gametype_active( "zgrief" ) )
{
level.zombiemode_using_additionalprimaryweapon_perk = 1;
level.zombiemode_using_divetonuke_perk = 1;
maps/mp/zombies/_zm_perk_divetonuke::enable_divetonuke_perk_for_level();
}
level._zmbvoxlevelspecific = ::init_level_specific_audio;
level.random_pandora_box_start = 1;
if ( is_classic() )
{
level._default_door_custom_logic = ::alcatraz_afterlife_doors;
}
level.register_offhand_weapons_for_level_defaults_override = ::offhand_weapon_overrride;
level.zombiemode_offhand_weapon_give_override = ::offhand_weapon_give_override;
level.max_equipment_attack_range = 72;
level.min_equipment_attack_range = 25;
level.vert_equipment_attack_range = 55;
level._zombie_custom_add_weapons = ::custom_add_weapons;
level._allow_melee_weapon_switching = 1;
level._no_vending_machine_bump_trigs = 1;
level.custom_ai_type = [];
precachemodel( "p6_zm_al_wall_trap_control_red" );
precachemodel( "p6_zm_al_gondola_frame_light_red" );
precachemodel( "p6_zm_al_gondola_frame_light_green" );
precachemodel( "fxanim_zom_al_gondola_chains_mod" );
if ( maps/mp/zombies/_zm_utility::is_gametype_active( "zgrief" ) )
{
precachemodel( "p6_zm_al_shock_box_on" );
}
level.raygun2_included = 1;
include_weapons();
include_powerups();
include_equipment_for_level();
register_level_specific_client_fields();
level thread maps/mp/zm_alcatraz_distance_tracking::zombie_tracking_init();
maps/mp/zm_alcatraz_traps::init_fan_trap_animtree();
maps/mp/zm_alcatraz_travel::init_gondola_chains_animtree();
maps/mp/zombies/_zm_magicbox_prison::init();
maps/mp/zombies/_zm::init();
maps/mp/zombies/_zm_ai_basic::init_inert_zombies();
maps/mp/zombies/_zm_weap_claymore::init();
maps/mp/zombies/_zm_weap_riotshield_prison::init();
maps/mp/zombies/_zm_weap_blundersplat::init();
maps/mp/zombies/_zm_weap_tomahawk::init();
level.calc_closest_player_using_paths = 1;
level._melee_weapons = [];
precacheitem( "death_throe_zm" );
if ( level.splitscreen && getDvarInt( "splitscreen_playerCount" ) > 2 )
{
level.optimise_for_splitscreen = 1;
level.culldist = 4000;
}
else
{
level.optimise_for_splitscreen = 0;
level.culldist = 18000;
}
setculldist( level.culldist );
if ( isDefined( level.optimise_for_splitscreen ) && level.optimise_for_splitscreen )
{
if ( is_classic() )
{
level.zombie_ai_limit = 20;
}
setdvar( "fx_marks_draw", 0 );
setdvar( "disable_rope", 1 );
setdvar( "cg_disableplayernames", 1 );
setdvar( "disableLookAtEntityLogic", 1 );
}
else
{
level.zombie_ai_limit = 24;
}
setdvar( "zombiemode_path_minz_bias", 13 );
setdvar( "waypointMaxDrawDist", 12000 );
level.zombie_vars[ "zombie_use_failsafe" ] = 0;
level.zones = [];
level.zone_manager_init_func = ::working_zone_init;
init_zones = [];
if ( is_classic() )
{
init_zones[ 0 ] = "zone_start";
init_zones[ 1 ] = "zone_library";
}
else
{
init_zones[ 0 ] = "zone_cellblock_east";
init_zones[ 1 ] = "zone_cellblock_west_warden";
init_zones[ 2 ] = "zone_cellblock_west_barber";
init_zones[ 3 ] = "zone_cellblock_west";
}
level thread maps/mp/zombies/_zm_zonemgr::manage_zones( init_zones );
level.speed_change_round = 15;
level.speed_change_max = 5;
level thread maps/mp/zm_alcatraz_weap_quest::init();
onplayerconnect_callback( maps/mp/zm_alcatraz_weap_quest::tomahawk_upgrade_quest );
onplayerconnect_callback( ::riotshield_tutorial_hint );
onplayerconnect_callback( ::disable_powerup_if_player_on_bridge );
level thread enable_powerup_if_no_player_on_bridge();
onplayerconnect_callback( ::player_lightning_manager );
onplayerconnect_callback( ::player_shockbox_glowfx );
onplayerconnect_callback( ::player_portal_clue_vo );
onplayerconnect_callback( maps/mp/zm_alcatraz_grief_cellblock::magicbox_face_spawn );
maps/mp/_visionset_mgr::vsmgr_register_info( "visionset", "zm_audio_log", 9000, 200, 1, 1 );
maps/mp/_visionset_mgr::vsmgr_register_info( "visionset", "zm_electric_cherry", 9000, 121, 1, 1 );
level thread drop_all_barriers();
level thread check_solo_status();
level thread maps/mp/zm_prison_ffotd::main_end();
level thread title_update_main_end();
//flag_wait( "start_zombie_round_logic" ); //players can't join if this is uncommented
}
title_update_main_start() //checked matches cerberus output
{
}
title_update_main_end() //checked changed to match cerberus output
{
a_nodes = getanynodearray( ( 969, 6708, 239 ), 200 );
foreach ( node in a_nodes )
{
node.no_teleport = 1;
}
level.equipment_tu_dead_zone_pos = [];
level.equipment_tu_dead_zone_rad2 = [];
level.equipment_tu_dead_zone_pos[ 0 ] = ( 447, 5963, 275 );
level.equipment_tu_dead_zone_rad2[ 0 ] = 2500;
level.equipment_tu_dead_zone_pos[ 1 ] = ( 896, 8400, 1544 );
level.equipment_tu_dead_zone_rad2[ 1 ] = 14400;
}
register_level_specific_client_fields()
{
registerclientfield( "actor", "fan_trap_blood_fx", 9000, 1, "int" );
registerclientfield( "actor", "acid_trap_death_fx", 9000, 1, "int" );
registerclientfield( "toplayer", "toggle_lightning", 9000, 1, "int" );
registerclientfield( "toplayer", "rumble_electric_chair", 9000, 2, "int" );
registerclientfield( "toplayer", "effects_escape_flight", 9000, 3, "int" );
registerclientfield( "toplayer", "rumble_gondola", 9000, 1, "int" );
registerclientfield( "toplayer", "rumble_fan_trap", 9000, 1, "int" );
registerclientfield( "toplayer", "rumble_sq_bg", 9000, 1, "int" );
registerclientfield( "toplayer", "rumble_door_open", 9000, 1, "int" );
registerclientfield( "world", "toggle_futz", 9000, 1, "int" );
registerclientfield( "world", "dryer_stage", 9000, 2, "int" );
registerclientfield( "world", "fog_stage", 9000, 2, "int" );
registerclientfield( "world", "scripted_lightning_flash", 9000, 1, "int" );
registerclientfield( "world", "warden_fence_down", 9000, 1, "int" );
registerclientfield( "world", "master_key_is_lowered", 9000, 1, "int" );
registerclientfield( "world", "fxanim_pulley_down_start", 9000, 2, "int" );
registerclientfield( "world", "sq_bg_reward_portal", 9000, 1, "int" );
registerclientfield( "toplayer", "spoon_visual_state", 9000, 2, "int" );
registerclientfield( "scriptmover", "afterlife_shockbox_glow", 9000, 1, "int" );
registerclientfield( "scriptmover", "toggle_perk_machine_power", 9000, 2, "int" );
}
givecustomloadout( takeallweapons, alreadyspawned )
{
self giveweapon( "knife_zm_alcatraz" );
self set_player_melee_weapon( "knife_zm_alcatraz" );
self give_start_weapon( 1 );
}
custom_vending_precaching() //checked changed to match cerberus output
{
if ( level._custom_perks.size > 0 )
{
a_keys = getarraykeys( level._custom_perks );
for ( i = 0; i < a_keys.size; i++ )
{
if ( isDefined( level._custom_perks[ a_keys[ i ] ].precache_func ) )
{
level [[ level._custom_perks[ a_keys[ i ] ].precache_func ]]();
}
}
}
if ( isDefined( level.zombiemode_using_pack_a_punch ) && level.zombiemode_using_pack_a_punch )
{
precacheitem( "zombie_knuckle_crack" );
precachemodel( "p6_anim_zm_buildable_pap" );
precachemodel( "p6_anim_zm_buildable_pap_on" );
precachestring( &"ZOMBIE_PERK_PACKAPUNCH" );
precachestring( &"ZOMBIE_PERK_PACKAPUNCH_ATT" );
level._effect[ "packapunch_fx" ] = loadfx( "maps/zombie/fx_zombie_packapunch" );
level.machine_assets[ "packapunch" ] = spawnstruct();
level.machine_assets[ "packapunch" ].weapon = "zombie_knuckle_crack";
level.machine_assets[ "packapunch" ].off_model = "p6_zm_al_vending_pap_on";
level.machine_assets[ "packapunch" ].on_model = "p6_zm_al_vending_pap_on";
level.machine_assets[ "packapunch" ].power_on_callback = ::custom_vending_power_on;
level.machine_assets[ "packapunch" ].power_off_callback = ::custom_vending_power_off;
}
if ( isDefined( level.zombiemode_using_additionalprimaryweapon_perk ) && level.zombiemode_using_additionalprimaryweapon_perk )
{
precacheitem( "zombie_perk_bottle_additionalprimaryweapon" );
precacheshader( "specialty_additionalprimaryweapon_zombies" );
precachemodel( "p6_zm_al_vending_three_gun_on" );
precachestring( &"ZOMBIE_PERK_ADDITIONALWEAPONPERK" );
level._effect[ "additionalprimaryweapon_light" ] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_smk" );
level.machine_assets[ "additionalprimaryweapon" ] = spawnstruct();
level.machine_assets[ "additionalprimaryweapon" ].weapon = "zombie_perk_bottle_additionalprimaryweapon";
level.machine_assets[ "additionalprimaryweapon" ].off_model = "p6_zm_al_vending_three_gun_on";
level.machine_assets[ "additionalprimaryweapon" ].on_model = "p6_zm_al_vending_three_gun_on";
level.machine_assets[ "additionalprimaryweapon" ].power_on_callback = ::custom_vending_power_on;
level.machine_assets[ "additionalprimaryweapon" ].power_off_callback = ::custom_vending_power_off;
}
if ( isDefined( level.zombiemode_using_deadshot_perk ) && level.zombiemode_using_deadshot_perk )
{
precacheitem( "zombie_perk_bottle_deadshot" );
precacheshader( "specialty_ads_zombies" );
precachemodel( "p6_zm_al_vending_ads_on" );
precachestring( &"ZOMBIE_PERK_DEADSHOT" );
level._effect[ "deadshot_light" ] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_smk" );
level.machine_assets[ "deadshot" ] = spawnstruct();
level.machine_assets[ "deadshot" ].weapon = "zombie_perk_bottle_deadshot";
level.machine_assets[ "deadshot" ].off_model = "p6_zm_al_vending_ads_on";
level.machine_assets[ "deadshot" ].on_model = "p6_zm_al_vending_ads_on";
level.machine_assets[ "deadshot" ].power_on_callback = ::custom_vending_power_on;
level.machine_assets[ "deadshot" ].power_off_callback = ::custom_vending_power_off;
}
if ( isDefined( level.zombiemode_using_divetonuke_perk ) && level.zombiemode_using_divetonuke_perk )
{
precacheitem( "zombie_perk_bottle_nuke" );
precacheshader( "specialty_divetonuke_zombies" );
precachemodel( "p6_zm_al_vending_nuke_on" );
precachestring( &"ZOMBIE_PERK_DIVETONUKE" );
level._effect[ "divetonuke_light" ] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_smk" );
level.machine_assets[ "divetonuke" ] = spawnstruct();
level.machine_assets[ "divetonuke" ].weapon = "zombie_perk_bottle_nuke";
level.machine_assets[ "divetonuke" ].off_model = "p6_zm_al_vending_nuke_on";
level.machine_assets[ "divetonuke" ].on_model = "p6_zm_al_vending_nuke_on";
level.machine_assets[ "divetonuke" ].power_on_callback = ::custom_vending_power_on;
level.machine_assets[ "divetonuke" ].power_off_callback = ::custom_vending_power_off;
}
if ( isDefined( level.zombiemode_using_doubletap_perk ) && level.zombiemode_using_doubletap_perk )
{
precacheitem( "zombie_perk_bottle_doubletap" );
precacheshader( "specialty_doubletap_zombies" );
precachemodel( "p6_zm_al_vending_doubletap2_on" );
precachestring( &"ZOMBIE_PERK_DOUBLETAP" );
level._effect[ "doubletap_light" ] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_smk" );
level.machine_assets[ "doubletap" ] = spawnstruct();
level.machine_assets[ "doubletap" ].weapon = "zombie_perk_bottle_doubletap";
level.machine_assets[ "doubletap" ].off_model = "p6_zm_al_vending_doubletap2_on";
level.machine_assets[ "doubletap" ].on_model = "p6_zm_al_vending_doubletap2_on";
level.machine_assets[ "doubletap" ].power_on_callback = ::custom_vending_power_on;
level.machine_assets[ "doubletap" ].power_off_callback = ::custom_vending_power_off;
}
if ( isDefined( level.zombiemode_using_juggernaut_perk ) && level.zombiemode_using_juggernaut_perk )
{
precacheitem( "zombie_perk_bottle_jugg" );
precacheshader( "specialty_juggernaut_zombies" );
precachemodel( "p6_zm_al_vending_jugg_on" );
precachestring( &"ZOMBIE_PERK_JUGGERNAUT" );
level._effect[ "jugger_light" ] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_smk" );
level.machine_assets[ "juggernog" ] = spawnstruct();
level.machine_assets[ "juggernog" ].weapon = "zombie_perk_bottle_jugg";
level.machine_assets[ "juggernog" ].off_model = "p6_zm_al_vending_jugg_on";
level.machine_assets[ "juggernog" ].on_model = "p6_zm_al_vending_jugg_on";
level.machine_assets[ "juggernog" ].power_on_callback = ::custom_vending_power_on;
level.machine_assets[ "juggernog" ].power_off_callback = ::custom_vending_power_off;
}
if ( isDefined( level.zombiemode_using_marathon_perk ) && level.zombiemode_using_marathon_perk )
{
precacheitem( "zombie_perk_bottle_marathon" );
precacheshader( "specialty_marathon_zombies" );
precachemodel( "zombie_vending_marathon" );
precachemodel( "zombie_vending_marathon_on" );
precachestring( &"ZOMBIE_PERK_MARATHON" );
level._effect[ "marathon_light" ] = loadfx( "maps/zombie/fx_zmb_cola_staminup_on" );
level.machine_assets[ "marathon" ] = spawnstruct();
level.machine_assets[ "marathon" ].weapon = "zombie_perk_bottle_marathon";
level.machine_assets[ "marathon" ].off_model = "zombie_vending_marathon";
level.machine_assets[ "marathon" ].on_model = "zombie_vending_marathon_on";
}
if ( isDefined( level.zombiemode_using_revive_perk ) && level.zombiemode_using_revive_perk )
{
precacheitem( "zombie_perk_bottle_revive" );
precacheshader( "specialty_quickrevive_zombies" );
precachemodel( "zombie_vending_revive" );
precachemodel( "zombie_vending_revive_on" );
precachestring( &"ZOMBIE_PERK_QUICKREVIVE" );
level._effect[ "revive_light" ] = loadfx( "misc/fx_zombie_cola_revive_on" );
level._effect[ "revive_light_flicker" ] = loadfx( "maps/zombie/fx_zmb_cola_revive_flicker" );
level.machine_assets[ "revive" ] = spawnstruct();
level.machine_assets[ "revive" ].weapon = "zombie_perk_bottle_revive";
level.machine_assets[ "revive" ].off_model = "zombie_vending_revive";
level.machine_assets[ "revive" ].on_model = "zombie_vending_revive_on";
}
if ( isDefined( level.zombiemode_using_sleightofhand_perk ) && level.zombiemode_using_sleightofhand_perk )
{
precacheitem( "zombie_perk_bottle_sleight" );
precacheshader( "specialty_fastreload_zombies" );
precachemodel( "p6_zm_al_vending_sleight_on" );
precachestring( &"ZOMBIE_PERK_FASTRELOAD" );
level._effect[ "sleight_light" ] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_perk_smk" );
level.machine_assets[ "speedcola" ] = spawnstruct();
level.machine_assets[ "speedcola" ].weapon = "zombie_perk_bottle_sleight";
level.machine_assets[ "speedcola" ].off_model = "p6_zm_al_vending_sleight_on";
level.machine_assets[ "speedcola" ].on_model = "p6_zm_al_vending_sleight_on";
level.machine_assets[ "speedcola" ].power_on_callback = ::custom_vending_power_on;
level.machine_assets[ "speedcola" ].power_off_callback = ::custom_vending_power_off;
}
if ( isDefined( level.zombiemode_using_tombstone_perk ) && level.zombiemode_using_tombstone_perk )
{
precacheitem( "zombie_perk_bottle_tombstone" );
precacheshader( "specialty_tombstone_zombies" );
precachemodel( "zombie_vending_tombstone" );
precachemodel( "zombie_vending_tombstone_on" );
precachemodel( "ch_tombstone1" );
precachestring( &"ZOMBIE_PERK_TOMBSTONE" );
level._effect[ "tombstone_light" ] = loadfx( "misc/fx_zombie_cola_on" );
level.machine_assets[ "tombstone" ] = spawnstruct();
level.machine_assets[ "tombstone" ].weapon = "zombie_perk_bottle_tombstone";
level.machine_assets[ "tombstone" ].off_model = "zombie_vending_tombstone";
level.machine_assets[ "tombstone" ].on_model = "zombie_vending_tombstone_on";
}
if ( isDefined( level.zombiemode_using_chugabud_perk ) && level.zombiemode_using_chugabud_perk )
{
precacheitem( "zombie_perk_bottle_whoswho" );
precacheshader( "specialty_quickrevive_zombies" );
precachemodel( "p6_zm_vending_chugabud" );
precachemodel( "p6_zm_vending_chugabud_on" );
precachemodel( "ch_tombstone1" );
precachestring( &"ZOMBIE_PERK_TOMBSTONE" );
level._effect[ "tombstone_light" ] = loadfx( "misc/fx_zombie_cola_on" );
level.machine_assets[ "whoswho" ] = spawnstruct();
level.machine_assets[ "whoswho" ].weapon = "zombie_perk_bottle_whoswho";
level.machine_assets[ "whoswho" ].off_model = "p6_zm_vending_chugabud";
level.machine_assets[ "whoswho" ].on_model = "p6_zm_vending_chugabud_on";
}
}
custom_vending_power_on() //checked matches cerberus output
{
self setclientfield( "toggle_perk_machine_power", 2 );
}
custom_vending_power_off() //checked matches cerberus output
{
self setclientfield( "toggle_perk_machine_power", 1 );
}
precache_personality_characters() //checked matches cerberus output
{
character/c_zom_arlington::precache();
character/c_zom_deluca::precache();
character/c_zom_handsome::precache();
character/c_zom_oleary::precache();
precachemodel( "c_zom_arlington_coat_viewhands" );
precachemodel( "c_zom_deluca_longsleeve_viewhands" );
precachemodel( "c_zom_handsome_sleeveless_viewhands" );
precachemodel( "c_zom_oleary_shortsleeve_viewhands" );
}
give_personality_characters() //checked matches cerberus output
{
if ( isDefined( level.hotjoin_player_setup ) && [[ level.hotjoin_player_setup ]]( "c_zom_arlington_coat_viewhands" ) )
{
return;
}
self detachall();
if ( !isDefined( self.characterindex ) )
{
self.characterindex = assign_lowest_unused_character_index();
}
self.favorite_wall_weapons_list = [];
/*
/#
if ( getDvar( #"40772CF1" ) != "" )
{
self.characterindex = getDvarInt( #"40772CF1" );
#/
}
*/
switch( self.characterindex )
{
case 0:
self character/c_zom_oleary::main();
self setviewmodel( "c_zom_oleary_shortsleeve_viewhands" );
level.vox maps/mp/zombies/_zm_audio::zmbvoxinitspeaker( "player", "vox_plr_", self );
self.favorite_wall_weapons_list[ self.favorite_wall_weapons_list.size ] = "judge_zm";
self set_player_is_female( 0 );
self.character_name = "Finn";
break;
case 1:
self character/c_zom_deluca::main();
self setviewmodel( "c_zom_deluca_longsleeve_viewhands" );
level.vox maps/mp/zombies/_zm_audio::zmbvoxinitspeaker( "player", "vox_plr_", self );
self.favorite_wall_weapons_list[ self.favorite_wall_weapons_list.size ] = "thompson_zm";
self set_player_is_female( 0 );
self.character_name = "Sal";
break;
case 2:
self character/c_zom_handsome::main();
self setviewmodel( "c_zom_handsome_sleeveless_viewhands" );
level.vox maps/mp/zombies/_zm_audio::zmbvoxinitspeaker( "player", "vox_plr_", self );
self.favorite_wall_weapons_list[ self.favorite_wall_weapons_list.size ] = "blundergat_zm";
self set_player_is_female( 0 );
self.character_name = "Billy";
break;
case 3:
self character/c_zom_arlington::main();
self setviewmodel( "c_zom_arlington_coat_viewhands" );
level.vox maps/mp/zombies/_zm_audio::zmbvoxinitspeaker( "player", "vox_plr_", self );
self.favorite_wall_weapons_list[ self.favorite_wall_weapons_list.size ] = "ray_gun_zm";
self set_player_is_female( 0 );
self.character_name = "Arlington";
break;
}
self setmovespeedscale( 1 );
self setsprintduration( 4 );
self setsprintcooldown( 0 );
self thread set_exert_id();
}
set_exert_id() //checked matches cerberus output
{
self endon( "disconnect" );
wait_network_frame();
wait_network_frame();
self maps/mp/zombies/_zm_audio::setexertvoice( self.characterindex + 1 );
}
assign_lowest_unused_character_index() //checked changed to match cerberus output
{
charindexarray = [];
charindexarray[ 0 ] = 0;
charindexarray[ 1 ] = 1;
charindexarray[ 2 ] = 2;
charindexarray[ 3 ] = 3;
players = get_players();
if ( players.size == 1 )
{
charindexarray = array_randomize( charindexarray );
if ( charindexarray[ 0 ] == 3 )
{
level.has_weasel = 1;
}
return charindexarray[ 0 ];
}
else
{
n_characters_defined = 0;
foreach ( player in players )
{
if ( isDefined( player.characterindex ) )
{
arrayremovevalue( charindexarray, player.characterindex, 0 );
n_characters_defined++;
}
}
if ( charindexarray.size > 0 )
{
if ( n_characters_defined == ( players.size - 1 ) )
{
if ( !is_true( level.has_weasel ) )
{
level.has_weasel = 1;
return 3;
}
}
charindexarray = array_randomize( charindexarray );
if ( charindexarray[ 0 ] == 3 )
{
level.has_weasel = 1;
}
return charindexarray[ 0 ];
}
}
return 0;
}
initcharacterstartindex() //checked matches cerberus output
{
level.characterstartindex = randomint( 4 );
}
zombie_init_done() //checked matches cerberus output
{
self.allowpain = 0;
self setphysparams( 15, 0, 48 );
}
zm_player_fake_death_cleanup() //checked matches cerberus output
{
if ( isDefined( self._fall_down_anchor ) )
{
self._fall_down_anchor delete();
self._fall_down_anchor = undefined;
}
}
zm_player_fake_death( vdir ) //checked matches cerberus output
{
level notify( "fake_death" );
self notify( "fake_death" );
stance = self getstance();
self.ignoreme = 1;
self enableinvulnerability();
self takeallweapons();
if ( isDefined( self.insta_killed ) && self.insta_killed )
{
self maps/mp/zombies/_zm::player_fake_death();
self allowprone( 1 );
self allowcrouch( 0 );
self allowstand( 0 );
wait 0.25;
self freezecontrols( 1 );
}
else
{
self freezecontrols( 1 );
self thread fall_down( vdir, stance );
wait 1;
}
}
fall_down( vdir, stance ) //checked matches cerberus output
{
self endon( "disconnect" );
level endon( "game_module_ended" );
self ghost();
origin = self.origin;
xyspeed = ( 0, 0, 0 );
angles = self getplayerangles();
angles = ( angles[ 0 ], angles[ 1 ], angles[ 2 ] + randomfloatrange( -5, 5 ) );
if ( isDefined( vdir ) && length( vdir ) > 0 )
{
xyspeedmag = 40 + randomint( 12 ) + randomint( 12 );
xyspeed = xyspeedmag * vectornormalize( ( vdir[ 0 ], vdir[ 1 ], 0 ) );
}
linker = spawn( "script_origin", ( 0, 0, 0 ) );
linker.origin = origin;
linker.angles = angles;
self._fall_down_anchor = linker;
self playerlinkto( linker );
self playsoundtoplayer( "zmb_player_death_fall", self );
falling = stance != "prone";
if ( falling )
{
origin = playerphysicstrace( origin, origin + xyspeed );
eye = self get_eye();
floor_height = ( 10 + origin[ 2 ] ) - eye[ 2 ];
origin += ( 0, 0, floor_height );
lerptime = 0.5;
linker moveto( origin, lerptime, lerptime );
linker rotateto( angles, lerptime, lerptime );
}
self freezecontrols( 1 );
if ( falling )
{
linker waittill( "movedone" );
}
self giveweapon( "death_throe_zm" );
self switchtoweapon( "death_throe_zm" );
if ( falling )
{
bounce = randomint( 4 ) + 8;
origin = ( origin + ( 0, 0, bounce ) ) - ( xyspeed * 0.1 );
lerptime = bounce / 50;
linker moveto( origin, lerptime, 0, lerptime );
linker waittill( "movedone" );
origin = ( origin + ( 0, 0, bounce * -1 ) ) + ( xyspeed * 0.1 );
lerptime /= 2;
linker moveto( origin, lerptime, lerptime );
linker waittill( "movedone" );
linker moveto( origin, 5, 0 );
}
wait 15;
linker delete();
}
initial_round_wait_func() //checked matches cerberus output
{
flag_wait( "initial_blackscreen_passed" );
}
offhand_weapon_overrride() //checked matches cerberus output
{
register_lethal_grenade_for_level( "frag_grenade_zm" );
level.zombie_lethal_grenade_player_init = "frag_grenade_zm";
register_tactical_grenade_for_level( "emp_grenade_zm" );
register_placeable_mine_for_level( "claymore_zm" );
register_melee_weapon_for_level( "knife_zm" );
register_melee_weapon_for_level( "knife_zm_alcatraz" );
register_melee_weapon_for_level( "spoon_zm_alcatraz" );
register_melee_weapon_for_level( "spork_zm_alcatraz" );
register_melee_weapon_for_level( "bowie_knife_zm" );
level.zombie_melee_weapon_player_init = "knife_zm_alcatraz";
register_equipment_for_level( "alcatraz_shield_zm" );
level.zombie_equipment_player_init = undefined;
level.equipment_safe_to_drop = ::equipment_safe_to_drop;
}
equipment_safe_to_drop( weapon ) //checked changed to match cerberus output
{
if ( !isDefined( self.origin ) )
{
return 1;
}
for ( i = 0; i < level.equipment_tu_dead_zone_pos.size; i++ )
{
if ( distancesquared( level.equipment_tu_dead_zone_pos[ i ], weapon.origin ) < level.equipment_tu_dead_zone_rad2[ i ] )
{
return 0;
}
}
s_check = getstruct( "plane_equipment_safe_check", "targetname" );
if ( distance2dsquared( self.origin, s_check.origin ) < 65536 && self.origin[ 2 ] > s_check.origin[ 2 ] )
{
return 0;
}
return 1;
}
offhand_weapon_give_override( str_weapon ) //checked matches cerberus output
{
self endon( "death" );
if ( is_tactical_grenade( str_weapon ) && isDefined( self get_player_tactical_grenade() ) && !self is_player_tactical_grenade( str_weapon ) )
{
self setweaponammoclip( self get_player_tactical_grenade(), 0 );
self takeweapon( self get_player_tactical_grenade() );
}
return 0;
}
custom_add_weapons() //checked changed to match cerberus output
{
add_zombie_weapon_prison( "m1911_zm", "m1911_upgraded_zm", &"ZOMBIE_WEAPON_M1911", 50, "wpck_crappy", "", undefined );
add_zombie_weapon_prison( "judge_zm", "judge_upgraded_zm", &"ZOMBIE_WEAPON_JUDGE", 50, "wpck_pistol", "", undefined, 1 );
add_zombie_weapon_prison( "fiveseven_zm", "fiveseven_upgraded_zm", &"ZOMBIE_WEAPON_FIVESEVEN", 50, "wpck_pistol", "", undefined, 1 );
add_zombie_weapon_prison( "beretta93r_zm", "beretta93r_upgraded_zm", &"ZOMBIE_WEAPON_BERETTA93r", 900, "wpck_pistol", "", undefined );
add_zombie_weapon_prison( "fivesevendw_zm", "fivesevendw_upgraded_zm", &"ZOMBIE_WEAPON_FIVESEVENDW", 50, "wpck_dual", "", undefined, 1 );
add_zombie_weapon_prison( "uzi_zm", "uzi_upgraded_zm", &"ZOMBIE_WEAPON_UZI", 1500, "wpck_smg", "", undefined );
add_zombie_weapon_prison( "thompson_zm", "thompson_upgraded_zm", &"ZMWEAPON_THOMPSON_WALLBUY", 1500, "wpck_smg", "", 800 );
add_zombie_weapon_prison( "mp5k_zm", "mp5k_upgraded_zm", &"ZOMBIE_WEAPON_MP5K", 1000, "wpck_smg", "", 500 );
add_zombie_weapon_prison( "pdw57_zm", "pdw57_upgraded_zm", &"ZOMBIE_WEAPON_MP5K", 1200, "wpck_crappy", "", undefined, 1 );
add_zombie_weapon_prison( "870mcs_zm", "870mcs_upgraded_zm", &"ZOMBIE_WEAPON_870MCS", 1200, "wpck_shot", "", undefined );
add_zombie_weapon_prison( "rottweil72_zm", "rottweil72_upgraded_zm", &"ZOMBIE_WEAPON_ROTTWEIL72", 500, "wpck_shot", "", undefined );
add_zombie_weapon_prison( "saiga12_zm", "saiga12_upgraded_zm", &"ZOMBIE_WEAPON_SAIGA12", 50, "wpck_shot", "", undefined, 1 );
add_zombie_weapon_prison( "blundergat_zm", "blundergat_upgraded_zm", &"ZOMBIE_WEAPON_BLUNDERGAT", 500, "wpck_shot", "", undefined, 1 );
add_zombie_weapon_prison( "blundersplat_zm", "blundersplat_upgraded_zm", &"ZOMBIE_WEAPON_BLUNDERGAT", 500, "wpck_shot", "", undefined );
add_zombie_weapon_prison( "ak47_zm", "ak47_upgraded_zm", &"ZOMBIE_WEAPON_AK47", 500, "wpck_mg", "", undefined, 1 );
add_zombie_weapon_prison( "m14_zm", "m14_upgraded_zm", &"ZOMBIE_WEAPON_M14", 500, "wpck_mg", "", undefined );
add_zombie_weapon_prison( "tar21_zm", "tar21_upgraded_zm", &"ZOMBIE_WEAPON_TAR21", 50, "wpck_mg", "", undefined, 1 );
add_zombie_weapon_prison( "galil_zm", "galil_upgraded_zm", &"ZOMBIE_WEAPON_GALIL", 50, "wpck_mg", "", undefined, 1 );
add_zombie_weapon_prison( "fnfal_zm", "fnfal_upgraded_zm", &"ZOMBIE_WEAPON_FNFAL", 50, "wpck_shot", "", undefined, 1 );
add_zombie_weapon_prison( "dsr50_zm", "dsr50_upgraded_zm", &"ZOMBIE_WEAPON_DR50", 50, "wpck_snipe", "", undefined, 1 );
add_zombie_weapon_prison( "barretm82_zm", "barretm82_upgraded_zm", &"ZOMBIE_WEAPON_BARRETM82", 50, "wpck_snipe", "", undefined, 1 );
add_zombie_weapon_prison( "minigun_alcatraz_zm", "minigun_alcatraz_upgraded_zm", &"ZOMBIE_WEAPON_RPD", 50, "wpck_mg", "", undefined, 1 );
add_zombie_weapon_prison( "lsat_zm", "lsat_upgraded_zm", &"ZOMBIE_WEAPON_RPD", 50, "wpck_mg", "", undefined, 1 );
add_zombie_weapon_prison( "frag_grenade_zm", undefined, &"ZOMBIE_WEAPON_FRAG_GRENADE", 250, "grenade", "", 250 );
add_zombie_weapon_prison( "claymore_zm", undefined, &"ZOMBIE_WEAPON_CLAYMORE", 1500, "grenade", "", undefined );
add_zombie_weapon_prison( "willy_pete_zm", undefined, &"ZOMBIE_WEAPON_SMOKE_GRENADE", 250, "grenade", "", 250 );
add_zombie_weapon_prison( "usrpg_zm", "usrpg_upgraded_zm", &"ZOMBIE_WEAPON_USRPG", 50, "wpck_rpg", "", undefined, 1 );
add_zombie_weapon_prison( "bouncing_tomahawk_zm", "upgraded_tomahawk_zm", &"ZOMBIE_WEAPON_SATCHEL_2000", 2000, "", "", undefined, 1 );
add_zombie_weapon_prison( "ray_gun_zm", "ray_gun_upgraded_zm", &"ZOMBIE_WEAPON_RAYGUN", 10000, "wpck_ray", "", undefined, 1 );
if ( isdefined( level.raygun2_included ) && level.raygun2_included )
{
add_zombie_weapon_prison( "raygun_mark2_zm", "raygun_mark2_upgraded_zm", &"ZOMBIE_WEAPON_RAYGUN_MARK2", 10000, "raygun_mark2", "", undefined );
}
}
include_weapons() //checked changed to match cerberus output
{
include_weapon( "knife_zm", 0 );
include_weapon( "knife_zm_alcatraz", 0 );
include_weapon( "spoon_zm_alcatraz", 0 );
include_weapon( "spork_zm_alcatraz", 0 );
include_weapon( "frag_grenade_zm", 0 );
include_weapon( "claymore_zm", 0 );
include_weapon( "willy_pete_zm", 0 );
include_weapon( "m1911_zm", 0 );
include_weapon( "m1911_upgraded_zm", 0 );
include_weapon( "judge_zm" );
include_weapon( "judge_upgraded_zm", 0 );
include_weapon( "beretta93r_zm", 0 );
include_weapon( "beretta93r_upgraded_zm", 0 );
include_weapon( "fivesevendw_zm" );
include_weapon( "fivesevendw_upgraded_zm", 0 );
include_weapon( "fivesevendw_zm" );
include_weapon( "fivesevendw_upgraded_zm", 0 );
include_weapon( "uzi_zm", 0 );
include_weapon( "uzi_upgraded_zm", 0 );
if ( is_classic() )
{
include_weapon( "thompson_zm", 0 );
include_weapon( "870mcs_zm", 0 );
}
else
{
include_weapon( "870mcs_zm" );
include_weapon( "thompson_zm" );
}
include_weapon( "thompson_upgraded_zm", 0 );
include_weapon( "mp5k_zm", 0 );
include_weapon( "mp5k_upgraded_zm", 0 );
include_weapon( "pdw57_zm" );
include_weapon( "pdw57_upgraded_zm", 0 );
include_weapon( "870mcs_upgraded_zm", 0 );
include_weapon( "saiga12_zm" );
include_weapon( "saiga12_upgraded_zm", 0 );
include_weapon( "rottweil72_zm", 0 );
include_weapon( "rottweil72_upgraded_zm", 0 );
include_weapon( "m14_zm", 0 );
include_weapon( "m14_upgraded_zm", 0 );
include_weapon( "ak47_zm" );
include_weapon( "ak47_upgraded_zm", 0 );
include_weapon( "tar21_zm" );
include_weapon( "tar21_upgraded_zm", 0 );
include_weapon( "galil_zm" );
include_weapon( "galil_upgraded_zm", 0 );
include_weapon( "fnfal_zm" );
include_weapon( "fnfal_upgraded_zm", 0 );
include_weapon( "dsr50_zm" );
include_weapon( "dsr50_upgraded_zm", 0 );
include_weapon( "barretm82_zm" );
include_weapon( "barretm82_upgraded_zm", 0 );
include_weapon( "minigun_alcatraz_zm" );
include_weapon( "minigun_alcatraz_upgraded_zm", 0 );
include_weapon( "lsat_zm" );
include_weapon( "lsat_upgraded_zm", 0 );
include_weapon( "usrpg_zm" );
include_weapon( "usrpg_upgraded_zm", 0 );
include_weapon( "ray_gun_zm" );
include_weapon( "ray_gun_upgraded_zm", 0 );
include_weapon( "bouncing_tomahawk_zm", 0 );
include_weapon( "upgraded_tomahawk_zm", 0 );
include_weapon( "blundergat_zm" );
include_weapon( "blundergat_upgraded_zm", 0 );
include_weapon( "blundersplat_zm", 0 );
include_weapon( "blundersplat_upgraded_zm", 0 );
level._uses_retrievable_ballisitic_knives = 1;
include_weapon( "alcatraz_shield_zm", 0 );
add_limited_weapon( "m1911_zm", 4 );
add_limited_weapon( "minigun_alcatraz_zm", 1 );
add_limited_weapon( "blundergat_zm", 1 );
add_limited_weapon( "ray_gun_zm", 4 );
add_limited_weapon( "ray_gun_upgraded_zm", 4 );
include_weapon( "tower_trap_zm", 0 );
include_weapon( "tower_trap_upgraded_zm", 0 );
if ( isdefined( level.raygun2_included ) && level.raygun2_included )
{
include_weapon( "raygun_mark2_zm" );
include_weapon( "raygun_mark2_upgraded_zm", 0 );
add_weapon_to_content( "raygun_mark2_zm", "dlc3" );
add_limited_weapon( "raygun_mark2_zm", 1);
add_limited_weapon( "raygun_mark2_upgraded_zm", 1 );
}
}
add_zombie_weapon_prison( weapon_name, upgrade_name, hint, cost, weaponvo, weaponvoresp, ammo_cost, create_vox ) //checked matches cerberus output
{
if ( isDefined( level.zombie_include_weapons ) && !isDefined( level.zombie_include_weapons[ weapon_name ] ) )
{
return;
}
table = "mp/zombiemode.csv";
table_ammo_cost = tablelookup( table, 0, weapon_name, 2 );
if ( isDefined( table_ammo_cost ) && table_ammo_cost != "" )
{
ammo_cost = round_up_to_ten( int( table_ammo_cost ) );
}
precachestring( hint );
struct = spawnstruct();
if ( !isDefined( level.zombie_weapons ) )
{
level.zombie_weapons = [];
}
if ( !isDefined( level.zombie_weapons_upgraded ) )
{
level.zombie_weapons_upgraded = [];
}
if ( isDefined( upgrade_name ) )
{
level.zombie_weapons_upgraded[ upgrade_name ] = weapon_name;
}
struct.weapon_name = weapon_name;
struct.upgrade_name = upgrade_name;
struct.weapon_classname = "weapon_" + weapon_name;
struct.hint = hint;
struct.cost = cost;
struct.vox = weaponvo;
struct.vox_response = weaponvoresp;
/*
/#
println( "ZM >> Looking for weapon - " + weapon_name );
#/
*/
struct.is_in_box = level.zombie_include_weapons[ weapon_name ];
if ( !isDefined( ammo_cost ) )
{
ammo_cost = round_up_to_ten( int( cost * 0.5 ) );
}
struct.ammo_cost = ammo_cost;
level.zombie_weapons[ weapon_name ] = struct;
if ( isDefined( level.zombiemode_reusing_pack_a_punch ) && level.zombiemode_reusing_pack_a_punch && isDefined( upgrade_name ) )
{
add_attachments( weapon_name, upgrade_name );
}
if ( isDefined( create_vox ) )
{
level.vox maps/mp/zombies/_zm_audio::zmbvoxadd( "player", "weapon_pickup", weapon_name, weaponvo, undefined );
}
/*
/#
if ( isDefined( level.devgui_add_weapon ) )
{
[[ level.devgui_add_weapon ]]( weapon_name, upgrade_name, hint, cost, weaponvo, weaponvoresp, ammo_cost );
#/
}
*/
}
include_powerups() //checked matches cerberus output
{
include_powerup( "nuke" );
include_powerup( "insta_kill" );
include_powerup( "double_points" );
include_powerup( "full_ammo" );
include_powerup( "fire_sale" );
}
include_equipment_for_level() //checked matches cerberus output
{
include_equipment( "alcatraz_shield_zm" );
}
setup_rex_starts() //checked matches cerberus output
{
add_gametype( "zclassic", ::dummy, "zclassic", ::dummy );
add_gametype( "zgrief", ::dummy, "zgrief", ::dummy );
add_gameloc( "prison", ::dummy, "prison", ::dummy );
add_gameloc( "cellblock", ::dummy, "cellblock", ::dummy );
}
dummy() //checked matches cerberus output
{
}
working_zone_init() //checked changed to match cerberus output
{
flag_init( "always_on" );
flag_set( "always_on" );
if ( maps/mp/zombies/_zm_utility::is_gametype_active( "zgrief" ) )
{
a_s_spawner = getstructarray( "zone_cellblock_west_roof_spawner", "targetname" );
foreach ( spawner in a_s_spawner )
{
if ( isDefined( spawner.script_parameters ) && spawner.script_parameters == "zclassic_prison" )
{
spawner structdelete();
}
}
}
if ( is_classic() )
{
add_adjacent_zone( "zone_library", "zone_start", "always_on" );
}
else
{
add_adjacent_zone( "zone_library", "zone_cellblock_west", "activate_cellblock_west" );
add_adjacent_zone( "zone_library", "zone_start", "activate_cellblock_west" );
add_adjacent_zone( "zone_cellblock_east", "zone_start", "activate_cellblock_east" );
add_adjacent_zone( "zone_library", "zone_start", "activate_cellblock_east" );
}
add_adjacent_zone( "zone_library", "zone_cellblock_west", "activate_cellblock_west" );
add_adjacent_zone( "zone_cellblock_west", "zone_cellblock_west_barber", "activate_cellblock_barber" );
add_adjacent_zone( "zone_cellblock_west_warden", "zone_cellblock_west_barber", "activate_cellblock_barber" );
add_adjacent_zone( "zone_cellblock_west_warden", "zone_cellblock_west_barber", "activate_cellblock_gondola" );
add_adjacent_zone( "zone_cellblock_west", "zone_cellblock_west_gondola", "activate_cellblock_gondola" );
add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_gondola", "activate_cellblock_gondola" );
add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_barber", "activate_cellblock_gondola" );
add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_east", "activate_cellblock_gondola" );
add_adjacent_zone( "zone_cellblock_west_gondola", "zone_infirmary", "activate_cellblock_infirmary" );
add_adjacent_zone( "zone_infirmary_roof", "zone_infirmary", "activate_cellblock_infirmary" );
add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_barber", "activate_cellblock_infirmary" );
add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west", "activate_cellblock_infirmary" );
add_adjacent_zone( "zone_start", "zone_cellblock_east", "activate_cellblock_east" );
add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_warden", "activate_cellblock_infirmary" );
add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_east", "activate_cellblock_east_west" );
add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_warden", "activate_cellblock_east_west" );
add_adjacent_zone( "zone_cellblock_west_warden", "zone_warden_office", "activate_warden_office" );
add_adjacent_zone( "zone_cellblock_west_warden", "zone_citadel_warden", "activate_cellblock_citadel" );
add_adjacent_zone( "zone_cellblock_west_warden", "zone_cellblock_west_barber", "activate_cellblock_citadel" );
add_adjacent_zone( "zone_citadel", "zone_citadel_warden", "activate_cellblock_citadel" );
add_adjacent_zone( "zone_citadel", "zone_citadel_shower", "activate_cellblock_citadel" );
add_adjacent_zone( "zone_cellblock_east", "zone_cafeteria", "activate_cafeteria" );
add_adjacent_zone( "zone_cafeteria", "zone_cafeteria_end", "activate_cafeteria" );
add_adjacent_zone( "zone_cellblock_east", "cellblock_shower", "activate_shower_room" );
add_adjacent_zone( "cellblock_shower", "zone_citadel_shower", "activate_shower_citadel" );
add_adjacent_zone( "zone_citadel_shower", "zone_citadel", "activate_shower_citadel" );
add_adjacent_zone( "zone_citadel", "zone_citadel_warden", "activate_shower_citadel" );
add_adjacent_zone( "zone_cafeteria", "zone_infirmary", "activate_infirmary" );
add_adjacent_zone( "zone_cafeteria", "zone_cafeteria_end", "activate_infirmary" );
add_adjacent_zone( "zone_infirmary_roof", "zone_infirmary", "activate_infirmary" );
add_adjacent_zone( "zone_roof", "zone_roof_infirmary", "activate_roof" );
add_adjacent_zone( "zone_roof_infirmary", "zone_infirmary_roof", "activate_roof" );
add_adjacent_zone( "zone_citadel", "zone_citadel_stairs", "activate_citadel_stair" );
add_adjacent_zone( "zone_citadel", "zone_citadel_shower", "activate_citadel_stair" );
add_adjacent_zone( "zone_citadel", "zone_citadel_warden", "activate_citadel_stair" );
add_adjacent_zone( "zone_citadel_stairs", "zone_citadel_basement", "activate_citadel_basement" );
add_adjacent_zone( "zone_citadel_basement", "zone_citadel_basement_building", "activate_citadel_basement" );
add_adjacent_zone( "zone_citadel_basement", "zone_citadel_basement_building", "activate_basement_building" );
add_adjacent_zone( "zone_citadel_basement_building", "zone_studio", "activate_basement_building" );
add_adjacent_zone( "zone_citadel_basement", "zone_studio", "activate_basement_building" );
add_adjacent_zone( "zone_citadel_basement_building", "zone_dock_gondola", "activate_basement_gondola" );
add_adjacent_zone( "zone_citadel_basement", "zone_citadel_basement_building", "activate_basement_gondola" );
add_adjacent_zone( "zone_dock", "zone_dock_gondola", "activate_basement_gondola" );
add_adjacent_zone( "zone_studio", "zone_dock", "activate_dock_sally" );
add_adjacent_zone( "zone_dock_gondola", "zone_dock", "activate_dock_sally" );
add_adjacent_zone( "zone_dock", "zone_dock_gondola", "gondola_roof_to_dock" );
add_adjacent_zone( "zone_cellblock_west", "zone_cellblock_west_gondola", "gondola_dock_to_roof" );
add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_gondola", "gondola_dock_to_roof" );
add_adjacent_zone( "zone_cellblock_west_barber", "zone_cellblock_west_warden", "gondola_dock_to_roof" );
add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_east", "gondola_dock_to_roof" );
if ( is_classic() )
{
add_adjacent_zone( "zone_gondola_ride", "zone_gondola_ride", "gondola_ride_zone_enabled" );
}
if ( is_classic() )
{
add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_gondola_dock", "activate_cellblock_infirmary" );
add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_gondola_dock", "activate_cellblock_gondola" );
add_adjacent_zone( "zone_cellblock_west_gondola", "zone_cellblock_west_gondola_dock", "gondola_dock_to_roof" );
}
if ( maps/mp/zombies/_zm_utility::is_gametype_active( "zgrief" ) )
{
playable_area = getentarray( "player_volume", "script_noteworthy" );
foreach ( area in playable_area )
{
if ( isDefined( area.script_parameters ) && area.script_parameters == "classic_only" )
{
area delete();
}
}
}
add_adjacent_zone( "zone_golden_gate_bridge", "zone_golden_gate_bridge", "activate_player_zone_bridge" );
if ( is_classic() )
{
add_adjacent_zone( "zone_dock_puzzle", "zone_dock_puzzle", "always_on" );
}
}
alcatraz_afterlife_doors() //checked changed to match cerberus output
{
wait 0.05;
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 ( isDefined( self.script_noteworthy ) && self.script_noteworthy == "afterlife_door" )
{
self sethintstring( &"ZM_PRISON_AFTERLIFE_DOOR" );
/*
/#
self thread afterlife_door_open_sesame();
#/
*/
s_struct = getstruct( self.target, "targetname" );
if ( !isDefined( s_struct ) )
{
/*
/#
iprintln( "Afterlife Door was not targeting a valid struct" );
#/
*/
return;
}
m_shockbox = getent( s_struct.target, "targetname" );
m_shockbox.health = 5000;
m_shockbox setcandamage( 1 );
m_shockbox useanimtree( -1 );
t_bump = spawn( "trigger_radius", m_shockbox.origin, 0, 28, 64 );
t_bump.origin = ( ( m_shockbox.origin + ( anglesToForward( m_shockbox.angles ) * 0 ) ) + ( anglesToRight( m_shockbox.angles ) * 28 ) ) + ( anglesToUp( m_shockbox.angles ) * 0 );
if ( isDefined( t_bump ) )
{
t_bump setcursorhint( "HINT_NOICON" );
t_bump sethintstring( &"ZM_PRISON_AFTERLIFE_INTERACT" );
}
while ( 1 )
{
m_shockbox waittill( "damage", amount, attacker );
if ( isplayer( attacker ) && attacker getcurrentweapon() == "lightning_hands_zm" )
{
if ( isDefined( level.afterlife_interact_dist ) )
{
if ( distance2d( attacker.origin, m_shockbox.origin ) < level.afterlife_interact_dist )
{
t_bump delete();
m_shockbox playsound( "zmb_powerpanel_activate" );
playfxontag( level._effect[ "box_activated" ], m_shockbox, "tag_origin" );
m_shockbox setmodel( "p6_zm_al_shock_box_on" );
m_shockbox setanim( level.shockbox_anim[ "on" ] );
if ( ( m_shockbox.script_string == "wires_shower_door" || m_shockbox.script_string == "wires_admin_door" ) && isDefined( m_shockbox.script_string ) )
{
array_delete( getentarray( m_shockbox.script_string, "script_noteworthy" ) );
}
self maps/mp/zombies/_zm_blockers::door_opened( 0 ); //you have to buy doors after powering them if you don't do this
attacker notify( "player_opened_afterlife_door" );
break;
}
}
}
}
}
while ( 1 )
{
if ( !self maps/mp/zombies/_zm_blockers::door_buy() )
{
wait 0.05;
continue;
}
break;
}
}
afterlife_door_open_sesame() //checked matches cerberus output
{
/*
/#
level waittill( "open_sesame" );
self maps/mp/zombies/_zm_blockers::door_opened( 0 );
#/
*/
}
delete_perk_machine_clip() //checked changed to match cerberus output
{
perk_machines = getentarray( "zombie_vending", "targetname" );
foreach ( perk_machine in perk_machines )
{
if ( isDefined( perk_machine.clip ) )
{
perk_machine.clip delete();
}
}
}
alcatraz_round_spawn_failsafe() //checked changed to match cerberus output
{
self endon( "death" );
prevorigin = self.origin;
while ( 1 )
{
if ( isDefined( self.ignore_round_spawn_failsafe ) && self.ignore_round_spawn_failsafe )
{
return;
}
wait 15;
if ( isDefined( self.is_inert ) && self.is_inert )
{
continue;
}
if ( isDefined( self.lastchunk_destroy_time ) )
{
if ( ( getTime() - self.lastchunk_destroy_time ) < 8000 )
{
continue;
}
}
if ( self.origin[ 2 ] < -15000 )
{
if ( isDefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) && isDefined( self.isscreecher ) && !self.isscreecher )
{
level.zombie_total++;
level.zombie_total_subtract++;
}
self dodamage( self.health + 100, ( 0, 0, 0 ) );
break;
}
if ( distancesquared( self.origin, prevorigin ) < 576 )
{
if ( isDefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) )
{
if ( isDefined( self.nuked ) && !self.nuked && isDefined( self.marked_for_death ) && !self.marked_for_death && isDefined( self.isscreecher ) && !self.isscreecher && isDefined( self.has_legs ) && self.has_legs && isDefined( self.is_brutus ) && !self.is_brutus )
{
level.zombie_total++;
level.zombie_total_subtract++;
}
}
level.zombies_timeout_playspace++;
if ( isDefined( self.is_brutus ) && self.is_brutus )
{
self.suppress_brutus_powerup_drop = 1;
self.brutus_round_spawn_failsafe = 1;
}
self dodamage( self.health + 100, ( 0, 0, 0 ) );
return;
}
prevorigin = self.origin;
}
}
player_shockbox_glowfx()
{
self endon( "disconnect" );
a_afterlife_interacts = getentarray( "afterlife_interact", "targetname" );
a_afterlife_door_interacts = getentarray( "afterlife_door_shock_box", "script_noteworthy" );
a_combine = arraycombine( a_afterlife_interacts, a_afterlife_door_interacts, 0, 0 );
foreach ( shockbox in a_combine )
{
if ( issubstr( shockbox.model, "shock_box" ) )
{
shockbox setclientfield( "afterlife_shockbox_glow", 1 );
}
}
}
/*
is_gametype_active( a_gametypes ) //not in cerberus output
{
is_gametype_active = 0;
if ( !isarray( a_gametypes ) )
{
a_gametypes = array( a_gametypes );
}
i = 0;
while ( i < a_gametypes.size )
{
if ( getDvar( "g_gametype" ) == a_gametypes[ i ] )
{
is_gametype_active = 1;
}
i++;
}
return is_gametype_active;
}
*/