/******************************************************************* * Decompiled By: Bog * Decompiled File: maps/mp/_teleport.gsc * Game: Call of Duty: Advanced Warfare * Platform: PC * Function Count: 59 * Decompile Time: 890 ms * Timestamp: 10/27/2023 2:08:37 AM *******************************************************************/ //Function Number: 1 main() { thread main_thread(); } //Function Number: 2 main_thread() { var_00 = common_scripts\utility::getstructarray("teleport_world_origin","targetname"); var_01 = level.gametype; if(!var_00.size || !var_01 == "dom" || var_01 == "ctf" || var_01 == "hp" || var_01 == "ball") { return; } common_scripts\utility::flag_init("teleport_setup_complete"); level.teleport_minimaps = []; level.teleport_allowed = 1; level.teleport_to_offset = 0; level.teleport_to_nodes = 0; level.teleport_include_killsteaks = 0; level.teleport_include_players = 0; level.teleport_gamemode_func = undefined; level.teleport_pre_funcs = []; level.teleport_post_funcs = []; level.teleport_nodes_in_zone = []; level.teleport_pathnode_zones = []; level.teleport_onstartgametype = level.onstartgametype; level.onstartgametype = ::teleport_onstartgametype; level.teleportgetactivenodesfunc = ::teleport_get_active_nodes; level.teleportgetactivepathnodezonesfunc = ::teleport_get_active_pathnode_zones; } //Function Number: 3 teleport_init() { level.teleport_spawn_info = []; var_00 = common_scripts\utility::getstructarray("teleport_world_origin","targetname"); if(!var_00.size) { return; } level.teleport_zones = []; foreach(var_02 in var_00) { if(!isdefined(var_02.script_noteworthy)) { var_02.script_noteworthy = "zone_" + level.teleport_zones.size; } var_02.name = var_02.script_noteworthy; teleport_parse_zone_targets(var_02); level.teleport_nodes_in_zone[var_02.name] = []; level.teleport_pathnode_zones[var_02.name] = []; level.teleport_zones[var_02.script_noteworthy] = var_02; } var_04 = getallnodes(); foreach(var_06 in var_04) { var_02 = teleport_closest_zone(var_06.origin); level.teleport_nodes_in_zone[var_02.name][level.teleport_nodes_in_zone[var_02.name].size] = var_06; } for(var_08 = 0;var_08 < getzonecount();var_08++) { var_02 = teleport_closest_zone(getzoneorigin(var_08)); level.teleport_pathnode_zones[var_02.name][level.teleport_pathnode_zones[var_02.name].size] = var_08; } if(!isdefined(level.teleport_zone_current)) { if(isdefined(level.teleport_zones["start"])) { teleport_set_current_zone("start"); return; } foreach(var_0B, var_0A in level.teleport_zones) { teleport_set_current_zone(var_0B); break; } } } //Function Number: 4 teleport_onstartgametype() { teleport_init(); var_00 = undefined; var_01 = undefined; switch(level.gametype) { case "dom": break; case "ctf": break; case "hp": break; case "ball": break; default: break; } } //Function Number: 5 teleport_pre_onstartgamesr() { teleport_pre_onstartgamesd_and_sr(); } //Function Number: 6 teleport_pre_onstartgamesd() { teleport_pre_onstartgamesd_and_sr(); } //Function Number: 7 teleport_pre_onstartgamesd_and_sr() { foreach(var_01 in level.teleport_zones) { var_01.sd_triggers = []; var_01.sd_bombs = []; var_01.sd_bombzones = []; } var_03 = getentarray("sd_bomb_pickup_trig","targetname"); foreach(var_05 in var_03) { var_06 = teleport_closest_zone(var_05.origin); if(isdefined(var_06)) { var_06.sd_triggers[var_06.sd_triggers.size] = var_05; teleport_change_targetname(var_05,var_06.name); } } var_08 = getentarray("sd_bomb","targetname"); foreach(var_0A in var_08) { var_06 = teleport_closest_zone(var_0A.origin); if(isdefined(var_06)) { var_06.sd_bombs[var_06.sd_bombs.size] = var_0A; teleport_change_targetname(var_0A,var_06.name); } } var_0C = getentarray("bombzone","targetname"); foreach(var_0E in var_0C) { var_06 = teleport_closest_zone(var_0E.origin); if(isdefined(var_06)) { var_06.sd_bombzones[var_06.sd_bombzones.size] = var_0E; teleport_change_targetname(var_0E,var_06.name); } } var_10 = []; foreach(var_01 in level.teleport_zones) { if(var_01.sd_triggers.size && var_01.sd_triggers.size && var_01.sd_triggers.size) { var_10[var_10.size] = var_01.name; } } teleport_gamemode_disable_teleport(var_10); var_13 = level.teleport_zones[level.teleport_zone_current]; teleport_restore_targetname(var_13.sd_triggers); teleport_restore_targetname(var_13.sd_bombs); teleport_restore_targetname(var_13.sd_bombzones); } //Function Number: 8 teleport_onstartgamehorde() { foreach(var_01 in level.teleport_zones) { var_01.horde_drops = []; } var_03 = common_scripts\utility::getstructarray("horde_drop","targetname"); foreach(var_05 in var_03) { var_06 = teleport_closest_zone(var_05.origin); if(isdefined(var_06)) { var_06.horde_drops[var_06.horde_drops.size] = var_05; } } var_08 = []; foreach(var_01 in level.teleport_zones) { if(var_01.horde_drops.size) { var_08[var_08.size] = var_01.name; } } teleport_gamemode_disable_teleport(var_08); var_0B = level.teleport_zones[level.teleport_zone_current]; level.struct_class_names["targetname"]["horde_drop"] = var_0B.horde_drops; } //Function Number: 9 teleport_change_targetname(param_00,param_01) { if(!isarray(param_00)) { param_00 = [param_00]; } if(!isdefined(param_01)) { param_01 = "hide_from_getEnt"; } foreach(var_03 in param_00) { var_03.saved_targetname = var_03.targetname; var_03.targetname = var_03.targetname + "_" + param_01; } } //Function Number: 10 teleport_gamemode_disable_teleport(param_00) { if(!isdefined(param_00)) { param_00 = getarraykeys(level.teleport_zones); } var_01 = game["teleport_zone_dom"]; if(!isdefined(var_01)) { var_01 = common_scripts\utility::random(param_00); game["teleport_zone_dom"] = var_01; } teleport_to_zone(var_01,0); level.teleport_allowed = 0; } //Function Number: 11 teleport_restore_targetname(param_00) { if(!isarray(param_00)) { param_00 = [param_00]; } foreach(var_02 in param_00) { if(isdefined(var_02.saved_targetname)) { var_02.targetname = var_02.saved_targetname; } } } //Function Number: 12 teleport_onstartgamectf() { level.teleport_gamemode_func = ::teleport_onteleportctf; } //Function Number: 13 teleport_onstartgamehp() { if(!isdefined(level.number_of_hp_zones_pre_teleport)) { level.number_of_hp_zones_pre_teleport = 5; } level.pre_event_hp_zones = []; level.post_event_hp_zones = []; level.all_hp_zones = level.zones; foreach(var_01 in level.zones) { if(var_01.script_index > level.number_of_hp_zones_pre_teleport) { level.post_event_hp_zones[level.post_event_hp_zones.size] = var_01; continue; } level.pre_event_hp_zones[level.pre_event_hp_zones.size] = var_01; } level.zones = level.pre_event_hp_zones; level.teleport_gamemode_func = ::teleport_onteleporthp; } //Function Number: 14 teleport_onstartgameball() { level.teleport_gamemode_func = ::teleport_onteleportball; } //Function Number: 15 teleport_onstartgamedom() { foreach(var_01 in level.teleport_zones) { var_01.flags = []; var_01.domflags = []; } level.all_dom_flags = level.flags; foreach(var_04 in level.flags) { var_05 = teleport_closest_zone(var_04.origin); if(isdefined(var_05)) { var_04.teleport_zone = var_05.name; var_05.flags[var_05.flags.size] = var_04; var_05.domflags[var_05.domflags.size] = var_04.useobj; } } level.dom_flag_data = []; foreach(var_01 in level.teleport_zones) { foreach(var_09 in var_01.flags) { var_0A = spawnstruct(); var_0A.trigger_origin = var_09.origin; var_0A.visual_origin = var_09.useobj.visuals[0].origin; var_0A.baseeffectpos = var_09.useobj.baseeffectpos; var_0A.baseeffectforward = var_09.useobj.baseeffectforward; var_0A.baseeffectright = var_09.useobj.baseeffectright; var_0A.obj_origin = var_09.useobj.curorigin; var_0A.obj3d_origins = []; foreach(var_0C in level.teamnamelist) { var_0D = "objpoint_" + var_0C + "_" + var_09.useobj.entnum; var_0E = maps\mp\gametypes\_objpoints::getobjpointbyname(var_0D); if(isdefined(var_0E)) { var_0A.obj3d_origins[var_0C] = (var_0E.x,var_0E.y,var_0E.z); } } var_0D = "objpoint_mlg_" + var_09.useobj.entnum; var_0E = maps\mp\gametypes\_objpoints::getobjpointbyname(var_0D); if(isdefined(var_0E)) { var_0A.obj3d_origins["mlg"] = (var_0E.x,var_0E.y,var_0E.z); } level.dom_flag_data[var_01.name][var_09.useobj.label] = var_0A; } } level.flags = level.teleport_zones[level.teleport_zone_current].flags; level.domflags = level.teleport_zones[level.teleport_zone_current].domflags; foreach(var_01 in level.teleport_zones) { foreach(var_04 in var_01.flags) { if(var_01.name == level.teleport_zone_current) { continue; } var_04.useobj.visuals[0] delete(); var_04.useobj maps\mp\gametypes\_gameobjects::deleteuseobject(); } } level.teleport_gamemode_func = ::teleport_onteleportdom; teleport_onteleportdom(level.teleport_zone_current); level.teleport_dom_finished_initializing = 1; level thread teleport_dom_post_bot_cleanup(); } //Function Number: 16 teleport_dom_post_bot_cleanup() { while(!isdefined(level.bot_gametype_precaching_done)) { wait(0.05); } foreach(var_01 in level.teleport_zones) { foreach(var_03 in var_01.flags) { var_04 = level.dom_flag_data[var_01.name][var_03.useobj.label]; var_04.nodes = var_03.nodes; if(var_01.name != level.teleport_zone_current) { var_03 delete(); } } } } //Function Number: 17 teleport_onstartgameconf() { level.teleport_gamemode_func = ::teleport_onteleportconf; } //Function Number: 18 teleport_onteleportdom(param_00) { var_01 = level.teleport_zones[level.teleport_zone_current]; var_02 = level.teleport_zones[param_00]; if(param_00 == level.teleport_zone_current) { return; } foreach(var_04 in level.domflags) { var_04 maps\mp\gametypes\_gameobjects::setownerteam("neutral"); var_04 maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_captureneutral" + var_04.label); var_04 maps\mp\gametypes\_gameobjects::set3dicon("enemy","waypoint_captureneutral" + var_04.label); var_04 maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_captureneutral" + var_04.label); var_04 maps\mp\gametypes\_gameobjects::set3dicon("friendly","waypoint_captureneutral" + var_04.label); var_04 maps\mp\gametypes\_gameobjects::set2dicon("mlg","waypoint_esports_dom_white" + var_04.label); var_04 maps\mp\gametypes\_gameobjects::set3dicon("mlg","waypoint_esports_dom_white" + var_04.label); var_04.firstcapture = 1; } foreach(var_04 in level.flags) { var_07 = level.dom_flag_data[param_00][var_04.useobj.label]; var_04.origin = var_07.trigger_origin; var_04.useobj.visuals[0].origin = var_07.visual_origin; var_04.useobj.baseeffectpos = var_07.baseeffectpos; var_04.useobj.baseeffectforward = var_07.baseeffectforward; var_04.useobj maps\mp\gametypes\dom::updatevisuals(); var_04.teleport_zone = param_00; var_04.nodes = var_07.nodes; if(isdefined(var_04.useobj.objidallies)) { objective_position(var_04.useobj.objidallies,var_07.obj_origin); } if(isdefined(var_04.useobj.objidaxis)) { objective_position(var_04.useobj.objidaxis,var_07.obj_origin); } if(isdefined(var_04.useobj.objidmlgspectator)) { objective_position(var_04.useobj.objidmlgspectator,var_07.obj_origin); } foreach(var_09 in level.teamnamelist) { var_0A = "objpoint_" + var_09 + "_" + var_04.useobj.entnum; var_0B = maps\mp\gametypes\_objpoints::getobjpointbyname(var_0A); var_0B.x = var_07.obj3d_origins[var_09][0]; var_0B.y = var_07.obj3d_origins[var_09][1]; var_0B.z = var_07.obj3d_origins[var_09][2]; } var_0A = "objpoint_mlg_" + var_04.useobj.entnum; var_0B = maps\mp\gametypes\_objpoints::getobjpointbyname(var_0A); var_0B.x = var_07.obj3d_origins["mlg"][0]; var_0B.y = var_07.obj3d_origins["mlg"][1]; var_0B.z = var_07.obj3d_origins["mlg"][2]; } maps\mp\gametypes\dom::flagsetup(); foreach(var_0F in level.domflags) { var_10 = var_0F.label; foreach(var_12 in level.teleport_zones["start"].domflags) { if(var_12.label == var_10) { var_0F.levelflag = var_12.levelflag; } } } foreach(var_0F in level.flags) { var_10 = var_0F.label; foreach(var_17 in level.teleport_zones["start"].flags) { if(var_17.label == var_10) { var_0F.levelflag = var_17.levelflag; } } } } //Function Number: 19 teleport_get_matching_dom_flag(param_00,param_01) { foreach(var_03 in level.teleport_zones[param_01].flags) { if(param_00.useobj.label == var_03.useobj.label) { return var_03; } } return undefined; } //Function Number: 20 teleport_onteleportctf(param_00) { if(game["switchedsides"]) { level.ctf_second_zones["axis"] = getent("post_event_capzone_allies","targetname"); level.ctf_second_zones["allies"] = getent("post_event_capzone_axis","targetname"); } else { level.ctf_second_zones["allies"] = getent("post_event_capzone_allies","targetname"); level.ctf_second_zones["axis"] = getent("post_event_capzone_axis","targetname"); } var_01 = []; var_01["allies"] = level.capzones["allies"]; var_01["axis"] = level.capzones["axis"]; var_02["allies"] = level.teamflags["allies"]; var_02["axis"] = level.teamflags["axis"]; var_03["allies"] = level.ctf_second_zones["allies"].origin; var_03["axis"] = level.ctf_second_zones["axis"].origin; foreach(var_05 in var_01) { var_05 maps\mp\gametypes\_gameobjects::move_use_object(var_03[var_05.ownerteam],(0,0,85)); var_05.trigger common_scripts\utility::trigger_off(); } foreach(var_08 in level.teamflags) { var_08 maps\mp\gametypes\_gameobjects::move_use_object(var_03[var_08.ownerteam],(0,0,85)); if(isdefined(var_08.carrier)) { var_08 maps\mp\gametypes\_gameobjects::setvisibleteam("any"); var_08 maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconkill2d); var_08 maps\mp\gametypes\_gameobjects::set3dicon("friendly",level.iconkill3d); var_08 maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d); var_08 maps\mp\gametypes\_gameobjects::set3dicon("enemy",level.iconescort3d); level.capzones[var_08.ownerteam] maps\mp\gametypes\_gameobjects::allowuse("none"); level.capzones[var_08.ownerteam] maps\mp\gametypes\_gameobjects::setvisibleteam("friendly"); level.capzones[var_08.ownerteam] maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconwaitforflag2d); level.capzones[var_08.ownerteam] maps\mp\gametypes\_gameobjects::set3dicon("friendly",level.iconwaitforflag3d); if(var_08.ownerteam == "allies") { level.capzones[var_08.ownerteam] maps\mp\gametypes\_gameobjects::set2dicon("mlg",level.iconmissingblue); level.capzones[var_08.ownerteam] maps\mp\gametypes\_gameobjects::set3dicon("mlg",level.iconmissingblue); continue; } level.capzones[var_08.ownerteam] maps\mp\gametypes\_gameobjects::set2dicon("mlg",level.iconmissingred); level.capzones[var_08.ownerteam] maps\mp\gametypes\_gameobjects::set3dicon("mlg",level.iconmissingred); } } maps\mp\gametypes\ctf::capturezone_reset_base_effects(); maps\mp\gametypes\ctf::reassign_ctf_team_spawns(); foreach(var_05 in var_01) { var_05.trigger common_scripts\utility::trigger_on(); } } //Function Number: 21 teleport_onteleporthp(param_00) { level.zones = level.post_event_hp_zones; if(level.randomzonespawn == 0) { level.prevzoneindex = level.zones.size - 1; } else { level.zonespawnqueue = []; maps\mp\gametypes\hp::shufflezones(); } setomnvar("ui_hardpoint_timer",0); level notify("zone_moved"); } //Function Number: 22 teleport_onteleportball(param_00) { level.ball_starts_post_event = common_scripts\utility::getstructarray("ball_start_post_event","targetname"); if(game["switchedsides"]) { level.ball_goals_post_event["allies"] = common_scripts\utility::getstruct("ball_goal_axis_post_event","targetname"); level.ball_goals_post_event["axis"] = common_scripts\utility::getstruct("ball_goal_allies_post_event","targetname"); } else { level.ball_goals_post_event["axis"] = common_scripts\utility::getstruct("ball_goal_axis_post_event","targetname"); level.ball_goals_post_event["allies"] = common_scripts\utility::getstruct("ball_goal_allies_post_event","targetname"); } var_01 = []; var_01["allies"] = level.ball_goals["allies"]; var_01["axis"] = level.ball_goals["axis"]; var_02 = []; var_02["allies"] = level.ball_goals_post_event["allies"].origin; var_02["axis"] = level.ball_goals_post_event["axis"].origin; foreach(var_04 in var_01) { var_05 = (0,0,var_04.radius / 2 * 1.1); var_04.useobject maps\mp\gametypes\_gameobjects::move_use_object(var_02[var_04.team],var_05); var_04 maps\mp\gametypes\ball::ball_find_ground(); foreach(var_07 in level.players) { maps\mp\gametypes\ball::ball_goal_fx_for_player(var_07); } } bot_setup_ball_jump_nodes(); var_0A = getzonenearest(level.ball_goals["allies"].origin); if(isdefined(var_0A)) { botzonesetteam(var_0A,"allies"); } var_0A = getzonenearest(level.ball_goals["axis"].origin); if(isdefined(var_0A)) { botzonesetteam(var_0A,"axis"); } level.ball_starts = []; foreach(var_0C in level.ball_starts_post_event) { maps\mp\gametypes\ball::ball_add_start(var_0C.origin); } foreach(var_0F in level.balls) { var_10 = 0; foreach(var_07 in level.players) { if(isdefined(var_07.ball_carried) && var_07.ball_carried == var_0F) { var_10 = 1; break; } } if(var_10 != 1) { var_0F maps\mp\gametypes\ball::ball_return_home(); } } } //Function Number: 23 bot_setup_ball_jump_nodes() { var_00 = 400; wait(1); var_01 = 0; var_02 = 10; foreach(var_04 in level.ball_goals) { var_04.ball_jump_nodes = []; var_05 = getnodesinradius(var_04.origin,var_00,0); foreach(var_07 in var_05) { if(var_07.type == "End") { continue; } var_01++; if(bot_ball_origin_can_see_goal(var_07.origin,var_04,1)) { var_04.ball_jump_nodes[var_04.ball_jump_nodes.size] = var_07; } if(var_01 % var_02 == 0) { wait(0.05); } } var_09 = 999999999; foreach(var_07 in var_04.ball_jump_nodes) { var_0B = distance2dsquared(var_07.origin,var_04.origin); if(var_0B < var_09) { var_04.nearest_node = var_07; var_09 = var_0B; } } wait(0.05); } } //Function Number: 24 bot_ball_origin_can_see_goal(param_00,param_01,param_02) { var_03 = bot_ball_trace_to_origin(param_00,param_01.origin); if(isdefined(param_02) && param_02) { if(!var_03) { var_04 = param_01.origin - (0,0,param_01.radius * 0.5); var_03 = bot_ball_trace_to_origin(param_00,var_04); } if(!var_03) { var_04 = param_01.origin + (0,0,param_01.radius * 0.5); var_03 = bot_ball_trace_to_origin(param_00,var_04); } } return var_03; } //Function Number: 25 bot_ball_trace_to_origin(param_00,param_01) { if(isdefined(self) && isplayer(self) || isagent(self)) { var_02 = playerphysicstrace(param_00,param_01,self); } else { var_02 = playerphysicstrace(param_01,var_02); } return distancesquared(var_02,param_01) < 1; } //Function Number: 26 teleport_onteleportconf(param_00) { var_01 = get_teleport_delta(param_00); foreach(var_03 in level.dogtags) { var_04 = var_03.curorigin + var_01; var_05 = teleport_get_safe_node_near(var_04); if(isdefined(var_05)) { var_05.last_teleport_time = gettime(); var_06 = var_05.origin - var_03.curorigin; var_03.curorigin = var_03.curorigin + var_06; var_03.trigger.origin = var_03.trigger.origin + var_06; var_03.visuals[0].origin = var_03.visuals[0].origin + var_06; var_03.visuals[1].origin = var_03.visuals[1].origin + var_06; continue; } var_03 maps\mp\gametypes\conf::resettags(); } } //Function Number: 27 teleport_get_safe_node_near(param_00) { var_01 = gettime(); var_02 = getnodesinradiussorted(param_00,300,0,200,"Path"); for(var_03 = 0;var_03 < var_02.size;var_03++) { var_04 = var_02[var_03]; if(isdefined(var_04.last_teleport_time) && var_04.last_teleport_time == var_01) { continue; } return var_04; } return undefined; } //Function Number: 28 teleport_closest_zone(param_00) { var_01 = undefined; var_02 = undefined; foreach(var_04 in level.teleport_zones) { var_05 = distancesquared(var_04.origin,param_00); if(!isdefined(var_01) || var_05 < var_01) { var_01 = var_05; var_02 = var_04; } } return var_02; } //Function Number: 29 teleport_origin_use_nodes(param_00) { level.teleport_to_nodes = param_00; } //Function Number: 30 teleport_origin_use_offset(param_00) { level.teleport_to_offset = param_00; } //Function Number: 31 teleport_include_killstreaks(param_00) { level.teleport_include_killsteaks = param_00; } //Function Number: 32 teleport_set_minimap_for_zone(param_00,param_01) { level.teleport_minimaps[param_00] = param_01; } //Function Number: 33 teleport_set_pre_func(param_00,param_01) { level.teleport_pre_funcs[param_01] = param_00; } //Function Number: 34 teleport_set_post_func(param_00,param_01) { level.teleport_post_funcs[param_01] = param_00; } //Function Number: 35 teleport_parse_zone_targets(param_00) { if(isdefined(param_00.origins_pasrsed) && param_00.origins_pasrsed) { return; } param_00.teleport_origins = []; param_00.teleport_origins["none"] = []; param_00.teleport_origins["allies"] = []; param_00.teleport_origins["axis"] = []; var_01 = common_scripts\utility::getstructarray("teleport_zone_" + param_00.name,"targetname"); if(isdefined(param_00.target)) { var_02 = common_scripts\utility::getstructarray(param_00.target,"targetname"); var_01 = common_scripts\utility::array_combine(var_02,var_01); } var_03 = var_01; var_0D = getfirstarraykey(var_03); if(isdefined(var_0D)) { var_04 = var_03[var_0D]; if(!isdefined(var_04.script_noteworthy)) { var_04.script_noteworthy = "teleport_origin"; } switch(var_04.script_noteworthy) { case "teleport_origin": break; case "telport_origin_nodrop": break; default: break; } } } //Function Number: 36 teleport_set_current_zone(param_00) { level.teleport_zone_current = param_00; if(isdefined(level.teleport_minimaps[param_00])) { maps\mp\_compass::setupminimap(level.teleport_minimaps[param_00]); } } //Function Number: 37 teleport_filter_spawn_point(param_00,param_01) { if(!isdefined(param_01)) { param_01 = level.teleport_zone_current; } var_02 = []; foreach(var_04 in param_00) { if(!isdefined(var_04.teleport_label)) { var_04.teleport_label = "ent_" + var_04 getentitynumber(); } if(!isdefined(level.teleport_spawn_info[var_04.teleport_label])) { teleport_init_spawn_info(var_04); } if(level.teleport_spawn_info[var_04.teleport_label].zone == param_01) { var_02[var_02.size] = var_04; } } return var_02; } //Function Number: 38 teleport_init_spawn_info(param_00) { if(!isdefined(param_00.teleport_label)) { param_00.teleport_label = "ent_" + param_00 getentitynumber(); } if(isdefined(level.teleport_spawn_info[param_00.teleport_label])) { return; } var_01 = spawnstruct(); var_01.spawner = param_00; var_02 = undefined; foreach(var_04 in level.teleport_zones) { var_05 = distance(var_04.origin,param_00.origin); if(!isdefined(var_02) || var_05 < var_02) { var_02 = var_05; var_01.zone = var_04.name; } } level.teleport_spawn_info[param_00.teleport_label] = var_01; } //Function Number: 39 teleport_is_valid_zone(param_00) { foreach(var_03, var_02 in level.teleport_zones) { if(var_03 == param_00) { return 1; } } return 0; } //Function Number: 40 teleport_to_zone(param_00,param_01) { if(!level.teleport_allowed) { return; } if(!isdefined(param_01)) { param_01 = 1; } var_02 = level.teleport_pre_funcs[param_00]; if(isdefined(var_02) && param_01) { [[ var_02 ]](); } var_03 = level.teleport_zones[level.teleport_zone_current]; var_04 = level.teleport_zones[param_00]; if(!isdefined(var_03) || !isdefined(var_04)) { return; } if(level.teleport_include_players) { teleport_to_zone_players(param_00); teleport_to_zone_agents(param_00); } if(level.teleport_include_killsteaks) { teleport_to_zone_killstreaks(param_00); } if(isdefined(level.teleport_gamemode_func)) { [[ level.teleport_gamemode_func ]](param_00); } teleport_set_current_zone(param_00); level notify("teleport_to_zone",param_00); var_05 = level.teleport_post_funcs[param_00]; if(isdefined(var_05) && param_01) { [[ var_05 ]](); } if(isdefined(level.bot_funcs) && isdefined(level.bot_funcs["post_teleport"])) { [[ level.bot_funcs["post_teleport"] ]](); } } //Function Number: 41 teleport_to_zone_agents(param_00) { var_01 = maps\mp\agents\_agent_utility::getactiveagentsoftype("all"); foreach(var_03 in var_01) { teleport_to_zone_character(param_00,var_03); } } //Function Number: 42 teleport_to_zone_players(param_00) { foreach(var_02 in level.players) { teleport_to_zone_character(param_00,var_02); } } //Function Number: 43 teleport_to_zone_character(param_00,param_01) { var_02 = level.teleport_zones[level.teleport_zone_current]; var_03 = level.teleport_zones[param_00]; var_04 = gettime(); if(isplayer(param_01) && param_01.sessionstate == "intermission" || param_01.sessionstate == "spectator") { var_05 = getentarray("mp_global_intermission","classname"); var_05 = teleport_filter_spawn_point(var_05,param_00); var_06 = var_05[0]; param_01 dontinterpolate(); param_01 setorigin(var_06.origin); param_01 setplayerangles(var_06.angles); return; } var_07 = undefined; var_08 = var_03.angles; if(isplayer(var_03)) { var_08 = var_03 getplayerangles(); } foreach(var_0E, var_0A in var_05.teleport_origins) { var_05.teleport_origins[var_0E] = common_scripts\utility::array_randomize(var_0A); foreach(var_0C in var_0A) { var_0C.claimed = 0; } } var_0F = []; if(level.teambased) { if(isdefined(var_03.team) && isdefined(var_05.teleport_origins[var_03.team])) { var_0F = var_05.teleport_origins[var_03.team]; } } else { var_0F = var_05.teleport_origins["none"]; } foreach(var_0C in var_0F) { if(!var_0C.claimed) { var_07 = var_0C.origin; var_08 = var_0C.angles; var_0C.claimed = 1; break; } } var_12 = var_05.origin - var_04.origin; var_13 = var_03.origin + var_12; if(!isdefined(var_07) && level.teleport_to_offset) { if(canspawn(var_13) && !positionwouldtelefrag(var_13)) { var_07 = var_13; } } if(!isdefined(var_07) && level.teleport_to_nodes) { var_14 = getnodesinradiussorted(var_13,300,0,200,"Path"); for(var_15 = 0;var_15 < var_14.size;var_15++) { var_16 = var_14[var_15]; if(isdefined(var_16.last_teleport_time) && var_16.last_teleport_time == var_06) { continue; } var_0C = var_16.origin; if(canspawn(var_0C) && !positionwouldtelefrag(var_0C)) { var_16.last_teleport_time = var_06; var_07 = var_0C; break; } } } if(!isdefined(var_07)) { var_03 maps\mp\_utility::_suicide(); return; } var_03 cancelmantle(); var_03 dontinterpolate(); var_03 setorigin(var_07); var_03 setplayerangles(var_08); thread teleport_validate_success(var_03); } //Function Number: 44 teleport_validate_success(param_00) { wait 0.05; if(isdefined(param_00)) { var_01 = teleport_closest_zone(param_00.origin); if(var_01.name != level.teleport_zone_current) { param_00 maps\mp\_utility::_suicide(); } } } //Function Number: 45 get_teleport_delta(param_00) { var_01 = level.teleport_zones[param_00]; var_02 = level.teleport_zones[level.teleport_zone_current]; var_03 = var_01.origin - var_02.origin; return var_03; } //Function Number: 46 teleport_to_zone_killstreaks(param_00) { } //Function Number: 47 teleport_notify_death() { if(isdefined(self)) { self notify("death"); } } //Function Number: 48 array_thread_safe(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A) { if(!isdefined(param_00)) { return; } common_scripts\utility::array_thread(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A); } //Function Number: 49 array_levelthread_safe(param_00,param_01,param_02,param_03,param_04) { if(!isdefined(param_00)) { return; } common_scripts\utility::array_levelthread(param_00,param_01,param_02,param_03,param_04); } //Function Number: 50 teleport_get_care_packages() { return getentarray("care_package","targetname"); } //Function Number: 51 teleport_get_deployable_boxes() { var_00 = []; var_01 = getentarray("script_model","classname"); foreach(var_03 in var_01) { if(isdefined(var_03.boxtype)) { var_00[var_00.size] = var_03; } } return var_00; } //Function Number: 52 teleport_place_on_ground(param_00,param_01) { if(!isdefined(param_00)) { return; } if(!isdefined(param_01)) { param_01 = 300; } var_02 = param_00.origin; var_03 = param_00.origin - (0,0,param_01); var_04 = bullettrace(var_02,var_03,0,param_00); if(var_04["fraction"] < 1) { param_00.origin = var_04["position"]; return 1; } return 0; } //Function Number: 53 teleport_add_delta_targets(param_00,param_01) { if(teleport_delta_this_frame(param_00)) { return; } teleport_add_delta(param_00,param_01); if(isdefined(param_00.target)) { var_02 = getentarray(param_00.target,"targetname"); var_03 = common_scripts\utility::getstructarray(param_00.target,"targetname"); var_04 = common_scripts\utility::array_combine(var_02,var_03); common_scripts\utility::array_levelthread(var_04,::teleport_add_delta_targets,param_01); } } //Function Number: 54 teleport_self_add_delta_targets(param_00) { teleport_add_delta_targets(self,param_00); } //Function Number: 55 teleport_self_add_delta(param_00) { teleport_add_delta(self,param_00); } //Function Number: 56 teleport_add_delta(param_00,param_01) { if(isdefined(param_00)) { if(!teleport_delta_this_frame(param_00)) { param_00.origin = param_00.origin + param_01; param_00.last_teleport_time = gettime(); } } } //Function Number: 57 teleport_delta_this_frame(param_00) { return isdefined(param_00.last_teleport_time) && param_00.last_teleport_time == gettime(); } //Function Number: 58 teleport_get_active_nodes() { return level.teleport_nodes_in_zone[level.teleport_zone_current]; } //Function Number: 59 teleport_get_active_pathnode_zones() { return level.teleport_pathnode_zones[level.teleport_zone_current]; }