//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( players[ i ].current_buildable_piece ) && players[ i ].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; }