mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
397 lines
8.0 KiB
Plaintext
397 lines
8.0 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\mp\agents\_agent_utility.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 15
|
|
* Decompile Time: 271 ms
|
|
* Timestamp: 10/27/2023 1:40:58 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
agentfunc(param_00)
|
|
{
|
|
return level.agent_funcs[self.agent_type][param_00];
|
|
}
|
|
|
|
//Function Number: 2
|
|
set_agent_team(param_00,param_01)
|
|
{
|
|
self.team = param_00;
|
|
self.agentteam = param_00;
|
|
self.pers["team"] = param_00;
|
|
self.owner = param_01;
|
|
self setotherent(param_01);
|
|
self setentityowner(param_01);
|
|
}
|
|
|
|
//Function Number: 3
|
|
initagentscriptvariables()
|
|
{
|
|
self.agent_type = "player";
|
|
self.pers = [];
|
|
self.hasdied = 0;
|
|
self.isactive = 0;
|
|
self.isagent = 1;
|
|
self.wasti = 0;
|
|
self.issniper = 0;
|
|
self.spawntime = 0;
|
|
self.entity_number = self getentitynumber();
|
|
self.agent_teamparticipant = 0;
|
|
self.agent_gameparticipant = 0;
|
|
self.canperformclienttraces = 0;
|
|
self.agentname = undefined;
|
|
self.ignoreall = 0;
|
|
self.ignoreme = 0;
|
|
self detachall();
|
|
initplayerscriptvariables(0);
|
|
}
|
|
|
|
//Function Number: 4
|
|
initplayerscriptvariables(param_00)
|
|
{
|
|
if(!param_00)
|
|
{
|
|
self.class = undefined;
|
|
self.lastclass = undefined;
|
|
self.movespeedscaler = undefined;
|
|
self.avoidkillstreakonspawntimer = undefined;
|
|
self.guid = undefined;
|
|
self.name = undefined;
|
|
self.saved_actionslotdata = undefined;
|
|
self.perks = undefined;
|
|
self.weaponlist = undefined;
|
|
self.omaclasschanged = undefined;
|
|
self.objectivescaler = undefined;
|
|
self.touchtriggers = undefined;
|
|
self.carryobject = undefined;
|
|
self.claimtrigger = undefined;
|
|
self.canpickupobject = undefined;
|
|
self.killedinuse = undefined;
|
|
self.sessionteam = undefined;
|
|
self.sessionstate = undefined;
|
|
self.lastspawntime = undefined;
|
|
self.lastspawnpoint = undefined;
|
|
self.disabledweapon = undefined;
|
|
self.disabledweaponswitch = undefined;
|
|
self.disabledoffhandweapons = undefined;
|
|
self.disabledusability = undefined;
|
|
self.shielddamage = undefined;
|
|
self.shieldbullethits = undefined;
|
|
}
|
|
else
|
|
{
|
|
self.movespeedscaler = level.baseplayermovescale;
|
|
self.avoidkillstreakonspawntimer = 5;
|
|
self.guid = maps\mp\_utility::getuniqueid();
|
|
self.name = self.guid;
|
|
self.sessionteam = self.team;
|
|
self.sessionstate = "playing";
|
|
self.shielddamage = 0;
|
|
self.shieldbullethits = 0;
|
|
self.agent_gameparticipant = 1;
|
|
maps\mp\gametypes\_playerlogic::setupsavedactionslots();
|
|
thread maps\mp\perks\_perks::onplayerspawned();
|
|
if(maps\mp\_utility::isgameparticipant(self))
|
|
{
|
|
self.objectivescaler = 1;
|
|
maps\mp\gametypes\_gameobjects::init_player_gameobjects();
|
|
self.disabledweapon = 0;
|
|
self.disabledweaponswitch = 0;
|
|
self.disabledoffhandweapons = 0;
|
|
}
|
|
}
|
|
|
|
self.disabledusability = 1;
|
|
}
|
|
|
|
//Function Number: 5
|
|
getfreeagent(param_00)
|
|
{
|
|
var_01 = undefined;
|
|
if(isdefined(level.agentarray))
|
|
{
|
|
foreach(var_03 in level.agentarray)
|
|
{
|
|
if((!isdefined(var_03.isactive) || !var_03.isactive) && !isdefined(var_03.isreserved) || !var_03.isreserved)
|
|
{
|
|
if(isdefined(var_03.waitingtodeactivate) && var_03.waitingtodeactivate)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(level.despawning_agents) && common_scripts\utility::array_contains(level.despawning_agents,var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01 = var_03;
|
|
var_01 initagentscriptvariables();
|
|
if(isdefined(param_00))
|
|
{
|
|
var_01.agent_type = param_00;
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 6
|
|
activateagent()
|
|
{
|
|
self.isactive = 1;
|
|
}
|
|
|
|
//Function Number: 7
|
|
deactivateagent()
|
|
{
|
|
thread deactivateagentdelayed();
|
|
}
|
|
|
|
//Function Number: 8
|
|
deactivateagentdelayed()
|
|
{
|
|
self notify("deactivateAgentDelayed");
|
|
self endon("deactivateAgentDelayed");
|
|
if(!isdefined(level.despawning_agents))
|
|
{
|
|
level.despawning_agents = [];
|
|
}
|
|
|
|
if(!common_scripts\utility::array_contains(level.despawning_agents,self))
|
|
{
|
|
level.despawning_agents = common_scripts\utility::array_add(level.despawning_agents,self);
|
|
}
|
|
|
|
if(maps\mp\_utility::isgameparticipant(self))
|
|
{
|
|
maps\mp\gametypes\_spawnlogic::removefromparticipantsarray();
|
|
}
|
|
|
|
maps\mp\gametypes\_spawnlogic::removefromcharactersarray();
|
|
wait(0.05);
|
|
self.isactive = 0;
|
|
self.hasdied = 0;
|
|
self.owner = undefined;
|
|
self.connecttime = undefined;
|
|
self.waitingtodeactivate = undefined;
|
|
foreach(var_01 in level.characters)
|
|
{
|
|
if(isdefined(var_01.attackers))
|
|
{
|
|
foreach(var_04, var_03 in var_01.attackers)
|
|
{
|
|
if(var_03 == self)
|
|
{
|
|
var_01.attackers[var_04] = undefined;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
self.headmodel = undefined;
|
|
self detachall();
|
|
self notify("disconnect");
|
|
self agentclearscriptvars();
|
|
level.despawning_agents = common_scripts\utility::array_remove(level.despawning_agents,self);
|
|
}
|
|
|
|
//Function Number: 9
|
|
getnumactiveagents(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = "all";
|
|
}
|
|
|
|
var_01 = getactiveagentsoftype(param_00);
|
|
return var_01.size;
|
|
}
|
|
|
|
//Function Number: 10
|
|
getactiveagentsoftype(param_00)
|
|
{
|
|
var_01 = [];
|
|
if(!isdefined(level.agentarray))
|
|
{
|
|
return var_01;
|
|
}
|
|
|
|
foreach(var_03 in level.agentarray)
|
|
{
|
|
if(isdefined(var_03.isactive) && var_03.isactive)
|
|
{
|
|
if(param_00 == "all" || var_03.agent_type == param_00)
|
|
{
|
|
var_01[var_01.size] = var_03;
|
|
}
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 11
|
|
getnumownedactiveagents(param_00)
|
|
{
|
|
return getnumownedactiveagentsbytype(param_00,"all");
|
|
}
|
|
|
|
//Function Number: 12
|
|
getnumownedactiveagentsbytype(param_00,param_01)
|
|
{
|
|
var_02 = 0;
|
|
if(!isdefined(level.agentarray))
|
|
{
|
|
return var_02;
|
|
}
|
|
|
|
foreach(var_04 in level.agentarray)
|
|
{
|
|
if(isdefined(var_04.isactive) && var_04.isactive)
|
|
{
|
|
if(isdefined(var_04.owner) && var_04.owner == param_00)
|
|
{
|
|
if(param_01 == "all" || var_04.agent_type == param_01)
|
|
{
|
|
var_02++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 13
|
|
getvalidspawnpathnodenearplayer(param_00,param_01)
|
|
{
|
|
var_02 = getnodesinradius(self.origin,350,64,128,"Path");
|
|
if(!isdefined(var_02) || var_02.size == 0)
|
|
{
|
|
return undefined;
|
|
}
|
|
|
|
if(isdefined(level.waterdeletez) && isdefined(level.trigunderwater))
|
|
{
|
|
var_03 = var_02;
|
|
var_02 = [];
|
|
foreach(var_05 in var_03)
|
|
{
|
|
if(var_05.origin[2] > level.waterdeletez || !ispointinvolume(var_05.origin,level.trigunderwater))
|
|
{
|
|
var_02[var_02.size] = var_05;
|
|
}
|
|
}
|
|
}
|
|
|
|
var_07 = anglestoforward(self.angles);
|
|
var_08 = -10;
|
|
var_09 = maps\mp\gametypes\_spawnlogic::getplayertraceheight(self);
|
|
var_0A = (0,0,var_09);
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = 0;
|
|
}
|
|
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 0;
|
|
}
|
|
|
|
var_0B = [];
|
|
var_0C = [];
|
|
foreach(var_0E in var_02)
|
|
{
|
|
if(!var_0E doesnodeallowstance("stand"))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_0F = vectornormalize(var_0E.origin - self.origin);
|
|
var_10 = vectordot(var_07,var_0F);
|
|
for(var_11 = 0;var_11 < var_0C.size;var_11++)
|
|
{
|
|
if(var_10 > var_0C[var_11])
|
|
{
|
|
for(var_12 = var_0C.size;var_12 > var_11;var_12--)
|
|
{
|
|
var_0C[var_12] = var_0C[var_12 - 1];
|
|
var_0B[var_12] = var_0B[var_12 - 1];
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
var_0B[var_11] = var_0E;
|
|
var_0C[var_11] = var_10;
|
|
}
|
|
|
|
for(var_11 = 0;var_11 < var_0B.size;var_11++)
|
|
{
|
|
var_0E = var_0B[var_11];
|
|
var_14 = self.origin + var_0A;
|
|
var_15 = var_0E.origin + var_0A;
|
|
if(var_11 > 0)
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
if(!sighttracepassed(var_14,var_15,0,self))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(param_01)
|
|
{
|
|
if(var_11 > 0)
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
var_16 = playerphysicstrace(var_0E.origin + var_0A,var_0E.origin);
|
|
if(distancesquared(var_16,var_0E.origin) > 1)
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if(param_00)
|
|
{
|
|
if(var_11 > 0)
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
var_16 = physicstrace(var_14,var_15);
|
|
if(distancesquared(var_16,var_15) > 1)
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
return var_0E;
|
|
}
|
|
|
|
if(var_0B.size > 0 && isdefined(level.ishorde))
|
|
{
|
|
return var_0B[0];
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
killagent(param_00)
|
|
{
|
|
param_00 dodamage(param_00.health + 500000,param_00.origin);
|
|
}
|
|
|
|
//Function Number: 15
|
|
killdog()
|
|
{
|
|
self [[ agentfunc("on_damaged") ]](level,undefined,self.health + 1,0,"MOD_CRUSH","none",(0,0,0),(0,0,0),"none",0);
|
|
} |