mirror of
https://github.com/JezuzLizard/Recompilable-gscs-for-BO2-zombies-and-multiplayer.git
synced 2025-06-29 03:57:51 -05:00
2518 lines
83 KiB
Plaintext
2518 lines
83 KiB
Plaintext
#include maps/mp/zm_buried;
|
|
#include maps/mp/zombies/_zm_equip_headchopper;
|
|
#include maps/mp/zombies/_zm_stats;
|
|
#include maps/mp/zombies/_zm_laststand;
|
|
#include maps/mp/zombies/_zm_ai_faller;
|
|
#include maps/mp/zombies/_zm_powerups;
|
|
#include maps/mp/zombies/_zm_buildables;
|
|
#include maps/mp/zombies/_zm_devgui;
|
|
#include maps/mp/zombies/_zm_pers_upgrades_functions;
|
|
#include maps/mp/zm_buried_classic;
|
|
#include maps/mp/zombies/_zm_zonemgr;
|
|
#include maps/mp/zombies/_zm_weap_time_bomb;
|
|
#include maps/mp/zm_buried_jail;
|
|
#include maps/mp/zombies/_zm_perk_vulture;
|
|
#include maps/mp/zombies/_zm_perk_divetonuke;
|
|
#include maps/mp/gametypes_zm/_spawning;
|
|
#include maps/mp/teams/_teamset_cdc;
|
|
#include maps/mp/animscripts/zm_death;
|
|
#include maps/mp/zm_buried_buildables;
|
|
#include maps/mp/zm_buried_ffotd;
|
|
#include maps/mp/zm_buried_distance_tracking;
|
|
#include maps/mp/zombies/_zm_weapons;
|
|
#include maps/mp/zombies/_zm_utility;
|
|
#include maps/mp/_utility;
|
|
#include common_scripts/utility;
|
|
|
|
gamemode_callback_setup()
|
|
{
|
|
maps/mp/zm_buried_gamemodes::init();
|
|
}
|
|
|
|
survival_init()
|
|
{
|
|
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;
|
|
zm_buried_common_init();
|
|
flag_wait( "start_zombie_round_logic" );
|
|
}
|
|
|
|
zstandard_preinit()
|
|
{
|
|
survival_init();
|
|
}
|
|
|
|
zcleansed_preinit()
|
|
{
|
|
level._zcleansed_weapon_progression = array( "judge_zm", "srm1216_zm", "hk416_zm", "qcw05_zm", "kard_zm" );
|
|
level.cymbal_monkey_clone_weapon = "srm1216_zm";
|
|
trig_removal = getentarray( "zombie_door", "targetname" );
|
|
_a52 = trig_removal;
|
|
_k52 = getFirstArrayKey( _a52 );
|
|
while ( isDefined( _k52 ) )
|
|
{
|
|
trig = _a52[ _k52 ];
|
|
if ( isDefined( trig.script_parameters ) && trig.script_parameters == "grief_remove" )
|
|
{
|
|
trig delete();
|
|
}
|
|
if ( isDefined( trig.script_parameters ) && trig.script_parameters == "zcleansed_remove" )
|
|
{
|
|
parts = getentarray( trig.target, "targetname" );
|
|
while ( isDefined( parts ) )
|
|
{
|
|
i = 0;
|
|
while ( i < parts.size )
|
|
{
|
|
parts[ i ] delete();
|
|
i++;
|
|
}
|
|
}
|
|
trig delete();
|
|
}
|
|
_k52 = getNextArrayKey( _a52, _k52 );
|
|
}
|
|
survival_init();
|
|
}
|
|
|
|
zgrief_preinit()
|
|
{
|
|
registerclientfield( "toplayer", "meat_stink", 1, 1, "int" );
|
|
zgrief_init();
|
|
}
|
|
|
|
zgrief_init()
|
|
{
|
|
encounter_init();
|
|
zm_buried_common_init();
|
|
flag_wait( "start_zombie_round_logic" );
|
|
trig_removal = getentarray( "zombie_door", "targetname" );
|
|
_a92 = trig_removal;
|
|
_k92 = getFirstArrayKey( _a92 );
|
|
while ( isDefined( _k92 ) )
|
|
{
|
|
trig = _a92[ _k92 ];
|
|
if ( isDefined( trig.script_parameters ) && trig.script_parameters == "grief_remove" )
|
|
{
|
|
trig delete();
|
|
}
|
|
_k92 = getNextArrayKey( _a92, _k92 );
|
|
}
|
|
}
|
|
|
|
encounter_init()
|
|
{
|
|
level.precachecustomcharacters = ::precache_team_characters;
|
|
level.givecustomcharacters = ::give_team_characters;
|
|
}
|
|
|
|
createfx_callback()
|
|
{
|
|
ents = getentarray();
|
|
i = 0;
|
|
while ( i < ents.size )
|
|
{
|
|
if ( ents[ i ].classname != "info_player_start" )
|
|
{
|
|
ents[ i ] delete();
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
|
|
zclassic_init()
|
|
{
|
|
level.precachecustomcharacters = ::precache_personality_characters;
|
|
level.givecustomcharacters = ::give_personality_characters;
|
|
level.setupcustomcharacterexerts = ::setup_personality_character_exerts;
|
|
level.check_valid_poi = ::check_valid_poi;
|
|
level.tear_into_position = ::tear_into_position;
|
|
level.tear_into_wait = ::tear_into_wait;
|
|
level.melee_miss_func = ::melee_miss_func;
|
|
precachemodel( "p6_zm_keycard" );
|
|
zm_buried_common_init();
|
|
level.banking_map = "zm_transit";
|
|
level.weapon_locker_map = "zm_transit";
|
|
level thread maps/mp/zombies/_zm_banking::init();
|
|
level.disable_free_perks_before_power = 1;
|
|
maps/mp/zm_buried_sq::sq_buried_clientfield_init();
|
|
flag_wait( "start_zombie_round_logic" );
|
|
level thread maps/mp/zombies/_zm_weapon_locker::main();
|
|
level thread maps/mp/zombies/_zm_banking::main();
|
|
level thread collapsing_catwalk_init();
|
|
level thread maps/mp/zm_buried_distance_tracking::zombie_tracking_init();
|
|
maps/mp/zombies/_zm_weapons::register_zombie_weapon_callback( "lsat_zm", ::player_give_lsat );
|
|
}
|
|
|
|
zclassic_preinit()
|
|
{
|
|
zclassic_init();
|
|
}
|
|
|
|
zmaxis_preinit()
|
|
{
|
|
zmaxis_init();
|
|
}
|
|
|
|
zmaxis_init()
|
|
{
|
|
encounter_init();
|
|
zm_buried_common_init();
|
|
flag_wait( "start_zombie_round_logic" );
|
|
}
|
|
|
|
zrichtofen_preinit()
|
|
{
|
|
zrichtofen_init();
|
|
}
|
|
|
|
zrichtofen_init()
|
|
{
|
|
encounter_init();
|
|
zm_buried_common_init();
|
|
flag_wait( "start_zombie_round_logic" );
|
|
}
|
|
|
|
zm_buried_common_init()
|
|
{
|
|
num_bits = 2;
|
|
registerclientfield( "world", "GENERATOR_POWER_STATES", 12000, num_bits, "int" );
|
|
registerclientfield( "world", "GENERATOR_POWER_STATES_COLOR", 12000, 1, "int" );
|
|
registerclientfield( "world", "GENERATOR_POWER_STATES_LERP", 12000, 5, "float" );
|
|
registerclientfield( "world", "cw_fall", 12000, 1, "int" );
|
|
registerclientfield( "world", "maze_fountain_start", 12000, 1, "int" );
|
|
registerclientfield( "world", "sloth_fountain_start", 12000, 1, "int" );
|
|
registerclientfield( "world", "mansion_piano_play", 12000, 1, "int" );
|
|
registerclientfield( "world", "saloon_piano_play", 12000, 1, "int" );
|
|
registerclientfield( "world", "mus_noir_snapshot_loop", 12000, 1, "int" );
|
|
registerclientfield( "world", "mus_zmb_egg_snapshot_loop", 12000, 1, "int" );
|
|
registerclientfield( "toplayer", "sndBackgroundMus", 12000, 3, "int" );
|
|
registerclientfield( "toplayer", "clientfield_underground_lighting", 12000, 1, "int" );
|
|
}
|
|
|
|
main()
|
|
{
|
|
maps/mp/zm_buried_fx::main();
|
|
level thread maps/mp/zm_buried_ffotd::main_start();
|
|
setdvarint( "sm_sunShadowSmallScriptPS3OnlyEnable", 1 );
|
|
level.disable_fx_zmb_wall_buy_semtex = 1;
|
|
level.disable_fx_zmb_tranzit_shield_explo = 1;
|
|
level.default_game_mode = "zclassic";
|
|
level.default_start_location = "processing";
|
|
setup_rex_starts();
|
|
level.disable_blackscreen_clientfield = 1;
|
|
level.disable_deadshot_clientfield = 1;
|
|
level.custom_zombie_player_loadout_init = 1;
|
|
maps/mp/zm_buried_buildables::prepare_chalk_weapon_list();
|
|
level.fx_exclude_edge_fog = 1;
|
|
level.fx_exclude_tesla_head_light = 1;
|
|
level.fx_exclude_default_explosion = 1;
|
|
level.fx_exclude_default_eye_glow = 1;
|
|
maps/mp/zombies/_zm::init_fx();
|
|
maps/mp/animscripts/zm_death::precache_gib_fx();
|
|
level.zombiemode = 1;
|
|
level._no_water_risers = 1;
|
|
level._foliage_risers = 1;
|
|
maps/mp/zm_buried_amb::main();
|
|
maps/mp/zombies/_zm_ai_ghost::precache_fx();
|
|
maps/mp/zombies/_zm_ai_sloth::precache();
|
|
maps/mp/zm_buried_sq::precache_sq();
|
|
level.level_specific_stats_init = ::init_buried_stats;
|
|
maps/mp/zombies/_load::main();
|
|
setdvar( "zombiemode_path_minz_bias", 13 );
|
|
if ( getDvar( "createfx" ) != "" )
|
|
{
|
|
return;
|
|
}
|
|
maps/mp/teams/_teamset_cdc::level_init();
|
|
maps/mp/gametypes_zm/_spawning::level_use_unified_spawning( 1 );
|
|
level.givecustomloadout = ::givecustomloadout;
|
|
level.custom_player_fake_death = ::zm_player_fake_death;
|
|
level.custom_player_fake_death_cleanup = ::zm_player_fake_death_cleanup;
|
|
level.initial_round_wait_func = ::initial_round_wait_func;
|
|
level.level_specific_init_powerups = ::add_buried_powerups;
|
|
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_revive_perk = 1;
|
|
level.zombiemode_using_sleightofhand_perk = 1;
|
|
level.zombiemode_using_additionalprimaryweapon_perk = 1;
|
|
level.zombiemode_using_marathon_perk = 1;
|
|
if ( is_gametype_active( "zclassic" ) )
|
|
{
|
|
maps/mp/zombies/_zm_perk_divetonuke::enable_divetonuke_perk_for_level();
|
|
maps/mp/zombies/_zm_perk_vulture::enable_vulture_perk_for_level();
|
|
}
|
|
maps/mp/zm_buried_jail::init_jail_animtree();
|
|
init_persistent_abilities();
|
|
level.register_offhand_weapons_for_level_defaults_override = ::offhand_weapon_overrride;
|
|
level.zombiemode_offhand_weapon_give_override = ::offhand_weapon_give_override;
|
|
level._zombie_custom_add_weapons = ::custom_add_weapons;
|
|
level._allow_melee_weapon_switching = 1;
|
|
if ( is_gametype_active( "zclassic" ) )
|
|
{
|
|
level.custom_ai_type = [];
|
|
level.custom_ai_type[ level.custom_ai_type.size ] = ::maps/mp/zombies/_zm_ai_ghost::init;
|
|
level.custom_ai_type[ level.custom_ai_type.size ] = ::maps/mp/zombies/_zm_ai_sloth::init;
|
|
level.sloth_enable = 1;
|
|
}
|
|
level._zmbvoxlevelspecific = ::init_level_specific_audio;
|
|
maps/mp/zm_buried_jail::init_jail();
|
|
include_weapons();
|
|
include_powerups();
|
|
include_equipment_for_level();
|
|
init_level_specific_wall_buy_fx();
|
|
registerclientfield( "world", "buried_sq_maxis_eye_glow_override", 12000, 1, "int" );
|
|
registerclientfield( "allplayers", "buried_sq_richtofen_player_eyes_stuhlinger", 12000, 1, "int" );
|
|
registerclientfield( "allplayers", "phd_flopper_effects", 12000, 1, "int" );
|
|
maps/mp/zombies/_zm::init();
|
|
if ( !sessionmodeisonlinegame() )
|
|
{
|
|
level.pers_nube_lose_round = 0;
|
|
}
|
|
maps/mp/zombies/_zm_weap_bowie::init();
|
|
maps/mp/zombies/_zm_weap_cymbal_monkey::init();
|
|
maps/mp/zombies/_zm_weap_claymore::init();
|
|
maps/mp/zombies/_zm_weap_ballistic_knife::init();
|
|
maps/mp/zombies/_zm_weap_slowgun::init();
|
|
level.slowgun_allow_player_paralyze = ::buried_paralyzer_check;
|
|
maps/mp/zombies/_zm_weap_tazer_knuckles::init();
|
|
if ( is_gametype_active( "zclassic" ) )
|
|
{
|
|
maps/mp/zombies/_zm_weap_time_bomb::init_time_bomb();
|
|
}
|
|
level maps/mp/zm_buried_achievement::init();
|
|
precacheitem( "death_throe_zm" );
|
|
if ( level.splitscreen && getDvarInt( "splitscreen_playerCount" ) > 2 )
|
|
{
|
|
level.optimise_for_splitscreen = 1;
|
|
}
|
|
else
|
|
{
|
|
level.optimise_for_splitscreen = 0;
|
|
}
|
|
maps/mp/zm_buried_maze::maze_precache();
|
|
maps/mp/zm_buried_maze::init();
|
|
if ( is_gametype_active( "zclassic" ) )
|
|
{
|
|
level thread maps/mp/zm_buried_sq::init();
|
|
}
|
|
level.zones = [];
|
|
level.zone_manager_init_func = ::buried_zone_init;
|
|
init_zones[ 0 ] = "zone_start";
|
|
init_zones[ 1 ] = "zone_tunnels_north";
|
|
init_zones[ 2 ] = "zone_tunnels_center";
|
|
init_zones[ 3 ] = "zone_tunnels_south";
|
|
init_zones[ 4 ] = "zone_stables";
|
|
init_zones[ 5 ] = "zone_street_darkeast";
|
|
init_zones[ 6 ] = "zone_street_darkwest";
|
|
init_zones[ 7 ] = "zone_street_lightwest";
|
|
init_zones[ 8 ] = "zone_street_lighteast";
|
|
init_zones[ 9 ] = "zone_underground_bar";
|
|
init_zones[ 10 ] = "zone_bank";
|
|
init_zones[ 11 ] = "zone_general_store";
|
|
init_zones[ 12 ] = "zone_candy_store";
|
|
init_zones[ 13 ] = "zone_candy_store_floor2";
|
|
init_zones[ 14 ] = "zone_toy_store";
|
|
init_zones[ 15 ] = "zone_gun_store";
|
|
init_zones[ 16 ] = "zone_underground_jail";
|
|
init_zones[ 17 ] = "zone_start_lower";
|
|
init_zones[ 18 ] = "zone_tunnels_south2";
|
|
init_zones[ 19 ] = "zone_tunnels_north2";
|
|
init_zones[ 20 ] = "zone_mansion";
|
|
init_zones[ 21 ] = "zone_mansion_lawn";
|
|
level thread maps/mp/zombies/_zm_zonemgr::manage_zones( init_zones );
|
|
if ( isDefined( level.optimise_for_splitscreen ) && level.optimise_for_splitscreen )
|
|
{
|
|
if ( is_classic() )
|
|
{
|
|
level.zombie_ai_limit = 20;
|
|
}
|
|
level.claymores_max_per_player /= 2;
|
|
setdvar( "fx_marks_draw", 0 );
|
|
setdvar( "disable_rope", 1 );
|
|
setdvar( "cg_disableplayernames", 1 );
|
|
setdvar( "disableLookAtEntityLogic", 1 );
|
|
}
|
|
else
|
|
{
|
|
level.zombie_ai_limit = 24;
|
|
}
|
|
level.speed_change_round = 15;
|
|
level.speed_change_max = 5;
|
|
level thread bell_watch();
|
|
trigs = getentarray( "force_from_prone", "targetname" );
|
|
array_thread( trigs, ::player_force_from_prone );
|
|
level thread maps/mp/zm_buried_classic::collapsing_holes_init();
|
|
if ( level.scr_zm_ui_gametype == "zcleansed" )
|
|
{
|
|
level thread init_turned_zones();
|
|
}
|
|
level.calc_closest_player_using_paths = 1;
|
|
level.validate_enemy_path_length = ::buried_validate_enemy_path_length;
|
|
level.customrandomweaponweights = ::buried_custom_weapon_weights;
|
|
level.special_weapon_magicbox_check = ::buried_special_weapon_magicbox_check;
|
|
if ( level.scr_zm_ui_gametype == "zclassic" )
|
|
{
|
|
level thread init_fountain_zone();
|
|
level thread maps/mp/zm_buried_classic::generator_oil_lamp_control();
|
|
level.ignore_equipment = ::ignore_equipment;
|
|
level.ghost_zone_teleport_logic = ::buried_ghost_zone_teleport_logic;
|
|
level.ghost_zone_fountain_teleport_logic = ::ghost_zone_fountain_teleport_logic;
|
|
maps/mp/zombies/_zm_perk_vulture::add_additional_stink_locations_for_zone( "zone_bank", array( "zone_street_darkwest", "zone_gun_store" ) );
|
|
level thread maps/mp/zombies/_zm::post_main();
|
|
}
|
|
/#
|
|
execdevgui( "devgui_zombie_buried" );
|
|
level.custom_devgui = ::zombie_buried_devgui;
|
|
#/
|
|
level thread maps/mp/zm_buried_ffotd::main_end();
|
|
}
|
|
|
|
buried_validate_enemy_path_length( player )
|
|
{
|
|
max_dist = 1296;
|
|
d = distancesquared( self.origin, player.origin );
|
|
if ( d <= max_dist )
|
|
{
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
init_persistent_abilities()
|
|
{
|
|
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_flopper = 1;
|
|
level.divetonuke_precache_override_func = ::maps/mp/zombies/_zm_pers_upgrades_functions::divetonuke_precache_override_func;
|
|
level.pers_flopper_divetonuke_func = ::maps/mp/zombies/_zm_pers_upgrades_functions::pers_flopper_explode;
|
|
level.pers_flopper_network_optimized = 1;
|
|
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_box_weapon = 1;
|
|
level.pers_magic_box_firesale = 1;
|
|
level.pers_treasure_chest_get_weapons_array_func = ::pers_treasure_chest_get_weapons_array_buried;
|
|
level.pers_upgrade_nube = 1;
|
|
}
|
|
}
|
|
|
|
pers_treasure_chest_get_weapons_array_buried()
|
|
{
|
|
if ( !isDefined( level.pers_box_weapons ) )
|
|
{
|
|
level.pers_box_weapons = [];
|
|
level.pers_box_weapons[ level.pers_box_weapons.size ] = "cymbal_monkey_zm";
|
|
level.pers_box_weapons[ level.pers_box_weapons.size ] = "ray_gun_zm";
|
|
level.pers_box_weapons[ level.pers_box_weapons.size ] = "raygun_mark2_zm";
|
|
level.pers_box_weapons[ level.pers_box_weapons.size ] = "slowgun_zm";
|
|
level.pers_box_weapons[ level.pers_box_weapons.size ] = "time_bomb_zm";
|
|
level.pers_box_weapons[ level.pers_box_weapons.size ] = "tar21_zm";
|
|
level.pers_box_weapons[ level.pers_box_weapons.size ] = "hamr_zm";
|
|
level.pers_box_weapons[ level.pers_box_weapons.size ] = "srm1216_zm";
|
|
level.pers_box_weapons[ level.pers_box_weapons.size ] = "knife_ballistic_zm";
|
|
level.pers_box_weapons[ level.pers_box_weapons.size ] = "galil_zm";
|
|
level.pers_box_weapons[ level.pers_box_weapons.size ] = "saiga12_zm";
|
|
}
|
|
}
|
|
|
|
buried_custom_weapon_weights( keys )
|
|
{
|
|
return keys;
|
|
}
|
|
|
|
buried_special_weapon_magicbox_check( weapon )
|
|
{
|
|
if ( weapon == "ray_gun_zm" )
|
|
{
|
|
if ( self has_weapon_or_upgrade( "raygun_mark2_zm" ) )
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
if ( weapon == "raygun_mark2_zm" )
|
|
{
|
|
if ( self has_weapon_or_upgrade( "ray_gun_zm" ) )
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
while ( weapon == "time_bomb_zm" )
|
|
{
|
|
players = get_players();
|
|
i = 0;
|
|
while ( i < players.size )
|
|
{
|
|
if ( is_player_valid( players[ i ], undefined, 1 ) && players[ i ] is_player_tactical_grenade( weapon ) )
|
|
{
|
|
return 0;
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
zombie_buried_devgui( cmd )
|
|
{
|
|
/#
|
|
cmd_strings = strtok( cmd, " " );
|
|
switch( cmd_strings[ 0 ] )
|
|
{
|
|
case "richtofen_street":
|
|
level notify( "richtofen_street" );
|
|
break;
|
|
case "maxis_street":
|
|
level notify( "maxis_street" );
|
|
break;
|
|
case "ghost_toggle_force_killable":
|
|
if ( !isDefined( level.ghost_force_killable ) )
|
|
{
|
|
level.ghost_force_killable = 1;
|
|
}
|
|
else
|
|
{
|
|
level.ghost_force_killable = !level.ghost_force_killable;
|
|
}
|
|
break;
|
|
case "ghost_toggle_debug":
|
|
if ( !isDefined( level.ghost_debug ) )
|
|
{
|
|
level.ghost_debug = 1;
|
|
}
|
|
else
|
|
{
|
|
level.ghost_debug = !level.ghost_debug;
|
|
}
|
|
break;
|
|
case "ghost_warp_to_mansion":
|
|
if ( isDefined( level.ghost_devgui_warp_to_mansion ) )
|
|
{
|
|
[[ level.ghost_devgui_warp_to_mansion ]]();
|
|
}
|
|
break;
|
|
case "ghost_toggle_no_ghost":
|
|
if ( isDefined( level.ghost_devgui_toggle_no_ghost ) )
|
|
{
|
|
[[ level.ghost_devgui_toggle_no_ghost ]]();
|
|
}
|
|
break;
|
|
case "spawn_vulture_stink":
|
|
if ( isDefined( level.vulture_devgui_spawn_stink ) )
|
|
{
|
|
[[ level.vulture_devgui_spawn_stink ]]();
|
|
}
|
|
break;
|
|
case "sloth_double_wide":
|
|
if ( isDefined( level.sloth_devgui_double_wide ) )
|
|
{
|
|
[[ level.sloth_devgui_double_wide ]]();
|
|
}
|
|
break;
|
|
case "sloth_destroy_barricade":
|
|
if ( isDefined( level.sloth_devgui_barricade ) )
|
|
{
|
|
[[ level.sloth_devgui_barricade ]]();
|
|
}
|
|
break;
|
|
case "sloth_toggle_doors":
|
|
if ( !isDefined( level.sloth_debug_doors ) )
|
|
{
|
|
level.sloth_debug_doors = 1;
|
|
}
|
|
else
|
|
{
|
|
level.sloth_debug_doors = !level.sloth_debug_doors;
|
|
}
|
|
break;
|
|
case "sloth_toggle_buildables":
|
|
if ( !isDefined( level.sloth_debug_buildables ) )
|
|
{
|
|
level.sloth_debug_buildables = 1;
|
|
}
|
|
else
|
|
{
|
|
level.sloth_debug_buildables = !level.sloth_debug_buildables;
|
|
}
|
|
break;
|
|
case "sloth_move_lamp":
|
|
if ( isDefined( level.sloth_devgui_move_lamp ) )
|
|
{
|
|
[[ level.sloth_devgui_move_lamp ]]();
|
|
}
|
|
break;
|
|
case "sloth_make_crawler":
|
|
if ( isDefined( level.sloth_devgui_make_crawler ) )
|
|
{
|
|
[[ level.sloth_devgui_make_crawler ]]();
|
|
}
|
|
break;
|
|
case "sloth_teleport":
|
|
if ( isDefined( level.sloth_devgui_teleport ) )
|
|
{
|
|
[[ level.sloth_devgui_teleport ]]();
|
|
}
|
|
break;
|
|
case "sloth_drink_booze":
|
|
if ( isDefined( level.sloth_devgui_booze ) )
|
|
{
|
|
[[ level.sloth_devgui_booze ]]();
|
|
}
|
|
break;
|
|
case "sloth_eat_candy":
|
|
if ( isDefined( level.sloth_devgui_candy ) )
|
|
{
|
|
[[ level.sloth_devgui_candy ]]();
|
|
}
|
|
break;
|
|
case "sloth_context":
|
|
if ( isDefined( level.sloth_devgui_context ) )
|
|
{
|
|
[[ level.sloth_devgui_context ]]();
|
|
}
|
|
break;
|
|
case "sloth_warp_to_jail":
|
|
if ( isDefined( level.sloth_devgui_warp_to_jail ) )
|
|
{
|
|
[[ level.sloth_devgui_warp_to_jail ]]();
|
|
}
|
|
break;
|
|
case "lights_on":
|
|
level notify( "generator_lights_on" );
|
|
break;
|
|
case "sloth_open":
|
|
level notify( "open_sloth_barricades" );
|
|
level notify( "courtyard_fountain_open" );
|
|
break;
|
|
case "cell_open":
|
|
level notify( "cell_open" );
|
|
if ( isDefined( level.jail_open_door ) )
|
|
{
|
|
[[ level.jail_open_door ]]();
|
|
}
|
|
break;
|
|
case "cell_close":
|
|
level notify( "cell_close" );
|
|
if ( isDefined( level.jail_close_door ) )
|
|
{
|
|
[[ level.jail_close_door ]]();
|
|
}
|
|
break;
|
|
case "pick_up_keys":
|
|
thread pick_up( "keys_zm" );
|
|
break;
|
|
case "pick_up_candy":
|
|
if ( isDefined( level.jail_barricade_down ) && !level.jail_barricade_down )
|
|
{
|
|
level notify( "jail_barricade_down" );
|
|
wait 0,05;
|
|
}
|
|
thread pick_up( "candy" );
|
|
break;
|
|
case "pick_up_booze":
|
|
thread pick_up( "booze" );
|
|
break;
|
|
case "bell_ring":
|
|
players = get_players();
|
|
bells = getentarray( "church_bell", "targetname" );
|
|
bell_ring( players[ 0 ], bells[ 0 ] );
|
|
break;
|
|
case "destroy_sloth_fountain":
|
|
level notify( "courtyard_fountain_open" );
|
|
break;
|
|
case "destroy_maze_fountain":
|
|
level notify( "_destroy_maze_fountain" );
|
|
break;
|
|
case "warp_player_to_maze_fountain":
|
|
level notify( "warp_player_to_maze_fountain" );
|
|
break;
|
|
case "warp_player_to_courtyard_fountain":
|
|
level notify( "warp_player_to_courtyard_fountain" );
|
|
break;
|
|
case "blue_monkey":
|
|
case "green_ammo":
|
|
case "green_double":
|
|
case "green_insta":
|
|
case "green_monkey":
|
|
case "green_nuke":
|
|
case "red_ammo":
|
|
case "red_double":
|
|
case "red_nuke":
|
|
case "yellow_double":
|
|
case "yellow_nuke":
|
|
maps/mp/zombies/_zm_devgui::zombie_devgui_give_powerup( cmd_strings[ 0 ], 1 );
|
|
break;
|
|
case "slow_test":
|
|
maps/mp/zombies/_zm_weap_time_bomb::slow_all_actors();
|
|
thread maps/mp/zombies/_zm_weap_time_bomb::all_actors_resume_speed();
|
|
flag_set( "time_bomb_enemies_restored" );
|
|
case "catwalk_keep":
|
|
level notify( "catwalk_collapsed" );
|
|
break;
|
|
case "start_ghost_piano":
|
|
flag_set( "player_piano_song_active" );
|
|
level notify( "player_can_interact_with_ghost_piano_player" );
|
|
break;
|
|
case "ghost_piano_warp_to_mansion_piano":
|
|
level notify( "ghost_piano_warp_to_mansion_piano" );
|
|
break;
|
|
case "ghost_piano_warp_to_bar":
|
|
level notify( "ghost_piano_warp_to_bar" );
|
|
break;
|
|
default:
|
|
}
|
|
#/
|
|
}
|
|
}
|
|
}
|
|
|
|
pick_up( thing )
|
|
{
|
|
/#
|
|
players = get_players();
|
|
_a885 = players;
|
|
_k885 = getFirstArrayKey( _a885 );
|
|
while ( isDefined( _k885 ) )
|
|
{
|
|
player = _a885[ _k885 ];
|
|
if ( isDefined( player player_get_buildable_piece( 1 ) ) && player player_get_buildable_piece( 1 ).buildablename == thing )
|
|
{
|
|
}
|
|
else
|
|
{
|
|
candidate_list = [];
|
|
_a892 = level.zones;
|
|
_k892 = getFirstArrayKey( _a892 );
|
|
while ( isDefined( _k892 ) )
|
|
{
|
|
zone = _a892[ _k892 ];
|
|
if ( isDefined( zone.unitrigger_stubs ) )
|
|
{
|
|
candidate_list = arraycombine( candidate_list, zone.unitrigger_stubs, 1, 0 );
|
|
}
|
|
_k892 = getNextArrayKey( _a892, _k892 );
|
|
}
|
|
_a901 = candidate_list;
|
|
_k901 = getFirstArrayKey( _a901 );
|
|
while ( isDefined( _k901 ) )
|
|
{
|
|
stub = _a901[ _k901 ];
|
|
if ( isDefined( stub.piece ) && stub.piece.buildablename == thing )
|
|
{
|
|
player thread maps/mp/zombies/_zm_buildables::player_take_piece( stub.piece );
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
_k901 = getNextArrayKey( _a901, _k901 );
|
|
}
|
|
}
|
|
if ( isDefined( player player_get_buildable_piece( 1 ) ) && player player_get_buildable_piece( 1 ).buildablename == thing )
|
|
{
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
level notify( "player_purchase_" + thing );
|
|
}
|
|
}
|
|
_k885 = getNextArrayKey( _a885, _k885 );
|
|
#/
|
|
}
|
|
}
|
|
|
|
givecustomloadout( takeallweapons, alreadyspawned )
|
|
{
|
|
self giveweapon( "knife_zm" );
|
|
self give_start_weapon( 1 );
|
|
}
|
|
|
|
precache_team_characters()
|
|
{
|
|
precachemodel( "c_zom_player_cdc_dlc1_fb" );
|
|
precachemodel( "c_zom_hazmat_viewhands" );
|
|
precachemodel( "c_zom_player_cia_dlc1_fb" );
|
|
precachemodel( "c_zom_suit_viewhands" );
|
|
}
|
|
|
|
give_team_characters()
|
|
{
|
|
self detachall();
|
|
self set_player_is_female( 0 );
|
|
if ( !isDefined( self.characterindex ) )
|
|
{
|
|
self.characterindex = 1;
|
|
if ( self.team == "axis" )
|
|
{
|
|
self.characterindex = 0;
|
|
}
|
|
}
|
|
switch( self.characterindex )
|
|
{
|
|
case 0:
|
|
case 2:
|
|
self setmodel( "c_zom_player_cia_dlc1_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_dlc1_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 );
|
|
}
|
|
|
|
initcharacterstartindex()
|
|
{
|
|
level.characterstartindex = randomint( 4 );
|
|
}
|
|
|
|
precache_personality_characters()
|
|
{
|
|
character/c_transit_player_farmgirl::precache();
|
|
character/c_transit_player_oldman::precache();
|
|
character/c_transit_player_engineer::precache();
|
|
character/c_buried_player_reporter_dam::precache();
|
|
precachemodel( "c_zom_farmgirl_viewhands" );
|
|
precachemodel( "c_zom_oldman_viewhands" );
|
|
precachemodel( "c_zom_engineer_viewhands" );
|
|
precachemodel( "c_zom_reporter_viewhands" );
|
|
}
|
|
|
|
give_personality_characters()
|
|
{
|
|
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_buried_player_reporter_dam::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 thread set_exert_id();
|
|
}
|
|
|
|
set_exert_id()
|
|
{
|
|
self endon( "disconnect" );
|
|
wait_network_frame();
|
|
wait_network_frame();
|
|
self maps/mp/zombies/_zm_audio::setexertvoice( self.characterindex + 1 );
|
|
}
|
|
|
|
setup_personality_character_exerts()
|
|
{
|
|
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";
|
|
}
|
|
|
|
assign_lowest_unused_character_index()
|
|
{
|
|
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 )
|
|
{
|
|
_a1190 = players;
|
|
_k1190 = getFirstArrayKey( _a1190 );
|
|
while ( isDefined( _k1190 ) )
|
|
{
|
|
player = _a1190[ _k1190 ];
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
_k1190 = getNextArrayKey( _a1190, _k1190 );
|
|
}
|
|
}
|
|
else _a1216 = players;
|
|
_k1216 = getFirstArrayKey( _a1216 );
|
|
while ( isDefined( _k1216 ) )
|
|
{
|
|
player = _a1216[ _k1216 ];
|
|
if ( isDefined( player.characterindex ) )
|
|
{
|
|
arrayremovevalue( charindexarray, player.characterindex, 0 );
|
|
}
|
|
_k1216 = getNextArrayKey( _a1216, _k1216 );
|
|
}
|
|
if ( charindexarray.size > 0 )
|
|
{
|
|
return charindexarray[ 0 ];
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
zm_player_fake_death_cleanup()
|
|
{
|
|
if ( isDefined( self._fall_down_anchor ) )
|
|
{
|
|
self._fall_down_anchor delete();
|
|
self._fall_down_anchor = undefined;
|
|
}
|
|
}
|
|
|
|
zm_player_fake_death( vdir )
|
|
{
|
|
level notify( "fake_death" );
|
|
self notify( "fake_death" );
|
|
stance = self getstance();
|
|
self.ignoreme = 1;
|
|
self enableinvulnerability();
|
|
self takeallweapons();
|
|
if ( isDefined( self.insta_killed ) && self.insta_killed )
|
|
{
|
|
self maps/mp/zombies/_zm::player_fake_death();
|
|
self allowprone( 1 );
|
|
self allowcrouch( 0 );
|
|
self allowstand( 0 );
|
|
wait 0,25;
|
|
self freezecontrols( 1 );
|
|
}
|
|
else
|
|
{
|
|
self freezecontrols( 1 );
|
|
self thread fall_down( vdir, stance );
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
fall_down( vdir, stance )
|
|
{
|
|
self endon( "disconnect" );
|
|
level endon( "game_module_ended" );
|
|
self ghost();
|
|
origin = self.origin;
|
|
xyspeed = ( 0, 0, 0 );
|
|
angles = self getplayerangles();
|
|
angles = ( angles[ 0 ], angles[ 1 ], angles[ 2 ] + randomfloatrange( -5, 5 ) );
|
|
if ( isDefined( vdir ) && length( vdir ) > 0 )
|
|
{
|
|
xyspeedmag = 40 + randomint( 12 ) + randomint( 12 );
|
|
xyspeed = xyspeedmag * vectornormalize( ( vdir[ 0 ], vdir[ 1 ], 0 ) );
|
|
}
|
|
linker = spawn( "script_origin", ( 0, 0, 0 ) );
|
|
linker.origin = origin;
|
|
linker.angles = angles;
|
|
self._fall_down_anchor = linker;
|
|
self playerlinkto( linker );
|
|
self playsoundtoplayer( "zmb_player_death_fall", self );
|
|
falling = stance != "prone";
|
|
if ( falling )
|
|
{
|
|
origin = playerphysicstrace( origin, origin + xyspeed );
|
|
eye = self get_eye();
|
|
floor_height = ( 10 + origin[ 2 ] ) - eye[ 2 ];
|
|
origin += ( 0, 0, floor_height );
|
|
lerptime = 0,5;
|
|
linker moveto( origin, lerptime, lerptime );
|
|
linker rotateto( angles, lerptime, lerptime );
|
|
}
|
|
self freezecontrols( 1 );
|
|
if ( falling )
|
|
{
|
|
linker waittill( "movedone" );
|
|
}
|
|
self giveweapon( "death_throe_zm" );
|
|
self switchtoweapon( "death_throe_zm" );
|
|
if ( falling )
|
|
{
|
|
bounce = randomint( 4 ) + 8;
|
|
origin = ( origin + ( 0, 0, bounce ) ) - ( xyspeed * 0,1 );
|
|
lerptime = bounce / 50;
|
|
linker moveto( origin, lerptime, 0, lerptime );
|
|
linker waittill( "movedone" );
|
|
origin = ( origin + ( 0, 0, bounce * -1 ) ) + ( xyspeed * 0,1 );
|
|
lerptime /= 2;
|
|
linker moveto( origin, lerptime, lerptime );
|
|
linker waittill( "movedone" );
|
|
linker moveto( origin, 5, 0 );
|
|
}
|
|
wait 15;
|
|
linker delete();
|
|
}
|
|
|
|
initial_round_wait_func()
|
|
{
|
|
flag_wait( "initial_blackscreen_passed" );
|
|
}
|
|
|
|
offhand_weapon_overrride()
|
|
{
|
|
register_lethal_grenade_for_level( "frag_grenade_zm" );
|
|
level.zombie_lethal_grenade_player_init = "frag_grenade_zm";
|
|
register_tactical_grenade_for_level( "cymbal_monkey_zm" );
|
|
register_tactical_grenade_for_level( "emp_grenade_zm" );
|
|
register_placeable_mine_for_level( "claymore_zm" );
|
|
register_melee_weapon_for_level( "knife_zm" );
|
|
register_melee_weapon_for_level( "bowie_knife_zm" );
|
|
register_melee_weapon_for_level( "tazer_knuckles_zm" );
|
|
level.zombie_melee_weapon_player_init = "knife_zm";
|
|
register_equipment_for_level( "equip_turbine_zm" );
|
|
register_equipment_for_level( "equip_springpad_zm" );
|
|
register_equipment_for_level( "equip_subwoofer_zm" );
|
|
register_equipment_for_level( "equip_headchopper_zm" );
|
|
level.zombie_equipment_player_init = undefined;
|
|
}
|
|
|
|
offhand_weapon_give_override( str_weapon )
|
|
{
|
|
self endon( "death" );
|
|
if ( is_tactical_grenade( str_weapon ) && isDefined( self get_player_tactical_grenade() ) && !self is_player_tactical_grenade( str_weapon ) )
|
|
{
|
|
self setweaponammoclip( self get_player_tactical_grenade(), 0 );
|
|
self takeweapon( self get_player_tactical_grenade() );
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
init_buried_stats()
|
|
{
|
|
self maps/mp/zm_buried_sq::init_player_sidequest_stats();
|
|
self maps/mp/zm_buried_achievement::init_player_achievement_stats();
|
|
}
|
|
|
|
init_level_specific_wall_buy_fx()
|
|
{
|
|
level._effect[ "an94_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_an94" );
|
|
level._effect[ "pdw57_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_pdw57" );
|
|
level._effect[ "svu_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_svuas" );
|
|
level._effect[ "lsat_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_lsat" );
|
|
level._effect[ "tazer_knuckles_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_buried_buy_taseknuck" );
|
|
level._effect[ "tazer_knuckles_zm_chalk_fx" ] = loadfx( "maps/zombie/fx_zmb_buried_dyn_taseknuck" );
|
|
level._effect[ "870mcs_zm_chalk_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_dyn_870mcs" );
|
|
level._effect[ "ak74u_zm_chalk_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_dyn_ak74u" );
|
|
level._effect[ "an94_zm_chalk_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_dyn_an94" );
|
|
level._effect[ "pdw57_zm_chalk_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_dyn_pdw57" );
|
|
level._effect[ "svu_zm_chalk_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_dyn_svuas" );
|
|
}
|
|
|
|
custom_add_weapons()
|
|
{
|
|
gametype = getDvar( "ui_gametype" );
|
|
add_zombie_weapon( "m1911_zm", "m1911_upgraded_zm", &"ZOMBIE_WEAPON_M1911", 50, "", "", undefined );
|
|
add_zombie_weapon( "rnma_zm", "rnma_upgraded_zm", &"ZOMBIE_WEAPON_RNMA", 50, "pickup_six_shooter", "", 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( "pdw57_zm", "pdw57_upgraded_zm", &"ZOMBIE_WEAPON_PDW57", 1000, "smg", "", undefined );
|
|
if ( gametype == "zcleansed" )
|
|
{
|
|
add_zombie_weapon( "qcw05_zm", undefined, &"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_smr", "", undefined, 1 );
|
|
add_zombie_weapon( "m16_zm", "m16_gl_upgraded_zm", &"ZOMBIE_WEAPON_M16", 1200, "burstrifle", "", undefined );
|
|
add_zombie_weapon( "tar21_zm", "tar21_upgraded_zm", &"ZOMBIE_WEAPON_TAR21", 50, "wpck_mtar", "", undefined, 1 );
|
|
add_zombie_weapon( "galil_zm", "galil_upgraded_zm", &"ZOMBIE_WEAPON_GALIL", 50, "wpck_galil", "", undefined, 1 );
|
|
add_zombie_weapon( "fnfal_zm", "fnfal_upgraded_zm", &"ZOMBIE_WEAPON_FNFAL", 50, "wpck_fal", "", undefined, 1 );
|
|
add_zombie_weapon( "dsr50_zm", "dsr50_upgraded_zm", &"ZOMBIE_WEAPON_DR50", 50, "wpck_dsr50", "", undefined, 1 );
|
|
add_zombie_weapon( "barretm82_zm", "barretm82_upgraded_zm", &"ZOMBIE_WEAPON_BARRETM82", 50, "wpck_m82a1", "", undefined, 1 );
|
|
add_zombie_weapon( "svu_zm", "svu_upgraded_zm", &"ZOMBIE_WEAPON_SVU", 1000, "wpck_svuas", "", undefined, 1 );
|
|
add_zombie_weapon( "lsat_zm", "lsat_upgraded_zm", &"ZOMBIE_WEAPON_LSAT", 2000, "wpck_lsat", "", 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( "claymore_zm", undefined, &"ZOMBIE_WEAPON_CLAYMORE", 1000, "grenade", "", undefined );
|
|
add_zombie_weapon( "usrpg_zm", "usrpg_upgraded_zm", &"ZOMBIE_WEAPON_USRPG", 50, "wpck_rpg", "", undefined, 1 );
|
|
add_zombie_weapon( "m32_zm", "m32_upgraded_zm", &"ZOMBIE_WEAPON_M32", 50, "wpck_m32", "", undefined, 1 );
|
|
add_zombie_weapon( "an94_zm", "an94_upgraded_zm", &"ZOMBIE_WEAPON_AN94", 1200, "", "", undefined );
|
|
add_zombie_weapon( "cymbal_monkey_zm", undefined, &"ZOMBIE_WEAPON_SATCHEL_2000", 2000, "wpck_monkey", "", undefined, 1 );
|
|
add_zombie_weapon( "ray_gun_zm", "ray_gun_upgraded_zm", &"ZOMBIE_WEAPON_RAYGUN", 10000, "wpck_ray", "", undefined, 1 );
|
|
add_zombie_weapon( "raygun_mark2_zm", "raygun_mark2_upgraded_zm", &"ZOMBIE_WEAPON_RAYGUN_MARK2", 10000, "pickup_raymk2", "", undefined, 1 );
|
|
add_zombie_weapon( "knife_ballistic_zm", "knife_ballistic_upgraded_zm", &"ZOMBIE_WEAPON_KNIFE_BALLISTIC", 10, "wpck_knife", "", undefined, 1 );
|
|
add_zombie_weapon( "knife_ballistic_bowie_zm", "knife_ballistic_bowie_upgraded_zm", &"ZOMBIE_WEAPON_KNIFE_BALLISTIC", 10, "sickle", "", undefined, 1 );
|
|
add_zombie_weapon( "knife_ballistic_no_melee_zm", "knife_ballistic_no_melee_upgraded_zm", &"ZOMBIE_WEAPON_KNIFE_BALLISTIC", 10, "wpck_knife", "", undefined, 1 );
|
|
add_zombie_weapon( "tazer_knuckles_zm", undefined, &"ZOMBIE_WEAPON_TAZER_KNUCKLES", 100, "tazerknuckles", "", undefined );
|
|
add_zombie_weapon( "slowgun_zm", "slowgun_upgraded_zm", &"ZOMBIE_WEAPON_SLOWGUN", 10, "wpck_paralyzer", "", undefined, 1 );
|
|
}
|
|
|
|
less_than_normal()
|
|
{
|
|
return 0,5;
|
|
}
|
|
|
|
include_weapons()
|
|
{
|
|
gametype = getDvar( "ui_gametype" );
|
|
include_weapon( "knife_zm", 0 );
|
|
include_weapon( "frag_grenade_zm", 0 );
|
|
include_weapon( "claymore_zm", 0 );
|
|
include_weapon( "m1911_zm", 0 );
|
|
include_weapon( "m1911_upgraded_zm", 0 );
|
|
include_weapon( "rnma_zm" );
|
|
include_weapon( "rnma_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 );
|
|
if ( gametype == "zcleansed" )
|
|
{
|
|
include_weapon( "qcw05_zm" );
|
|
}
|
|
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( "tar21_zm" );
|
|
include_weapon( "tar21_upgraded_zm", 0 );
|
|
include_weapon( "galil_zm" );
|
|
include_weapon( "galil_upgraded_zm", 0 );
|
|
include_weapon( "fnfal_zm" );
|
|
include_weapon( "fnfal_upgraded_zm", 0 );
|
|
include_weapon( "dsr50_zm" );
|
|
include_weapon( "dsr50_upgraded_zm", 0 );
|
|
include_weapon( "barretm82_zm" );
|
|
include_weapon( "barretm82_upgraded_zm", 0 );
|
|
include_weapon( "svu_zm", 0 );
|
|
include_weapon( "svu_upgraded_zm", 0 );
|
|
include_weapon( "lsat_zm", 0 );
|
|
include_weapon( "lsat_upgraded_zm", 0 );
|
|
include_weapon( "hamr_zm" );
|
|
include_weapon( "hamr_upgraded_zm", 0 );
|
|
include_weapon( "pdw57_zm", 0 );
|
|
include_weapon( "pdw57_upgraded_zm", 0 );
|
|
include_weapon( "usrpg_zm" );
|
|
include_weapon( "usrpg_upgraded_zm", 0 );
|
|
include_weapon( "m32_zm" );
|
|
include_weapon( "m32_upgraded_zm", 0 );
|
|
include_weapon( "an94_zm", 0 );
|
|
include_weapon( "an94_upgraded_zm", 0 );
|
|
include_weapon( "cymbal_monkey_zm" );
|
|
include_weapon( "ray_gun_zm" );
|
|
include_weapon( "ray_gun_upgraded_zm", 0 );
|
|
include_weapon( "raygun_mark2_zm", 1 );
|
|
include_weapon( "raygun_mark2_upgraded_zm", 0 );
|
|
include_weapon( "slowgun_zm", 1 );
|
|
include_weapon( "slowgun_upgraded_zm", 0 );
|
|
include_weapon( "tazer_knuckles_zm", 0 );
|
|
include_weapon( "knife_ballistic_no_melee_zm", 0 );
|
|
include_weapon( "knife_ballistic_no_melee_upgraded_zm", 0 );
|
|
include_weapon( "knife_ballistic_zm" );
|
|
include_weapon( "knife_ballistic_upgraded_zm", 0 );
|
|
include_weapon( "knife_ballistic_bowie_zm", 0 );
|
|
include_weapon( "knife_ballistic_bowie_upgraded_zm", 0 );
|
|
level._uses_retrievable_ballisitic_knives = 1;
|
|
add_weapon_to_content( "raygun_mark2_zm", "dlc3" );
|
|
add_limited_weapon( "m1911_zm", 0 );
|
|
add_limited_weapon( "knife_ballistic_zm", 1 );
|
|
add_limited_weapon( "slowgun_zm", 1 );
|
|
add_limited_weapon( "slowgun_upgraded_zm", 1 );
|
|
add_limited_weapon( "ray_gun_zm", 4 );
|
|
add_limited_weapon( "ray_gun_upgraded_zm", 4 );
|
|
add_limited_weapon( "knife_ballistic_upgraded_zm", 0 );
|
|
add_limited_weapon( "knife_ballistic_no_melee_zm", 0 );
|
|
add_limited_weapon( "knife_ballistic_no_melee_upgraded_zm", 0 );
|
|
add_limited_weapon( "knife_ballistic_bowie_zm", 0 );
|
|
add_limited_weapon( "knife_ballistic_bowie_upgraded_zm", 0 );
|
|
add_limited_weapon( "raygun_mark2_zm", 4 );
|
|
add_limited_weapon( "raygun_mark2_upgraded_zm", 4 );
|
|
add_weapon_locker_mapping( "python_zm", "rnma_zm" );
|
|
add_weapon_locker_mapping( "qcw05_zm", "pdw57_zm" );
|
|
add_weapon_locker_mapping( "xm8_zm", "tar21_zm" );
|
|
add_weapon_locker_mapping( "type95_zm", "tar21_zm" );
|
|
add_weapon_locker_mapping( "rpd_zm", "galil_zm" );
|
|
add_weapon_locker_mapping( "python_upgraded_zm", "rnma_upgraded_zm" );
|
|
add_weapon_locker_mapping( "qcw05_upgraded_zm", "pdw57_upgraded_zm" );
|
|
add_weapon_locker_mapping( "xm8_upgraded_zm", "tar21_upgraded_zm" );
|
|
add_weapon_locker_mapping( "type95_upgraded_zm", "tar21_upgraded_zm" );
|
|
add_weapon_locker_mapping( "rpd_upgraded_zm", "galil_upgraded_zm" );
|
|
}
|
|
|
|
include_powerups()
|
|
{
|
|
include_powerup( "nuke" );
|
|
include_powerup( "insta_kill" );
|
|
include_powerup( "double_points" );
|
|
include_powerup( "full_ammo" );
|
|
include_powerup( "carpenter" );
|
|
include_powerup( "fire_sale" );
|
|
include_powerup( "teller_withdrawl" );
|
|
include_powerup( "free_perk" );
|
|
include_powerup( "insta_kill_ug" );
|
|
include_powerup( "random_weapon" );
|
|
}
|
|
|
|
add_buried_powerups()
|
|
{
|
|
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 );
|
|
}
|
|
|
|
zombie_init_done()
|
|
{
|
|
self.allowpain = 0;
|
|
self.zombie_path_bad = 0;
|
|
self thread maps/mp/zm_buried_distance_tracking::escaped_zombies_cleanup_init();
|
|
}
|
|
|
|
include_equipment_for_level()
|
|
{
|
|
level.equipment_subwoofer_needs_power = 1;
|
|
include_equipment( "equip_turbine_zm" );
|
|
include_equipment( "equip_springpad_zm" );
|
|
include_equipment( "equip_subwoofer_zm" );
|
|
include_equipment( "equip_headchopper_zm" );
|
|
level.equipment_planted = ::equipment_planted;
|
|
level.equipment_safe_to_drop = ::equipment_safe_to_drop;
|
|
}
|
|
|
|
setup_rex_starts()
|
|
{
|
|
add_gametype( "zclassic", ::dummy, "zclassic", ::dummy );
|
|
add_gametype( "zcleansed", ::dummy, "zcleansed", ::dummy );
|
|
add_gametype( "zgrief", ::dummy, "zgrief", ::dummy );
|
|
add_gameloc( "processing", ::dummy, "processing", ::dummy );
|
|
add_gameloc( "street", ::dummy, "street", ::dummy );
|
|
}
|
|
|
|
dummy()
|
|
{
|
|
}
|
|
|
|
buried_zone_init()
|
|
{
|
|
flag_init( "always_on" );
|
|
flag_set( "always_on" );
|
|
add_adjacent_zone( "zone_tunnels_center", "zone_tunnels_north", "always_on" );
|
|
add_adjacent_zone( "zone_tunnels_north", "zone_tunnels_north2", "tunnels2courthouse" );
|
|
add_adjacent_zone( "zone_tunnels_south", "zone_tunnels_south2", "tunnel2saloon" );
|
|
add_adjacent_zone( "zone_tunnels_south3", "zone_tunnels_south2", "always_on" );
|
|
add_adjacent_zone( "zone_tunnels_center", "zone_tunnels_south", "always_on" );
|
|
add_adjacent_zone( "zone_street_lightwest", "zone_general_store", "general_store_door1" );
|
|
add_adjacent_zone( "zone_street_lighteast", "zone_general_store", "always_on" );
|
|
add_adjacent_zone( "zone_street_darkwest", "zone_general_store", "general_store_door2" );
|
|
add_adjacent_zone( "zone_street_lightwest", "zone_morgue_upstairs", "always_on" );
|
|
add_adjacent_zone( "zone_street_fountain", "zone_mansion_lawn", "mansion_lawn_door1" );
|
|
add_adjacent_zone( "zone_street_darkwest", "zone_gun_store", "gun_store_door1" );
|
|
add_adjacent_zone( "zone_stables", "zone_street_lightwest", "always_on", 1 );
|
|
add_adjacent_zone( "zone_street_darkwest", "zone_street_darkwest_nook", "darkwest_nook_door1" );
|
|
add_adjacent_zone( "zone_street_darkwest", "zone_general_store", "general_store_door3" );
|
|
add_adjacent_zone( "zone_street_darkwest_nook", "zone_stables", "stables_door2" );
|
|
add_adjacent_zone( "zone_street_darkeast", "zone_underground_bar", "bar_door1" );
|
|
add_adjacent_zone( "zone_street_darkeast", "zone_street_darkeast_nook", "always_on" );
|
|
add_adjacent_zone( "zone_underground_courthouse2", "zone_underground_courthouse", "always_on" );
|
|
add_adjacent_zone( "zone_street_lighteast", "zone_underground_courthouse", "courthouse_door1" );
|
|
add_adjacent_zone( "zone_street_lightwest", "zone_underground_jail", "jail_door1" );
|
|
add_adjacent_zone( "zone_street_lightwest", "zone_street_lightwest_alley", "jail_jugg" );
|
|
add_adjacent_zone( "zone_underground_jail", "zone_underground_jail2", "always_on" );
|
|
add_adjacent_zone( "zone_underground_jail2", "zone_street_lightwest", "always_on" );
|
|
add_adjacent_zone( "zone_street_lighteast", "zone_candy_store", "candy_store_door1" );
|
|
add_adjacent_zone( "zone_candy_store", "zone_candy_store_floor2", "always_on" );
|
|
add_adjacent_zone( "zone_toy_store_floor2", "zone_candy_store_floor2", "always_on" );
|
|
add_adjacent_zone( "zone_toy_store", "zone_toy_store_floor2", "always_on" );
|
|
add_adjacent_zone( "zone_street_darkeast", "zone_toy_store_floor2", "always_on" );
|
|
add_adjacent_zone( "zone_street_darkeast", "zone_toy_store", "candy_store_door2" );
|
|
add_adjacent_zone( "zone_street_lighteast", "zone_candy_store_floor2", "candy2lighteast", 1 );
|
|
add_adjacent_zone( "zone_street_darkeast", "zone_candy_store_floor2", "always_on", 1 );
|
|
add_adjacent_zone( "zone_toy_store_tunnel", "zone_toy_store_floor2", "always_on", 1 );
|
|
add_adjacent_zone( "zone_street_lighteast", "zone_street_fountain", "always_on" );
|
|
add_adjacent_zone( "zone_street_fountain", "zone_church_graveyard", "always_on" );
|
|
add_adjacent_zone( "zone_church_graveyard", "zone_church_main", "church_door1" );
|
|
add_adjacent_zone( "zone_church_main", "zone_church_upstairs", "church_door1" );
|
|
add_adjacent_zone( "zone_gun_store", "zone_tunnel_gun2stables", "gunshop2tunnel" );
|
|
add_adjacent_zone( "zone_tunnel_gun2saloon", "zone_underground_bar", "always_on" );
|
|
add_adjacent_zone( "zone_maze", "zone_mansion_backyard", "mansion_door1", 1 );
|
|
add_adjacent_zone( "zone_maze", "zone_maze_staircase", "mansion_door1", 1 );
|
|
add_adjacent_zone( "zone_stables", "zone_tunnel_gun2stables2", "always_on" );
|
|
add_adjacent_zone( "zone_tunnel_gun2stables2", "zone_tunnel_gun2stables", "always_on" );
|
|
}
|
|
|
|
init_turned_zones()
|
|
{
|
|
a_zones = array( "zone_street_lighteast", "zone_street_lightwest", "zone_street_darkeast", "zone_street_darkwest", "zone_church_main", "zone_church_upstairs", "zone_mansion", "zone_candy_store", "zone_candy_store_floor2", "zone_underground_courthouse", "zone_underground_jail", "zone_underground_jail2", "zone_toy_store", "zone_toy_store_floor2", "zone_underground_bar", "zone_gun_store", "zone_stables", "zone_bank", "zone_general_store", "zone_morgue_upstairs" );
|
|
_a1796 = a_zones;
|
|
_k1796 = getFirstArrayKey( _a1796 );
|
|
while ( isDefined( _k1796 ) )
|
|
{
|
|
zone = _a1796[ _k1796 ];
|
|
zone_init( zone );
|
|
enable_zone( zone );
|
|
_k1796 = getNextArrayKey( _a1796, _k1796 );
|
|
}
|
|
}
|
|
|
|
init_fountain_zone()
|
|
{
|
|
flag_wait( "fountain_transport_active" );
|
|
if ( !isDefined( level.snd_ent ) )
|
|
{
|
|
level.snd_ent = spawn( "script_origin", ( 4918, 575, 11 ) );
|
|
level.snd_ent playloopsound( "amb_water_vortex", 1 );
|
|
}
|
|
zone_volumes = getentarray( "zone_start_lower", "targetname" );
|
|
_a1816 = zone_volumes;
|
|
_k1816 = getFirstArrayKey( _a1816 );
|
|
while ( isDefined( _k1816 ) )
|
|
{
|
|
zone = _a1816[ _k1816 ];
|
|
zone.script_noteworthy = "player_volume";
|
|
_k1816 = getNextArrayKey( _a1816, _k1816 );
|
|
}
|
|
}
|
|
|
|
buried_ghost_zone_teleport_logic()
|
|
{
|
|
if ( isDefined( level.zombie_ghost_round_states.is_teleporting ) && level.zombie_ghost_round_states.is_teleporting )
|
|
{
|
|
return;
|
|
}
|
|
if ( !isDefined( level.ghost_drop_down_locations ) || level.ghost_drop_down_locations.size < 1 )
|
|
{
|
|
return;
|
|
}
|
|
if ( !isDefined( level.zones[ "zone_start" ] ) || isDefined( level.zones[ "zone_start" ].is_occupied ) && level.zones[ "zone_start" ].is_occupied )
|
|
{
|
|
return;
|
|
}
|
|
if ( !isDefined( level.zones[ "zone_start_lower" ] ) || isDefined( level.zones[ "zone_start_lower" ].is_occupied ) && level.zones[ "zone_start_lower" ].is_occupied )
|
|
{
|
|
return;
|
|
}
|
|
teleport_location_index = 0;
|
|
axises = getaiarray( "axis" );
|
|
_a1847 = axises;
|
|
_k1847 = getFirstArrayKey( _a1847 );
|
|
while ( isDefined( _k1847 ) )
|
|
{
|
|
axis = _a1847[ _k1847 ];
|
|
if ( is_true( axis.is_ghost ) && axis maps/mp/zombies/_zm_ai_ghost::is_in_start_area() )
|
|
{
|
|
if ( teleport_location_index == level.ghost_drop_down_locations.size )
|
|
{
|
|
teleport_location_index = 0;
|
|
}
|
|
teleport_location_origin = level.ghost_drop_down_locations[ teleport_location_index ].origin;
|
|
teleport_location_angles = level.ghost_drop_down_locations[ teleport_location_index ].angles;
|
|
axis forceteleport( teleport_location_origin, teleport_location_angles );
|
|
teleport_location_index++;
|
|
}
|
|
_k1847 = getNextArrayKey( _a1847, _k1847 );
|
|
}
|
|
}
|
|
|
|
ghost_zone_fountain_teleport_logic()
|
|
{
|
|
if ( isDefined( level.zombie_ghost_round_states.is_teleporting ) && level.zombie_ghost_round_states.is_teleporting )
|
|
{
|
|
return;
|
|
}
|
|
if ( !isDefined( level.ghost_zone_start_lower_locations ) || level.ghost_zone_start_lower_locations.size < 1 )
|
|
{
|
|
return;
|
|
}
|
|
if ( !level.zones[ "zone_start_lower" ].is_occupied )
|
|
{
|
|
return;
|
|
}
|
|
teleport_location_index = 0;
|
|
axises = getaiarray( "axis" );
|
|
_a1888 = axises;
|
|
_k1888 = getFirstArrayKey( _a1888 );
|
|
while ( isDefined( _k1888 ) )
|
|
{
|
|
axis = _a1888[ _k1888 ];
|
|
if ( is_true( axis.is_ghost ) && !axis maps/mp/zombies/_zm_ai_ghost::is_in_start_area() )
|
|
{
|
|
if ( isDefined( axis.favoriteenemy ) && axis.favoriteenemy maps/mp/zombies/_zm_ai_ghost::is_in_start_area() )
|
|
{
|
|
if ( teleport_location_index == level.ghost_zone_start_lower_locations.size )
|
|
{
|
|
teleport_location_index = 0;
|
|
}
|
|
teleport_location_origin = level.ghost_zone_start_lower_locations[ teleport_location_index ].origin;
|
|
teleport_location_angles = level.ghost_zone_start_lower_locations[ teleport_location_index ].angles;
|
|
axis forceteleport( teleport_location_origin, teleport_location_angles );
|
|
teleport_location_index++;
|
|
}
|
|
}
|
|
_k1888 = getNextArrayKey( _a1888, _k1888 );
|
|
}
|
|
}
|
|
|
|
init_level_specific_audio()
|
|
{
|
|
level thread establish_mystery_wallbuy_categories();
|
|
level._audio_custom_response_line = ::buried_audio_custom_response_line;
|
|
level.oh_shit_vo_cooldown = 0;
|
|
level.snd_pers_upgrade_force_variant = 0;
|
|
level.pers_upgrade_vo_spoken = 1;
|
|
level.snd_pers_upgrade_force_type = "achievement";
|
|
level.custom_banking_vo = 1;
|
|
level.custom_buildable_need_part_vo = ::buried_custom_buildable_need_part_vo;
|
|
level.custom_buildable_wrong_part_vo = ::buried_custom_buildable_wrong_part_vo;
|
|
level.custom_bank_deposit_vo = ::buried_custom_bank_deposit_vo;
|
|
level.custom_bank_withdrawl_vo = ::buried_custom_bank_withdrawl_vo;
|
|
level.custom_faller_death = ::maps/mp/zombies/_zm_ai_faller::faller_death_ragdoll;
|
|
if ( is_classic() )
|
|
{
|
|
level.audio_get_mod_type = ::buried_audio_get_mod_type_override;
|
|
level.custom_kill_damaged_vo = ::maps/mp/zombies/_zm_audio::custom_kill_damaged_vo;
|
|
level.gib_on_damage = ::buried_custom_zombie_gibbed_vo;
|
|
level._audio_custom_weapon_check = ::buried_audio_custom_weapon_check;
|
|
level._custom_zombie_oh_shit_vox_func = ::buried_custom_zombie_oh_shit_vox;
|
|
level.custom_player_track_ammo_count = ::buried_player_track_ammo_count;
|
|
onplayerconnect_callback( ::zm_buried_buildable_pickedup_vo );
|
|
level thread ghost_steal_vo_watcher();
|
|
level thread ghost_damage_vo_watcher();
|
|
level thread sloth_first_encounter_vo();
|
|
level thread sloth_crawler_vo();
|
|
}
|
|
buried_add_player_dialogue( "player", "general", "no_money_weapon", "nomoney_generic", undefined );
|
|
buried_add_player_dialogue( "player", "general", "no_money_box", "nomoney_generic", undefined );
|
|
buried_add_player_dialogue( "player", "general", "perk_deny", "nomoney_generic", undefined );
|
|
buried_add_player_dialogue( "player", "kill", "closekill", "kill_close", undefined, 15 );
|
|
buried_add_player_dialogue( "player", "kill", "damage", "kill_damaged", undefined, 50 );
|
|
buried_add_player_dialogue( "player", "kill", "headshot", "kill_headshot", "resp_kill_headshot", 25 );
|
|
buried_add_player_dialogue( "player", "kill", "raymk2", "kill_raymk2", undefined, 15 );
|
|
buried_add_player_dialogue( "player", "kill", "paralyzer", "kill_paralyzer", undefined, 15 );
|
|
buried_add_player_dialogue( "player", "kill", "headchopper", "kill_headchopper", undefined, 15 );
|
|
buried_add_player_dialogue( "player", "kill", "subwoofer", "kill_subwoofer", undefined, 15 );
|
|
buried_add_player_dialogue( "player", "kill", "six_shooter", "kill_six_shooter", undefined, 15 );
|
|
buried_add_player_dialogue( "player", "perk", "specialty_armorvest", "perk_jugga", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "perk", "specialty_quickrevive", "perk_revive", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "perk", "specialty_fastreload", "perk_speed", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "perk", "specialty_rof", "perk_doubletap", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "perk", "specialty_longersprint", "perk_stamine", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "perk", "specialty_additionalprimaryweapon", "perk_mule", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "perk", "specialty_nomotionsensor", "perk_vulture", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "revive_up", "heal_revived", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "exert_sigh", "exert_sigh", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "exert_laugh", "exert_laugh", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "pain_high", "pain_high", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_pickup", "build_pickup", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_swap", "build_swap", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_add", "build_add", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_final", "build_final", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_wrong_part", "build_wrong_part", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_need_part", "build_need_part", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_hc_final", "build_hc_final", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_pck_bheadchopper_zm", "build_hc_take", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_plc_headchopper_zm", "build_hc_drop", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_pck_wheadchopper_zm", "build_hc_pickup", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_sw_final", "build_sw_final", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_pck_bsubwoofer_zm", "build_sw_take", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_plc_subwoofer_zm", "build_sw_drop", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_pck_wsubwoofer_zm", "build_sw_pickup", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_trb_final", "build_trb_final", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_pck_bturbine", "build_trb_take", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_plc_turbine", "build_trb_drop", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_pck_wturbine", "build_trb_pickup", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_stm_final", "build_stm_final", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_pck_bspringpad_zm", "build_stm_take", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_plc_springpad_zm", "build_stm_drop", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "build_pck_wspringpad_zm", "build_stm_pickup", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "gunshop_chalk_pickup", "gunshop_chalk", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "booze_pickup", "pickup_booze", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "candy_pickup", "pickup_candy", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "key_pickup", "pickup_key", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "first_bersek", "sloth_1st_bottle", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "sloth_generic_feed", "sloth_generic_feed", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "sloth_retreat_cell", "sloth_retreat_cell", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "sloth_clears_path", "sloth_clears_path", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "sloth_unlocked", "sloth_unlocked", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "sloth_run", "sloth_run", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "sloth_encounter", "sloth_encounter", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "sloth_crawler", "sloth_crawler", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "ghost_theft", "ghost_theft", undefined, 25 );
|
|
buried_add_player_dialogue( "player", "general", "ghost_damage", "ghost_damage", undefined, 25 );
|
|
buried_add_player_dialogue( "player", "general", "vulture_stink", "react_stink", "vulture_stink_react", 25 );
|
|
buried_add_player_dialogue( "player", "general", "vulture_stink_react", "response_stink", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "vulture_ammo_drop", "ammo_drop", undefined, 15 );
|
|
buried_add_player_dialogue( "player", "general", "vulture_money_drop", "money_drop", undefined, 15 );
|
|
buried_add_player_dialogue( "player", "general", "throw_bomb", "throw_bomb", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "activate_bomb", "activate_bomb", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "ammo_switch", "ammo_switch", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "power", "power_on", "power_on", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "reboard", "rebuild_boards", undefined, 50 );
|
|
buried_add_player_dialogue( "player", "general", "generic_wall_buy", "generic_wall_buy", undefined, 25 );
|
|
buried_add_player_dialogue( "player", "general", "favorite_wall_buy", "favorite_wall_buy", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "in_maze", "in_maze", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "game_start", "game_start", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "find_town", "find_town", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "stay_topside", "stay_topside", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "fall_down_hole", "fall_down_hole", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "fall_down_hole_response", "fall_response", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "pap_wait", "pap_wait", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "pap_arm", "pap_arm", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "pap_wait2", "pap_wait2", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "pap_arm2", "pap_arm2", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "weapon_storage", "weapon_storage", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "wall_withdrawl", "wall_withdrawl", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "bank_deposit", "bank_deposit", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "bank_withdrawl", "bank_withdrawl", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "achievement", "earn_acheivement", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "quest", "find_secret", "find_secret", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "upgrade", "find_secret", undefined, 100 );
|
|
buried_add_player_dialogue( "player", "general", "invisible_collision", "invisible_collision", undefined, 25 );
|
|
buried_add_player_dialogue( "player", "general", "stuhlinger_possessed", "stuhlinger_2nd_possession_1", undefined, 100 );
|
|
}
|
|
|
|
buried_add_player_dialogue( speaker, category, type, alias, response, chance )
|
|
{
|
|
level.vox zmbvoxadd( speaker, category, type, alias, response );
|
|
if ( isDefined( chance ) )
|
|
{
|
|
add_vox_response_chance( type, chance );
|
|
}
|
|
}
|
|
|
|
buried_audio_custom_response_line( player, index, category, type )
|
|
{
|
|
while ( type == "vulture_stink" )
|
|
{
|
|
a_players = getplayers();
|
|
arrayremovevalue( a_players, player );
|
|
while ( a_players.size > 0 )
|
|
{
|
|
a_closest = get_array_of_closest( player.origin, a_players );
|
|
i = 0;
|
|
while ( i < a_closest.size )
|
|
{
|
|
if ( isDefined( a_closest[ i ].dontspeak ) && !a_closest[ i ].dontspeak )
|
|
{
|
|
if ( isalive( a_closest[ i ] ) )
|
|
{
|
|
n_dist = distance2dsquared( player.origin, a_closest[ i ].origin );
|
|
if ( n_dist <= 250000 )
|
|
{
|
|
a_closest[ i ] thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "vulture_stink_react" );
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
}
|
|
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;
|
|
}
|
|
|
|
buried_audio_get_mod_type_override( impact, mod, weapon, zombie, instakill, dist, player )
|
|
{
|
|
close_dist = 4096;
|
|
med_dist = 15376;
|
|
far_dist = 75625;
|
|
a_str_mod = [];
|
|
if ( isDefined( zombie.damageweapon ) && zombie.damageweapon == "cymbal_monkey_zm" )
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "monkey";
|
|
}
|
|
if ( weapon == "slowgun_zm" || weapon == "slowgun_upgraded_zm" )
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "paralyzer";
|
|
}
|
|
if ( weapon == "rnma_zm" || weapon == "rnma_upgraded_zm" )
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "six_shooter";
|
|
}
|
|
if ( is_headshot( weapon, impact, mod ) && dist >= far_dist )
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "headshot";
|
|
}
|
|
if ( is_explosive_damage( mod ) && weapon != "ray_gun_zm" && weapon != "ray_gun_upgraded_zm" && weapon != "raygun_mark2_zm" && weapon != "raygun_mark2_upgraded_zm" && isDefined( zombie.is_on_fire ) && !zombie.is_on_fire )
|
|
{
|
|
if ( !isinarray( a_str_mod, "monkey" ) )
|
|
{
|
|
if ( !instakill )
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "explosive";
|
|
}
|
|
else
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "weapon_instakill";
|
|
}
|
|
}
|
|
}
|
|
if ( weapon == "ray_gun_zm" || weapon == "ray_gun_upgraded_zm" )
|
|
{
|
|
if ( !isinarray( a_str_mod, "monkey" ) )
|
|
{
|
|
if ( dist > far_dist )
|
|
{
|
|
if ( !instakill )
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "raygun";
|
|
}
|
|
else
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "weapon_instakill";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ( weapon == "raygun_mark2_zm" || weapon == "raygun_mark2_upgraded_zm" )
|
|
{
|
|
if ( !isinarray( a_str_mod, "monkey" ) )
|
|
{
|
|
if ( dist > far_dist )
|
|
{
|
|
if ( !instakill )
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "raymk2";
|
|
}
|
|
else
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "weapon_instakill";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ( instakill )
|
|
{
|
|
if ( mod == "MOD_MELEE" )
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "melee_instakill";
|
|
}
|
|
else
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "weapon_instakill";
|
|
}
|
|
}
|
|
if ( mod != "MOD_MELEE" && !zombie.has_legs )
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "crawler";
|
|
}
|
|
if ( mod != "MOD_BURNED" && dist < close_dist )
|
|
{
|
|
a_str_mod[ a_str_mod.size ] = "closekill";
|
|
}
|
|
if ( a_str_mod.size == 0 )
|
|
{
|
|
str_mod_final = "default";
|
|
}
|
|
else if ( a_str_mod.size == 1 )
|
|
{
|
|
str_mod_final = a_str_mod[ 0 ];
|
|
}
|
|
else
|
|
{
|
|
i = 0;
|
|
while ( i < a_str_mod.size )
|
|
{
|
|
if ( cointoss() )
|
|
{
|
|
str_mod_final = a_str_mod[ i ];
|
|
}
|
|
i++;
|
|
}
|
|
str_mod_final = a_str_mod[ randomint( a_str_mod.size ) ];
|
|
}
|
|
return str_mod_final;
|
|
}
|
|
|
|
buried_custom_zombie_gibbed_vo()
|
|
{
|
|
self endon( "death" );
|
|
if ( isDefined( self.a.gib_ref ) && isalive( self ) )
|
|
{
|
|
if ( self.a.gib_ref != "no_legs" || self.a.gib_ref == "right_leg" && self.a.gib_ref == "left_leg" )
|
|
{
|
|
if ( isDefined( self.attacker ) && isplayer( self.attacker ) )
|
|
{
|
|
if ( isDefined( self.attacker.crawler_created_vo_cooldown ) && self.attacker.crawler_created_vo_cooldown )
|
|
{
|
|
return;
|
|
}
|
|
rand = randomintrange( 0, 100 );
|
|
if ( rand < 15 )
|
|
{
|
|
self.attacker maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "crawl_spawn" );
|
|
self.attacker thread crawler_created_vo_cooldown();
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if ( isDefined( self.a.gib_ref ) || self.a.gib_ref == "right_arm" && self.a.gib_ref == "left_arm" )
|
|
{
|
|
if ( self.has_legs && isalive( self ) )
|
|
{
|
|
if ( isDefined( self.attacker ) && isplayer( self.attacker ) )
|
|
{
|
|
rand = randomintrange( 0, 100 );
|
|
if ( rand < 7 )
|
|
{
|
|
self.attacker create_and_play_dialog( "general", "shoot_arm" );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
crawler_created_vo_cooldown()
|
|
{
|
|
self endon( "disconnect" );
|
|
self.crawler_created_vo_cooldown = 1;
|
|
wait 30;
|
|
self.crawler_created_vo_cooldown = 0;
|
|
}
|
|
|
|
buried_audio_custom_weapon_check( weapon, magic_box )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
if ( isDefined( magic_box ) && magic_box )
|
|
{
|
|
type = self maps/mp/zombies/_zm_weapons::weapon_type_check( weapon );
|
|
return type;
|
|
}
|
|
if ( flag( "time_bomb_restore_active" ) )
|
|
{
|
|
return "crappy";
|
|
}
|
|
if ( issubstr( weapon, "upgraded" ) )
|
|
{
|
|
self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "wpck_pap" );
|
|
return "crappy";
|
|
}
|
|
else
|
|
{
|
|
if ( weapon == "ray_gun_zm" )
|
|
{
|
|
self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "weapon_pickup", "ray_gun_zm" );
|
|
return "crappy";
|
|
}
|
|
else
|
|
{
|
|
if ( weapon == "raygun_mark2_zm" )
|
|
{
|
|
self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "build_take_raygun" );
|
|
return "crappy";
|
|
}
|
|
else
|
|
{
|
|
while ( isDefined( self.favorite_wall_weapons_list ) )
|
|
{
|
|
_a2385 = self.favorite_wall_weapons_list;
|
|
_k2385 = getFirstArrayKey( _a2385 );
|
|
while ( isDefined( _k2385 ) )
|
|
{
|
|
fav_weapon = _a2385[ _k2385 ];
|
|
if ( weapon == fav_weapon )
|
|
{
|
|
self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "favorite_wall_buy" );
|
|
return "crappy";
|
|
}
|
|
_k2385 = getNextArrayKey( _a2385, _k2385 );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "generic_wall_buy" );
|
|
return "crappy";
|
|
}
|
|
|
|
buried_custom_zombie_oh_shit_vox()
|
|
{
|
|
self endon( "death_or_disconnect" );
|
|
while ( 1 )
|
|
{
|
|
wait 1;
|
|
if ( isDefined( self.oh_shit_vo_cooldown ) && self.oh_shit_vo_cooldown )
|
|
{
|
|
continue;
|
|
}
|
|
players = get_players();
|
|
zombs = get_round_enemy_array();
|
|
if ( players.size <= 1 )
|
|
{
|
|
n_cooldown_time = 20;
|
|
}
|
|
else
|
|
{
|
|
n_cooldown_time = 15;
|
|
}
|
|
n_distance_sq = 62500;
|
|
n_zombies = 5;
|
|
n_chance = 30;
|
|
close_zombs = 0;
|
|
i = 0;
|
|
while ( i < zombs.size )
|
|
{
|
|
if ( isDefined( zombs[ i ].favoriteenemy ) || zombs[ i ].favoriteenemy == self && !isDefined( zombs[ i ].favoriteenemy ) )
|
|
{
|
|
if ( distancesquared( zombs[ i ].origin, self.origin ) < n_distance_sq )
|
|
{
|
|
close_zombs++;
|
|
}
|
|
}
|
|
i++;
|
|
}
|
|
if ( close_zombs >= n_zombies )
|
|
{
|
|
if ( randomint( 100 ) < n_chance && isDefined( self.isonbus ) && !self.isonbus )
|
|
{
|
|
self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "oh_shit" );
|
|
self thread global_oh_shit_cooldown_timer( n_cooldown_time );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
global_oh_shit_cooldown_timer( n_cooldown_time )
|
|
{
|
|
self endon( "disconnect" );
|
|
self.oh_shit_vo_cooldown = 1;
|
|
wait n_cooldown_time;
|
|
self.oh_shit_vo_cooldown = 0;
|
|
}
|
|
|
|
establish_mystery_wallbuy_categories()
|
|
{
|
|
level.good_mystery_wallbuy = [];
|
|
level.good_mystery_wallbuy[ 0 ] = "ak74u_zm";
|
|
level.good_mystery_wallbuy[ 1 ] = "pdw57_zm";
|
|
level.good_mystery_wallbuy[ 2 ] = "tazer_knuckles_zm";
|
|
level.bad_mystery_wallbuy = [];
|
|
level.bad_mystery_wallbuy[ 0 ] = "an94_zm";
|
|
level.bad_mystery_wallbuy[ 1 ] = "svu_zm";
|
|
level.bad_mystery_wallbuy[ 2 ] = "870mcs_zm";
|
|
}
|
|
|
|
buried_player_track_ammo_count()
|
|
{
|
|
self notify( "stop_ammo_tracking" );
|
|
self endon( "disconnect" );
|
|
self endon( "stop_ammo_tracking" );
|
|
ammolowcount = 0;
|
|
ammooutcount = 0;
|
|
while ( 1 )
|
|
{
|
|
wait 0,5;
|
|
weap = self getcurrentweapon();
|
|
while ( isDefined( weap ) || weap == "none" && !can_track_ammo( weap ) )
|
|
{
|
|
continue;
|
|
}
|
|
while ( self getammocount( weap ) > 5 || self maps/mp/zombies/_zm_laststand::player_is_in_laststand() )
|
|
{
|
|
ammooutcount = 0;
|
|
ammolowcount = 0;
|
|
}
|
|
if ( self getammocount( weap ) > 0 )
|
|
{
|
|
if ( ammolowcount < 1 )
|
|
{
|
|
self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "ammo_low" );
|
|
ammolowcount++;
|
|
}
|
|
}
|
|
else if ( ammooutcount < 1 )
|
|
{
|
|
a_weapons = self getweaponslistprimaries();
|
|
if ( a_weapons.size > 1 )
|
|
{
|
|
_a2523 = a_weapons;
|
|
_k2523 = getFirstArrayKey( _a2523 );
|
|
while ( isDefined( _k2523 ) )
|
|
{
|
|
weapon = _a2523[ _k2523 ];
|
|
if ( weapon == weap )
|
|
{
|
|
}
|
|
else if ( self getammocount( weapon ) > 0 )
|
|
{
|
|
self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "ammo_switch" );
|
|
self.ammo_switch_vo_played = 1;
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
_k2523 = getNextArrayKey( _a2523, _k2523 );
|
|
}
|
|
}
|
|
if ( isDefined( self.ammo_switch_vo_played ) && !self.ammo_switch_vo_played )
|
|
{
|
|
self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "ammo_out" );
|
|
ammooutcount++;
|
|
}
|
|
self.ammo_switch_vo_played = 0;
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "ammo_out" );
|
|
ammooutcount++;
|
|
}
|
|
}
|
|
wait 20;
|
|
}
|
|
}
|
|
|
|
zm_buried_buildable_pickedup_vo()
|
|
{
|
|
self.buildable_pickedup_timer = 0;
|
|
}
|
|
|
|
ghost_steal_vo_watcher()
|
|
{
|
|
while ( 1 )
|
|
{
|
|
level waittill( "ghost_drained_player", player );
|
|
chance = get_response_chance( "ghost_theft" );
|
|
if ( chance > randomintrange( 1, 100 ) )
|
|
{
|
|
player thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "ghost_theft" );
|
|
}
|
|
}
|
|
}
|
|
|
|
ghost_damage_vo_watcher()
|
|
{
|
|
while ( 1 )
|
|
{
|
|
level waittill( "ghost_damaged_player", player );
|
|
chance = get_response_chance( "ghost_damage" );
|
|
if ( chance > randomintrange( 1, 100 ) )
|
|
{
|
|
player thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "ghost_damage" );
|
|
}
|
|
}
|
|
}
|
|
|
|
buried_custom_buildable_need_part_vo()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
if ( isDefined( self.build_need_part_vo_cooldown ) && !self.build_need_part_vo_cooldown )
|
|
{
|
|
self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "build_need_part" );
|
|
self thread buildable_need_part_vo_cooldown();
|
|
}
|
|
}
|
|
|
|
buildable_need_part_vo_cooldown()
|
|
{
|
|
self endon( "disconnect" );
|
|
self.build_need_part_vo_cooldown = 1;
|
|
wait 60;
|
|
self.build_need_part_vo_cooldown = 0;
|
|
}
|
|
|
|
buried_custom_buildable_wrong_part_vo()
|
|
{
|
|
self endon( "death" );
|
|
self endon( "disconnect" );
|
|
if ( isDefined( self.build_wrong_part_vo_cooldown ) && !self.build_wrong_part_vo_cooldown )
|
|
{
|
|
self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "build_wrong_part" );
|
|
self thread buildable_wrong_part_vo_cooldown();
|
|
}
|
|
}
|
|
|
|
buildable_wrong_part_vo_cooldown()
|
|
{
|
|
self endon( "disconnect" );
|
|
self.build_wrong_part_vo_cooldown = 1;
|
|
wait 60;
|
|
self.build_wrong_part_vo_cooldown = 0;
|
|
}
|
|
|
|
buried_custom_bank_deposit_vo()
|
|
{
|
|
self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "bank_deposit" );
|
|
}
|
|
|
|
buried_custom_bank_withdrawl_vo()
|
|
{
|
|
self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "bank_withdrawl" );
|
|
}
|
|
|
|
sloth_first_encounter_vo()
|
|
{
|
|
trigger = getent( "sloth_first_encounter_trigger", "targetname" );
|
|
while ( 1 )
|
|
{
|
|
trigger waittill( "trigger", ent );
|
|
if ( isplayer( ent ) )
|
|
{
|
|
if ( ent is_player_looking_at( level.sloth.origin, 0,25, 0 ) )
|
|
{
|
|
ent thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "sloth_encounter" );
|
|
trigger delete();
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
wait 0,1;
|
|
}
|
|
}
|
|
}
|
|
|
|
sloth_crawler_vo()
|
|
{
|
|
while ( 1 )
|
|
{
|
|
while ( !isDefined( level.sloth ) )
|
|
{
|
|
wait 1;
|
|
}
|
|
while ( level.sloth is_jail_state() )
|
|
{
|
|
wait 1;
|
|
}
|
|
while ( level.sloth.state == "berserk" || level.sloth.state == "crash" )
|
|
{
|
|
wait 1;
|
|
}
|
|
while ( isDefined( level.sloth.carrying_crawler ) && level.sloth.carrying_crawler )
|
|
{
|
|
wait 1;
|
|
}
|
|
while ( isDefined( level.time_bomb_detonation_vo ) && level.time_bomb_detonation_vo )
|
|
{
|
|
wait 1;
|
|
}
|
|
zombies = get_round_enemy_array();
|
|
i = 0;
|
|
while ( i < zombies.size )
|
|
{
|
|
zombie = zombies[ i ];
|
|
while ( isDefined( zombie ) && isDefined( zombie.has_legs ) && !zombie.has_legs )
|
|
{
|
|
a_players = getplayers();
|
|
_a2714 = a_players;
|
|
_k2714 = getFirstArrayKey( _a2714 );
|
|
while ( isDefined( _k2714 ) )
|
|
{
|
|
player = _a2714[ _k2714 ];
|
|
if ( is_player_valid( player ) && isDefined( player.isspeaking ) && !player.isspeaking )
|
|
{
|
|
if ( player is_player_looking_at( zombie.origin, 0,25 ) )
|
|
{
|
|
if ( distancesquared( player.origin, level.sloth.origin ) < 9000000 )
|
|
{
|
|
player thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "sloth_crawler" );
|
|
wait 10;
|
|
}
|
|
}
|
|
}
|
|
_k2714 = getNextArrayKey( _a2714, _k2714 );
|
|
}
|
|
}
|
|
i++;
|
|
}
|
|
wait 1;
|
|
}
|
|
}
|
|
|
|
collapsing_catwalk_init()
|
|
{
|
|
level endon( "catwalk_collapsed" );
|
|
trig = getent( "start_platform_trig", "targetname" );
|
|
platform = getent( "start_platform", "targetname" );
|
|
while ( 1 )
|
|
{
|
|
trig waittill( "trigger", who );
|
|
if ( isplayer( who ) )
|
|
{
|
|
if ( isDefined( who.on_platform ) && !who.on_platform )
|
|
{
|
|
trig thread collapsing_platform_watcher( who, platform );
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
collapsing_platform_watcher( who, platform )
|
|
{
|
|
who.on_platform = 1;
|
|
timed_collapse = 0;
|
|
if ( isDefined( platform ) )
|
|
{
|
|
platform playsound( "zmb_catwalk_shake" );
|
|
}
|
|
jump_blocker_clip = getent( "start_platform_delayed_clip", "targetname" );
|
|
earthquake( 0,3, 3, who.origin, 128 );
|
|
level waittill_notify_or_timeout( "lsat_purchased", 2 );
|
|
if ( isDefined( who ) )
|
|
{
|
|
who notify( "platform_collapse" );
|
|
who.on_platform = 0;
|
|
}
|
|
if ( isDefined( platform ) )
|
|
{
|
|
exploder( 410 );
|
|
platform notsolid();
|
|
level setclientfield( "cw_fall", 1 );
|
|
platform playsound( "zmb_catwalk_fall" );
|
|
if ( isDefined( platform.pieces ) )
|
|
{
|
|
array_thread( platform.pieces, ::self_delete );
|
|
}
|
|
if ( isDefined( platform ) )
|
|
{
|
|
platform delete();
|
|
}
|
|
}
|
|
wait 3;
|
|
level notify( "catwalk_collapsed" );
|
|
level.catwalk_collapsed = 1;
|
|
if ( isDefined( jump_blocker_clip ) )
|
|
{
|
|
jump_blocker_clip delete();
|
|
}
|
|
if ( isDefined( self ) )
|
|
{
|
|
self delete();
|
|
}
|
|
}
|
|
|
|
achievement_watcher_lsat_upgrade()
|
|
{
|
|
level endon( "end_game" );
|
|
self endon( "disconnect" );
|
|
self waittill( "pap_taken" );
|
|
self notify( "player_upgraded_lsat_from_wall" );
|
|
}
|
|
|
|
player_give_lsat()
|
|
{
|
|
level notify( "lsat_purchased" );
|
|
if ( isDefined( level.catwalk_collapsed ) && !level.catwalk_collapsed )
|
|
{
|
|
self maps/mp/zombies/_zm_stats::increment_client_stat( "buried_lsat_purchased", 0 );
|
|
self maps/mp/zombies/_zm_stats::increment_player_stat( "buried_lsat_purchased" );
|
|
level.lsat_purchased = 1;
|
|
}
|
|
self thread achievement_watcher_lsat_upgrade();
|
|
self giveweapon( "lsat_zm" );
|
|
maps/mp/zombies/_zm_weapons::acquire_weapon_toggle( "lsat_zm", self );
|
|
self givestartammo( "lsat_zm" );
|
|
self switchtoweapon( "lsat_zm" );
|
|
}
|
|
|
|
bell_watch()
|
|
{
|
|
bells = getentarray( "church_bell", "targetname" );
|
|
array_thread( bells, ::bell_watch_ring );
|
|
}
|
|
|
|
bell_watch_ring()
|
|
{
|
|
self endon( "delete" );
|
|
self setcandamage( 1 );
|
|
while ( 1 )
|
|
{
|
|
self waittill( "damage", amount, attacker, direction, point, mod, tagname, modelname, partname, weaponname );
|
|
bell_ring( attacker, self );
|
|
}
|
|
}
|
|
|
|
bell_ring( player, bell )
|
|
{
|
|
level notify( "bell_rung" );
|
|
/#
|
|
#/
|
|
bell playsound( "amb_church_bell" );
|
|
}
|
|
|
|
player_force_from_prone()
|
|
{
|
|
level endon( "intermission" );
|
|
level endon( "end_game" );
|
|
while ( 1 )
|
|
{
|
|
self waittill( "trigger", who );
|
|
if ( isplayer( who ) && who getstance() == "prone" )
|
|
{
|
|
who setstance( "crouch" );
|
|
}
|
|
wait 0,1;
|
|
}
|
|
}
|
|
|
|
check_valid_poi( valid )
|
|
{
|
|
excludes = getentarray( "cymbal_monkey_exclude", "targetname" );
|
|
while ( isDefined( excludes ) )
|
|
{
|
|
_a2921 = excludes;
|
|
_k2921 = getFirstArrayKey( _a2921 );
|
|
while ( isDefined( _k2921 ) )
|
|
{
|
|
volume = _a2921[ _k2921 ];
|
|
if ( self istouching( volume ) )
|
|
{
|
|
return 0;
|
|
}
|
|
_k2921 = getNextArrayKey( _a2921, _k2921 );
|
|
}
|
|
}
|
|
if ( self maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_mansion" ) )
|
|
{
|
|
return 0;
|
|
}
|
|
return valid;
|
|
}
|
|
|
|
tear_into_position()
|
|
{
|
|
asd_name = "zm_zbarrier_board_tear_in";
|
|
substate_index = self.attacking_spot_index * 6;
|
|
anim_id = self getanimfromasd( asd_name, substate_index );
|
|
zbarrier = self.first_node.zbarrier;
|
|
start_org = getstartorigin( zbarrier.origin, zbarrier.angles, anim_id );
|
|
start_ang = getstartangles( zbarrier.origin, zbarrier.angles, anim_id );
|
|
self setgoalpos( start_org, start_ang );
|
|
self thread tear_into_facing( start_org, start_ang );
|
|
}
|
|
|
|
tear_into_facing( start_org, start_ang )
|
|
{
|
|
self endon( "death" );
|
|
facing_dist = 256;
|
|
while ( 1 )
|
|
{
|
|
dist = distancesquared( self.origin, start_org );
|
|
if ( dist < facing_dist )
|
|
{
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
wait 0,1;
|
|
}
|
|
}
|
|
self orientmode( "face angle", start_ang[ 1 ] );
|
|
}
|
|
|
|
tear_into_wait()
|
|
{
|
|
return;
|
|
}
|
|
|
|
melee_miss_func()
|
|
{
|
|
if ( isDefined( self.enemy ) )
|
|
{
|
|
if ( isDefined( level.sloth ) )
|
|
{
|
|
sloth_dist_sq = distancesquared( self.enemy.origin, level.sloth.origin );
|
|
if ( sloth_dist_sq < 225 )
|
|
{
|
|
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" );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
equipment_planted( weapon, equipname, groundfrom )
|
|
{
|
|
}
|
|
|
|
equipment_safe_to_drop( weapon )
|
|
{
|
|
if ( isDefined( weapon.model ) && issubstr( weapon.model, "chopper" ) )
|
|
{
|
|
if ( maps/mp/zombies/_zm_equip_headchopper::check_headchopper_in_bad_area( weapon.origin ) )
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
valid_location = check_point_in_enabled_zone( weapon.origin, undefined, undefined );
|
|
if ( isDefined( valid_location ) && !valid_location )
|
|
{
|
|
if ( weapon in_playable_area() )
|
|
{
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
ignore_equipment( zombie )
|
|
{
|
|
if ( isDefined( zombie.completed_emerging_into_playable_area ) && !zombie.completed_emerging_into_playable_area )
|
|
{
|
|
return 1;
|
|
}
|
|
if ( isDefined( zombie.is_ghost ) && zombie.is_ghost )
|
|
{
|
|
return 1;
|
|
}
|
|
if ( isDefined( zombie.is_sloth ) && zombie.is_sloth )
|
|
{
|
|
return 1;
|
|
}
|
|
if ( isDefined( self.equipname ) && self.equipname == "equip_headchopper_zm" )
|
|
{
|
|
if ( isDefined( self.headchopper_kills ) && self.headchopper_kills < 10 )
|
|
{
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
if ( isDefined( zombie.headchopper_last_damage_time ) )
|
|
{
|
|
currenttime = getTime();
|
|
if ( ( currenttime - zombie.headchopper_last_damage_time ) <= 2500 )
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
buried_paralyzer_check()
|
|
{
|
|
curr_zone = self get_current_zone();
|
|
if ( isDefined( curr_zone ) )
|
|
{
|
|
if ( curr_zone == "zone_mansion" )
|
|
{
|
|
return 0;
|
|
}
|
|
if ( curr_zone == "zone_start" && self.origin[ 2 ] < 1222 )
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
is_courthouse_open()
|
|
{
|
|
if ( flag( "courthouse_door1" ) )
|
|
{
|
|
return 1;
|
|
}
|
|
if ( flag( "tunnel2saloon" ) && flag( "tunnels2courthouse" ) )
|
|
{
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
is_tunnel_open()
|
|
{
|
|
if ( flag( "tunnel2saloon" ) )
|
|
{
|
|
return 1;
|
|
}
|
|
if ( flag( "tunnels2courthouse" ) && maps/mp/zm_buried::is_courthouse_open() )
|
|
{
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|