mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
1323 lines
30 KiB
Plaintext
1323 lines
30 KiB
Plaintext
/*******************************************************************
|
|
* 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];
|
|
} |