IL-GSC/AW/PC/animscripts/init.gsc
InfinityLoader b2389dbcb9 Full AW Dump
2024-04-22 02:38:24 -04:00

653 lines
15 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: init.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 25
* Decompile Time: 359 ms
* Timestamp: 4/22/2024 2:00:33 AM
*******************************************************************/
//Function Number: 1
initweapon(param_00)
{
self.weaponinfo[param_00] = spawnstruct();
self.weaponinfo[param_00].position = "none";
self.weaponinfo[param_00].hasclip = 1;
if(getweaponclipmodel(param_00) != "")
{
self.weaponinfo[param_00].useclip = 1;
return;
}
self.weaponinfo[param_00].useclip = 0;
}
//Function Number: 2
isweaponinitialized(param_00)
{
return isdefined(self.weaponinfo[param_00]);
}
//Function Number: 3
setglobalaimsettings()
{
anim.covercrouchleanpitch = 55;
anim.aimyawdifffartolerance = 10;
anim.aimyawdiffclosedistsq = 4096;
anim.aimyawdiffclosetolerance = 45;
anim.aimpitchdifftolerance = 20;
anim.painyawdifffartolerance = 25;
anim.painyawdiffclosedistsq = level.aimyawdiffclosedistsq;
anim.painyawdiffclosetolerance = level.aimyawdiffclosetolerance;
anim.painpitchdifftolerance = 30;
anim.maxanglecheckyawdelta = 65;
anim.maxanglecheckpitchdelta = 65;
}
//Function Number: 4
everusessecondaryweapon()
{
if(animscripts\utility::isshotgun(self.secondaryweapon))
{
return 1;
}
if(weaponclass(self.primaryweapon) == "rocketlauncher")
{
return 1;
}
return 0;
}
//Function Number: 5
main()
{
self.a = spawnstruct();
self.a.laseron = 0;
self.primaryweapon = self.weapon;
firstinit();
if(!isdefined(self.primaryweapon) || self.primaryweapon == "")
{
self.primaryweapon = "none";
}
if(self.secondaryweapon == "")
{
self.secondaryweapon = "none";
}
if(self.sidearm == "")
{
self.sidearm = "none";
}
initweapon(self.primaryweapon);
initweapon(self.secondaryweapon);
initweapon(self.sidearm);
self setdefaultaimlimits();
self.a.weaponpos["left"] = "none";
self.a.weaponpos["right"] = "none";
self.a.weaponpos["chest"] = "none";
self.a.weaponpos["back"] = "none";
self.a.weaponposdropping["left"] = "none";
self.a.weaponposdropping["right"] = "none";
self.a.weaponposdropping["chest"] = "none";
self.a.weaponposdropping["back"] = "none";
self.lastweapon = self.weapon;
self.root_anim = %animscript_root;
thread begingrenadetracking();
var_00 = animscripts\utility::usingrocketlauncher();
self.a.neverlean = var_00;
if(var_00)
{
thread animscripts\shared::rpgplayerrepulsor();
}
self.a.rockets = 3;
self.a.rocketvisible = 1;
self.a.pose = "stand";
self.a.grenadethrowpose = "stand";
self.a.movement = "stop";
self.a.state = "stop";
self.a.special = "none";
self.a.gunhand = "none";
self.a.prevputguninhandtime = -1;
self.dropweapon = 1;
self.minexposedgrenadedist = 750;
animscripts\shared::placeweaponon(self.primaryweapon,"right");
if(animscripts\utility::isshotgun(self.secondaryweapon))
{
animscripts\shared::placeweaponon(self.secondaryweapon,"back");
}
self.a.needstorechamber = 0;
self.a.combatendtime = gettime();
self.a.lastenemytime = gettime();
self.a.suppressingenemy = 0;
self.a.disablelongdeath = !self isbadguy();
self.a.lookangle = 0;
self.a.paintime = 0;
self.a.lastshoottime = 0;
self.a.nextgrenadetrytime = 0;
self.a.reacttobulletchance = 0.8;
if(self.team != "allies")
{
self.has_no_ir = 1;
}
self.a.postscriptfunc = undefined;
self.a.stance = "stand";
self.chooseposefunc = ::animscripts\utility::choosepose;
self._animactive = 0;
self._lastanimtime = 0;
thread enemynotify();
self.baseaccuracy = 1;
self.a.misstime = 0;
self.a.nodeath = 0;
self.a.misstime = 0;
self.a.misstimedebounce = 0;
self.a.disablepain = 0;
self.accuracystationarymod = 1;
self.chatinitialized = 0;
self.sightpostime = 0;
self.sightposleft = 1;
self.needrecalculategoodshootpos = 1;
self.defaultturnthreshold = 55;
self.a.nextstandinghitdying = 0;
if(!isdefined(self.script_forcegrenade))
{
self.script_forcegrenade = 0;
}
setupuniqueanims();
animscripts\weaponlist::refillclip();
self.lastenemysighttime = 0;
self.combattime = 0;
self.suppressed = 0;
self.suppressedtime = 0;
if(self.team == "allies")
{
self.suppressionthreshold = 0.5;
}
else
{
self.suppressionthreshold = 0;
}
if(self.team == "allies")
{
self.randomgrenaderange = 0;
}
else
{
self.randomgrenaderange = 256;
}
self.ammocheatinterval = 8000;
self.ammocheattime = 0;
animscripts\animset::setup_run_n_gun();
self.exception = [];
self.exception["corner"] = 1;
self.exception["cover_crouch"] = 1;
self.exception["stop"] = 1;
self.exception["stop_immediate"] = 1;
self.exception["move"] = 1;
self.exception["exposed"] = 1;
self.exception["corner_normal"] = 1;
var_01 = getarraykeys(self.exception);
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
common_scripts\utility::clear_exception(var_01[var_02]);
}
self.reacquire_state = 0;
thread setnameandrank_andaddtosquad();
self.shouldconserveammotime = 0;
if(!isdefined(level.disablemonitorflash))
{
thread animscripts\combat_utility::monitorflash();
}
thread ondeath();
}
//Function Number: 6
weapons_with_ir(param_00)
{
var_01[0] = "m4_grenadier";
var_01[1] = "m4_grunt";
var_01[2] = "m4_silencer";
var_01[3] = "m4m203";
if(!isdefined(param_00))
{
return 0;
}
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
if(issubstr(param_00,var_01[var_02]))
{
return 1;
}
}
return 0;
}
//Function Number: 7
setnameandrank_andaddtosquad()
{
self endon("death");
if(!isdefined(level.loadoutcomplete))
{
level waittill("loadout complete");
}
maps\_names::get_name();
thread animscripts\squadmanager::addtosquad();
}
//Function Number: 8
pollallowedstancesthread()
{
for(;;)
{
if(self isstanceallowed("stand"))
{
var_00[0] = "stand allowed";
var_01[0] = (0,1,0);
}
else
{
var_00[0] = "stand not allowed";
var_01[0] = (1,0,0);
}
if(self isstanceallowed("crouch"))
{
var_00[1] = "crouch allowed";
var_01[1] = (0,1,0);
}
else
{
var_00[1] = "crouch not allowed";
var_01[1] = (1,0,0);
}
if(self isstanceallowed("prone"))
{
var_00[2] = "prone allowed";
var_01[2] = (0,1,0);
}
else
{
var_00[2] = "prone not allowed";
var_01[2] = (1,0,0);
}
var_02 = self getshootatpos() + (0,0,30);
var_03 = (0,0,-10);
for(var_04 = 0;var_04 < var_00.size;var_04++)
{
var_05 = (var_02[0] + var_03[0] * var_04,var_02[1] + var_03[1] * var_04,var_02[2] + var_03[2] * var_04);
}
wait(0.05);
}
}
//Function Number: 9
setupuniqueanims()
{
if(!isdefined(self.animplaybackrate) || !isdefined(self.moveplaybackrate))
{
set_anim_playback_rate();
}
}
//Function Number: 10
set_anim_playback_rate()
{
self.animplaybackrate = 0.9 + randomfloat(0.2);
self.movetransitionrate = 0.9 + randomfloat(0.2);
self.moveplaybackrate = 1;
self.sidesteprate = 1.35;
}
//Function Number: 11
infiniteloop(param_00,param_01,param_02,param_03)
{
anim waittill("new exceptions");
}
//Function Number: 12
empty(param_00,param_01,param_02,param_03)
{
}
//Function Number: 13
enemynotify()
{
self endon("death");
if(1)
{
return;
}
for(;;)
{
self waittill("enemy");
if(!isalive(self.enemy))
{
continue;
}
while(isplayer(self.enemy))
{
if(animscripts\utility::hasenemysightpos())
{
level.lastplayersighted = gettime();
}
wait(2);
}
}
}
//Function Number: 14
initwindowtraverse()
{
level.window_down_height[0] = -36.8552;
level.window_down_height[1] = -27.0095;
level.window_down_height[2] = -15.5981;
level.window_down_height[3] = -4.37769;
level.window_down_height[4] = 17.7776;
level.window_down_height[5] = 59.8499;
level.window_down_height[6] = 104.808;
level.window_down_height[7] = 152.325;
level.window_down_height[8] = 201.052;
level.window_down_height[9] = 250.244;
level.window_down_height[10] = 298.971;
level.window_down_height[11] = 330.681;
}
//Function Number: 15
firstinit()
{
if(isdefined(level.notfirsttime))
{
return;
}
anim.notfirsttime = 1;
animscripts\animset::init_anim_sets();
anim.usefacialanims = 0;
maps\_load::init_level_players();
level.player.invul = 0;
level.nextgrenadedrop = randomint(3);
level.lastplayersighted = 100;
anim.defaultexception = ::empty;
initdeveloperdvars();
setdvar("scr_expDeathMayMoveCheck","on");
maps\_names::setup_names();
anim.animflagnameindex = 0;
animscripts\init_move_transitions::initmovestartstoptransitions();
anim.combatmemorytimeconst = 10000;
anim.combatmemorytimerand = 6000;
initgrenades();
initadvancetoenemy();
if(!isdefined(level.optionalstepeffectfunction))
{
anim.optionalstepeffectsmallfunction = ::animscripts\notetracks::playfootstepeffectsmall;
anim.optionalstepeffectfunction = ::animscripts\notetracks::playfootstepeffect;
}
if(!isdefined(level.optionalstepeffects))
{
anim.optionalstepeffects = [];
}
if(!isdefined(level.optionalstepeffectssmall))
{
anim.optionalstepeffectssmall = [];
}
if(!isdefined(level.shootenemywrapper_func))
{
anim.shootenemywrapper_func = ::animscripts\utility::shootenemywrapper_shootnotify;
}
if(!isdefined(level.shootposwrapper_func))
{
anim.shootposwrapper_func = ::animscripts\utility::shootposwrapper;
}
level.fire_notetrack_functions["scripted"] = ::animscripts\notetracks::fire_straight;
level.fire_notetrack_functions["cover_right"] = ::animscripts\notetracks::shootnotetrack;
level.fire_notetrack_functions["cover_left"] = ::animscripts\notetracks::shootnotetrack;
level.fire_notetrack_functions["cover_crouch"] = ::animscripts\notetracks::shootnotetrack;
level.fire_notetrack_functions["cover_stand"] = ::animscripts\notetracks::shootnotetrack;
level.fire_notetrack_functions["move"] = ::animscripts\notetracks::shootnotetrack;
animscripts\notetracks::registernotetracks();
if(!isdefined(level.flag))
{
common_scripts\utility::init_flags();
}
maps\_gameskill::setskill();
level.painai = undefined;
animscripts\setposemovement::initposemovementfunctions();
animscripts\face::initlevelface();
anim.burstfirenumshots = animscripts\utility::array(1,2,2,2,3,3,3,3,4,4,5);
anim.fastburstfirenumshots = animscripts\utility::array(2,3,3,3,4,4,4,5,5);
anim.semifirenumshots = animscripts\utility::array(1,2,2,3,3,4,4,4,4,5,5,5);
anim.badplaces = [];
anim.badplaceint = 0;
anim.player = getentarray("player","classname")[0];
initbattlechatter();
initwindowtraverse();
animscripts\cqb::setupcqbpointsofinterest();
initdeaths();
setglobalaimsettings();
anim.lastcarexplosiontime = -100000;
setuprandomtable();
level.player thread animscripts\combat_utility::watchreloading();
thread aiturnnotifies();
}
//Function Number: 16
initdeveloperdvars()
{
}
//Function Number: 17
initbattlechatter()
{
animscripts\squadmanager::init_squadmanager();
level.player thread animscripts\squadmanager::addplayertosquad();
if(animscripts\battlechatter::use_old_battlechatter())
{
animscripts\battlechatter::init_battlechatter();
level.player thread animscripts\battlechatter_ai::addtosystem();
anim thread animscripts\battlechatter::bcsdebugwaiter();
}
}
//Function Number: 18
initdeaths()
{
anim.numdeathsuntilcrawlingpain = randomintrange(0,15);
anim.numdeathsuntilcornergrenadedeath = randomintrange(0,10);
anim.nextcrawlingpaintime = gettime() + randomintrange(0,20000);
anim.nextcrawlingpaintimefromlegdamage = gettime() + randomintrange(0,10000);
anim.nextcornergrenadedeathtime = gettime() + randomintrange(0,15000);
}
//Function Number: 19
initgrenades()
{
for(var_00 = 0;var_00 < level.players.size;var_00++)
{
var_01 = level.players[var_00];
var_01.grenadetimers["fraggrenade"] = randomintrange(1000,20000);
var_01.grenadetimers["flash_grenade"] = randomintrange(1000,20000);
var_01.grenadetimers["double_grenade"] = randomintrange(1000,60000);
var_01.grenadetimers["microwave_grenade"] = randomintrange(1000,20000);
var_01.numgrenadesinprogresstowardsplayer = 0;
var_01.lastgrenadelandednearplayertime = -1000000;
var_01.lastfraggrenadetoplayerstart = -1000000;
var_01 thread setnextplayergrenadetime();
}
level.grenadetimers["AI_fraggrenade"] = randomintrange(0,20000);
level.grenadetimers["AI_flash_grenade"] = randomintrange(0,20000);
level.grenadetimers["AI_smoke_grenade_american"] = randomintrange(0,20000);
level.grenadetimers["AI_microwave_grenade"] = randomintrange(0,20000);
animscripts\combat_utility::initgrenadethrowanims();
}
//Function Number: 20
initadvancetoenemy()
{
level.lastadvancetoenemytime = [];
level.lastadvancetoenemytime["axis"] = 0;
level.lastadvancetoenemytime["allies"] = 0;
level.lastadvancetoenemytime["team3"] = 0;
level.lastadvancetoenemytime["neutral"] = 0;
level.lastadvancetoenemydest = [];
level.lastadvancetoenemydest["axis"] = (0,0,0);
level.lastadvancetoenemydest["allies"] = (0,0,0);
level.lastadvancetoenemydest["team3"] = (0,0,0);
level.lastadvancetoenemydest["neutral"] = (0,0,0);
level.lastadvancetoenemysrc = [];
level.lastadvancetoenemysrc["axis"] = (0,0,0);
level.lastadvancetoenemysrc["allies"] = (0,0,0);
level.lastadvancetoenemysrc["team3"] = (0,0,0);
level.lastadvancetoenemysrc["neutral"] = (0,0,0);
level.lastadvancetoenemyattacker = [];
level.advancetoenemygroup = [];
level.advancetoenemygroup["axis"] = 0;
level.advancetoenemygroup["allies"] = 0;
level.advancetoenemygroup["team3"] = 0;
level.advancetoenemygroup["neutral"] = 0;
level.advancetoenemyinterval = 30000;
level.advancetoenemygroupmax = 3;
}
//Function Number: 21
aiturnnotifies()
{
var_00 = 0;
var_01 = 3;
for(;;)
{
var_02 = getaiarray();
if(var_02.size == 0)
{
wait(0.05);
var_00 = 0;
continue;
}
for(var_03 = 0;var_03 < var_02.size;var_03++)
{
if(!isdefined(var_02[var_03]))
{
continue;
}
var_02[var_03] notify("do_slow_things");
var_00++;
if(var_00 == var_01)
{
wait(0.05);
var_00 = 0;
}
}
}
}
//Function Number: 22
setnextplayergrenadetime()
{
waittillframeend;
if(isdefined(self.gs.playergrenaderangetime))
{
var_00 = int(self.gs.playergrenaderangetime * 0.7);
if(var_00 < 1)
{
var_00 = 1;
}
self.grenadetimers["fraggrenade"] = randomintrange(0,var_00);
self.grenadetimers["flash_grenade"] = randomintrange(0,var_00);
self.grenadetimers["microwave_grenade"] = randomintrange(0,var_00);
}
if(isdefined(self.gs.playerdoublegrenadetime))
{
var_00 = int(self.gs.playerdoublegrenadetime);
var_01 = int(var_00 / 2);
if(var_00 <= var_01)
{
var_00 = var_01 + 1;
}
self.grenadetimers["double_grenade"] = randomintrange(var_01,var_00);
}
}
//Function Number: 23
begingrenadetracking()
{
if(isdefined(level.disablegrenadetracking))
{
return;
}
self endon("death");
for(;;)
{
self waittill("grenade_fire",var_00,var_01);
var_00 thread maps\_utility::grenade_earthquake();
}
}
//Function Number: 24
setuprandomtable()
{
anim.randominttablesize = 60;
anim.randominttable = [];
for(var_00 = 0;var_00 < level.randominttablesize;var_00++)
{
level.randominttable[var_00] = var_00;
}
for(var_00 = 0;var_00 < level.randominttablesize;var_00++)
{
var_01 = randomint(level.randominttablesize);
var_02 = level.randominttable[var_00];
level.randominttable[var_00] = level.randominttable[var_01];
level.randominttable[var_01] = var_02;
}
}
//Function Number: 25
ondeath()
{
if(isdefined(level.disablestrangeondeath))
{
return;
}
self waittill("death");
if(!isdefined(self))
{
if(isdefined(self.a.usingturret))
{
self.a.usingturret delete();
}
}
}