2021-02-06 15:04:56 -08:00

1855 lines
68 KiB
Plaintext

//includes checked changed to match cerberus output
#include maps/mp/zombies/_zm_chugabud;
#include maps/mp/zombies/_zm_unitrigger;
#include maps/mp/zombies/_zm_equipment;
#include character/c_highrise_player_reporter;
#include character/c_highrise_player_engineer;
#include character/c_highrise_player_oldman;
#include character/c_highrise_player_farmgirl;
#include maps/mp/zombies/_zm_perks;
#include maps/mp/zombies/_zm_audio;
#include maps/mp/zombies/_zm_buildables;
#include maps/mp/zombies/_zm_devgui;
#include maps/mp/gametypes_zm/_zm_gametype;
#include maps/mp/zombies/_zm_laststand;
#include maps/mp/zm_highrise_distance_tracking;
#include maps/mp/zombies/_zm_zonemgr;
#include maps/mp/zm_highrise_achievement;
#include maps/mp/zombies/_zm_weap_tazer_knuckles;
#include maps/mp/zombies/_zm_weap_slipgun;
#include maps/mp/zombies/_zm_weap_ballistic_knife;
#include maps/mp/zombies/_zm_weap_claymore;
#include maps/mp/zombies/_zm_weap_cymbal_monkey;
#include maps/mp/zombies/_zm_weap_bowie;
#include maps/mp/_sticky_grenade;
#include maps/mp/zm_highrise;
#include maps/mp/zombies/_zm_ai_leaper;
#include maps/mp/zm_highrise_classic;
#include maps/mp/gametypes_zm/_spawning;
#include maps/mp/zombies/_load;
#include maps/mp/zm_highrise_elevators;
#include maps/mp/zm_highrise_amb;
#include maps/mp/animscripts/zm_death;
#include maps/mp/zombies/_zm;
#include maps/mp/zm_highrise_utility;
#include maps/mp/zm_highrise_ffotd;
#include maps/mp/zm_highrise_fx;
#include maps/mp/zombies/_zm_banking;
#include maps/mp/zm_highrise_sq;
#include maps/mp/zm_highrise_gamemodes;
#include maps/mp/zombies/_zm_weapon_locker;
#include maps/mp/zombies/_zm_weapons;
#include maps/mp/zombies/_zm_utility;
#include maps/mp/_utility;
#include common_scripts/utility;
gamemode_callback_setup()
{
maps/mp/zm_highrise_gamemodes::init();
}
survival_init() //checked changed to match cerberus output
{
level.precachecustomcharacters = ::precache_personality_characters;
level.givecustomcharacters = ::give_personality_characters;
level.setupcustomcharacterexerts = ::setup_personality_character_exerts;
level.buildable_build_custom_func = ::buildable_build_custom_func;
level.use_female_animations = 1;
vend_trigs = getentarray( "zombie_vending", "targetname" );
foreach ( ent in vend_trigs )
{
if ( isDefined( ent.clip ) )
{
ent.clip delete();
}
}
flag_wait( "start_zombie_round_logic" );
}
zclassic_preinit() //checked changed to match cerberus output
{
setdvar("player_sliding_velocity_cap", 80);
setdvar("player_sliding_wishspeed", 800);
registerclientfield( "scriptmover", "clientfield_escape_pod_tell_fx", 5000, 1, "int" );
registerclientfield( "scriptmover", "clientfield_escape_pod_sparks_fx", 5000, 1, "int" );
registerclientfield( "scriptmover", "clientfield_escape_pod_impact_fx", 5000, 1, "int" );
registerclientfield( "scriptmover", "clientfield_escape_pod_light_fx", 5000, 1, "int" );
registerclientfield( "actor", "clientfield_whos_who_clone_glow_shader", 5000, 1, "int" );
registerclientfield( "toplayer", "clientfield_whos_who_audio", 5000, 1, "int" );
registerclientfield( "toplayer", "clientfield_whos_who_filter", 5000, 1, "int" );
level.whos_who_client_setup = 1;
maps/mp/zm_highrise_sq::sq_highrise_clientfield_init();
precachemodel( "p6_zm_keycard" );
precachemodel( "p6_zm_hr_keycard" );
precachemodel( "fxanim_zom_highrise_trample_gen_mod" );
level.banking_map = "zm_transit";
level.weapon_locker_map = "zm_transit";
level thread maps/mp/zombies/_zm_banking::init();
survival_init();
weapon_locker = spawnstruct();
weapon_locker.origin = ( 2159, 610, 1343 );
weapon_locker.angles = VectorScale( ( 0, 1, 0 ), 60 );
weapon_locker.targetname = "weapons_locker";
deposit_spot = spawnstruct();
deposit_spot.origin = ( 2247, 553, 1326 );
deposit_spot.angles = VectorScale( ( 0, 1, 0 ), 60 );
deposit_spot.script_length = 16;
deposit_spot.targetname = "bank_deposit";
withdraw_spot = spawnstruct();
withdraw_spot.origin = ( 2280, 611, 1330 );
withdraw_spot.angles = VectorScale( ( 0, 1, 0 ), 60 );
withdraw_spot.script_length = 16;
withdraw_spot.targetname = "bank_withdraw";
level thread maps/mp/zombies/_zm_weapon_locker::main();
weapon_locker thread maps/mp/zombies/_zm_weapon_locker::triggerweaponslockerwatch();
level thread maps/mp/zombies/_zm_banking::main();
deposit_spot thread maps/mp/zombies/_zm_banking::bank_deposit_unitrigger();
withdraw_spot thread maps/mp/zombies/_zm_banking::bank_withdraw_unitrigger();
}
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_highrise_fx::main();
level thread maps/mp/zm_highrise_ffotd::main_start();
level thread maps/mp/zm_highrise_utility::main_start();
level.level_createfx_callback_thread = ::createfx_callback;
if ( !isDefined( level.vsmgr_prio_visionset_zm_whos_who ) )
{
level.vsmgr_prio_visionset_zm_whos_who = 123;
}
level.default_game_mode = "zclassic";
level.default_start_location = "rooftop";
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_highrise_amb::main();
level._override_eye_fx = level._effect[ "blue_eyes" ];
level.level_specific_stats_init = ::init_highrise_stats;
level.hostmigration_link_entity_callback = maps/mp/zm_highrise_elevators::get_link_entity_for_host_migration;
level.hostmigration_ai_link_entity_callback = maps/mp/zm_highrise_elevators::get_link_entity_for_host_migration;
maps/mp/zombies/_load::main();
if ( getDvar( "createfx" ) != "" )
{
return;
}
setdvar( "r_lightGridEnableTweaks", 1 );
setdvar( "r_lightGridIntensity", 1.25 );
setdvar( "r_lightGridContrast", -0.25 );
maps/mp/gametypes_zm/_spawning::level_use_unified_spawning( 1 );
level.givecustomloadout = ::givecustomloadout;
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.zombie_init_done = ::zombie_init_done;
level.check_for_valid_spawn_near_team_callback = ::highrise_respawn_override;
level.zombiemode_using_pack_a_punch = 1;
level.zombiemode_reusing_pack_a_punch = 1;
level.pap_interaction_height = 47;
level.zombiemode_using_doubletap_perk = 1;
level.zombiemode_using_juggernaut_perk = 1;
level.zombiemode_using_revive_perk = 1;
level.zombiemode_using_sleightofhand_perk = 1;
level.zombiemode_using_chugabud_perk = 1;
level.zombiemode_using_additionalprimaryweapon_perk = 1;
level._custom_zombie_audio_func = ::custom_zombie_audio_func;
init_persistent_abilities();
level._zmbvoxlevelspecific = ::init_level_specific_audio;
maps/mp/zm_highrise_classic::init_escape_elevators_animtree();
maps/mp/zm_highrise_elevators::init_perk_elvators_animtree();
level.register_offhand_weapons_for_level_defaults_override = ::offhand_weapon_overrride;
level.zombiemode_offhand_weapon_give_override = ::offhand_weapon_give_override;
level._zombie_custom_add_weapons = ::custom_add_weapons;
level._allow_melee_weapon_switching = 1;
level.custom_ai_type = [];
level.custom_ai_type[ level.custom_ai_type.size ] = maps/mp/zombies/_zm_ai_leaper::init; //remove unneeded :: before filepath. makes map fail to launch due to not being able to find _zm_ai_leaper
level.raygun2_included = 1;
include_weapons();
include_powerups();
include_equipment_for_level();
init_level_specific_wall_buy_fx();
level.special_weapon_magicbox_check = ::highrise_special_weapon_magicbox_check; //no function highrise_special_weapon_magicbox_check found. makes map fail to launch due to unresolved external error. //I forgot to include this function from cerberus; for some reason certain functions and code are
//missing from certain functions in the scripts I use as a base.
level.melee_anim_state = ::melee_anim_state;
level.pandora_fx_func = ::zm_highrise_pandora_fx_func;
maps/mp/zm_highrise_elevators::init_elevator_perks();
level.custom_vending_precaching = ::custom_vending_precaching;
maps/mp/zombies/_zm::init();
level thread maps/mp/_sticky_grenade::init();
maps/mp/zombies/_zm_weap_bowie::init();
level.legacy_cymbal_monkey = 1;
maps/mp/zombies/_zm_weap_cymbal_monkey::init();
maps/mp/zombies/_zm_weap_claymore::init();
maps/mp/zombies/_zm_weap_ballistic_knife::init();
maps/mp/zombies/_zm_weap_slipgun::init();
maps/mp/zombies/_zm_weap_tazer_knuckles::init();
level maps/mp/zm_highrise_achievement::init();
precacheitem( "death_throe_zm" );
if ( level.splitscreen && getDvarInt( "splitscreen_playerCount" ) > 2 )
{
level.optimise_for_splitscreen = 1;
}
else
{
level.optimise_for_splitscreen = 0;
}
precache_team_whos_who_characters();
maps/mp/zombies/_zm_ai_leaper::precache();
level thread maps/mp/zm_highrise_sq::start_highrise_sidequest();
level.zones = [];
level.zone_manager_init_func = ::highrise_zone_init;
init_zones = [];
init_zones[ 0 ] = "zone_green_start";
init_zones[ 1 ] = "zone_orange_level3a";
init_zones[ 2 ] = "zone_green_level3d";
init_zones[ 3 ] = "zone_blue_level2a";
level thread maps/mp/zombies/_zm_zonemgr::manage_zones( init_zones );
if ( is_true( 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;
}
level.speed_change_round = 15;
level.speed_change_max = 5;
level._audio_custom_response_line = ::highrise_audio_custom_response_line;
setup_zone_monitor();
setup_leapers();
level thread toggle_leaper_traversals();
level thread toggle_zombie_traversals();
level thread toggle_leaper_collision();
level thread electric_switch();
level.ignore_equipment = ::ignore_equipment;
/*
/#
execdevgui( "devgui_zombie_highrise" );
level.custom_devgui = ::zombie_highrise_devgui;
adddebugcommand( "devgui_cmd "Zombies:1/Highrise:15/Lighting:3/Power On:1" "set zombie_devgui_hrpowerlighting on" \n" );
adddebugcommand( "devgui_cmd "Zombies:1/Highrise:15/Lighting:3/Power Off:2" "set zombie_devgui_hrpowerlighting off" \n" );
level thread watch_lightpower_devgui();
#/
*/
level thread maps/mp/zombies/_zm::post_main();
level thread maps/mp/zm_highrise_ffotd::main_end();
level thread maps/mp/zm_highrise_utility::main_end();
level thread maps/mp/zm_highrise_distance_tracking::zombie_tracking_init();
trigs = getentarray( "force_from_prone", "targetname" );
array_thread( trigs, ::player_force_from_prone );
level._dont_unhide_quickervive_on_hotjoin = 1;
}
custom_vending_precaching() //changed at own discretion
{
if ( is_true( 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_zmb_highrise_packapunch" );
level.machine_assets[ "packapunch" ] = spawnstruct();
level.machine_assets[ "packapunch" ].weapon = "zombie_knuckle_crack";
level.machine_assets[ "packapunch" ].off_model = "p6_anim_zm_buildable_pap";
level.machine_assets[ "packapunch" ].on_model = "p6_anim_zm_buildable_pap_on";
}
if ( is_true( level.zombiemode_using_additionalprimaryweapon_perk ) )
{
precacheitem( "zombie_perk_bottle_additionalprimaryweapon" );
precacheshader( "specialty_additionalprimaryweapon_zombies" );
precachemodel( "zombie_vending_three_gun" );
precachemodel( "zombie_vending_three_gun_on" );
precachestring( &"ZOMBIE_PERK_ADDITIONALWEAPONPERK" );
level._effect[ "additionalprimaryweapon_light" ] = loadfx( "misc/fx_zombie_cola_arsenal_on" );
level.machine_assets[ "additionalprimaryweapon" ] = spawnstruct();
level.machine_assets[ "additionalprimaryweapon" ].weapon = "zombie_perk_bottle_additionalprimaryweapon";
level.machine_assets[ "additionalprimaryweapon" ].off_model = "zombie_vending_three_gun";
level.machine_assets[ "additionalprimaryweapon" ].on_model = "zombie_vending_three_gun_on";
}
if ( is_true( level.zombiemode_using_deadshot_perk ) )
{
precacheitem( "zombie_perk_bottle_deadshot" );
precacheshader( "specialty_ads_zombies" );
precachemodel( "zombie_vending_ads" );
precachemodel( "zombie_vending_ads_on" );
precachestring( &"ZOMBIE_PERK_DEADSHOT" );
level._effect[ "deadshot_light" ] = loadfx( "misc/fx_zombie_cola_dtap_on" );
level.machine_assets[ "deadshot" ] = spawnstruct();
level.machine_assets[ "deadshot" ].weapon = "zombie_perk_bottle_deadshot";
level.machine_assets[ "deadshot" ].off_model = "zombie_vending_ads";
level.machine_assets[ "deadshot" ].on_model = "zombie_vending_ads_on";
}
if ( is_true( level.zombiemode_using_divetonuke_perk ) )
{
precacheitem( "zombie_perk_bottle_nuke" );
precacheshader( "specialty_divetonuke_zombies" );
precachemodel( "zombie_vending_nuke" );
precachemodel( "zombie_vending_nuke_on" );
precachestring( &"ZOMBIE_PERK_DIVETONUKE" );
level._effect[ "divetonuke_light" ] = loadfx( "misc/fx_zombie_cola_dtap_on" );
level.machine_assets[ "divetonuke" ] = spawnstruct();
level.machine_assets[ "divetonuke" ].weapon = "zombie_perk_bottle_nuke";
level.machine_assets[ "divetonuke" ].off_model = "zombie_vending_nuke";
level.machine_assets[ "divetonuke" ].on_model = "zombie_vending_nuke_on";
}
if ( is_true( level.zombiemode_using_doubletap_perk ) )
{
precacheitem( "zombie_perk_bottle_doubletap" );
precacheshader( "specialty_doubletap_zombies" );
precachemodel( "zombie_vending_doubletap2" );
precachemodel( "zombie_vending_doubletap2_on" );
precachestring( &"ZOMBIE_PERK_DOUBLETAP" );
level._effect[ "doubletap_light" ] = loadfx( "misc/fx_zombie_cola_dtap_on" );
level.machine_assets[ "doubletap" ] = spawnstruct();
level.machine_assets[ "doubletap" ].weapon = "zombie_perk_bottle_doubletap";
level.machine_assets[ "doubletap" ].off_model = "zombie_vending_doubletap2";
level.machine_assets[ "doubletap" ].on_model = "zombie_vending_doubletap2_on";
}
if ( is_true( level.zombiemode_using_juggernaut_perk ) )
{
precacheitem( "zombie_perk_bottle_jugg" );
precacheshader( "specialty_juggernaut_zombies" );
precachemodel( "zombie_vending_jugg" );
precachemodel( "zombie_vending_jugg_on" );
precachestring( &"ZOMBIE_PERK_JUGGERNAUT" );
level._effect[ "jugger_light" ] = loadfx( "misc/fx_zombie_cola_jugg_on" );
level.machine_assets[ "juggernog" ] = spawnstruct();
level.machine_assets[ "juggernog" ].weapon = "zombie_perk_bottle_jugg";
level.machine_assets[ "juggernog" ].off_model = "zombie_vending_jugg";
level.machine_assets[ "juggernog" ].on_model = "zombie_vending_jugg_on";
}
if ( is_true( 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 ( is_true( 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 ( is_true( level.zombiemode_using_sleightofhand_perk ) )
{
precacheitem( "zombie_perk_bottle_sleight" );
precacheshader( "specialty_fastreload_zombies" );
precachemodel( "zombie_vending_sleight" );
precachemodel( "zombie_vending_sleight_on" );
precachestring( &"ZOMBIE_PERK_FASTRELOAD" );
level._effect[ "sleight_light" ] = loadfx( "misc/fx_zombie_cola_on" );
level.machine_assets[ "speedcola" ] = spawnstruct();
level.machine_assets[ "speedcola" ].weapon = "zombie_perk_bottle_sleight";
level.machine_assets[ "speedcola" ].off_model = "zombie_vending_sleight";
level.machine_assets[ "speedcola" ].on_model = "zombie_vending_sleight_on";
}
if ( is_true( 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 ( is_true( 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";
}
}
choose_a_line_to_play() //checked changed to match cerberus output
{
if ( !isDefined( level.custom_zombie_sounds ) )
{
level.custom_zombie_sounds = array( "vox_zombie_sidequest_zombie_lies_0", "vox_zombie_sidequest_zombie_lies_1", "vox_zombie_sidequest_zombie_lies_2", "vox_zombie_sidequest_zombie_pain_0", "vox_zombie_sidequest_zombie_pain_1", "vox_zombie_sidequest_zombie_pain_2", "vox_zombie_sidequest_zombie_pain_3", "vox_zombie_sidequest_zombie_pain_4", "vox_zombie_sidequest_zombie_pain_5", "vox_zombie_sidequest_zombie_pain_6", "vox_zombie_sidequest_zombie_plea_0", "vox_zombie_sidequest_zombie_plea_1", "vox_zombie_sidequest_zombie_plea_2", "vox_zombie_sidequest_zombie_plea_3", "vox_zombie_sidequest_zombie_plea_4", "vox_zombie_sidequest_zombie_plea_5" );
level.custom_zombie_sounds = randomize_array( level.custom_zombie_sounds );
level.last_custom_sound_played = 0;
level.custom_zombie_sound_play_frequences = array( 5, 10, 20, 30 );
level.custom_zombie_sound_play_round_numbers = array( 2, 5, 7, 10 );
level.custom_zombie_sound_played_interval = 6000;
}
else if ( level.last_custom_sound_played >= level.custom_zombie_sounds.size )
{
level.custom_zombie_sounds = randomize_array( level.custom_zombie_sounds );
level.last_custom_sound_played = 0;
}
sound = level.custom_zombie_sounds[ level.last_custom_sound_played ];
level.last_custom_sound_played++;
return sound;
}
get_custom_zombie_sound_play_frequency() //checked changed to match cerberus output
{
if ( !isDefined( level.custom_zombie_sounds ) )
{
return 100;
}
if ( isDefined( level.last_custom_zombie_sound_time ) )
{
if ( getTime() < ( level.last_custom_zombie_sound_time + level.custom_zombie_sound_played_interval ) )
{
return 0;
}
}
if ( level.round_number >= level.custom_zombie_sound_play_round_numbers[ level.custom_zombie_sound_play_round_numbers.size - 1 ] )
{
return 40;
}
for ( i = 0; i < level.custom_zombie_sound_play_round_numbers.size; i++ )
{
if ( level.round_number < level.custom_zombie_sound_play_round_numbers[ i ] )
{
return level.custom_zombie_sound_play_frequences[ i ];
}
}
return 0;
}
custom_zombie_audio_func( alias, alias_type ) //checked partially changed to match cerberus output see info.md
{
if ( alias_type != "behind" )
{
if ( is_true( level.isstuhlingeringame ) )
{
if ( randomint( 100 ) > ( 100 - get_custom_zombie_sound_play_frequency() ) )
{
players = get_players();
foreach ( player in players )
{
if ( isDefined( player.characterindex ) && player.characterindex == 1 )
{
level.last_custom_zombie_sound_time = getTime();
alias_to_play = choose_a_line_to_play();
self playsoundtoplayer( alias_to_play, player );
}
else
{
self playsoundtoplayer( alias, player );
}
}
return;
}
}
}
self playsound( alias );
}
init_persistent_abilities() //checked changed to match cerberus output
{
if ( is_classic() )
{
level.pers_upgrade_boards = 1;
level.pers_upgrade_revive = 1;
level.pers_upgrade_multi_kill_headshots = 1;
level.pers_upgrade_cash_back = 1;
level.pers_upgrade_insta_kill = 1;
level.pers_upgrade_jugg = 1;
level.pers_upgrade_carpenter = 1;
level.pers_upgrade_box_weapon = 1;
level.pers_magic_box_firesale = 1;
level.pers_treasure_chest_get_weapons_array_func = ::pers_treasure_chest_get_weapons_array_highrise;
level.pers_upgrade_sniper = 1;
level.pers_upgrade_pistol_points = 1;
level.pers_upgrade_perk_lose = 1;
level.pers_upgrade_double_points = 1;
level.pers_upgrade_nube = 1;
}
}
pers_treasure_chest_get_weapons_array_highrise() //checked added from cerberus output
{
if ( !isdefined( level.pers_box_weapons ) )
{
level.pers_box_weapons = [];
level.pers_box_weapons[ level.pers_box_weapons.size ] = "knife_ballistic_zm";
level.pers_box_weapons[ level.pers_box_weapons.size ] = "cymbal_monkey_zm";
level.pers_box_weapons[ level.pers_box_weapons.size ] = "judge_zm";
level.pers_box_weapons[ level.pers_box_weapons.size ] = "galil_zm";
level.pers_box_weapons[ level.pers_box_weapons.size ] = "hamr_zm";
level.pers_box_weapons[ level.pers_box_weapons.size ] = "python_zm";
level.pers_box_weapons[ level.pers_box_weapons.size ] = "ray_gun_zm";
level.pers_box_weapons[ level.pers_box_weapons.size ] = "rpd_zm";
}
}
watch_lightpower_devgui() //dev call didn't check
{
/*
/#
while ( 1 )
{
powercmd = getDvar( "zombie_devgui_hrpowerlighting" );
if ( isDefined( powercmd ) && powercmd != "" )
{
if ( powercmd == "on" )
{
clientnotify( "pwr" );
}
else
{
clientnotify( "pwo" );
}
setdvar( "zombie_devgui_hrpowerlighting", "" );
}
wait 1;
#/
}
*/
}
setup_leapers() //checked matches cerberus output dvar not found
{
/*
if ( isDefined( getDvarInt( #"60AEA36D" ) ) )
{
b_disable_leapers = getDvarInt( #"60AEA36D" );
}
*/
if ( is_true( b_disable_leapers ) )
{
flag_init( "leaper_round" );
}
else
{
maps/mp/zombies/_zm_ai_leaper::enable_leaper_rounds();
}
level.leapers_per_player = 6;
}
setup_zone_monitor() //checked matches cerberus output dvars not found
{
level.player_out_of_playable_area_monitor = 1;
//str_dvar_zone_monitor = getDvarInt( #"E9322600" );
if ( isDefined( str_dvar_zone_monitor ) && str_dvar_zone_monitor )
{
level.player_out_of_playable_area_monitor = 0;
}
//str_dvar_zone_test = getDvarInt( #"2313B5C5" );
if ( isDefined( str_dvar_zone_test ) && str_dvar_zone_test )
{
level.kill_thread_test_mode = 1;
level.check_kill_thread_every_frame = 1;
}
level.player_out_of_playable_area_monitor_callback = ::zm_highrise_zone_monitor_callback;
}
zm_highrise_zone_monitor_callback() //checked matches cerberus output
{
b_kill_player = 1;
if ( !self isonground() )
{
b_kill_player = 0;
}
if ( getnumconnectedplayers() == 1 )
{
if ( isDefined( self.lives ) && self.lives > 0 )
{
if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() )
{
b_kill_player = 0;
}
}
}
if ( b_kill_player )
{
self thread maps/mp/zm_highrise_classic::insta_kill_player( 0, 0 );
}
return b_kill_player;
}
ignore_equipment( zombie ) //checked changed at own discretion
{
if ( !is_true( zombie.completed_emerging_into_playable_area ) )
{
return 1;
}
if ( is_true( zombie.is_avogadro ) )
{
return 1;
}
if ( is_true( zombie.is_inert ) )
{
return 1;
}
if ( isDefined( zombie.inert_delay ) )
{
return 1;
}
if ( is_true( self.is_armed ) )
{
return 1;
}
return 0;
}
highrise_respawn_override( revivee, return_struct ) //checked changed to match cerberus output
{
players = get_players();
spawn_points = maps/mp/gametypes_zm/_zm_gametype::get_player_spawns_for_gametype();
if ( spawn_points.size == 0 )
{
return undefined;
}
for ( i = 0; i < players.size; i++ )
{
if ( is_player_valid( players[ i ], undefined, 1 ) && players[ i ] != self )
{
for ( j = 0; j < spawn_points.size; j++ )
{
if ( isDefined( spawn_points[ j ].script_noteworthy ) )
{
zone = level.zones[ spawn_points[ j ].script_noteworthy ];
for ( k = 0; k < zone.volumes.size; k++ )
{
if ( players[ i ] istouching( zone.volumes[ k ] ) )
{
closest_group = j;
spawn_location = get_valid_spawn_location( revivee, spawn_points, closest_group, return_struct );
if ( isDefined( spawn_location ) )
{
return spawn_location;
}
}
}
}
}
}
}
}
givecustomloadout( takeallweapons, alreadyspawned ) //checked matches cerberus output
{
self giveweapon( "knife_zm" );
self give_start_weapon( 1 );
}
precache_team_whos_who_characters() //checked matches cerberus output
{
precachemodel( "c_zom_player_engineer_dlc1_fb" );
precachemodel( "c_zom_player_farmgirl_dlc1_fb" );
precachemodel( "c_zom_player_oldman_dlc1_fb" );
precachemodel( "c_zom_player_reporter_dlc1_fb" );
}
initcharacterstartindex() //checked matches cerberus output
{
level.characterstartindex = randomint( 4 );
}
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, smeansofdeath ) //checked partially changed to match cerberus output changed at own discretion
{
level notify( "fake_death" );
self notify( "fake_death" );
stance = self getstance();
self.ignoreme = 1;
self enableinvulnerability();
self takeallweapons();
if ( !is_true( self.insta_killed ) || self maps/mp/zm_highrise_elevators::is_self_on_elevator() || isDefined( smeansofdeath ) && smeansofdeath == "MOD_FALLING" )
{
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 changed to match 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 changed at own discretion
{
register_lethal_grenade_for_level( "frag_grenade_zm" );
level.zombie_lethal_grenade_player_init = "frag_grenade_zm";
register_lethal_grenade_for_level( "sticky_grenade_zm" );
register_tactical_grenade_for_level( "cymbal_monkey_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( "bowie_knife_zm" );
register_melee_weapon_for_level( "tazer_knuckles_zm" );
level.zombie_melee_weapon_player_init = "knife_zm";
register_equipment_for_level( "equip_springpad_zm" );
level.zombie_equipment_player_init = undefined;
if ( is_true( level.slipgun_as_equipment ) )
{
register_equipment_for_level( "slipgun_zm" );
}
}
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 partially changed to match cerberus output changed at own discretion
{
add_zombie_weapon( "m1911_zm", "m1911_upgraded_zm", &"ZOMBIE_WEAPON_M1911", 50, "", "", undefined );
add_zombie_weapon( "python_zm", "python_upgraded_zm", &"ZOMBIE_WEAPON_PYTHON", 50, "wpck_python", "", undefined, 1 );
add_zombie_weapon( "judge_zm", "judge_upgraded_zm", &"ZOMBIE_WEAPON_JUDGE", 50, "wpck_judge", "", undefined, 1 );
add_zombie_weapon( "kard_zm", "kard_upgraded_zm", &"ZOMBIE_WEAPON_KARD", 50, "wpck_kap", "", undefined, 1 );
add_zombie_weapon( "fiveseven_zm", "fiveseven_upgraded_zm", &"ZOMBIE_WEAPON_FIVESEVEN", 50, "wpck_57", "", undefined, 1 );
add_zombie_weapon( "beretta93r_zm", "beretta93r_upgraded_zm", &"ZOMBIE_WEAPON_BERETTA93r", 1000, "", "", undefined );
add_zombie_weapon( "fivesevendw_zm", "fivesevendw_upgraded_zm", &"ZOMBIE_WEAPON_FIVESEVENDW", 50, "wpck_duel57", "", undefined, 1 );
add_zombie_weapon( "ak74u_zm", "ak74u_upgraded_zm", &"ZOMBIE_WEAPON_AK74U", 1200, "smg", "", undefined );
add_zombie_weapon( "mp5k_zm", "mp5k_upgraded_zm", &"ZOMBIE_WEAPON_MP5K", 1000, "smg", "", undefined );
add_zombie_weapon( "qcw05_zm", "qcw05_upgraded_zm", &"ZOMBIE_WEAPON_QCW05", 50, "wpck_chicom", "", undefined, 1 );
add_zombie_weapon( "pdw57_zm", "pdw57_upgraded_zm", &"ZOMBIE_WEAPON_PDW57", 1000, "smg", "", undefined );
add_zombie_weapon( "870mcs_zm", "870mcs_upgraded_zm", &"ZOMBIE_WEAPON_870MCS", 1500, "shotgun", "", undefined );
add_zombie_weapon( "rottweil72_zm", "rottweil72_upgraded_zm", &"ZOMBIE_WEAPON_ROTTWEIL72", 500, "shotgun", "", undefined );
add_zombie_weapon( "saiga12_zm", "saiga12_upgraded_zm", &"ZOMBIE_WEAPON_SAIGA12", 50, "wpck_saiga12", "", undefined, 1 );
add_zombie_weapon( "srm1216_zm", "srm1216_upgraded_zm", &"ZOMBIE_WEAPON_SRM1216", 50, "wpck_m1216", "", undefined, 1 );
add_zombie_weapon( "m14_zm", "m14_upgraded_zm", &"ZOMBIE_WEAPON_M14", 500, "rifle", "", undefined );
add_zombie_weapon( "saritch_zm", "saritch_upgraded_zm", &"ZOMBIE_WEAPON_SARITCH", 50, "wpck_sidr", "", undefined, 1 );
add_zombie_weapon( "m16_zm", "m16_gl_upgraded_zm", &"ZOMBIE_WEAPON_M16", 1200, "burstrifle", "", undefined );
add_zombie_weapon( "xm8_zm", "xm8_upgraded_zm", &"ZOMBIE_WEAPON_XM8", 50, "wpck_m8a1", "", undefined, 1 );
add_zombie_weapon( "type95_zm", "type95_upgraded_zm", &"ZOMBIE_WEAPON_TYPE95", 50, "wpck_type25", "", undefined, 1 );
add_zombie_weapon( "tar21_zm", "tar21_upgraded_zm", &"ZOMBIE_WEAPON_TAR21", 50, "wpck_x95l", "", undefined, 1 );
add_zombie_weapon( "galil_zm", "galil_upgraded_zm", &"ZOMBIE_WEAPON_GALIL", 50, "wpck_galil", "", undefined, 1 );
add_zombie_weapon( "fnfal_zm", "fnfal_upgraded_zm", &"ZOMBIE_WEAPON_FNFAL", 50, "wpck_fal", "", undefined, 1 );
add_zombie_weapon( "dsr50_zm", "dsr50_upgraded_zm", &"ZOMBIE_WEAPON_DR50", 50, "wpck_dsr50", "", undefined, 1 );
add_zombie_weapon( "barretm82_zm", "barretm82_upgraded_zm", &"ZOMBIE_WEAPON_BARRETM82", 50, "wpck_m82a1", "", undefined, 1 );
add_zombie_weapon( "svu_zm", "svu_upgraded_zm", &"ZOMBIE_WEAPON_SVU", 1000, "wpck_svuas", "", undefined );
add_zombie_weapon( "rpd_zm", "rpd_upgraded_zm", &"ZOMBIE_WEAPON_RPD", 50, "wpck_rpd", "", undefined, 1 );
add_zombie_weapon( "hamr_zm", "hamr_upgraded_zm", &"ZOMBIE_WEAPON_HAMR", 50, "wpck_hamr", "", undefined, 1 );
add_zombie_weapon( "frag_grenade_zm", undefined, &"ZOMBIE_WEAPON_FRAG_GRENADE", 250, "grenade", "", 250 );
add_zombie_weapon( "sticky_grenade_zm", undefined, &"ZOMBIE_WEAPON_STICKY_GRENADE", 250, "grenade", "", 250 );
add_zombie_weapon( "claymore_zm", undefined, &"ZOMBIE_WEAPON_CLAYMORE", 1000, "grenade", "", undefined );
add_zombie_weapon( "usrpg_zm", "usrpg_upgraded_zm", &"ZOMBIE_WEAPON_USRPG", 50, "wpck_rpg", "", undefined, 1 );
add_zombie_weapon( "m32_zm", "m32_upgraded_zm", &"ZOMBIE_WEAPON_M32", 50, "wpck_m32", "", undefined, 1 );
add_zombie_weapon( "an94_zm", "an94_upgraded_zm", &"ZOMBIE_WEAPON_AN94", 1200, "", "", undefined );
add_zombie_weapon( "cymbal_monkey_zm", undefined, &"ZOMBIE_WEAPON_SATCHEL_2000", 2000, "wpck_monkey", "", undefined, 1 );
add_zombie_weapon( "ray_gun_zm", "ray_gun_upgraded_zm", &"ZOMBIE_WEAPON_RAYGUN", 10000, "wpck_ray", "", undefined, 1 );
add_zombie_weapon( "knife_ballistic_zm", "knife_ballistic_upgraded_zm", &"ZOMBIE_WEAPON_KNIFE_BALLISTIC", 10, "wpck_knife", "", undefined, 1 );
add_zombie_weapon( "knife_ballistic_bowie_zm", "knife_ballistic_bowie_upgraded_zm", &"ZOMBIE_WEAPON_KNIFE_BALLISTIC", 10, "sickle", "", undefined, 1 );
add_zombie_weapon( "knife_ballistic_no_melee_zm", "knife_ballistic_no_melee_upgraded_zm", &"ZOMBIE_WEAPON_KNIFE_BALLISTIC", 10, "wpck_knife", "", undefined );
add_zombie_weapon( "tazer_knuckles_zm", undefined, &"ZOMBIE_WEAPON_TAZER_KNUCKLES", 100, "tazerknuckles", "", undefined );
add_zombie_weapon( "slipgun_zm", undefined, &"ZOMBIE_WEAPON_SLIPGUN", 10, "slip", "", undefined );
if ( is_true( level.raygun2_included ) )
{
add_zombie_weapon( "raygun_mark2_zm", "raygun_mark2_upgraded_zm", &"ZOMBIE_WEAPON_RAYGUN_MARK2", 10000, "raygun_mark2", "", undefined );
}
}
include_weapons() //checked partially changed to match cerberus output changed at own discretion
{
include_weapon( "knife_zm", 0 );
include_weapon( "frag_grenade_zm", 0 );
include_weapon( "claymore_zm", 0 );
include_weapon( "sticky_grenade_zm", 0 );
include_weapon( "m1911_zm", 0 );
include_weapon( "m1911_upgraded_zm", 0 );
include_weapon( "python_zm" );
include_weapon( "python_upgraded_zm", 0 );
include_weapon( "judge_zm" );
include_weapon( "judge_upgraded_zm", 0 );
include_weapon( "kard_zm" );
include_weapon( "kard_upgraded_zm", 0 );
include_weapon( "fiveseven_zm" );
include_weapon( "fiveseven_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( "ak74u_zm", 0 );
include_weapon( "ak74u_upgraded_zm", 0 );
include_weapon( "mp5k_zm", 0 );
include_weapon( "mp5k_upgraded_zm", 0 );
include_weapon( "qcw05_zm" );
include_weapon( "qcw05_upgraded_zm", 0 );
include_weapon( "870mcs_zm", 0 );
include_weapon( "870mcs_upgraded_zm", 0 );
include_weapon( "rottweil72_zm", 0 );
include_weapon( "rottweil72_upgraded_zm", 0 );
include_weapon( "saiga12_zm" );
include_weapon( "saiga12_upgraded_zm", 0 );
include_weapon( "srm1216_zm" );
include_weapon( "srm1216_upgraded_zm", 0 );
include_weapon( "m14_zm", 0 );
include_weapon( "m14_upgraded_zm", 0 );
include_weapon( "saritch_zm" );
include_weapon( "saritch_upgraded_zm", 0 );
include_weapon( "m16_zm", 0 );
include_weapon( "m16_gl_upgraded_zm", 0 );
include_weapon( "xm8_zm" );
include_weapon( "xm8_upgraded_zm", 0 );
include_weapon( "type95_zm" );
include_weapon( "type95_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( "svu_zm", 0 );
include_weapon( "svu_upgraded_zm", 0 );
include_weapon( "rpd_zm" );
include_weapon( "rpd_upgraded_zm", 0 );
include_weapon( "hamr_zm" );
include_weapon( "hamr_upgraded_zm", 0 );
include_weapon( "pdw57_zm", 0 );
include_weapon( "pdw57_upgraded_zm", 0 );
include_weapon( "usrpg_zm" );
include_weapon( "usrpg_upgraded_zm", 0 );
include_weapon( "m32_zm" );
include_weapon( "m32_upgraded_zm", 0 );
include_weapon( "an94_zm", 0 );
include_weapon( "cymbal_monkey_zm" );
include_weapon( "ray_gun_zm" );
include_weapon( "ray_gun_upgraded_zm", 0 );
include_weapon( "slipgun_zm", 0 );
include_weapon( "slipgun_upgraded_zm", 0 );
include_weapon( "tazer_knuckles_zm", 0 );
include_weapon( "knife_ballistic_no_melee_zm", 0 );
include_weapon( "knife_ballistic_no_melee_upgraded_zm", 0 );
include_weapon( "knife_ballistic_zm" );
include_weapon( "knife_ballistic_upgraded_zm", 0 );
include_weapon( "knife_ballistic_bowie_zm", 0 );
include_weapon( "knife_ballistic_bowie_upgraded_zm", 0 );
level._uses_retrievable_ballisitic_knives = 1;
add_limited_weapon( "m1911_zm", 0 );
add_limited_weapon( "knife_ballistic_zm", 1 );
add_limited_weapon( "slipgun_zm", 1 );
add_limited_weapon( "slipgun_upgraded_zm", 1 );
add_limited_weapon( "ray_gun_zm", 4 );
add_limited_weapon( "ray_gun_upgraded_zm", 4 );
add_limited_weapon( "knife_ballistic_upgraded_zm", 0 );
add_limited_weapon( "knife_ballistic_no_melee_zm", 0 );
add_limited_weapon( "knife_ballistic_no_melee_upgraded_zm", 0 );
add_limited_weapon( "knife_ballistic_bowie_zm", 0 );
add_limited_weapon( "knife_ballistic_bowie_upgraded_zm", 0 );
add_weapon_locker_mapping( "lsat_zm", "hamr_zm" );
add_weapon_locker_mapping( "lsat_upgraded_zm", "hamr_upgraded_zm" );
add_weapon_locker_mapping( "rnma_zm", "python_zm" );
add_weapon_locker_mapping( "rnma_upgraded_zm", "python_upgraded_zm" );
if ( is_true( 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 );
}
}
include_powerups() //checked matches cerberus output
{
include_powerup( "nuke" );
include_powerup( "insta_kill" );
include_powerup( "double_points" );
include_powerup( "full_ammo" );
include_powerup( "carpenter" );
include_powerup( "insta_kill_ug" );
include_powerup( "free_perk" );
}
include_equipment_for_level() //checked changed at own discretion
{
include_equipment( "equip_springpad_zm" );
if ( is_true( level.slipgun_as_equipment ) )
{
include_equipment( "slipgun_zm" );
}
level.equipment_planted = ::equipment_planted;
level.equipment_safe_to_drop = ::equipment_safe_to_drop;
level.check_force_deploy_z = ::use_safe_spawn_on_elevator;
level.safe_place_for_buildable_piece = ::safe_place_for_buildable_piece;
}
setup_rex_starts() //checked matches cerberus output
{
add_gametype( "zclassic", ::dummy, "zclassic", ::dummy );
add_gameloc( "rooftop", ::dummy, "rooftop", ::dummy );
}
dummy() //checked matches cerberus output
{
}
zombie_highrise_devgui( cmd ) //dev call didn't check
{
/*
/#
cmd_strings = strtok( cmd, " " );
switch( cmd_strings[ 0 ] )
{
case "leaper_round_skip":
if ( isDefined( level.next_leaper_round ) )
{
maps/mp/zombies/_zm_devgui::zombie_devgui_goto_round( level.next_leaper_round );
}
break;
case "pick_up_keys":
thread pick_up_keys();
break;
default:
}
#/
}
*/
}
pick_up_keys() //dev call didn't check
{
/*
/#
players = get_players();
for ( i = 0; i < players.size;)
{
if ( isDefined( player.current_buildable_piece ) && player.current_buildable_piece.buildablename == "keys_zm" )
{
}
else
{
candidate_list = [];
foreach ( zone in level.zones )
{
if ( isDefined( zone.unitrigger_stubs ) )
{
candidate_list = arraycombine( candidate_list, zone.unitrigger_stubs, 1, 0 );
}
}
foreach ( stub in candidate_list )
{
if ( isDefined( stub.piece ) && stub.piece.buildablename == "keys_zm" )
{
players[ i ] thread maps/mp/zombies/_zm_buildables::player_take_piece( stub.piece );
break;
}
}
}
#/
}
*/
}
highrise_zone_init() //checked matches cerberus output
{
flag_init( "always_on" );
flag_set( "always_on" );
add_adjacent_zone( "zone_green_start", "zone_green_level1", "green_start_door" );
add_adjacent_zone( "zone_green_start", "zone_green_escape_pod", "always_on" );
add_adjacent_zone( "zone_green_escape_pod", "zone_green_escape_pod_ground", "always_on", 1 );
add_adjacent_zone( "zone_blue_level4a", "zone_green_escape_pod_ground", "always_on", 1 );
add_adjacent_zone( "zone_blue_level5", "zone_green_escape_pod_ground", "always_on", 1 );
add_adjacent_zone( "zone_green_level1", "zone_green_level2a", "always_on" );
add_adjacent_zone( "zone_green_level1", "zone_green_level2b", "always_on" );
add_adjacent_zone( "zone_green_level2a", "zone_green_level2b", "green_level2_door2" );
add_adjacent_zone( "zone_green_level2a", "zone_green_level3b", "always_on" );
add_adjacent_zone( "zone_green_level2b", "zone_green_level3a", "always_on" );
add_adjacent_zone( "zone_green_level3a", "zone_green_level3d", "always_on" );
add_adjacent_zone( "zone_orange_level1", "zone_green_level3d", "always_on", 1 );
add_adjacent_zone( "zone_green_level3b", "zone_green_level3c", "green_level3_door2" );
add_adjacent_zone( "zone_orange_level1", "zone_orange_level2", "always_on" );
add_adjacent_zone( "zone_orange_elevator_shaft_bottom", "zone_orange_level3a", "always_on" );
add_adjacent_zone( "zone_orange_level3a", "zone_orange_level3b", "zone_orange_level3a_to_level3b" );
add_adjacent_zone( "zone_blue_level5", "zone_blue_level4b", "blocker_blue_level_4_to_5" );
add_adjacent_zone( "zone_blue_level4a", "zone_blue_level4b", "blue_level4_door2" );
add_adjacent_zone( "zone_blue_level4a", "zone_blue_level4c", "blue_level4_door1" );
add_adjacent_zone( "zone_blue_level2a", "zone_blue_level2b", "blue_level2_door1" );
add_adjacent_zone( "zone_blue_level2b", "zone_blue_level1a", "blue_level2_door2" );
add_adjacent_zone( "zone_blue_level1a", "zone_blue_level1b", "always_on" );
add_adjacent_zone( "zone_blue_level1a", "zone_blue_level1c", "always_on" );
add_adjacent_zone( "zone_blue_level2a", "zone_blue_level2c", "blocker_blue_level2a_to_level2c" );
add_adjacent_zone( "zone_blue_level1b", "zone_blue_level2d", "always_on" );
add_adjacent_zone( "zone_blue_level2d", "zone_blue_level2c", "blocker_blue_level1b_to_level2c" );
add_adjacent_zone( "zone_green_level3b", "zone_blue_level1c", "always_on", 1 );
level thread enable_zone_on_flag( "zone_blue_level4b", "power_on" );
init_elevator_shaft_zones();
}
init_elevator_shaft_zones() //checked matches cerberus output
{
a_zones = array( "zone_orange_elevator_shaft_middle_1", "zone_orange_elevator_shaft_middle_2", "zone_green_level1", "zone_green_level2a", "zone_green_level2b", "zone_green_level3a", "zone_green_level3b", "zone_green_level3c", "zone_blue_level1a", "zone_blue_level1b", "zone_blue_level2b", "zone_blue_level2c", "zone_blue_level4b", "zone_blue_level4c", "zone_blue_level5", "zone_orange_elevator_shaft_top", "zone_blue_level2a", "zone_orange_level3b" );
foreach ( zone in a_zones )
{
zone_init( zone );
enable_zone( zone );
}
}
enable_zone_on_flag( str_zone_name, str_flag_name ) //checked matches cerberus output
{
/*
/#
assert( flag_exists( str_flag_name ), "Tried to enable zone on flag, but flag " + str_flag_name + " hasn't been initialized" );
#/
/#
assert( isDefined( level.zones[ str_zone_name ] ), "There is no zone with name '" + str_zone_name + " in the map!" );
#/
*/
flag_wait( str_flag_name );
enable_zone( str_zone_name );
}
electric_switch() //checked changed to match cerberus output
{
trig = getent( "use_elec_switch", "targetname" );
master_switch = getent( "elec_switch", "targetname" );
master_switch notsolid();
trig sethintstring( &"ZOMBIE_ELECTRIC_SWITCH" );
trig setvisibletoall();
trig waittill( "trigger", user );
trig setinvisibletoall();
master_switch rotateroll( -90, 0.3 );
master_switch playsound( "zmb_switch_flip" );
master_switch playsound( "evt_poweron_front" );
if ( isDefined( user ) )
{
user thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "power", "power_on" );
}
level thread maps/mp/zombies/_zm_perks::perk_unpause_all_perks();
master_switch waittill( "rotatedone" );
fx_spot = spawnstruct();
fx_spot.origin = ( 2886, -132, 1296 );
fx_spot.angles = vectorScale( ( 0, 1, 0 ), 240 );
playfx( level._effect[ "switch_sparks" ], fx_spot.origin, anglesToForward( fx_spot.angles ) );
master_switch playsound( "zmb_turn_on" );
level notify( "electric_door" );
clientnotify( "power_on" );
flag_set( "power_on" );
stop_exploder( 10 );
exploder( 11 );
}
precache_personality_characters() //checked matches cerberus output
{
character/c_highrise_player_farmgirl::precache();
character/c_highrise_player_oldman::precache();
character/c_highrise_player_engineer::precache();
character/c_highrise_player_reporter::precache();
precachemodel( "c_zom_farmgirl_viewhands" );
precachemodel( "c_zom_oldman_viewhands" );
precachemodel( "c_zom_engineer_viewhands" );
precachemodel( "c_zom_reporter_viewhands" );
}
give_personality_characters() //checked matches cerberus output
{
if ( isDefined( level.hotjoin_player_setup ) && [[ level.hotjoin_player_setup ]]( "c_zom_farmgirl_viewhands" ) )
{
return;
}
self detachall();
if ( !isDefined( self.characterindex ) )
{
self.characterindex = assign_lowest_unused_character_index();
if ( self.characterindex == 1 && !isDefined( level.isstuhlingeringame ) )
{
level.isstuhlingeringame = 1;
}
}
self.favorite_wall_weapons_list = [];
self.talks_in_danger = 0;
/*
/#
if ( getDvar( #"40772CF1" ) != "" )
{
self.characterindex = getDvarInt( #"40772CF1" );
#/
}
*/
switch( self.characterindex )
{
case 2:
self character/c_highrise_player_farmgirl::main();
self setviewmodel( "c_zom_farmgirl_viewhands" );
level.vox maps/mp/zombies/_zm_audio::zmbvoxinitspeaker( "player", "vox_plr_", self );
self.favorite_wall_weapons_list[ self.favorite_wall_weapons_list.size ] = "rottweil72_zm";
self.favorite_wall_weapons_list[ self.favorite_wall_weapons_list.size ] = "870mcs_zm";
self set_player_is_female( 1 );
self.whos_who_shader = "c_zom_player_farmgirl_dlc1_fb";
break;
case 0:
self character/c_highrise_player_oldman::main();
self setviewmodel( "c_zom_oldman_viewhands" );
level.vox maps/mp/zombies/_zm_audio::zmbvoxinitspeaker( "player", "vox_plr_", self );
self.favorite_wall_weapons_list[ self.favorite_wall_weapons_list.size ] = "frag_grenade_zm";
self.favorite_wall_weapons_list[ self.favorite_wall_weapons_list.size ] = "claymore_zm";
self set_player_is_female( 0 );
self.whos_who_shader = "c_zom_player_oldman_dlc1_fb";
break;
case 3:
self character/c_highrise_player_engineer::main();
self setviewmodel( "c_zom_engineer_viewhands" );
level.vox maps/mp/zombies/_zm_audio::zmbvoxinitspeaker( "player", "vox_plr_", self );
self.favorite_wall_weapons_list[ self.favorite_wall_weapons_list.size ] = "m14_zm";
self.favorite_wall_weapons_list[ self.favorite_wall_weapons_list.size ] = "m16_zm";
self set_player_is_female( 0 );
self.whos_who_shader = "c_zom_player_engineer_dlc1_fb";
break;
case 1:
self character/c_highrise_player_reporter::main();
self setviewmodel( "c_zom_reporter_viewhands" );
level.vox maps/mp/zombies/_zm_audio::zmbvoxinitspeaker( "player", "vox_plr_", self );
self.talks_in_danger = 1;
level.rich_sq_player = self;
self.favorite_wall_weapons_list[ self.favorite_wall_weapons_list.size ] = "beretta93r_zm";
self set_player_is_female( 0 );
self.whos_who_shader = "c_zom_player_reporter_dlc1_fb";
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 partially changed to match cerberus output see info.md
{
charindexarray = [];
charindexarray[ 0 ] = 0;
charindexarray[ 1 ] = 1;
charindexarray[ 2 ] = 2;
charindexarray[ 3 ] = 3;
players = get_players();
if ( players.size == 1 )
{
charindexarray = array_randomize( charindexarray );
return charindexarray[ 0 ];
}
else if ( players.size == 2 )
{
foreach ( player in players )
{
if ( isDefined( player.characterindex ) )
{
if ( player.characterindex == 2 || player.characterindex == 0 )
{
if ( randomint( 100 ) > 50 )
{
return 1;
}
return 3;
}
else
{
if ( player.characterindex == 3 || player.characterindex == 1 )
{
if ( randomint( 100 ) > 50 )
{
return 0;
}
return 2;
}
}
}
}
charindexarray = array_randomize( charindexarray );
return charindexarray[ 0 ];
}
else
{
foreach ( player in players )
{
if ( isDefined( player.characterindex ) )
{
arrayremovevalue( charindexarray, player.characterindex, 0 );
}
}
if ( charindexarray.size > 0 )
{
return charindexarray[ 0 ];
}
}
return 0;
}
zombie_init_done() //checked changed to match cerberus output
{
self.allowpain = 0;
self.zombie_path_bad = 0;
self thread maps/mp/zm_highrise_distance_tracking::escaped_zombies_cleanup_init();
self thread elevator_traverse_watcher();
if ( self.classname == "actor_zm_highrise_basic_03" )
{
health_bonus = int( self.maxhealth * 0.05 );
self.maxhealth += health_bonus;
if ( self.headmodel == "c_zom_zombie_chinese_head3_helmet" )
{
self.maxhealth += health_bonus;
}
self.health = self.maxhealth;
}
self setphysparams( 15, 0, 48 );
}
setup_personality_character_exerts() //checked matches cerberus output
{
level.exert_sounds[ 1 ][ "burp" ][ 0 ] = "vox_plr_0_exert_burp_0";
level.exert_sounds[ 1 ][ "burp" ][ 1 ] = "vox_plr_0_exert_burp_1";
level.exert_sounds[ 1 ][ "burp" ][ 2 ] = "vox_plr_0_exert_burp_2";
level.exert_sounds[ 1 ][ "burp" ][ 3 ] = "vox_plr_0_exert_burp_3";
level.exert_sounds[ 1 ][ "burp" ][ 4 ] = "vox_plr_0_exert_burp_4";
level.exert_sounds[ 1 ][ "burp" ][ 5 ] = "vox_plr_0_exert_burp_5";
level.exert_sounds[ 1 ][ "burp" ][ 6 ] = "vox_plr_0_exert_burp_6";
level.exert_sounds[ 2 ][ "burp" ][ 0 ] = "vox_plr_1_exert_burp_0";
level.exert_sounds[ 2 ][ "burp" ][ 1 ] = "vox_plr_1_exert_burp_1";
level.exert_sounds[ 2 ][ "burp" ][ 2 ] = "vox_plr_1_exert_burp_2";
level.exert_sounds[ 2 ][ "burp" ][ 3 ] = "vox_plr_1_exert_burp_3";
level.exert_sounds[ 3 ][ "burp" ][ 0 ] = "vox_plr_2_exert_burp_0";
level.exert_sounds[ 3 ][ "burp" ][ 1 ] = "vox_plr_2_exert_burp_1";
level.exert_sounds[ 3 ][ "burp" ][ 2 ] = "vox_plr_2_exert_burp_2";
level.exert_sounds[ 3 ][ "burp" ][ 3 ] = "vox_plr_2_exert_burp_3";
level.exert_sounds[ 3 ][ "burp" ][ 4 ] = "vox_plr_2_exert_burp_4";
level.exert_sounds[ 3 ][ "burp" ][ 5 ] = "vox_plr_2_exert_burp_5";
level.exert_sounds[ 3 ][ "burp" ][ 6 ] = "vox_plr_2_exert_burp_6";
level.exert_sounds[ 4 ][ "burp" ][ 0 ] = "vox_plr_3_exert_burp_0";
level.exert_sounds[ 4 ][ "burp" ][ 1 ] = "vox_plr_3_exert_burp_1";
level.exert_sounds[ 4 ][ "burp" ][ 2 ] = "vox_plr_3_exert_burp_2";
level.exert_sounds[ 4 ][ "burp" ][ 3 ] = "vox_plr_3_exert_burp_3";
level.exert_sounds[ 4 ][ "burp" ][ 4 ] = "vox_plr_3_exert_burp_4";
level.exert_sounds[ 4 ][ "burp" ][ 5 ] = "vox_plr_3_exert_burp_5";
level.exert_sounds[ 4 ][ "burp" ][ 6 ] = "vox_plr_3_exert_burp_6";
level.exert_sounds[ 1 ][ "hitmed" ][ 0 ] = "vox_plr_0_exert_pain_medium_0";
level.exert_sounds[ 1 ][ "hitmed" ][ 1 ] = "vox_plr_0_exert_pain_medium_1";
level.exert_sounds[ 1 ][ "hitmed" ][ 2 ] = "vox_plr_0_exert_pain_medium_2";
level.exert_sounds[ 1 ][ "hitmed" ][ 3 ] = "vox_plr_0_exert_pain_medium_3";
level.exert_sounds[ 2 ][ "hitmed" ][ 0 ] = "vox_plr_1_exert_pain_medium_0";
level.exert_sounds[ 2 ][ "hitmed" ][ 1 ] = "vox_plr_1_exert_pain_medium_1";
level.exert_sounds[ 2 ][ "hitmed" ][ 2 ] = "vox_plr_1_exert_pain_medium_2";
level.exert_sounds[ 2 ][ "hitmed" ][ 3 ] = "vox_plr_1_exert_pain_medium_3";
level.exert_sounds[ 3 ][ "hitmed" ][ 0 ] = "vox_plr_2_exert_pain_medium_0";
level.exert_sounds[ 3 ][ "hitmed" ][ 1 ] = "vox_plr_2_exert_pain_medium_1";
level.exert_sounds[ 3 ][ "hitmed" ][ 2 ] = "vox_plr_2_exert_pain_medium_2";
level.exert_sounds[ 3 ][ "hitmed" ][ 3 ] = "vox_plr_2_exert_pain_medium_3";
level.exert_sounds[ 4 ][ "hitmed" ][ 0 ] = "vox_plr_3_exert_pain_medium_0";
level.exert_sounds[ 4 ][ "hitmed" ][ 1 ] = "vox_plr_3_exert_pain_medium_1";
level.exert_sounds[ 4 ][ "hitmed" ][ 2 ] = "vox_plr_3_exert_pain_medium_2";
level.exert_sounds[ 4 ][ "hitmed" ][ 3 ] = "vox_plr_3_exert_pain_medium_3";
level.exert_sounds[ 1 ][ "hitlrg" ][ 0 ] = "vox_plr_0_exert_pain_high_0";
level.exert_sounds[ 1 ][ "hitlrg" ][ 1 ] = "vox_plr_0_exert_pain_high_1";
level.exert_sounds[ 1 ][ "hitlrg" ][ 2 ] = "vox_plr_0_exert_pain_high_2";
level.exert_sounds[ 1 ][ "hitlrg" ][ 3 ] = "vox_plr_0_exert_pain_high_3";
level.exert_sounds[ 2 ][ "hitlrg" ][ 0 ] = "vox_plr_1_exert_pain_high_0";
level.exert_sounds[ 2 ][ "hitlrg" ][ 1 ] = "vox_plr_1_exert_pain_high_1";
level.exert_sounds[ 2 ][ "hitlrg" ][ 2 ] = "vox_plr_1_exert_pain_high_2";
level.exert_sounds[ 2 ][ "hitlrg" ][ 3 ] = "vox_plr_1_exert_pain_high_3";
level.exert_sounds[ 3 ][ "hitlrg" ][ 0 ] = "vox_plr_2_exert_pain_high_0";
level.exert_sounds[ 3 ][ "hitlrg" ][ 1 ] = "vox_plr_2_exert_pain_high_1";
level.exert_sounds[ 3 ][ "hitlrg" ][ 2 ] = "vox_plr_2_exert_pain_high_2";
level.exert_sounds[ 3 ][ "hitlrg" ][ 3 ] = "vox_plr_2_exert_pain_high_3";
level.exert_sounds[ 4 ][ "hitlrg" ][ 0 ] = "vox_plr_3_exert_pain_high_0";
level.exert_sounds[ 4 ][ "hitlrg" ][ 1 ] = "vox_plr_3_exert_pain_high_1";
level.exert_sounds[ 4 ][ "hitlrg" ][ 2 ] = "vox_plr_3_exert_pain_high_2";
level.exert_sounds[ 4 ][ "hitlrg" ][ 3 ] = "vox_plr_3_exert_pain_high_3";
}
melee_anim_state() //checked matches cerberus output
{
if ( flag( "leaper_round" ) )
{
mas = "zm_run_melee";
melee_dist = distancesquared( self.origin, self.enemy.origin );
kick_dist = 1024;
if ( melee_dist < kick_dist )
{
mas = "zm_jump_melee";
}
self.melee_attack = 1;
return mas;
}
return undefined;
}
toggle_leaper_collision() //checked changed to match cerberus output
{
level endon( "end_game" );
a_leaper_collision = getentarray( "leaper_clip", "targetname" );
while ( 1 )
{
flag_waitopen( "leaper_round" );
foreach ( clip_brush in a_leaper_collision )
{
clip_brush notsolid();
clip_brush connectpaths();
}
flag_wait( "leaper_round" );
foreach ( clip_brush in a_leaper_collision )
{
clip_brush solid();
clip_brush connectpaths();
}
}
}
toggle_leaper_traversals() //checked changed to match cerberus output
{
level endon( "end_game" );
a_leaper_traversals = getentarray( "leaper_traversal_clip", "targetname" );
while ( 1 )
{
flag_waitopen( "leaper_round" );
foreach ( clip_brush in a_leaper_traversals )
{
clip_brush solid();
clip_brush disconnectpaths();
clip_brush notsolid();
}
flag_wait( "leaper_round" );
foreach ( clip_brush in a_leaper_traversals )
{
clip_brush notsolid();
clip_brush connectpaths();
}
}
}
toggle_zombie_traversals() //checked changed to match cerberus output
{
level endon( "end_game" );
a_zombie_only_traversals = getentarray( "zombie_traversal_clip", "targetname" );
while ( 1 )
{
flag_waitopen( "leaper_round" );
foreach ( clip_brush in a_zombie_only_traversals )
{
clip_brush notsolid();
clip_brush connectpaths();
}
flag_wait( "leaper_round" );
foreach ( clip_brush in a_zombie_only_traversals )
{
clip_brush solid();
clip_brush disconnectpaths();
clip_brush notsolid();
}
}
}
is_touching_instakill() //checked changed to match cerberus output
{
foreach ( trigger in level.insta_kill_triggers )
{
if ( self istouching( trigger ) )
{
return 1;
}
}
return 0;
}
player_force_from_prone() //checked matches cerberus output
{
level endon( "intermission" );
level endon( "end_game" );
while ( 1 )
{
self waittill( "trigger", who );
if ( who getstance() == "prone" && isplayer( who ) )
{
who setstance( "crouch" );
}
wait 0.1;
}
}
equipment_safe_to_drop( weapon ) //checked changed at own discretion
{
if ( isDefined( self.origin ) && abs( self.origin[ 2 ] - weapon.origin[ 2 ] ) > 120 )
{
return 0;
}
if ( !isDefined( weapon.canmove ) )
{
weapon.canmove = weapon maps/mp/zm_highrise_elevators::object_is_on_elevator();
}
if ( is_true( weapon.canmove ) )
{
return 1;
}
if ( weapon is_touching_instakill() )
{
return 0;
}
return 1;
}
use_safe_spawn_on_elevator( weapon, origin, angles ) //checked changed at own discretion
{
if ( !isDefined( weapon.canmove ) )
{
weapon.canmove = weapon maps/mp/zm_highrise_elevators::object_is_on_elevator();
}
if ( is_true( weapon.canmove ) && is_true( weapon.elevator_parent.is_moving ) )
{
return 1;
}
return 0;
}
equipment_planted( weapon, equipname, groundfrom ) //checked changed at own discretion
{
weaponelevator = groundfrom maps/mp/zm_highrise_elevators::object_is_on_elevator();
if ( !weaponelevator && weapon is_touching_instakill() )
{
self maps/mp/zombies/_zm_equipment::equipment_take( equipname );
wait 0.05;
self notify( equipname + "_taken" );
return;
}
if ( weaponelevator && !is_true( weapon.canmove ) )
{
weapon.canmove = 1;
maps/mp/zombies/_zm_unitrigger::reregister_unitrigger_as_dynamic( weapon.stub );
}
if ( isDefined( self ) && weaponelevator )
{
if ( isDefined( weapon ) )
{
parent = groundfrom.elevator_parent;
weapon linkto( parent );
weapon setmovingplatformenabled( 1 );
if ( isDefined( weapon.stub ) )
{
weapon.stub.link_parent = parent;
weapon.stub.origin_parent = weapon;
}
weapon.equipment_can_move = 1;
weapon.isonbus = 1;
weapon.move_parent = parent;
}
}
}
safe_place_for_buildable_piece( piece ) //checked matches cerberus output
{
if ( self is_jumping() )
{
return 0;
}
return 1;
}
zm_highrise_pandora_fx_func() //checked changed at own discretion
{
self endon( "death" );
self.pandora_light = spawn( "script_model", self.zbarrier.origin );
self.pandora_light.angles = self.zbarrier.angles + vectorScale( ( -1, 0, -1 ), 90 );
self.pandora_light setmodel( "tag_origin" );
if ( !is_true( level._box_initialized ) )
{
flag_wait( "start_zombie_round_logic" );
level._box_initialized = 1;
}
wait 1;
if ( isDefined( self ) && isDefined( self.pandora_light ) )
{
n_pandora_fx = level._effect[ "lght_marker" ];
if ( is_magic_box_in_inverted_building() )
{
n_pandora_fx = level._effect[ "pandora_box_inverted" ];
}
playfxontag( n_pandora_fx, self.pandora_light, "tag_origin" );
}
}
is_magic_box_in_inverted_building() //checked changed to match cerberus output
{
b_is_in_inverted_building = 0;
a_boxes_in_inverted_building = array( "start_chest" );
str_location = level.chests[ level.chest_index ].script_noteworthy;
/*
/#
assert( isDefined( str_location ), "is_magic_box_in_inverted_building() can't find magic box location" );
#/
*/
for ( i = 0; i < a_boxes_in_inverted_building.size; i++ )
{
if ( a_boxes_in_inverted_building[ i ] == str_location )
{
b_is_in_inverted_building = 1;
}
}
return b_is_in_inverted_building;
}
init_highrise_stats() //checked matches cerberus output
{
self maps/mp/zm_highrise_sq::init_player_sidequest_stats();
self maps/mp/zm_highrise_achievement::init_player_achievement_stats();
}
init_level_specific_wall_buy_fx() //checked matches cerberus output
{
level._effect[ "an94_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_an94" );
level._effect[ "pdw57_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_pdw57" );
level._effect[ "svu_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_svuas" );
}
init_level_specific_audio() //checked matches cerberus output
{
init_highrise_player_dialogue();
add_highrise_response_chance();
level thread survivor_vox();
}
add_highrise_response_chance() //checked matches cerberus output
{
add_vox_response_chance( "crawl_spawn", 10 );
add_vox_response_chance( "reboard", 5 );
add_vox_response_chance( "slipgun_kill", 10 );
add_vox_response_chance( "leaper_round", 100 );
add_vox_response_chance( "achievement", 100 );
add_vox_response_chance( "power_on", 100 );
add_vox_response_chance( "power_off", 100 );
add_vox_response_chance( "upgrade", 100 );
add_vox_response_chance( "build_pck_bspringpad_zm", 45 );
add_vox_response_chance( "build_pck_bslipgun_zm", 45 );
add_vox_response_chance( "build_pck_wspringpad_zm", 45 );
add_vox_response_chance( "build_pck_wslipgun", 45 );
add_vox_response_chance( "build_plc_springpad_zm", 45 );
add_vox_response_chance( "build_plc_slipgun_zm", 45 );
add_vox_response_chance( "build_pickup", 45 );
add_vox_response_chance( "build_swap", 45 );
add_vox_response_chance( "build_add", 45 );
add_vox_response_chance( "build_final", 45 );
}
init_highrise_player_dialogue() //checked matches cerberus output
{
level.vox zmbvoxadd( "player", "general", "revive_down", "bus_down", undefined );
level.vox zmbvoxadd( "player", "general", "revive_up", "heal_revived", undefined );
level.vox zmbvoxadd( "player", "general", "achievement", "earn_acheivement", undefined );
level.vox zmbvoxadd( "player", "general", "no_money_weapon", "nomoney_weapon", undefined );
level.vox zmbvoxadd( "player", "general", "no_money_box", "nomoney_box", undefined );
level.vox zmbvoxadd( "player", "general", "exert_sigh", "exert_sigh", undefined );
level.vox zmbvoxadd( "player", "general", "exert_laugh", "exert_laugh", undefined );
level.vox zmbvoxadd( "player", "general", "pain_high", "pain_high", undefined );
level.vox zmbvoxadd( "player", "kill", "slipgun_kill", "kill_sliquifier", undefined );
level.vox zmbvoxadd( "player", "general", "leaper_round", "leaper_reveal", undefined );
level.vox zmbvoxadd( "player", "general", "leaper_seen", "leaper_see", undefined );
level.vox zmbvoxadd( "player", "general", "leaper_killed", "leaper_kill", undefined );
level.vox zmbvoxadd( "player", "general", "leaper_attack", "leaper_attack", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_bspringpad_zm", "build_pck_bsteam", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_bslipgun_zm", "build_pck_bsliquifier", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_wspringpad_zm", "build_pck_wsteam", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_wslipgun_zm", "build_pck_wsliquifier", undefined );
level.vox zmbvoxadd( "player", "general", "build_plc_springpad_zm", "build_plc_steam", undefined );
level.vox zmbvoxadd( "player", "general", "build_plc_slipgun_zm", "build_plc_sliquifier", undefined );
level.vox zmbvoxadd( "player", "general", "build_pickup", "build_pickup", undefined );
level.vox zmbvoxadd( "player", "general", "build_swap", "build_swap", undefined );
level.vox zmbvoxadd( "player", "general", "build_add", "build_add", undefined );
level.vox zmbvoxadd( "player", "general", "build_final", "build_final", undefined );
level.vox zmbvoxadd( "player", "general", "intro", "power_off", undefined );
level.vox zmbvoxadd( "player", "power", "power_on", "power_on", undefined );
level.vox zmbvoxadd( "player", "general", "reboard", "rebuild_boards", undefined );
level.vox zmbvoxadd( "player", "general", "upgrade", "find_secret", undefined );
level.vox zmbvoxadd( "player", "general", "pap_wait", "pap_wait", undefined );
level.vox zmbvoxadd( "player", "general", "pap_wait2", "pap_wait2", undefined );
level.vox zmbvoxadd( "player", "general", "pap_arm", "pap_arm", undefined );
level.vox zmbvoxadd( "player", "general", "pap_arm2", "pap_arm2", undefined );
level.vox zmbvoxadd( "player", "general", "pap_hint", "pap_hint", undefined );
}
highrise_audio_custom_response_line( player, index, category, type ) //checked matches cerberus output
{
russman = 0;
samuel = 1;
misty = 2;
marlton = 3;
switch( player.characterindex )
{
case 0:
level maps/mp/zombies/_zm_audio::setup_hero_rival( player, samuel, marlton, category, type );
break;
case 1:
level maps/mp/zombies/_zm_audio::setup_hero_rival( player, russman, misty, category, type );
break;
case 2:
level maps/mp/zombies/_zm_audio::setup_hero_rival( player, marlton, samuel, category, type );
break;
case 3:
level maps/mp/zombies/_zm_audio::setup_hero_rival( player, misty, russman, category, type );
break;
}
return;
}
survivor_vox() //checked changed to match cerberus output
{
trigger = spawn( "trigger_radius_use", ( 2398.5, -366, 1332.5 ), 0, 40, 72 );
trigger setcursorhint( "HINT_NOICON" );
trigger sethintstring( "" );
trigger triggerignoreteam();
level waittill( "power_on" );
initiated = 0;
while ( !initiated )
{
trigger waittill( "trigger", player );
playsoundatposition( "zmb_zombie_arc", trigger.origin );
start_time = getTime();
end_time = start_time + 5000;
while ( player usebuttonpressed() && player istouching( trigger ) && is_player_valid( player ) )
{
if ( getTime() > end_time )
{
initiated = 1;
}
wait 0.05;
}
}
sur_num = 1;
index = 0;
count = 0;
playsoundatposition( "zmb_buildable_piece_add", trigger.origin );
while ( 1 )
{
trigger waittill( "trigger", player );
if ( is_player_valid( player ) )
{
if ( sur_num == 1 )
{
count = 7;
}
else if ( sur_num == 2 )
{
count = 5;
}
else if ( sur_num == 3 )
{
count = 6;
}
else if ( sur_num == 4 )
{
count = 4;
}
else
{
if ( sur_num == 5 )
{
count = 1;
}
}
for ( index = 0; index < count; index++ )
{
trigger playsoundwithnotify( "vox_sur" + sur_num + "_tv_distress_" + index, "vox_sur" + sur_num + "_tv_distress_" + index + "done" );
trigger waittill( "vox_sur" + sur_num + "_tv_distress_" + index + "done" );
trigger waittill( "trigger", player );
}
}
sur_num++;
if ( sur_num > 5 )
{
sur_num = 1;
}
wait 5;
}
}
buildable_build_custom_func( stub ) //checked changed to match cerberus output
{
buildable = stub.buildablezone;
counter = 0;
for ( i = 0; i < buildable.pieces.size; i++ )
{
if ( isDefined( buildable.pieces[ i ].built ) && buildable.pieces[ i ].built )
{
counter++;
}
}
if ( counter == ( buildable.pieces.size - 1 ) )
{
self thread do_player_general_vox( "general", "build_final", 45 );
}
}
elevator_traverse_watcher() //checked matches cerberus output
{
self endon( "death" );
while ( 1 )
{
if ( is_true( self.is_traversing ) )
{
self.elevator_parent = undefined;
if ( is_true( self maps/mp/zm_highrise_elevators::object_is_on_elevator() ) )
{
if ( isDefined( self.elevator_parent ) )
{
if ( is_true( self.elevator_parent.is_moving ) )
{
playfx( level._effect[ "zomb_gib" ], self.origin );
if ( !is_true( self.has_been_damaged_by_player ) )
{
level.zombie_total++;
}
self delete();
return;
}
}
}
}
wait 0.2;
}
}
highrise_special_weapon_magicbox_check(weapon)
{
if ( is_true( level.raygun2_included ) )
{
if ( weapon == "ray_gun_zm" )
{
if(self has_weapon_or_upgrade( "raygun_mark2_zm" ) || maps/mp/zombies/_zm_chugabud::is_weapon_available_in_chugabud_corpse( "raygun_mark2_zm", self ) )
{
return 0;
}
}
if ( weapon == "raygun_mark2_zm" )
{
if ( self has_weapon_or_upgrade( "ray_gun_zm" ) || maps/mp/zombies/_zm_chugabud::is_weapon_available_in_chugabud_corpse( "ray_gun_zm", self ) )
{
return 0;
}
if ( randomint( 100 ) >= 33 )
{
return 0;
}
}
}
return 1;
}