3519 lines
108 KiB
Plaintext

//checked includes changed to match cerberus output
#include maps/mp/zombies/_zm_tombstone;
#include maps/mp/zombies/_zm_sidequests;
#include maps/mp/zombies/_zm_stats;
#include maps/mp/zombies/_zm_audio_announcer;
#include maps/mp/zm_transit_distance_tracking;
#include maps/mp/zm_transit_sq;
#include maps/mp/zombies/_zm_buildables;
#include maps/mp/zm_transit_cling;
#include maps/mp/zombies/_zm_devgui;
#include maps/mp/zombies/_zm_power;
#include maps/mp/zombies/_zm_blockers;
#include maps/mp/zombies/_zm_equipment;
#include maps/mp/zombies/_zm_powerups;
#include maps/mp/zombies/_zm_audio;
#include character/c_transit_player_reporter;
#include character/c_transit_player_engineer;
#include character/c_transit_player_oldman;
#include character/c_transit_player_farmgirl;
#include maps/mp/zm_transit_openings;
#include maps/mp/animscripts/zm_utility;
#include maps/mp/zombies/_zm_spawner;
#include maps/mp/zombies/_zm_laststand;
#include maps/mp/zombies/_zm_zonemgr;
#include maps/mp/zm_transit_achievement;
#include maps/mp/_visionset_mgr;
#include maps/mp/zombies/_zm_weap_ballistic_knife;
#include maps/mp/zombies/_zm_weap_claymore;
#include maps/mp/zombies/_zm_weap_bowie;
#include maps/mp/zombies/_zm_weap_tazer_knuckles;
#include maps/mp/zombies/_zm_weap_cymbal_monkey;
#include maps/mp/zombies/_zm_weap_emp_bomb;
#include maps/mp/zombies/_zm_weap_jetgun;
#include maps/mp/zombies/_zm_weap_riotshield;
#include maps/mp/zombies/_zm_ai_basic;
#include maps/mp/zm_transit_power;
#include maps/mp/zm_transit_lava;
#include maps/mp/gametypes_zm/_spawning;
#include maps/mp/zm_transit_ai_screecher;
#include maps/mp/zombies/_load;
#include maps/mp/_sticky_grenade;
#include maps/mp/teams/_teamset_cdc;
#include maps/mp/animscripts/zm_death;
#include maps/mp/zombies/_zm;
#include maps/mp/zm_transit_fx;
#include maps/mp/zombies/_zm_equip_turbine;
#include maps/mp/zm_transit_automaton;
#include maps/mp/zm_transit_bus;
#include maps/mp/zm_transit_ffotd;
#include maps/mp/zombies/_zm_banking;
#include maps/mp/zm_transit_gamemodes;
#include maps/mp/zombies/_zm_weapon_locker;
#include maps/mp/zm_transit_utility;
#include maps/mp/zombies/_zm_game_module;
#include maps/mp/zombies/_zm_weapons;
#include maps/mp/zombies/_zm_utility;
#include maps/mp/zombies/_zm_unitrigger;
#include maps/mp/gametypes_zm/_zm_gametype;
#include maps/mp/_utility;
#include common_scripts/utility;
gamemode_callback_setup() //checked matches cerberus output
{
maps/mp/zm_transit_gamemodes::init();
}
encounter_init() //checked matches cerberus output
{
precacheshader( "sun_moon_zombie" );
level.precachecustomcharacters = ::precache_team_characters;
level.givecustomcharacters = ::give_team_characters;
}
zgrief_init() //checked matches cerberus output
{
encounter_init();
level thread maps/mp/zombies/_zm_banking::delete_bank_teller();
flag_wait( "start_zombie_round_logic" );
level.custom_intermission = ::transit_standard_intermission;
if ( isDefined( level.scr_zm_map_start_location ) && level.scr_zm_map_start_location == "transit" )
{
level thread lava_damage_depot();
}
}
survival_init() //checked matches cerberus output
{
level.force_team_characters = 1;
level.should_use_cia = 0;
if ( randomint( 100 ) > 50 )
{
level.should_use_cia = 1;
}
level.precachecustomcharacters = ::precache_team_characters;
level.givecustomcharacters = ::give_team_characters;
level.dog_spawn_func = ::dog_spawn_transit_logic;
level thread maps/mp/zombies/_zm_banking::delete_bank_teller();
flag_wait( "start_zombie_round_logic" );
level.custom_intermission = ::transit_standard_intermission;
if ( isDefined( level.scr_zm_map_start_location ) && level.scr_zm_map_start_location == "transit" )
{
level thread lava_damage_depot();
}
}
zclassic_init() //checked matches cerberus output
{
level.precachecustomcharacters = ::precache_personality_characters;
level.givecustomcharacters = ::give_personality_characters;
level.setupcustomcharacterexerts = ::setup_personality_character_exerts;
level.level_specific_init_powerups = ::add_transit_powerups;
level.powerup_intro_vox = ::powerup_intro_vox;
level.powerup_vo_available = ::powerup_vo_available;
level.buildable_build_custom_func = ::buildable_build_custom_func;
level.custom_update_retrieve_trigger = ::transit_bus_update_retrieve_trigger;
level.buildable_pickup_vo_override = ::transit_buildable_vo_override;
precachemodel( "p6_zm_window_dest_glass_small_broken" );
precachemodel( "p6_zm_window_dest_glass_big_broken" );
precachemodel( "p6_zm_keycard" );
flag_wait( "start_zombie_round_logic" );
level.custom_intermission = ::transit_intermission;
level.custom_trapped_zombies = ::kill_zombies_depot;
level thread lava_damage_depot();
level thread bank_teller_init();
level thread transit_breakable_glass_init();
level thread sndsetupmusiceasteregg();
level thread bank_pap_hint();
level thread power_pap_hint();
level thread sndtoiletflush();
}
zclassic_preinit() //checked matches cerberus output
{
zclassic_init();
}
zcleansed_preinit() //checked matches cerberus output
{
level._zcleansed_weapon_progression = array( "rpd_zm", "srm1216_zm", "judge_zm", "qcw05_zm", "kard_zm" );
survival_init();
}
zcontainment_preinit() //checked matches cerberus output
{
survival_init();
}
zdeadpool_preinit() //checked matches cerberus output
{
encounter_init();
}
zgrief_preinit() //checked matches cerberus output
{
registerclientfield( "toplayer", "meat_stink", 1, 1, "int" );
zgrief_init();
level thread delete_bus_pieces();
}
zmeat_preinit() //checked matches cerberus output
{
encounter_init();
}
znml_preinit() //checked matches cerberus output
{
survival_init();
}
zpitted_preinit() //checked matches cerberus output
{
encounter_init();
}
zrace_preinit() //checked matches cerberus output
{
encounter_init();
}
zstandard_preinit() //checked matches cerberus output
{
survival_init();
level thread delete_bus_pieces();
}
zturned_preinit() //checked matches cerberus output
{
encounter_init();
}
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
{
level thread maps/mp/zm_transit_ffotd::main_start();
level.hotjoin_player_setup = ::hotjoin_setup_player;
level.level_createfx_callback_thread = ::createfx_callback;
level.ignore_spawner_func = ::transit_ignore_spawner;
level.default_game_mode = "zclassic";
level.default_start_location = "transit";
level._get_random_encounter_func = maps/mp/zm_transit_utility::get_random_encounter_match;
setup_rex_starts();
maps/mp/zm_transit_bus::init_animtree();
maps/mp/zm_transit_bus::init_props_animtree();
maps/mp/zm_transit_automaton::init_animtree();
maps/mp/zombies/_zm_equip_turbine::init_animtree();
maps/mp/zm_transit_fx::main();
maps/mp/zombies/_zm::init_fx();
maps/mp/animscripts/zm_death::precache_gib_fx();
level.zombiemode = 1;
level._no_water_risers = 1;
level.riser_fx_on_client = 1;
if ( !isDefined( level.zombie_surfing_kills ) )
{
level.zombie_surfing_kills = 1;
level.zombie_surfing_kill_count = 6;
}
maps/mp/teams/_teamset_cdc::register();
maps/mp/_sticky_grenade::init();
level.level_specific_stats_init = ::init_transit_stats;
maps/mp/zombies/_load::main();
init_clientflags();
level thread transit_pathnode_spawning();
registerclientfield( "allplayers", "playerinfog", 1, 1, "int" );
level.set_player_in_fog = ::set_player_in_fog;
level.custom_breadcrumb_store_func = ::transit_breadcrumb_store_func;
register_screecher_lights();
if ( getDvar( "createfx" ) == "1" )
{
return;
}
maps/mp/teams/_teamset_cdc::level_init();
maps/mp/zm_transit_ai_screecher::init();
level.is_player_in_screecher_zone = ::is_player_in_screecher_zone;
level.revive_trigger_spawn_override_link = ::revive_trigger_spawn_override_link;
level.revive_trigger_should_ignore_sight_checks = ::revive_trigger_should_ignore_sight_checks;
level.allow_move_in_laststand = ::allow_move_in_laststand;
level.can_revive = ::can_revive;
level.melee_miss_func = ::melee_miss_func;
level.grenade_watcher = ::grenade_watcher;
level.ignore_find_flesh = ::ignore_find_flesh;
level.ignore_equipment = ::ignore_equipment;
level.should_attack_equipment = ::should_attack_equipment;
level.gib_on_damage = ::gib_on_damage;
level.melee_anim_state = ::melee_anim_state;
level.ignore_stop_func = ::ignore_stop_func;
level.can_melee = ::can_melee;
level.ignore_traverse = ::ignore_traverse;
level.exit_level_func = ::exit_level_func;
level.inert_substate_override = ::inert_substate_override;
level.attack_item = ::attack_item;
level.attack_item_stop = ::attack_item_stop;
level.check_valid_poi = ::check_valid_poi;
level.dog_melee_miss = ::dog_melee_miss;
precacheshellshock( "lava" );
precacheshellshock( "lava_small" );
precache_survival_barricade_assets();
include_game_modules();
maps/mp/gametypes_zm/_spawning::level_use_unified_spawning( 1 );
level.givecustomloadout = ::givecustomloadout;
level.giveextrazombies = ::giveextrazombies;
initcharacterstartindex();
if ( level.xenon )
{
level.giveextrazombies = ::giveextrazombies;
precacheextrazombies();
}
level.custom_player_fake_death = ::transit_player_fake_death;
level.custom_player_fake_death_cleanup = ::transit_player_fake_death_cleanup;
level.initial_round_wait_func = ::initial_round_wait_func;
level.zombie_speed_up = ::zombie_speed_up;
level.zombie_init_done = ::zombie_init_done;
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_marathon_perk = 1;
level.zombiemode_using_revive_perk = 1;
level.zombiemode_using_sleightofhand_perk = 1;
level.zombiemode_using_tombstone_perk = 1;
init_persistent_abilities();
level.register_offhand_weapons_for_level_defaults_override = ::offhand_weapon_overrride;
if ( is_classic() )
{
level.player_intersection_tracker_override = ::zombie_transit_player_intersection_tracker_override;
level.taser_trig_adjustment = ( 2, 7, 0 );
}
level.player_too_many_weapons_monitor_callback = ::zombie_transit_player_too_many_weapons_monitor_callback;
level._zmbvoxlevelspecific = ::zombie_transit_audio_alias_override;
level._zombie_custom_add_weapons = ::custom_add_weapons;
level._allow_melee_weapon_switching = 1;
level.disable_melee_wallbuy_icons = 1;
level.uses_gumps = 1;
setdvar( "aim_target_fixed_actor_size", 1 );
level.banking_update_enabled = 1;
level.raygun2_included = 1;
include_weapons();
include_powerups();
include_equipment_for_level();
include_powered_items();
level.powerup_bus_range = 500;
level.pay_turret_cost = 300;
level.auto_turret_cost = 500;
setup_dvars();
onplayerconnect_callback( ::setup_players );
level thread disable_triggers();
level thread maps/mp/zm_transit_lava::lava_damage_init();
level.zm_transit_burn_max_duration = 2;
level thread maps/mp/zm_transit_power::precache_models();
setup_zombie_init();
maps/mp/zombies/_zm::init();
maps/mp/zombies/_zm_ai_basic::init_inert_zombies();
maps/mp/zombies/_zm_weap_riotshield::init();
maps/mp/zombies/_zm_weap_jetgun::init();
level.special_weapon_magicbox_check = ::transit_special_weapon_magicbox_check;
maps/mp/zombies/_zm_weap_emp_bomb::init();
zm_transit_emp_init();
level.legacy_cymbal_monkey = 1;
maps/mp/zombies/_zm_weap_cymbal_monkey::init();
maps/mp/zombies/_zm_weap_tazer_knuckles::init();
maps/mp/zombies/_zm_weap_bowie::init();
maps/mp/zombies/_zm_weap_claymore::init();
maps/mp/zombies/_zm_weap_ballistic_knife::init();
if ( !isDefined( level.vsmgr_prio_overlay_zm_transit_burn ) )
{
level.vsmgr_prio_overlay_zm_transit_burn = 20;
}
maps/mp/_visionset_mgr::vsmgr_register_info( "overlay", "zm_transit_burn", 1, level.vsmgr_prio_overlay_zm_transit_burn, 15, 1, maps/mp/_visionset_mgr::vsmgr_duration_lerp_thread_per_player, 0 );
level maps/mp/zm_transit_achievement::init();
precacheitem( "death_throe_zm" );
if ( level.splitscreen && getDvarInt( "splitscreen_playerCount" ) > 2 )
{
level.optimise_for_splitscreen = 1;
}
else
{
level.optimise_for_splitscreen = 0;
}
if ( level.ps3 )
{
if ( is_true( level.optimise_for_splitscreen ) )
{
level.culldist = 1500;
}
else
{
level.culldist = 4500;
}
}
else if ( is_true( level.optimise_for_splitscreen ) )
{
level.culldist = 2500;
}
else
{
level.culldist = 5500;
}
setculldist( level.culldist );
level.zones = [];
level.zone_manager_init_func = ::transit_zone_init;
init_zones = [];
init_zones[ 0 ] = "zone_pri";
init_zones[ 1 ] = "zone_station_ext";
init_zones[ 2 ] = "zone_tow";
if ( is_classic() )
{
init_zones[ 3 ] = "zone_far";
init_zones[ 4 ] = "zone_pow";
init_zones[ 5 ] = "zone_trans_1";
init_zones[ 6 ] = "zone_trans_2";
init_zones[ 7 ] = "zone_trans_3";
init_zones[ 8 ] = "zone_trans_4";
init_zones[ 9 ] = "zone_trans_5";
init_zones[ 10 ] = "zone_trans_6";
init_zones[ 11 ] = "zone_trans_7";
init_zones[ 12 ] = "zone_trans_8";
init_zones[ 13 ] = "zone_trans_9";
init_zones[ 14 ] = "zone_trans_10";
init_zones[ 15 ] = "zone_trans_11";
init_zones[ 16 ] = "zone_amb_tunnel";
init_zones[ 17 ] = "zone_amb_forest";
init_zones[ 18 ] = "zone_amb_cornfield";
init_zones[ 19 ] = "zone_amb_power2town";
init_zones[ 20 ] = "zone_amb_bridge";
}
else
{
init_zones[ 3 ] = "zone_far_ext";
init_zones[ 4 ] = "zone_brn";
}
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;
}
setdvar( "zombiemode_path_minz_bias", 13 );
level thread maps/mp/zm_transit_ffotd::main_end();
flag_wait( "start_zombie_round_logic" );
level notify( "players_done_connecting" );
/*
/#
execdevgui( "devgui_zombie_transit" );
level.custom_devgui = ::zombie_transit_devgui;
#/
*/
level thread set_transit_wind();
if ( is_classic() )
{
level thread player_name_fade_control();
}
level._audio_custom_response_line = ::transit_audio_custom_response_line;
level.speed_change_round = 15;
level.speed_change_max = 5;
init_screecher_zones();
elec_door_triggers = getentarray("local_electric_door", "script_noteworthy");
foreach ( trigger in elec_door_triggers )
{
if ( isDefined( trigger.door_hold_trigger ) && trigger.door_hold_trigger == "zombie_door_hold_farm" )
{
if ( isDefined( trigger.doors ) )
{
for ( i = 0; i < trigger.doors.size; i++ )
{
if ( trigger.doors[ i ].origin == ( 8833, -5697, 135 ) )
{
trigger.doors[ i ].ignore_use_blocker_clip_for_pathing_check = 1;
}
}
}
}
}
}
init_persistent_abilities() //checked matches 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_transit;
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_transit() //checked matches 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 ] = "emp_grenade_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 ] = "ray_gun_zm";
level.pers_box_weapons[ level.pers_box_weapons.size ] = "rpd_zm";
}
}
setup_rex_starts() //checked matches cerberus output
{
add_gametype( "zclassic", ::dummy, "zclassic", ::dummy );
add_gametype( "zstandard", ::dummy, "zstandard", ::dummy );
add_gametype( "zgrief", ::dummy, "zgrief", ::dummy );
add_gameloc( "transit", ::dummy, "transit", ::dummy );
add_gameloc( "town", ::dummy, "town", ::dummy );
add_gameloc( "farm", ::dummy, "farm", ::dummy );
}
dummy() //checked matches cerberus output
{
}
init_clientflags() //checked matches cerberus output
{
level._clientflag_vehicle_bus_flashing_lights = 0;
level._clientflag_vehicle_bus_head_lights = 1;
level._clientflag_vehicle_bus_brake_lights = 2;
level._clientflag_vehicle_bus_turn_signal_left_lights = 3;
level._clientflag_vehicle_bus_turn_signal_right_lights = 4;
}
set_player_in_fog( onoff ) //checked matches cerberus output
{
if ( onoff )
{
self setclientfield( "playerinfog", 1 );
}
else
{
self setclientfield( "playerinfog", 0 );
}
}
transit_breadcrumb_store_func( store_crumb ) //checked matches cerberus output used is_true instead
{
if ( is_true( self.isonbus ) )
{
return 0;
}
return store_crumb;
}
transit_ignore_spawner( spawner ) //checked matches cerberus output
{
if ( spawner.classname == "actor_zm_zombie_transit_screecher" )
{
return 1;
}
return 0;
}
allow_move_in_laststand( player_down ) //checked matches cerberus output used is_true instead
{
if ( is_true( player_down.isonbus ) )
{
return 0;
}
return 1;
}
can_revive( player_down )
{
if ( isDefined( self.screecher ) )
{
return 0;
}
return 1;
}
melee_miss_func() //checked changed to match cerberus output
{
if ( isDefined( self.enemy ) )
{
if ( !isDefined( self.enemy.screecher ) || self.enemy getstance() == "prone" || self.enemy maps/mp/zombies/_zm_laststand::is_reviving_any() )
{
dist_sq = distancesquared( self.enemy.origin, self.origin );
melee_dist_sq = self.meleeattackdist * self.meleeattackdist;
if ( dist_sq < melee_dist_sq )
{
self.enemy dodamage( self.meleedamage, self.origin, self, self, "none", "MOD_MELEE" );
}
}
}
}
grenade_watcher( grenade, weapname ) //checked changed to match cerberus output
{
if ( weapname == "frag_grenade_zm" || weapname == "claymore_zm" || weapname == "sticky_grenade_zm" )
{
self thread maps/mp/zombies/_zm_ai_basic::grenade_watcher( grenade );
}
}
ignore_find_flesh() //checked matches cerberus output used is_true instead
{
if ( is_true( self.isonbus ) )
{
return 1;
}
return 0;
}
ignore_equipment( zombie ) //checked matches cerberus output used is_true instead
{
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;
}
return 0;
}
should_attack_equipment( dist ) //checked changed to match cerberus output
{
if ( !isDefined( level.door_triggers ) )
{
level.door_triggers = getentarray( "bus_door_trigger", "targetname" );
}
for ( i = 0; i < level.door_triggers.size; i++ )
{
if ( self istouching( level.door_triggers[ i ] ) )
{
if ( dist < 4096 )
{
return 1;
}
}
}
return 0;
}
gib_on_damage() //checked changed to match cerberus output used is_true instead
{
opening = self.opening;
if ( isDefined( opening ) )
{
if ( isDefined( self.a.gib_ref ) || self.a.gib_ref == "left_arm" || self.a.gib_ref == "right_arm" )
{
level maps/mp/zombies/_zm_spawner::zombie_death_points( self.origin, self.damagemod, self.a.gib_ref, self.attacker, self );
opening.zombie = undefined;
launchvector = ( 0, 0, -1 );
self thread maps/mp/zombies/_zm_spawner::zombie_ragdoll_then_explode( launchvector, self.attacker );
self notify( "killanimscript" );
return;
}
}
if ( is_true( self.is_inert ) )
{
if ( !is_true( self.has_legs ) )
{
self notify( "stop_zombie_inert_transition" );
self setanimstatefromasd( "zm_inert_crawl", maps/mp/zombies/_zm_ai_basic::get_inert_crawl_substate() );
}
}
}
melee_anim_state() //checked matches cerberus output
{
if ( self.zombie_move_speed == "bus_walk" )
{
return maps/mp/animscripts/zm_utility::append_missing_legs_suffix( "zm_walk_melee" );
}
return undefined;
}
ignore_stop_func() //checked matches cerberus output used is_true instead
{
if ( is_true( self.is_inert ) )
{
return 1;
}
if ( isDefined( self.opening ) )
{
return 1;
}
if ( isDefined( self.entering_bus ) )
{
return 1;
}
return 0;
}
can_melee() //checked matches cerberus output used is_true instead
{
if ( is_true( self.dont_die_on_me ) )
{
return 0;
}
if ( is_true( self.isonbus ) || is_true( self.isonbusroof ) )
{
if ( self.enemydistancesq > anim.meleerangesq )
{
return 0;
}
}
return 1;
}
ignore_traverse() //checked matches cerberus output used is_true instead
{
if ( is_true( self.is_inert ) )
{
if ( !is_true( self.in_place ) )
{
self setgoalpos( self.origin );
if ( randomint( 100 ) > 50 )
{
self setanimstatefromasd( "zm_inert", "inert1" );
}
else
{
self setanimstatefromasd( "zm_inert", "inert2" );
}
self.in_place = 1;
}
return 1;
}
return 0;
}
exit_level_func() //checked partially changed to match cerberus output see info.md No. 2
{
zombies = getaiarray( level.zombie_team );
foreach ( zombie in zombies )
{
if ( is_true( zombie.ignore_solo_last_stand ) )
{
}
else if ( isDefined( zombie.find_exit_point ) )
{
zombie thread [[ zombie.find_exit_point ]]();
}
else if ( is_true( zombie.isonbus ) )
{
zombie thread find_exit_bus();
}
else if ( zombie.ignoreme )
{
zombie thread maps/mp/zombies/_zm::default_delayed_exit();
}
else
{
zombie thread maps/mp/zombies/_zm::default_find_exit_point();
}
}
}
inert_substate_override( substate ) //checked matches cerberus output used is_true instead
{
in_bar = 0;
if ( flag( "OnTowDoorBar" ) )
{
if ( self maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_bar" ) )
{
in_bar = 1;
}
}
if ( is_true( self.isonbus ) || in_bar )
{
if ( randomint( 100 ) > 50 )
{
substate = "inert1";
}
else
{
substate = "inert2";
}
}
return substate;
}
attack_item() //checked matches cerberus output used is_true instead
{
if ( is_true( self.isonbus ) )
{
self linkto( level.the_bus );
}
}
attack_item_stop() //checked matches cerberus output used is_true instead
{
if ( is_true( self.isonbus ) )
{
self unlink();
}
}
check_valid_poi( valid ) //checked changed to match cerberus output
{
if ( self maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_bar" ) )
{
if ( !flag( "OnTowDoorBar" ) )
{
return 0;
}
}
else if ( self maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_town_barber" ) )
{
if ( !flag( "OnTowDoorBarber" ) )
{
return 0;
}
}
return valid;
}
dog_melee_miss() //checked matches cerberus output
{
if ( isDefined( self.enemy ) )
{
stance = self.enemy getstance();
if ( stance == "prone" || stance == "crouch" )
{
dist_sq = distancesquared( self.enemy.origin, self.origin );
if ( dist_sq < 10000 )
{
meleedamage = getDvarInt( "dog_MeleeDamage" );
self.enemy dodamage( meleedamage, self.origin, self, self, "none", "MOD_MELEE" );
}
}
}
}
find_exit_loc() //checked changed to match cerberus output
{
player = self.favoriteenemy;
dist_zombie = 0;
dist_player = 0;
dest = 0;
away = vectornormalize( self.origin - player.origin );
endpos = self.origin + vectorScale( away, 600 );
locs = array_randomize( level.enemy_dog_locations );
for ( i = 0; i < locs.size; i++ )
{
dist_zombie = distancesquared( locs[ i ].origin, endpos );
dist_player = distancesquared( locs[ i ].origin, player.origin );
if ( dist_zombie < dist_player )
{
dest = i;
break;
}
}
if ( isDefined( locs[ dest ] ) )
{
self.solo_revive_exit_pos = locs[ dest ].origin;
}
}
find_exit_bus() //checked matches cerberus output used is_true instead
{
self endon( "death" );
self.solo_revive_exit = 1;
self notify( "endOnBus" );
self thread maps/mp/zm_transit_openings::zombieexitbus();
self find_exit_loc();
off_the_bus = 0;
while ( flag( "wait_and_revive" ) )
{
if ( !off_the_bus && self.ai_state == "find_flesh" )
{
off_the_bus = 1;
self thread maps/mp/zombies/_zm::default_find_exit_point();
}
wait 0.1;
}
self.solo_revive_exit = 0;
if ( !is_true( self.exiting_window ) )
{
if ( is_true( self.isonbus ) )
{
self notify( "stop_zombieExitBus" );
self.walk_to_exit = 0;
self thread zombiemoveonbus();
}
}
}
post_first_init() //checked matches cerberus output
{
while ( !isDefined( anim.notfirsttime ) )
{
wait 0.5;
}
anim.meleerange = 36;
anim.meleerangesq = anim.meleerange * anim.meleerange;
}
set_transit_wind() //checked matches cerberus output
{
setdvar( "enable_global_wind", 1 );
setdvar( "wind_global_vector", "-120 -115 -120" );
setdvar( "wind_global_low_altitude", 0 );
setdvar( "wind_global_hi_altitude", 2000 );
setdvar( "wind_global_low_strength_percent", 0,5 );
}
revive_trigger_move_with_player() //checked matches cerberus output
{
self endon( "stop_revive_trigger" );
self endon( "death" );
while ( isDefined( self.revivetrigger ) )
{
my_position = self gettagorigin( "J_SpineLower" );
self.revivetrigger unlink();
self.revivetrigger.origin = my_position;
self.revivetrigger linkto( level.the_bus );
wait 0.1;
}
}
revive_trigger_should_ignore_sight_checks( player_down ) //checked matches cerberus output used is_true instead
{
if ( is_true( player_down.isonbus ) && level.the_bus.ismoving )
{
return 1;
}
return 0;
}
revive_trigger_spawn_override_link( player_down ) //checked changed to match cerberus output used is_true instead
{
radius = getDvarInt( "revive_trigger_radius" );
player_down.revivetrigger = spawn( "trigger_radius", ( 0, 0, 0 ), 0, radius, radius );
player_down.revivetrigger sethintstring( "" );
player_down.revivetrigger setcursorhint( "HINT_NOICON" );
player_down.revivetrigger setmovingplatformenabled( 1 );
player_down.revivetrigger enablelinkto();
if ( is_true( player_down.isonbus ) )
{
player_down.revivetrigger linkto( level.the_bus );
player_down thread revive_trigger_move_with_player();
}
else
{
player_down.revivetrigger.origin = player_down.origin;
player_down.revivetrigger linkto( player_down );
}
player_down.revivetrigger.beingrevived = 0;
player_down.revivetrigger.createtime = getTime();
}
init_screecher_zones() //checked partially changed to match cerberus output see info.md No. 2
{
foreach ( key in level.zone_keys )
{
if ( issubstr( key, "_trans_" ) || issubstr( key, "_amb_" ) )
{
level.zones[ key ].screecher_zone = 1;
}
else
{
level.zones[ key ].screecher_zone = 0;
}
}
}
is_player_in_screecher_zone( player ) //checked changed to match cerberus output used is_true instead
{
if ( is_true( player.isonbus ) )
{
return 0;
}
if ( player_entered_safety_zone( player ) )
{
return 0;
}
if ( player_entered_safety_light( player ) )
{
return 0;
}
curr_zone = player get_current_zone( 1 );
if ( isDefined( curr_zone ) && !is_true( curr_zone.screecher_zone ) )
{
return 0;
}
return 1;
}
player_entered_safety_zone( player ) //checked changed to match cerberus output
{
if ( !isDefined( level.safety_volumes ) )
{
level.safety_volumes = getentarray( "screecher_volume", "targetname" );
}
if ( isDefined( player.last_safety_volume ) )
{
if ( player istouching( player.last_safety_volume ) )
{
return 1;
}
}
if ( isDefined( level.safety_volumes ) )
{
for ( i = 0; i < level.safety_volumes.size; i++ )
{
if ( player istouching( level.safety_volumes[ i ] ) )
{
player.last_safety_volume = level.safety_volumes[ i ];
return 1;
}
}
}
player.last_safety_volume = undefined;
return 0;
}
player_entered_safety_light( player ) //checked partially changed to match cerberus output see info.md No. 2
{
safety = getstructarray( "screecher_escape", "targetname" );
if ( !isDefined( safety ) )
{
return 0;
}
player.green_light = undefined;
for ( i = 0; i < safety.size; i++ )
{
if ( !is_true( safety[ i ].power_on ) )
{
}
else
{
if ( !isDefined( safety[ i ].radius ) )
{
safety[ i ].radius = 256;
}
plyr_dist = distancesquared( player.origin, safety[ i ].origin );
if ( plyr_dist < ( safety[ i ].radius * safety[ i ].radius ) )
{
player.green_light = safety[ i ];
return 1;
}
}
}
return 0;
}
zombie_transit_player_intersection_tracker_override( other_player ) //checked changed at own discretion
{
if ( is_true( self.isonbus ) )
{
return 1;
}
if ( is_true( other_player.isonbus ) )
{
return 1;
}
return 0;
}
precache_team_characters() //checked matches cerberus output
{
precachemodel( "c_zom_player_cdc_fb" );
precachemodel( "c_zom_hazmat_viewhands" );
precachemodel( "c_zom_player_cia_fb" );
precachemodel( "c_zom_suit_viewhands" );
}
precache_personality_characters() //checked matches cerberus output
{
character/c_transit_player_farmgirl::precache();
character/c_transit_player_oldman::precache();
character/c_transit_player_engineer::precache();
character/c_transit_player_reporter::precache();
precachemodel( "c_zom_farmgirl_viewhands" );
precachemodel( "c_zom_oldman_viewhands" );
precachemodel( "c_zom_engineer_viewhands" );
precachemodel( "c_zom_reporter_viewhands" );
}
precache_survival_barricade_assets() //checked changed to match cerberus output
{
survival_barricades = getstructarray( "game_mode_object" );
for ( i = 0; i < survival_barricades.size; i++ )
{
if ( isDefined( survival_barricades[ i ].script_string ) && survival_barricades[ i ].script_string == "survival" )
{
if ( isDefined( survival_barricades[ i ].script_parameters ) )
{
precachemodel( survival_barricades[ i ].script_parameters );
}
}
}
}
initcharacterstartindex() //checked matches cerberus output
{
level.characterstartindex = 0;
/*
/#
forcecharacter = getDvarInt( "zombie_transit_character_force" );
if ( forcecharacter != 0 )
{
level.characterstartindex = forcecharacter - 1;
#/
}
*/
}
precacheextrazombies() //checked matches cerberus output
{
}
giveextrazombies() //checked matches cerberus output
{
}
give_team_characters() //checked matches cerberus output
{
if ( isDefined( level.hotjoin_player_setup ) && [[ level.hotjoin_player_setup ]]( "c_zom_suit_viewhands" ) )
{
return;
}
self detachall();
self set_player_is_female( 0 );
if ( isDefined( level.should_use_cia ) )
{
if ( level.should_use_cia )
{
self setmodel( "c_zom_player_cia_fb" );
self setviewmodel( "c_zom_suit_viewhands" );
self.characterindex = 0;
}
else
{
self setmodel( "c_zom_player_cdc_fb" );
self setviewmodel( "c_zom_hazmat_viewhands" );
self.characterindex = 1;
}
}
else if ( !isDefined( self.characterindex ) )
{
self.characterindex = 1;
if ( self.team == "axis" )
{
self.characterindex = 0;
}
}
switch( self.characterindex )
{
case 0:
case 2:
self setmodel( "c_zom_player_cia_fb" );
self.voice = "american";
self.skeleton = "base";
self setviewmodel( "c_zom_suit_viewhands" );
self.characterindex = 0;
break;
case 1:
case 3:
self setmodel( "c_zom_player_cdc_fb" );
self.voice = "american";
self.skeleton = "base";
self setviewmodel( "c_zom_hazmat_viewhands" );
self.characterindex = 1;
break;
}
self setmovespeedscale( 1 );
self setsprintduration( 4 );
self setsprintcooldown( 0 );
self set_player_tombstone_index();
}
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();
}
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_transit_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 );
break;
case 0:
self character/c_transit_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 );
break;
case 3:
self character/c_transit_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 );
break;
case 1:
self character/c_transit_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 );
break;
}
self setmovespeedscale( 1 );
self setsprintduration( 4 );
self setsprintcooldown( 0 );
self set_player_tombstone_index();
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 );
}
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";
}
givecustomloadout( takeallweapons, alreadyspawned ) //checked matches cerberus output
{
self giveweapon( "knife_zm" );
self give_start_weapon( 1 );
}
transit_intermission() //checked changed to match cerberus output
{
self closemenu();
self closeingamemenu();
level endon( "stop_intermission" );
self endon( "disconnect" );
self endon( "death" );
self notify( "_zombie_game_over" );
self.score = self.score_total;
self.sessionstate = "intermission";
self.spectatorclient = -1;
self.killcamentity = -1;
self.archivetime = 0;
self.psoffsettime = 0;
self.friendlydamage = undefined;
maps/mp/_visionset_mgr::vsmgr_deactivate( "overlay", "zm_transit_burn", self );
self stopshellshock();
self.game_over_bg = newclienthudelem( self );
self.game_over_bg.x = 0;
self.game_over_bg.y = 0;
self.game_over_bg.horzalign = "fullscreen";
self.game_over_bg.vertalign = "fullscreen";
self.game_over_bg.foreground = 1;
self.game_over_bg.sort = 1;
self.game_over_bg setshader( "black", 640, 480 );
self.game_over_bg.alpha = 1;
if ( !isDefined( level.the_bus ) )
{
self.game_over_bg fadeovertime( 1 );
self.game_over_bg.alpha = 0;
wait 5;
self.game_over_bg thread maps/mp/zombies/_zm::fade_up_over_time( 1 );
}
else
{
zonestocheck = [];
zonestocheck[ zonestocheck.size ] = "zone_amb_bridge";
zonestocheck[ zonestocheck.size ] = "zone_trans_11";
zonestocheck[ zonestocheck.size ] = "zone_town_west";
zonestocheck[ zonestocheck.size ] = "zone_town_west2";
zonestocheck[ zonestocheck.size ] = "zone_tow";
near_bridge = 0;
foreach ( zone in zonestocheck )
{
if ( level.the_bus maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_amb_bridge" ) )
{
near_bridge = 1;
}
}
if ( near_bridge )
{
trig = getent( "bridge_trig", "targetname" );
trig notify( "trigger" );
}
org = spawn( "script_model", level.the_bus gettagorigin( "tag_camera" ) );
org setmodel( "tag_origin" );
org.angles = level.the_bus gettagangles( "tag_camera" );
org linkto( level.the_bus );
self setorigin( org.origin );
self.angles = org.angles;
if ( !flag( "OnPriDoorYar" ) || !flag( "OnPriDoorYar2" ) )
{
flag_set( "OnPriDoorYar" );
wait_network_frame();
}
if ( !level.the_bus.ismoving )
{
level.the_bus.gracetimeatdestination = 0.1;
level.the_bus notify( "depart_early" );
}
players = get_players();
j = 0;
while ( j < players.size )
{
player = players[ j ];
player camerasetposition( org );
player camerasetlookat();
player cameraactivate( 1 );
j++;
}
self.game_over_bg fadeovertime( 1 );
self.game_over_bg.alpha = 0;
wait 12;
self.game_over_bg fadeovertime( 1 );
self.game_over_bg.alpha = 1;
wait 1;
}
}
transit_standard_intermission() //checked changed to match cerberus output
{
self closemenu();
self closeingamemenu();
level endon( "stop_intermission" );
self endon( "disconnect" );
self endon( "death" );
self notify( "_zombie_game_over" );
self.score = self.score_total;
self.sessionstate = "intermission";
self.spectatorclient = -1;
self.killcamentity = -1;
self.archivetime = 0;
self.psoffsettime = 0;
self.friendlydamage = undefined;
maps/mp/_visionset_mgr::vsmgr_deactivate( "overlay", "zm_transit_burn", self );
self stopshellshock();
points = getstructarray( "intermission", "targetname" );
point = undefined;
if ( !isDefined( points ) || points.size == 0 )
{
points = getentarray( "info_intermission", "classname" );
if ( points.size < 1 )
{
/*
/#
println( "NO info_intermission POINTS IN MAP" );
#/
*/
return;
}
}
self.game_over_bg = newclienthudelem( self );
self.game_over_bg.x = 0;
self.game_over_bg.y = 0;
self.game_over_bg.horzalign = "fullscreen";
self.game_over_bg.vertalign = "fullscreen";
self.game_over_bg.foreground = 1;
self.game_over_bg.sort = 1;
self.game_over_bg setshader( "black", 640, 480 );
self.game_over_bg.alpha = 1;
org = undefined;
while ( 1 )
{
foreach ( struct in points )
{
if ( isDefined( struct.script_string ) && struct.script_string == level.scr_zm_map_start_location )
{
point = struct;
}
}
if ( !isDefined( point ) )
{
point = points[ 0 ];
}
if ( !isDefined( org ) )
{
self spawn( point.origin, point.angles );
}
if ( isDefined( point.target ) )
{
if ( !isDefined( org ) )
{
org = spawn( "script_model", self.origin + vectorScale( ( 0, -1, 0 ), 60 ) );
org setmodel( "tag_origin" );
}
org.origin = point.origin;
org.angles = point.angles;
for ( j = 0; j < get_players().size; j++ )
{
player = get_players()[ j ];
player camerasetposition( org );
player camerasetlookat();
player cameraactivate( 1 );
}
speed = 20;
if ( isDefined( point.speed ) )
{
speed = point.speed;
}
target_point = getstruct( point.target, "targetname" );
dist = distance( point.origin, target_point.origin );
time = dist / speed;
q_time = time * 0.25;
if ( q_time > 1 )
{
q_time = 1;
}
self.game_over_bg fadeovertime( q_time );
self.game_over_bg.alpha = 0;
org moveto( target_point.origin, time, q_time, q_time );
org rotateto( target_point.angles, time, q_time, q_time );
wait ( time - q_time );
self.game_over_bg fadeovertime( q_time );
self.game_over_bg.alpha = 1;
wait q_time;
continue;
}
else
{
self.game_over_bg fadeovertime( 1 );
self.game_over_bg.alpha = 0;
wait 5;
self.game_over_bg thread fade_up_over_time( 1 );
}
}
}
meetupwithothercharacters() //checked partially changed to match beta dump see info.md No. 2
{
self endon( "disconnect" );
isalone = 1;
flag_wait( "begin_spawning" );
while ( isalone )
{
players = get_players();
if ( flag( "solo_game" ) )
{
break;
}
foreach ( player in players )
{
if ( player == self )
{
}
else
{
if ( distancesquared( self.origin, player.origin ) < 1048576 )
{
/*
/#
println( "^2Transit Debug: " + self.name + " met up with " + player.name );
#/
*/
isalone = 0;
}
}
}
wait 1;
}
self.characterrespawnpoint = undefined;
}
transit_respawn_override( player ) //checked matches cerberus output
{
if ( isDefined( player.characterrespawnpoint ) )
{
/*
/#
println( "^2Transit Debug: Using character respawn point for " + player.name );
#/
*/
return player.characterrespawnpoint.origin;
}
return undefined;
}
disable_triggers() //checked changed to match cerberus output
{
trig = getentarray( "trigger_Keys", "targetname" );
for ( i = 0; i < trig.size; i++ )
{
trig[ i ] trigger_off();
}
}
transit_zone_init() //checked changed to match cerberus output
{
flag_init( "always_on" );
flag_init( "init_classic_adjacencies" );
flag_set( "always_on" );
if ( is_classic() )
{
flag_set( "init_classic_adjacencies" );
add_adjacent_zone( "zone_trans_2", "zone_trans_2b", "init_classic_adjacencies" );
add_adjacent_zone( "zone_station_ext", "zone_trans_2b", "init_classic_adjacencies", 1 );
add_adjacent_zone( "zone_town_west2", "zone_town_west", "init_classic_adjacencies" );
add_adjacent_zone( "zone_town_south", "zone_town_church", "init_classic_adjacencies" );
add_adjacent_zone( "zone_trans_pow_ext1", "zone_trans_7", "init_classic_adjacencies" );
add_adjacent_zone( "zone_far", "zone_far_ext", "OnFarm_enter" );
}
else
{
playable_area = getentarray( "player_volume", "script_noteworthy" );
foreach ( area in playable_area )
{
add_adjacent_zone( "zone_station_ext", "zone_trans_2b", "always_on" );
if ( isDefined( area.script_parameters ) && area.script_parameters == "classic_only" )
{
area delete();
}
}
}
add_adjacent_zone( "zone_pri2", "zone_station_ext", "OnPriDoorYar", 1 );
add_adjacent_zone( "zone_pri2", "zone_pri", "OnPriDoorYar3", 1 );
if ( getDvar( "ui_zm_mapstartlocation" ) == "transit" )
{
level thread disconnect_door_zones( "zone_pri2", "zone_station_ext", "OnPriDoorYar" );
level thread disconnect_door_zones( "zone_pri2", "zone_pri", "OnPriDoorYar3" );
}
add_adjacent_zone( "zone_station_ext", "zone_pri", "OnPriDoorYar2" );
add_adjacent_zone( "zone_roadside_west", "zone_din", "OnGasDoorDin" );
add_adjacent_zone( "zone_roadside_west", "zone_gas", "always_on" );
add_adjacent_zone( "zone_roadside_east", "zone_gas", "always_on" );
add_adjacent_zone( "zone_roadside_east", "zone_gar", "OnGasDoorGar" );
add_adjacent_zone( "zone_trans_diner", "zone_roadside_west", "always_on", 1 );
add_adjacent_zone( "zone_trans_diner", "zone_gas", "always_on", 1 );
add_adjacent_zone( "zone_trans_diner2", "zone_roadside_east", "always_on", 1 );
add_adjacent_zone( "zone_gas", "zone_din", "OnGasDoorDin" );
add_adjacent_zone( "zone_gas", "zone_gar", "OnGasDoorGar" );
add_adjacent_zone( "zone_diner_roof", "zone_din", "OnGasDoorDin", 1 );
add_adjacent_zone( "zone_amb_cornfield", "zone_cornfield_prototype", "always_on" );
add_adjacent_zone( "zone_tow", "zone_bar", "always_on", 1 );
add_adjacent_zone( "zone_bar", "zone_tow", "OnTowDoorBar", 1 );
add_adjacent_zone( "zone_tow", "zone_ban", "OnTowDoorBan" );
add_adjacent_zone( "zone_ban", "zone_ban_vault", "OnTowBanVault" );
add_adjacent_zone( "zone_tow", "zone_town_north", "always_on" );
add_adjacent_zone( "zone_town_north", "zone_ban", "OnTowDoorBan" );
add_adjacent_zone( "zone_tow", "zone_town_west", "always_on" );
add_adjacent_zone( "zone_tow", "zone_town_south", "always_on" );
add_adjacent_zone( "zone_town_south", "zone_town_barber", "always_on", 1 );
add_adjacent_zone( "zone_tow", "zone_town_east", "always_on" );
add_adjacent_zone( "zone_town_east", "zone_bar", "OnTowDoorBar" );
add_adjacent_zone( "zone_tow", "zone_town_barber", "always_on", 1 );
add_adjacent_zone( "zone_town_barber", "zone_tow", "OnTowDoorBarber", 1 );
add_adjacent_zone( "zone_town_barber", "zone_town_west", "OnTowDoorBarber" );
add_adjacent_zone( "zone_far_ext", "zone_brn", "OnFarm_enter" );
add_adjacent_zone( "zone_far_ext", "zone_farm_house", "open_farmhouse" );
add_adjacent_zone( "zone_prr", "zone_pow", "OnPowDoorRR", 1 );
add_adjacent_zone( "zone_pcr", "zone_prr", "OnPowDoorRR" );
add_adjacent_zone( "zone_pcr", "zone_pow_warehouse", "OnPowDoorWH" );
add_adjacent_zone( "zone_pow", "zone_pow_warehouse", "OnPowDoorWH" );
add_adjacent_zone( "zone_tbu", "zone_tow", "vault_opened", 1 );
}
include_powerups() //checked matches cerberus output
{
gametype = getDvar( "ui_gametype" );
include_powerup( "nuke" );
include_powerup( "insta_kill" );
include_powerup( "double_points" );
include_powerup( "full_ammo" );
include_powerup( "insta_kill_ug" );
if ( gametype != "zgrief" )
{
include_powerup( "carpenter" );
}
if ( is_encounter() && gametype != "zgrief" )
{
include_powerup( "minigun" );
}
include_powerup( "teller_withdrawl" );
}
add_transit_powerups() //checked matches cerberus output
{
maps/mp/zombies/_zm_powerups::add_zombie_powerup( "teller_withdrawl", "zombie_z_money_icon", &"ZOMBIE_TELLER_PICKUP_DEPOSIT", maps/mp/zombies/_zm_powerups::func_should_never_drop, 1, 0, 0 );
}
include_equipment_for_level() //checked matches cerberus output
{
level.equipment_turret_needs_power = 1;
level.equipment_etrap_needs_power = 1;
include_equipment( "jetgun_zm" );
include_equipment( "riotshield_zm" );
include_equipment( "equip_turbine_zm" );
include_equipment( "equip_turret_zm" );
include_equipment( "equip_electrictrap_zm" );
level.equipment_planted = ::equipment_planted;
level.equipment_safe_to_drop = ::equipment_safe_to_drop;
level.check_force_deploy_origin = ::use_safe_spawn_on_bus;
limit_equipment( "jetgun_zm", 1 );
level.explode_overheated_jetgun = 1;
level.exploding_jetgun_fx = level._effect[ "lava_burning" ];
}
transit_bus_update_retrieve_trigger( player ) //checked matches cerberus output used is_true instead
{
self endon( "death" );
player endon( "zmb_lost_knife" );
if ( isDefined( level.the_bus ) && is_true( player.isonbus ) )
{
wait 2;
trigger = self.retrievabletrigger;
trigger.origin = ( self.origin[ 0 ], self.origin[ 1 ], self.origin[ 2 ] + 10 );
self linkto( level.the_bus );
trigger linkto( self );
}
else
{
self waittill( "stationary" );
trigger = self.retrievabletrigger;
trigger.origin = ( self.origin[ 0 ], self.origin[ 1 ], self.origin[ 2 ] + 10 );
trigger linkto( self );
}
}
claymore_safe_to_plant() //checked matches cerberus output
{
if ( self maps/mp/zm_transit_lava::object_touching_lava() )
{
return 0;
}
if ( self.owner maps/mp/zm_transit_lava::object_touching_lava() )
{
return 0;
}
return 1;
}
claymore_planted( weapon ) //checked matches cerberus output
{
weapon waittill( "stationary" );
if ( !isDefined( weapon ) )
{
return;
}
weaponbus = weapon maps/mp/zm_transit_bus::object_is_on_bus();
if ( weaponbus )
{
if ( isDefined( weapon ) )
{
weapon setmovingplatformenabled( 1 );
weapon.equipment_can_move = 1;
weapon.isonbus = 1;
weapon.move_parent = level.the_bus;
if ( isDefined( weapon.damagearea ) )
{
weapon.damagearea setmovingplatformenabled( 1 );
}
}
}
}
fakelinkto( linkee ) //checked matches cerberus output
{
self.backlinked = 1;
while ( isDefined( self ) && isDefined( linkee ) )
{
self.origin = linkee.origin;
self.angles = linkee.angles;
wait 0.05;
}
}
knife_planted( knife, trigger, parent ) //checked matches cerberus output
{
if ( !isDefined( knife ) )
{
return;
}
weaponbus = knife maps/mp/zm_transit_bus::object_is_on_bus();
if ( weaponbus )
{
trigger linkto( knife );
trigger setmovingplatformenabled( 1 );
trigger.isonbus = 1;
knife setmovingplatformenabled( 1 );
knife.isonbus = 1;
}
}
grenade_planted( grenade, model ) //checked matches cerberus output
{
if ( !isDefined( grenade ) )
{
return;
}
weaponbus = grenade maps/mp/zm_transit_bus::object_is_on_bus();
if ( weaponbus )
{
if ( isDefined( grenade ) )
{
grenade setmovingplatformenabled( 1 );
grenade.equipment_can_move = 1;
grenade.isonbus = 1;
grenade.move_parent = level.the_bus;
if ( isDefined( model ) )
{
model setmovingplatformenabled( 1 );
model linkto( level.the_bus );
model.isonbus = 1;
grenade fakelinkto( model );
}
}
}
}
grenade_safe_to_throw( player, weapname ) //checked matches cerberus output
{
return 1;
}
grenade_safe_to_bounce( player, weapname ) //checked matches cerberus output
{
if ( !is_offhand_weapon( weapname ) && !is_grenade_launcher( weapname ) )
{
return 1;
}
if ( self maps/mp/zm_transit_lava::object_touching_lava() )
{
return 0;
}
return 1;
}
equipment_safe_to_drop( weapon ) //checked matches cerberus output used is_true instead
{
if ( !isDefined( weapon.canmove ) )
{
weapon.canmove = weapon maps/mp/zm_transit_bus::object_is_on_bus();
}
if ( is_true( weapon.canmove ) )
{
return 1;
}
if ( weapon maps/mp/zm_transit_lava::object_touching_lava() )
{
return 0;
}
return 1;
}
use_safe_spawn_on_bus( weapon, origin, angles ) //checked matches cerberus output used is_true instead
{
if ( is_true( self.isonbus ) && level.the_bus.ismoving )
{
weapon.canmove = 1;
return 1;
}
return 0;
}
equipment_planted( weapon, equipname, groundfrom ) //checked matches cerberus output used is_true instead
{
weaponbus = groundfrom maps/mp/zm_transit_bus::object_is_on_bus();
if ( !weaponbus && weapon maps/mp/zm_transit_lava::object_touching_lava() )
{
self maps/mp/zombies/_zm_equipment::equipment_take( equipname );
wait 0.05;
self notify( equipname + "_taken" );
return;
}
if ( isDefined( self ) && weaponbus )
{
if ( isDefined( weapon ) )
{
if ( !is_true( weapon.canmove ) )
{
weapon.canmove = 1;
reregister_unitrigger_as_dynamic( weapon.stub );
}
weapon linkto( level.the_bus );
weapon setmovingplatformenabled( 1 );
if ( isDefined( weapon.stub ) )
{
weapon.stub.link_parent = level.the_bus;
weapon.stub.origin_parent = weapon;
}
weapon.equipment_can_move = 1;
weapon.isonbus = 1;
weapon.move_parent = level.the_bus;
}
}
}
offhand_weapon_overrride() //checked matches cerberus output
{
register_lethal_grenade_for_level( "frag_grenade_zm" );
level.zombie_lethal_grenade_player_init = "frag_grenade_zm";
register_lethal_grenade_for_level( "sticky_grenade_zm" );
register_tactical_grenade_for_level( "cymbal_monkey_zm" );
register_tactical_grenade_for_level( "emp_grenade_zm" );
level.zombie_tactical_grenade_player_init = undefined;
level.grenade_safe_to_throw = ::grenade_safe_to_throw;
level.grenade_safe_to_bounce = ::grenade_safe_to_bounce;
level.grenade_planted = ::grenade_planted;
level.knife_planted = ::knife_planted;
register_placeable_mine_for_level( "claymore_zm" );
level.zombie_placeable_mine_player_init = undefined;
level.claymore_safe_to_plant = ::claymore_safe_to_plant;
level.claymore_planted = ::claymore_planted;
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( "jetgun_zm" );
register_equipment_for_level( "riotshield_zm" );
register_equipment_for_level( "equip_turbine_zm" );
register_equipment_for_level( "equip_turret_zm" );
register_equipment_for_level( "equip_electrictrap_zm" );
level.zombie_equipment_player_init = undefined;
}
include_weapons() //checked matches cerberus output used is_true instead
{
gametype = getDvar( "ui_gametype" );
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( "rpd_zm" );
include_weapon( "rpd_upgraded_zm", 0 );
include_weapon( "hamr_zm" );
include_weapon( "hamr_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( "cymbal_monkey_zm" );
include_weapon( "emp_grenade_zm", 1, undefined, ::less_than_normal );
if ( is_classic() )
{
include_weapon( "screecher_arms_zm", 0 );
}
if ( gametype != "zgrief" )
{
include_weapon( "ray_gun_zm" );
include_weapon( "ray_gun_upgraded_zm", 0 );
include_weapon( "jetgun_zm", 0, undefined, ::less_than_normal );
include_weapon( "riotshield_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( "knife_ballistic_zm", 1 );
add_limited_weapon( "jetgun_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 );
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 );
}
}
add_limited_weapon( "m1911_zm", 0 );
add_weapon_locker_mapping( "lsat_zm", "hamr_zm" );
add_weapon_locker_mapping( "lsat_upgraded_zm", "hamr_upgraded_zm" );
add_weapon_locker_mapping( "svu_zm", "fnfal_zm" );
add_weapon_locker_mapping( "svu_upgraded_zm", "fnfal_upgraded_zm" );
add_weapon_locker_mapping( "pdw57_zm", "qcw05_zm" );
add_weapon_locker_mapping( "pdw57_upgraded_zm", "qcw05_upgraded_zm" );
add_weapon_locker_mapping( "an94_zm", "galil_zm" );
add_weapon_locker_mapping( "an94_upgraded_zm", "galil_upgraded_zm" );
add_weapon_locker_mapping( "rnma_zm", "python_zm" );
add_weapon_locker_mapping( "rnma_upgraded_zm", "python_upgraded_zm" );
}
less_than_normal() //checked matches cerberus output
{
return 0.5;
}
custom_add_weapons() //checked matches cerberus output used is_true instead
{
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( "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, "sniper", "", 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( "cymbal_monkey_zm", undefined, &"ZOMBIE_WEAPON_SATCHEL_2000", 2000, "wpck_monkey", "", undefined, 1 );
add_zombie_weapon( "emp_grenade_zm", undefined, &"ZOMBIE_WEAPON_EMP_GRENADE", 2000, "wpck_emp", "", 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, "sickle", "", undefined );
add_zombie_weapon( "knife_ballistic_bowie_zm", "knife_ballistic_bowie_upgraded_zm", &"ZOMBIE_WEAPON_KNIFE_BALLISTIC", 10, "wpck_knife", "", undefined, 1 );
add_zombie_weapon( "knife_ballistic_no_melee_zm", "knife_ballistic_no_melee_upgraded_zm", &"ZOMBIE_WEAPON_KNIFE_BALLISTIC", 10, "sickle", "", undefined );
add_zombie_weapon( "riotshield_zm", undefined, &"ZOMBIE_WEAPON_RIOTSHIELD", 2000, "riot", "", undefined );
add_zombie_weapon( "jetgun_zm", undefined, &"ZOMBIE_WEAPON_JETGUN", 2000, "jet", "", undefined );
add_zombie_weapon( "tazer_knuckles_zm", undefined, &"ZOMBIE_WEAPON_TAZER_KNUCKLES", 100, "tazerknuckles", "", 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_game_modules() //checked matches cerberus output
{
}
initial_round_wait_func() //checked matches cerberus output
{
flag_wait( "initial_blackscreen_passed" );
}
zombie_speed_up() //checked matches cerberus output used is_true instead
{
if ( is_true( self.isonbus ) )
{
return;
}
if ( self.zombie_move_speed != "sprint" )
{
self set_zombie_run_cycle( "sprint" );
}
}
zombie_init_done() //checked matches cerberus output
{
self.allowpain = 0;
self setphysparams( 15, 0, 48 );
}
setup_dvars() //dev call didn't check
{
/*
/#
dvars = [];
dvars[ dvars.size ] = "zombie_bus_debug_path";
dvars[ dvars.size ] = "zombie_bus_debug_speed";
dvars[ dvars.size ] = "zombie_bus_debug_near";
dvars[ dvars.size ] = "zombie_bus_debug_attach";
dvars[ dvars.size ] = "zombie_bus_skip_objectives";
dvars[ dvars.size ] = "zombie_bus_debug_spawners";
i = 0;
while ( i < dvars.size )
{
if ( getDvar( dvars[ i ] ) == "" )
{
setdvar( dvars[ i ], "0" );
}
i++;
#/
}
*/
}
setup_zombie_init() //checked matches cerberus output
{
zombies = getentarray( "zombie_spawner", "script_noteworthy" );
array_thread( zombies, ::add_spawn_function, ::custom_zombie_setup );
}
setup_players() //checked matches cerberus output
{
self.isonbus = 0;
self.isonbusroof = 0;
self.isinhub = 1;
self.insafearea = 1;
}
transit_player_fake_death( vdir ) //checked changed to match cerberus output used is_true instead
{
level notify( "fake_death" );
self notify( "fake_death" );
if ( is_true( self.isonbus ) )
{
level thread transit_player_fake_death_zombies();
}
stance = self getstance();
self.ignoreme = 1;
self enableinvulnerability();
self takeallweapons();
if ( is_true( self.insta_killed ) || self istouching( getent( "depot_lava_pit", "targetname" ) ) || is_true( self.isonbus ) && level.the_bus.ismoving )
{
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;
}
}
transit_player_fake_death_zombies() //checked partially changed to match cerberus output see info.md No. 2 used is_true instead
{
zombies = getaiarray( level.zombie_team );
foreach ( zombie in zombies )
{
if ( !isalive( zombie ) )
{
}
else if ( is_true( zombie.ignore_game_over_death ) )
{
}
else if ( isDefined( zombie ) )
{
zombie dodamage( zombie.health + 666, zombie.origin );
}
else if ( ( index % 3 ) == 0 )
{
wait_network_frame();
}
}
}
fall_down( vdir, stance ) //checked changed to match cerberus output used is_true instead
{
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" );
}
if ( is_true( self.isonbus ) )
{
linker linkto( level.the_bus );
}
self giveweapon( "death_throe_zm" );
self switchtoweapon( "death_throe_zm" );
if ( falling && !is_true( self.isonbus ) )
{
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();
}
transit_player_fake_death_cleanup() //checked matches cerberus output
{
if ( isDefined( self._fall_down_anchor ) )
{
self._fall_down_anchor delete();
self._fall_down_anchor = undefined;
}
}
custom_zombie_setup() //checked matches cerberus output
{
if ( is_survival() && !is_standard() )
{
self.nearbus = 0;
self.isonbus = 0;
self.isonbusroof = 0;
self.was_walking = 0;
self.candropsafekey = 1;
self.candropbuskey = 1;
self.custom_points_on_turret_damage = 0;
}
}
bunkerdoorrotate( open, time ) //checked matches cerberus output
{
if ( !isDefined( time ) )
{
time = 0.2;
}
rotate = self.script_float;
if ( !open )
{
rotate *= -1;
}
if ( isDefined( self.script_angles ) )
{
self notsolid();
self rotateto( self.script_angles, time, 0, 0 );
self thread maps/mp/zombies/_zm_blockers::door_solid_thread();
}
}
zm_transit_emp_init() //checked matches cerberus output
{
level.custom_emp_detonate = ::zm_transit_emp_detonate;
set_zombie_var( "emp_bus_off_range", 1200 );
set_zombie_var( "emp_bus_off_time", 45 );
}
zm_transit_emp_detonate( grenade_origin ) //checked matches cerberus output
{
test_ent = spawn( "script_origin", grenade_origin );
if ( test_ent maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_prr" ) )
{
if ( flag( "power_on" ) )
{
trig = getent( "powerswitch_buildable_trigger_power", "targetname" );
trig notify( "trigger" );
}
}
test_ent delete();
}
emp_detonate_boss( grenade_origin ) //checked matches cerberus output
{
}
register_screecher_lights() //checked changed to match cerberus output
{
level.safety_lights = getstructarray( "screecher_escape", "targetname" );
for ( i = 0; i < level.safety_lights.size; i++ )
{
safety = level.safety_lights[ i ];
name = safety.script_noteworthy;
if ( !isDefined( name ) )
{
/*
/#
println( "ERROR Unnamed screecher light detected" );
#/
*/
name = "light_" + i;
}
clientfieldname = "screecher_light_" + name;
level.safety_lights[ i ].clientfieldname = clientfieldname;
registerclientfield( "world", clientfieldname, 1, 1, "int" );
}
}
include_powered_items() //checked changed to match cerberus output
{
if ( is_classic() )
{
include_powered_item( ::bus_power_on, ::bus_power_off, ::bus_range, maps/mp/zombies/_zm_power::cost_negligible, 1, 1, undefined );
if ( isDefined( level.safety_lights ) )
{
for ( i = 0; i < level.safety_lights.size; i++ )
{
include_powered_item( ::safety_light_power_on, ::safety_light_power_off, ::safety_light_range, maps/mp/zombies/_zm_power::cost_low_if_local, 0, 0, level.safety_lights[ i ] );
}
}
}
}
bus_range( delta, origin, radius ) //checked matches cerberus output
{
if ( isDefined( level.the_bus ) )
{
if ( distance2dsquared( origin, level.the_bus.origin ) < ( radius * radius ) )
{
return 1;
}
forward = anglesToForward( level.the_bus.angles );
forward = vectorScale( forward, 275 );
bus_front = level.the_bus.origin + forward;
if ( distance2dsquared( origin, bus_front ) < ( radius * radius ) )
{
return 1;
}
}
return 0;
}
bus_power_on( origin, radius ) //checked matches cerberus output
{
/*
/#
println( "^1ZM POWER: bus on\n" );
#/
*/
level.the_bus thread maps/mp/zm_transit_bus::bus_power_on();
}
bus_power_off( origin, radius ) //checked matches cerberus output
{
/*
/#
println( "^1ZM POWER: bus off\n" );
#/
*/
level.the_bus thread maps/mp/zm_transit_bus::bus_power_off();
}
safety_light_range( delta, origin, radius ) //checked matches cerberus output
{
if ( distancesquared( self.target.origin, origin ) < ( radius * radius ) )
{
return 1;
}
return 0;
}
safety_light_power_on( origin, radius ) //checked changed to match cerberus output
{
/*
/#
println( "^1ZM POWER: bus on\n" );
#/
*/
self.target.power_on = 1;
self.target notify( "power_on" );
if ( isDefined( self.target.clientfieldname ) )
{
level setclientfield( self.target.clientfieldname, 1 );
}
level notify( "safety_light_power_on", self );
}
safety_light_power_off( origin, radius ) //checked changed to match cerberus output
{
/*
/#
println( "^1ZM POWER: bus off\n" );
#/
*/
self.target.power_on = 0;
self.target notify( "power_off" );
if ( isDefined( self.target.clientfieldname ) )
{
level setclientfield( self.target.clientfieldname, 0 );
}
level notify( "safety_light_power_off", self );
}
zombie_transit_devgui( cmd ) //dev call didn't check
{
/*
/#
cmd_strings = strtok( cmd, " " );
switch( cmd_strings[ 0 ] )
{
case "pickup":
if ( !level.the_bus.upgrades[ cmd_strings[ 1 ] ].pickedup )
{
level.the_bus.upgrades[ cmd_strings[ 1 ] ].trigger notify( "trigger" );
}
break;
case "spawn":
player = get_players()[ 0 ];
spawnername = undefined;
if ( cmd_strings[ 1 ] == "regular" )
{
spawnername = "zombie_spawner";
}
else if ( cmd_strings[ 1 ] == "screecher" )
{
}
else
{
return;
}
direction = player getplayerangles();
direction_vec = anglesToForward( direction );
eye = player geteye();
scale = 8000;
direction_vec = ( direction_vec[ 0 ] * scale, direction_vec[ 1 ] * scale, direction_vec[ 2 ] * scale );
trace = bullettrace( eye, eye + direction_vec, 0, undefined );
guy = undefined;
if ( cmd_strings[ 1 ] == "screecher" )
{
spawner = level.screecher_spawners[ 0 ];
guy = maps/mp/zombies/_zm_utility::spawn_zombie( spawner );
}
else
{
if ( cmd_strings[ 1 ] == "regular" )
{
spawners = getentarray( spawnername, "script_noteworthy" );
spawner = spawners[ 0 ];
guy = maps/mp/zombies/_zm_utility::spawn_zombie( spawner );
guy.favoriteenemy = player;
guy.script_string = "zombie_chaser";
guy thread maps/mp/zombies/_zm_spawner::zombie_spawn_init();
guy custom_zombie_setup();
}
}
guy forceteleport( trace[ "position" ], player.angles + vectorScale( ( 0, -1, 0 ), 180 ) );
break;
case "test_attach":
attach_name = getDvar( "zombie_bus_debug_attach" );
opening = level.the_bus maps/mp/zm_transit_openings::busgetopeningfortag( attach_name );
jump = level.the_bus maps/mp/zm_transit_openings::_busgetjumptagfrombindtag( attach_name );
if ( isDefined( opening ) )
{
if ( isDefined( opening.zombie ) )
{
iprintln( "Zombie already attached to opening: " + attach_name );
}
else
{
origin = level.the_bus gettagorigin( attach_name );
if ( isDefined( jump ) )
{
jump_origin = level.the_bus gettagorigin( jump );
if ( isDefined( opening.enabled ) && opening.enabled )
{
debugstar( jump_origin, 1000, ( 0, -1, 0 ) );
}
else
{
debugstar( jump_origin, 1000, ( 0, -1, 0 ) );
}
}
zombie_spawners = getentarray( "zombie_spawner", "script_noteworthy" );
zombie = spawn_zombie( zombie_spawners[ 0 ] );
zombie.cannotattachtobus = 1;
zombie thread maps/mp/zm_transit_openings::zombieattachtobus( level.the_bus, opening, 0 );
}
}
else
{
iprintln( "Couldn't find opening for tag: " + attach_name );
}
break;
case "attach_tag":
setdvar( "zombie_bus_debug_attach", cmd_strings[ 1 ] );
break;
case "hatch_available":
if ( isDefined( level.the_bus ) )
{
level.the_bus notify( "hatch_mantle_allowed" );
}
break;
case "ambush_round":
if ( isDefined( level.ambushpercentageperstop ) )
{
if ( cmd_strings[ 1 ] == "always" )
{
level.ambushpercentageperstop = 100;
}
else
{
if ( cmd_strings[ 1 ] == "never" )
{
level.ambushpercentageperstop = 0;
}
}
}
break;
case "gas":
if ( cmd_strings[ 1 ] == "add" )
{
level.the_bus maps/mp/zm_transit_bus::busgasadd( getDvarInt( #"69C4D2C1" ) );
}
else
{
if ( cmd_strings[ 1 ] == "remove" )
{
level.the_bus maps/mp/zm_transit_bus::busgasremove( getDvarInt( #"69C4D2C1" ) );
}
}
break;
case "force_bus_to_leave":
level.the_bus notify( "depart_early" );
if ( isDefined( level.bus_leave_hud ) )
{
level.bus_leave_hud.alpha = 0;
}
break;
case "teleport_to_bus":
get_players()[ 0 ] setorigin( level.the_bus localtoworldcoords( vectorScale( ( 0, -1, 0 ), 25 ) ) );
break;
case "teleport_bus":
node = getvehiclenode( cmd_strings[ 1 ], "script_noteworthy" );
if ( isDefined( node ) )
{
level.the_bus thread buspathblockerdisable();
wait 0,1;
level.the_bus attachpath( node );
level.the_bus maps/mp/zm_transit_bus::busstopmoving( 1 );
wait 0,1;
level.the_bus thread buspathblockerenable();
}
break;
case "avogadro_round_skip":
if ( isDefined( level.next_avogadro_round ) )
{
maps/mp/zombies/_zm_devgui::zombie_devgui_goto_round( level.next_avogadro_round );
}
break;
case "debug_print_emp_points":
while ( isDefined( level.debug_print_emp_points ) && !level.debug_print_emp_points )
{
level.debug_print_emp_points = 1;
vehnodes = getvehiclenodearray( "emp_stop_point", "script_noteworthy" );
_a3190 = vehnodes;
_k3190 = getFirstArrayKey( _a3190 );
while ( isDefined( _k3190 ) )
{
node = _a3190[ _k3190 ];
maps/mp/zombies/_zm_devgui::showonespawnpoint( node, ( 0, -1, 0 ), "kill_debug_print_emp_points", undefined, "EMP STOP" );
_k3190 = getNextArrayKey( _a3190, _k3190 );
}
}
case "debug_stop_print_emp_points":
if ( isDefined( level.debug_print_emp_points ) && level.debug_print_emp_points )
{
level notify( "kill_debug_print_emp_points" );
level.debug_print_emp_points = undefined;
}
break;
default:
}
#/
}
}
*/
}
is_valid_powerup_location( powerup ) //checked changed to match cerberus output
{
valid = 0;
if ( !isDefined( level.powerup_areas ) )
{
level.powerup_areas = getentarray( "powerup_area", "script_noteworthy" );
}
if ( !isDefined( level.playable_areas ) )
{
level.playable_areas = getentarray( "player_volume", "script_noteworthy" );
}
for ( i = 0; i < level.powerup_areas.size && !valid; i++ )
{
area = level.powerup_areas[ i ];
valid = powerup istouching( area );
}
for ( i = 0; i < level.playable_areas.size && !valid; i++ )
{
area = level.playable_areas[ i ];
valid = powerup istouching( area );
}
return valid;
}
zombie_transit_player_too_many_weapons_monitor_callback( weapon ) //checked matches cerberus output
{
if ( self maps/mp/zm_transit_cling::playerisclingingtobus() )
{
return 0;
}
return 1;
}
zombie_transit_audio_alias_override() //checked matches cerberus output
{
maps/mp/zm_transit_automaton::initaudioaliases();
init_transit_player_dialogue();
add_transit_response_chance();
}
falling_death_init() //checked changed to match beta dump
{
trig = getent( "transit_falling_death", "targetname" );
if ( isDefined( trig ) )
{
while ( 1 )
{
trig waittill( "trigger", who );
if ( !is_true( who.insta_killed ) )
{
who thread insta_kill_player();
}
}
}
}
insta_kill_player() //checked changed to match beta dump
{
self endon( "disconnect" );
if ( is_true( self.insta_killed ) )
{
return;
}
self maps/mp/zombies/_zm_buildables::player_return_piece_to_original_spawn();
if ( is_player_killable( self ) )
{
self.insta_killed = 1;
in_last_stand = 0;
if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() )
{
in_last_stand = 1;
}
if ( getnumconnectedplayers() == 1 )
{
if ( isDefined( self.lives ) && self.lives > 0 )
{
self.waiting_to_revive = 1;
points = getstruct( "zone_pcr", "script_noteworthy" );
spawn_points = getstructarray( points.target, "targetname" );
point = spawn_points[ 0 ];
self dodamage( self.health + 1000, ( 0, 0, 0 ) );
maps/mp/_visionset_mgr::vsmgr_activate( "overlay", "zm_transit_burn", self, 1, level.zm_transit_burn_max_duration );
wait 0.5;
self freezecontrols( 1 );
wait 0.25;
self setorigin( point.origin + vectorScale( ( 0, 0, 1 ), 20 ) );
self.angles = point.angles;
if ( in_last_stand )
{
flag_set( "instant_revive" );
wait_network_frame();
flag_clear( "instant_revive" );
}
else
{
self thread maps/mp/zombies/_zm_laststand::auto_revive( self );
self.waiting_to_revive = 0;
self.solo_respawn = 0;
self.lives = 0;
}
self freezecontrols( 0 );
self.insta_killed = 0;
}
else
{
self dodamage( self.health + 1000, ( 0, 0, 0 ) );
maps/mp/_visionset_mgr::vsmgr_activate( "overlay", "zm_transit_burn", self, 2, level.zm_transit_burn_max_duration );
}
}
else
{
self dodamage( self.health + 1000, ( 0, 0, 0 ) );
maps/mp/_visionset_mgr::vsmgr_activate( "overlay", "zm_transit_burn", self, 1, level.zm_transit_burn_max_duration );
wait_network_frame();
self.bleedout_time = 0;
}
self notify( "burned" );
self.insta_killed = 0;
}
}
is_player_killable( player, checkignoremeflag ) //checked matches cerberus output
{
if ( !isDefined( player ) )
{
return 0;
}
if ( !isalive( player ) )
{
return 0;
}
if ( !isplayer( player ) )
{
return 0;
}
if ( player.sessionstate == "spectator" )
{
return 0;
}
if ( player.sessionstate == "intermission" )
{
return 0;
}
if ( isDefined( checkignoremeflag ) && player.ignoreme )
{
return 0;
}
return 1;
}
delete_bus_pieces() //checked changed to match beta dump
{
wait 3;
if ( is_true( level._bus_pieces_deleted ) )
{
return;
}
level._bus_pieces_deleted = 1;
hatch_mantle = getent( "hatch_mantle", "targetname" );
if ( isDefined( hatch_mantle ) )
{
hatch_mantle delete();
}
hatch_clip = getentarray( "hatch_clip", "targetname" );
array_thread( hatch_clip, ::self_delete );
plow_clip = getentarray( "plow_clip", "targetname" );
array_thread( plow_clip, ::self_delete );
light = getent( "busLight2", "targetname" );
if ( isDefined( light ) )
{
light delete();
}
light = getent( "busLight1", "targetname" );
if ( isDefined( light ) )
{
light delete();
}
blocker = getent( "bus_path_blocker", "targetname" );
if ( isDefined( blocker ) )
{
blocker delete();
}
lights = getentarray( "bus_break_lights", "targetname" );
array_thread( lights, ::self_delete );
orgs = getentarray( "bus_bounds_origin", "targetname" );
array_thread( orgs, ::self_delete );
door_blocker = getentarray( "bus_door_blocker", "targetname" );
array_thread( door_blocker, ::self_delete );
driver = getent( "bus_driver_head", "targetname" );
if ( isDefined( driver ) )
{
driver delete();
}
plow = getent( "trigger_plow", "targetname" );
if ( isDefined( plow ) )
{
plow delete();
}
plow_attach_point = getent( "plow_attach_point", "targetname" );
if ( isDefined( plow_attach_point ) )
{
plow_attach_point delete();
}
bus = getent( "the_bus", "targetname" );
if ( isDefined( bus ) )
{
bus delete();
}
barriers = getzbarrierarray();
foreach ( barrier in barriers )
{
if ( isDefined( barrier.classname ) && issubstr( barrier.classname, "zb_bus" ) )
{
for ( x = 0; x < barrier getnumzbarrierpieces(); x++ )
{
barrier setzbarrierpiecestate( x, "opening" );
}
barrier hide();
}
}
}
init_transit_stats() //checked matches cerberus output
{
self maps/mp/zm_transit_sq::init_player_sidequest_stats();
self maps/mp/zm_transit_achievement::init_player_achievement_stats();
}
kill_zombies_depot() //checked partially changed to match cerberus output see info.md No. 5
{
if ( level.zones[ "zone_pri" ].is_occupied == 1 || flag( "OnPriDoorYar2" ) )
{
return;
}
if ( self maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_pri" ) )
{
self.marked_for_recycle = 1;
self dodamage( self.health + 666, self.origin, self );
return;
}
if ( self should_be_killed_depot() )
{
self.marked_for_recycle = 1;
self dodamage( self.health + 666, self.origin, self );
return;
}
}
//custom addition
//////////////////////////////////////////
should_be_killed_depot() //added to get around info. No. 5 for kill_zombies_depot() above
{
if ( ( self.ignoreall || !self in_playable_zone() ) && isDefined( self.zone_name ) && self.zone_name == "zone_pri" )
{
return 1;
}
if ( ( self.ignoreall || !self in_playable_zone() ) && isDefined( self.zone_name ) && self.zone_name == "zone_pri2" )
{
return 1;
}
return 0;
}
////////////////////////////////////////
in_playable_zone() //checked changed to match cerberus output
{
if ( !isDefined( level.playable_areas ) )
{
level.playable_areas = getentarray( "player_volume", "script_noteworthy" );
}
foreach ( zone in level.playable_areas )
{
if ( self istouching( zone ) )
{
return 1;
}
}
return 0;
}
lava_damage_depot() //checked changed to match cerberus output
{
trigs = getentarray( "lava_damage", "targetname" );
volume = getent( "depot_lava_volume", "targetname" );
exploder( 2 );
foreach ( trigger in trigs )
{
if ( isDefined( trigger.script_string ) && trigger.script_string == "depot_lava" )
{
trig = trigger;
}
}
if ( isDefined( trig ) )
{
trig.script_float = 0.05;
}
while ( level.round_number < 3 )
{
level waittill( "start_of_round" );
}
while ( !volume depot_lava_seen() )
{
wait 2;
}
if ( isDefined( trig ) )
{
trig.script_float = 0.4;
earthquake( 0.5, 1.5, trig.origin, 1000 );
level clientnotify( "earth_crack" );
crust = getent( "depot_black_lava", "targetname" );
crust delete();
}
stop_exploder( 2 );
exploder( 3 );
}
depot_lava_seen() //checked changed to match cerberus output
{
check_volume = getent( "depot_lava_check", "targetname" );
players = get_players();
foreach ( player in players )
{
if ( player istouching( check_volume ) )
{
seen = self maps/mp/zm_transit_distance_tracking::player_can_see_me( player );
if ( seen )
{
return 1;
}
}
}
return 0;
}
assign_lowest_unused_character_index() //checked changed to match beta dump
{
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;
}
}
}
}
else
{
foreach ( player in players )
{
if ( isDefined( player.characterindex ) )
{
arrayremovevalue( charindexarray, player.characterindex, 0 );
}
}
if ( charindexarray.size > 0 )
{
return charindexarray[ 0 ];
}
}
return 0;
}
dog_spawn_transit_logic( dog_array, favorite_enemy ) //checked partially changed to match cerberus output see info.md No. 2
{
dog_locs = array_randomize( level.enemy_dog_locations );
for ( i = 0; i < dog_locs.size; i++ )
{
if ( isDefined( level.old_dog_spawn ) && level.old_dog_spawn == dog_locs[ i ] )
{
}
else
{
canuse = 1;
players = get_players();
foreach ( player in players )
{
if ( !canuse )
{
}
else
{
dist_squared = distancesquared( dog_locs[ i ].origin, player.origin );
if ( dist_squared < 160000 || dist_squared > 1322500 )
{
canuse = 0;
}
}
}
if ( canuse )
{
level.old_dog_spawn = dog_locs[ i ];
return dog_locs[ i ];
}
}
}
return dog_locs[ 0 ];
}
bank_teller_init() //checked matches cerberus output
{
playfx( level._effect[ "fx_zmb_tranzit_key_glint" ], ( 760, 461, -30 ), vectorScale( ( 0, -1, 0 ), 90 ) );
playfx( level._effect[ "fx_zmb_tranzit_key_glint" ], ( 760, 452, -30 ), vectorScale( ( 0, -1, 0 ), 90 ) );
}
player_name_fade_control() //checked partially changed to match cerberus output see info.md No. 2 used is_true instead
{
while ( 1 )
{
players = get_players();
foreach ( player in players )
{
if ( !isDefined( player.infog ) )
{
player.infog = 0;
player.old_infog = 0;
player.infogtimer = 0;
}
player.old_infog = player.infog;
infog = is_player_in_fog( player );
if ( infog )
{
player.infogtimer++;
}
player.infog = infog;
if ( player.infog != player.old_infog && !is_true( player.isonbus ) )
{
if ( infog )
{
if ( player.infogtimer < 5 )
{
}
else
{
line = "in_fog";
}
}
else
{
if ( player.infogtimer < 15 )
{
}
else
{
line = "out_of_fog";
player.infogtimer = 0;
}
if ( maps/mp/zombies/_zm_audio::get_response_chance( line ) > randomint( 100 ) && !isDefined( player.screecher ) )
{
player thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", line );
}
}
if ( isDefined( level.set_player_in_fog ) )
{
player thread [[ level.set_player_in_fog ]]( infog );
}
}
}
wait 1;
}
}
is_player_in_fog( player ) //checked matches cerberus output used is_true instead
{
if ( player_entered_safety_zone( player ) )
{
return 0;
}
if ( player_entered_safety_light( player ) )
{
return 0;
}
curr_zone = player get_current_zone( 1 );
if ( isDefined( curr_zone ) && !is_true( curr_zone.screecher_zone ) )
{
return 0;
}
return 1;
}
add_transit_response_chance() //checked matches cerberus output
{
add_vox_response_chance( "in_fog", 100 );
add_vox_response_chance( "out_of_fog", 65 );
add_vox_response_chance( "killed_screecher", 20 );
add_vox_response_chance( "screecher_attack", 5 );
add_vox_response_chance( "screecher_flee", 50 );
add_vox_response_chance( "screecher_cut", 15 );
add_vox_response_chance( "screecher_flee_green", 75 );
add_vox_response_chance( "crawl_spawn", 10 );
add_vox_response_chance( "screecher_jumpoff", 50 );
add_vox_response_chance( "reboard", 5 );
add_vox_response_chance( "jetgun_kill", 10 );
add_vox_response_chance( "achievement", 100 );
add_vox_response_chance( "power_on", 100 );
add_vox_response_chance( "power_off", 100 );
add_vox_response_chance( "power_core", 100 );
add_vox_response_chance( "upgrade", 100 );
add_vox_response_chance( "build_pck_bshield", 45 );
add_vox_response_chance( "build_pck_bturret", 45 );
add_vox_response_chance( "build_pck_btrap", 45 );
add_vox_response_chance( "build_pck_bturbine", 45 );
add_vox_response_chance( "build_pck_bjetgun", 45 );
add_vox_response_chance( "build_pck_wshield", 45 );
add_vox_response_chance( "build_pck_wturret", 45 );
add_vox_response_chance( "build_pck_wtrap", 45 );
add_vox_response_chance( "build_pck_wturbine", 45 );
add_vox_response_chance( "build_pck_wjetgun", 45 );
add_vox_response_chance( "build_plc_shield", 45 );
add_vox_response_chance( "build_plc_turret", 45 );
add_vox_response_chance( "build_plc_trap", 45 );
add_vox_response_chance( "build_plc_turbine", 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_transit_player_dialogue() //checked matches cerberus output
{
level.vox zmbvoxadd( "player", "general", "in_fog", "map_in_fog", undefined );
level.vox zmbvoxadd( "player", "general", "out_of_fog", "map_out_fog", undefined );
level.vox zmbvoxadd( "player", "perk", "specialty_scavenger", "perk_tombstone", undefined );
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", "screecher_attack", "screecher_attack", "resp_screecher_attack" );
level.vox zmbvoxadd( "player", "general", "hr_resp_screecher_attack", "hr_resp_screecher_attack", undefined );
level.vox zmbvoxadd( "player", "general", "riv_resp_screecher_attack", "riv_resp_screecher_attack", undefined );
level.vox zmbvoxadd( "player", "general", "screecher_flee", "screecher_flee", undefined );
level.vox zmbvoxadd( "player", "general", "screecher_jumpoff", "screecher_off", undefined );
level.vox zmbvoxadd( "player", "general", "screecher_flee_green", "screecher_teleport", undefined );
level.vox zmbvoxadd( "player", "kill", "screecher", "kill_screecher", undefined );
level.vox zmbvoxadd( "player", "general", "screecher_cut", "screecher_cut", 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", "general", "build_pck_bshield", "build_pck_bshield", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_bturret", "build_pck_bturret", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_btrap", "build_pck_btrap", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_bturbine", "build_pck_bturbine", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_bjetgun", "build_pck_bjetgun", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_wshield", "build_pck_wshield", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_wturret", "build_pck_wturret", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_wtrap", "build_pck_wtrap", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_wturbine", "build_pck_wturbine", undefined );
level.vox zmbvoxadd( "player", "general", "build_pck_wjetgun", "build_pck_wjetgun", undefined );
level.vox zmbvoxadd( "player", "general", "build_plc_shield", "build_plc_shield", undefined );
level.vox zmbvoxadd( "player", "general", "build_plc_turret", "build_plc_turret", undefined );
level.vox zmbvoxadd( "player", "general", "build_plc_trap", "build_plc_trap", undefined );
level.vox zmbvoxadd( "player", "general", "build_plc_turbine", "build_plc_turbine", 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", "power", "power_core", "power_core", undefined );
level.vox zmbvoxadd( "player", "general", "reboard", "rebuild_boards", undefined );
level.vox zmbvoxadd( "player", "general", "upgrade", "find_secret", undefined );
level.vox zmbvoxadd( "player", "general", "map_out_bus", "map_out_bus", undefined );
level.vox zmbvoxadd( "player", "general", "map_out_tunnel", "map_out_tunnel", undefined );
level.vox zmbvoxadd( "player", "general", "map_out_diner", "map_out_diner", undefined );
level.vox zmbvoxadd( "player", "general", "map_out_1forest", "map_out_1forest", undefined );
level.vox zmbvoxadd( "player", "general", "map_out_farm", "map_out_farm", undefined );
level.vox zmbvoxadd( "player", "general", "map_out_corn", "map_out_corn", undefined );
level.vox zmbvoxadd( "player", "general", "map_out_power", "map_out_power", undefined );
level.vox zmbvoxadd( "player", "general", "map_out_2forest", "map_out_2forest", undefined );
level.vox zmbvoxadd( "player", "general", "map_out_town", "map_out_town", undefined );
level.vox zmbvoxadd( "player", "general", "map_out_bridge", "map_out_bridge", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_bus1", "map_in_bus1", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_tunnel1", "map_in_tunnel1", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_diner1", "map_in_diner1", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_1forest1", "map_in_1forest1", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_farm1", "map_in_farm1", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_corn1", "map_in_corn1", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_power1", "map_in_power1", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_2forest1", "map_in_2forest1", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_town1", "map_in_town1", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_bridge1", "map_in_bridge1", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_bus2", "map_in_bus2", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_tunnel2", "map_in_tunnel2", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_diner2", "map_in_diner2", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_1forest2", "map_in_1forest2", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_farm2", "map_in_farm2", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_corn2", "map_in_corn2", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_power2", "map_in_power2", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_2forest2", "map_in_2forest2", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_town2", "map_in_town2", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_bridge2", "map_in_bridge2", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_bus3", "map_in_bus3", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_tunnel3", "map_in_tunnel3", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_diner3", "map_in_diner3", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_1forest3", "map_in_1forest3", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_farm3", "map_in_farm3", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_corn3", "map_in_corn3", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_power3", "map_in_power3", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_2forest3", "map_in_2forest3", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_town3", "map_in_town3", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_bridge3", "map_in_bridge3", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_bus4", "map_in_bus4", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_tunnel4", "map_in_tunnel4", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_diner4", "map_in_diner4", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_1forest4", "map_in_1forest4", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_farm4", "map_in_farm4", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_corn4", "map_in_corn4", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_power4", "map_in_power4", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_2forest4", "map_in_2forest4", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_town4", "map_in_town4", undefined );
level.vox zmbvoxadd( "player", "general", "map_in_bridge4", "map_in_bridge4", undefined );
level.vox zmbvoxadd( "player", "general", "bus_zom_roof", "bus_zom_roof", undefined );
level.vox zmbvoxadd( "player", "general", "bus_zom_climb", "bus_zom_climb", undefined );
level.vox zmbvoxadd( "player", "general", "bus_zom_atk", "bus_zom_atk", undefined );
level.vox zmbvoxadd( "player", "general", "bus_zom_ent", "bus_zom_ent", undefined );
level.vox zmbvoxadd( "player", "general", "bus_zom_none", "bus_zom_none", undefined );
level.vox zmbvoxadd( "player", "general", "bus_zom_chase", "bus_zom_chase", undefined );
level.vox zmbvoxadd( "player", "general", "bus_stop", "bus_stop", undefined );
level.vox zmbvoxadd( "player", "general", "bus_ride", "bus_ride", undefined );
level.vox zmbvoxadd( "player", "general", "avogadro_reveal", "avogadro_reveal", undefined );
level.vox zmbvoxadd( "player", "general", "avogadro_above", "avogadro_above", undefined );
level.vox zmbvoxadd( "player", "general", "avogadro_storm", "avogadro_storm", undefined );
level.vox zmbvoxadd( "player", "general", "avogadro_arrive", "avogadro_arrive", undefined );
level.vox zmbvoxadd( "player", "general", "avogadro_attack", "avogadro_attack", "resp_avogadro_attack" );
level.vox zmbvoxadd( "player", "general", "hr_resp_avogadro_attack", "hr_resp_avogadro_attack", undefined );
level.vox zmbvoxadd( "player", "general", "riv_resp_avogadro_attack", "riv_resp_avogadro_attack", undefined );
level.vox zmbvoxadd( "player", "general", "avogadro_wound", "avogadro_wound", undefined );
level.vox zmbvoxadd( "player", "general", "avogadro_flee", "avogadro_flee", undefined );
level.vox zmbvoxadd( "player", "general", "avogadro_onbus", "avogadro_onbus", undefined );
level.vox zmbvoxadd( "player", "general", "avogadro_atkbus", "avogadro_atkbus", undefined );
level.vox zmbvoxadd( "player", "general", "avogadro_stopbus", "avogadro_stopbus", undefined );
level.vox zmbvoxadd( "player", "general", "exert_death", "exert_death_high", undefined );
level.vox zmbvoxadd( "player", "kill", "jetgun_kill", "kill_jet", 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 );
maps/mp/zombies/_zm_audio_announcer::createvox( "first_drop", "first_drop" );
level.station_pa_vox = [];
for ( i = 0; i < 10; i++ )
{
level.station_pa_vox[ i ] = "vox_stat_pa_generic_" + i;
}
level.survivor_vox = [];
for ( i = 0; i < 5; i++ )
{
level.survivor_vox[ i ] = "vox_radi_distress_message_" + i;
}
}
transit_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;
}
powerup_intro_vox( powerup ) //checked partially changed to match cerberus output see info.md No. 2
{
say_intro = 0;
players = get_players();
foreach ( player in players )
{
if ( player maps/mp/zombies/_zm_stats::get_global_stat( "POWERUP_INTRO_PLAYED" ) == 1 )
{
}
else
{
player maps/mp/zombies/_zm_stats::set_global_stat( "powerup_intro_played", 1 );
say_intro = 1;
}
}
level.powerup_intro_vox = undefined;
powerup_name = powerup.powerup_name;
powerup thread maps/mp/zombies/_zm_powerups::powerup_delete();
powerup notify( "powerup_grabbed" );
if ( !say_intro )
{
level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( powerup_name );
level.powerup_vo_available = undefined;
return;
}
flag_clear( "zombie_drop_powerups" );
level.powerup_intro = 1;
org = spawn( "script_origin", get_players()[ 0 ].origin );
org playsoundwithnotify( "vox_zmba_first_drop_0", "first_powerup_intro_done" );
org waittill( "first_powerup_intro_done" );
level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( powerup_name );
org delete();
flag_set( "zombie_drop_powerups" );
level.powerup_intro = 0;
level.powerup_vo_available = undefined;
}
powerup_vo_available() //checked matches cerberus output used is_true instead
{
wait 0.1;
if ( is_true( level.powerup_intro ) )
{
return 0;
}
return 1;
}
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 );
}
}
bank_pap_hint() //checked changed to match cerberus output
{
volume = getent( "zone_ban", "targetname" );
while ( 1 )
{
players = get_players();
foreach ( player in players )
{
if ( player istouching( volume ) && is_player_valid( player ) )
{
player thread do_player_general_vox( "general", "pap_hint", undefined, 100 );
return;
}
}
wait 10;
}
}
power_pap_hint() //checked changed to match cerberus output
{
trigs = getentarray( "local_electric_door", "script_noteworthy" );
lab_trig = undefined;
foreach ( trig in trigs )
{
if ( isDefined( trig.target ) && trig.target == "lab_secret_hatch" )
{
lab_trig = trig;
}
}
if ( !isDefined( lab_trig ) )
{
return;
}
while ( 1 )
{
lab_trig waittill( "trigger", who );
if ( isplayer( who ) && is_player_valid( who ) )
{
who thread do_player_general_vox( "general", "pap_hint", undefined, 100 );
return;
}
}
}
transit_buildable_vo_override( name, from_world ) //checked matches cerberus output used is_true instead
{
if ( is_true( level.power_cycled ) && name == "turbine" && !is_true( from_world ) && !flag( "power_on" ) )
{
level.maxis_turbine_pickedup_vox = 1;
level thread maps/mp/zm_transit_sq::maxissay( "vox_maxi_build_complete_0", ( -6848, 5056, 56 ) );
return 1;
}
return 0;
}
sndsetupmusiceasteregg() //checked changed to match cerberus output
{
origins = [];
origins[ 0 ] = ( -7562, 4570, -19 );
origins[ 1 ] = ( 7914, -6557, 269 );
origins[ 2 ] = ( 1864, -7, -19 );
level.meteor_counter = 0;
level.music_override = 0;
for ( i = 0; i < origins.size; i++ )
{
level thread sndmusicegg( origins[ i ] );
}
}
sndmusicegg( bear_origin ) //checked matches cerberus output
{
temp_ent = spawn( "script_origin", bear_origin );
temp_ent playloopsound( "zmb_meteor_loop" );
temp_ent thread maps/mp/zombies/_zm_sidequests::fake_use( "main_music_egg_hit", ::waitfor_override );
temp_ent waittill( "main_music_egg_hit", player );
temp_ent stoploopsound( 1 );
player playsound( "zmb_meteor_activate" );
level.meteor_counter += 1;
if ( level.meteor_counter == 3 )
{
level thread sndplaymusicegg( player, temp_ent );
}
else
{
wait 1.5;
temp_ent delete();
}
}
waitfor_override() //checked matches cerberus output used is_true instead
{
if ( is_true( level.music_override ) )
{
return 0;
}
return 1;
}
sndplaymusicegg( player, ent ) //checked matches cerberus output
{
wait 1;
ent playsound( "mus_zmb_secret_song" );
level waittill( "end_game" );
ent stopsounds();
wait 0.05;
ent delete();
}
sndtoiletflush() //checked matches cerberus output
{
toilettrig = spawn( "trigger_radius", ( 11182, 7584, -596 ), 0, 150, 5 );
toilettrig sethintstring( "" );
toilettrig setcursorhint( "HINT_NOICON" );
while ( 1 )
{
toilettrig waittill( "trigger", who );
if ( who is_player() )
{
toilettrig playsound( "zmb_toilet_flush" );
wait 5;
}
wait 0.1;
}
}
transit_special_weapon_magicbox_check( weapon ) //checked matches cerberus output used is_true instead
{
if ( is_true( level.raygun2_included ) )
{
if ( weapon == "ray_gun_zm" )
{
if ( self has_weapon_or_upgrade( "raygun_mark2_zm" ) || maps/mp/zombies/_zm_tombstone::is_weapon_available_in_tombstone( "raygun_mark2_zm", self ) )
{
return 0;
}
}
if ( weapon == "raygun_mark2_zm" )
{
if ( self has_weapon_or_upgrade( "ray_gun_zm" ) || maps/mp/zombies/_zm_tombstone::is_weapon_available_in_tombstone( "ray_gun_zm", self ) )
{
return 0;
}
if ( randomint( 100 ) >= 33 )
{
return 0;
}
}
}
return 1;
}