mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
428 lines
8.3 KiB
Plaintext
428 lines
8.3 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: cover_multi.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 17
|
|
* Decompile Time: 263 ms
|
|
* Timestamp: 4/22/2024 2:00:18 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
main()
|
|
{
|
|
if(!isdefined(self.cover))
|
|
{
|
|
self.cover = spawnstruct();
|
|
}
|
|
|
|
self.cover.state = "none";
|
|
self.cover.laststatechangetime = 0;
|
|
self.cover.istatechange = 0;
|
|
self.cover.hidestate = covermulti_choosehidestate();
|
|
self.covernode = self.node;
|
|
covermulti_think();
|
|
self waittill("killanimscript");
|
|
}
|
|
|
|
//Function Number: 2
|
|
end_script()
|
|
{
|
|
covermulti_exitstate(self.cover.state);
|
|
self.cover.fnoverlord = undefined;
|
|
self.cover.laststatechangetime = undefined;
|
|
self.cover.istatechange = undefined;
|
|
animscripts\corner::end_script_corner();
|
|
animscripts\cover_behavior::end_script("multi");
|
|
}
|
|
|
|
//Function Number: 3
|
|
covermulti_think()
|
|
{
|
|
if(!isdefined(self.covernode))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = self.covernode getvalidcoverpeekouts();
|
|
if(isdefined(self.cover.arrivalnodetype))
|
|
{
|
|
if(covermulti_isvaliddir(self.cover.arrivalnodetype,var_00))
|
|
{
|
|
var_01 = covermulti_setdir(self.cover.arrivalnodetype);
|
|
self.cover.arrivalnodetype = undefined;
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(!isdefined(self.enemy))
|
|
{
|
|
covermulti_setdir(covermulti_getrandomvaliddir(var_01));
|
|
return;
|
|
}
|
|
|
|
var_02 = self.covernode.origin;
|
|
var_03 = self.enemy.origin;
|
|
var_04 = var_03 - var_02;
|
|
var_05 = vectortoangles(var_04);
|
|
var_06 = angleclamp180(var_05[1] - self.covernode.angles[1]);
|
|
var_07 = undefined;
|
|
if(var_06 > 12)
|
|
{
|
|
var_08 = ["left","over","right"];
|
|
}
|
|
else if(var_07 < -12)
|
|
{
|
|
var_08 = ["right","over","left"];
|
|
}
|
|
else if(var_07 > 5)
|
|
{
|
|
var_08 = [["left","over"],"right"];
|
|
var_07 = 15000;
|
|
}
|
|
else if(var_07 < -5)
|
|
{
|
|
var_08 = [["right","over"],"left"];
|
|
var_07 = 15000;
|
|
}
|
|
else
|
|
{
|
|
var_08 = ["over",["right","left"]];
|
|
var_07 = 15000;
|
|
}
|
|
|
|
var_09 = covermulti_getbestvaliddir(var_08,var_01);
|
|
var_01 = covermulti_setdir(var_09,var_07);
|
|
}
|
|
|
|
//Function Number: 4
|
|
covermulti_isvaliddir(param_00,param_01)
|
|
{
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = self.node getvalidcoverpeekouts();
|
|
}
|
|
|
|
for(var_02 = 0;var_02 < param_01.size;var_02++)
|
|
{
|
|
if(param_01[var_02] == param_00)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 5
|
|
covermulti_getbestvaliddir(param_00,param_01)
|
|
{
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = self.node getvalidcoverpeekouts();
|
|
}
|
|
|
|
var_02 = [];
|
|
for(var_03 = 0;var_03 < param_00.size;var_03++)
|
|
{
|
|
var_04 = param_00[var_03];
|
|
if(!isarray(var_04))
|
|
{
|
|
var_02[var_02.size] = var_04;
|
|
continue;
|
|
}
|
|
|
|
var_04 = common_scripts\utility::array_randomize(var_04);
|
|
for(var_05 = 0;var_05 < var_04.size;var_05++)
|
|
{
|
|
var_02[var_02.size] = var_04[var_05];
|
|
}
|
|
}
|
|
|
|
for(var_03 = 0;var_03 < var_02.size;var_03++)
|
|
{
|
|
if(covermulti_isvaliddir(var_02[var_03],param_01))
|
|
{
|
|
return var_02[var_03];
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
covermulti_getrandomvaliddir(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = self.node getvalidcoverpeekouts();
|
|
}
|
|
|
|
var_01 = randomint(param_00.size);
|
|
return param_00[var_01];
|
|
}
|
|
|
|
//Function Number: 7
|
|
covermulti_getnonrandomvaliddir(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = self getvalidcoverpeekouts();
|
|
}
|
|
|
|
if(param_00[0] == "over")
|
|
{
|
|
if(self doesnodeallowstance("stand"))
|
|
{
|
|
return "stand";
|
|
}
|
|
else
|
|
{
|
|
return "crouch";
|
|
}
|
|
}
|
|
|
|
return param_00[0];
|
|
}
|
|
|
|
//Function Number: 8
|
|
covermulti_setdir(param_00,param_01)
|
|
{
|
|
if(param_00 == "over")
|
|
{
|
|
var_02 = self.node doesnodeallowstance("stand");
|
|
var_03 = self.node doesnodeallowstance("crouch");
|
|
if(var_02)
|
|
{
|
|
if(self.cover.state != "crouch" || !var_03)
|
|
{
|
|
covermulti_setstate("stand",param_01);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
else if(var_03)
|
|
{
|
|
if(self.cover.state != "stand" || !var_02)
|
|
{
|
|
covermulti_setstate("crouch",param_01);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
}
|
|
}
|
|
else
|
|
{
|
|
covermulti_setstate(var_02,var_03);
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 9
|
|
covermulti_setstate(param_00,param_01)
|
|
{
|
|
if(self.cover.state == param_00)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isdefined(param_01) || param_01 < 0)
|
|
{
|
|
param_01 = 8000;
|
|
}
|
|
|
|
var_02 = gettime();
|
|
if(self.cover.laststatechangetime > 0 && var_02 - self.cover.laststatechangetime < param_01)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
self.cover.laststatechangetime = var_02;
|
|
thread covermulti_setstateinternal(param_00);
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 10
|
|
covermulti_setstateinternal(param_00)
|
|
{
|
|
var_01 = covermulti_choosehidestate();
|
|
covermulti_dotransition(self.cover.state,self.a.pose,self.cover.hidestate,param_00,self.a.pose,var_01);
|
|
covermulti_exitstate(self.cover.state);
|
|
self.cover.state = param_00;
|
|
self.cover.hidestate = var_01;
|
|
covermulti_enterstate(self.cover.state);
|
|
}
|
|
|
|
//Function Number: 11
|
|
covermulti_enterstate(param_00)
|
|
{
|
|
if(param_00 == "left")
|
|
{
|
|
animscripts\cover_left::main();
|
|
return;
|
|
}
|
|
|
|
if(param_00 == "right")
|
|
{
|
|
animscripts\cover_right::main();
|
|
return;
|
|
}
|
|
|
|
if(param_00 == "stand")
|
|
{
|
|
animscripts\cover_stand::main();
|
|
return;
|
|
}
|
|
|
|
if(param_00 == "crouch")
|
|
{
|
|
animscripts\cover_crouch::main();
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 12
|
|
covermulti_exitstate(param_00)
|
|
{
|
|
switch(param_00)
|
|
{
|
|
case "left":
|
|
animscripts\cover_left::end_script();
|
|
break;
|
|
|
|
case "right":
|
|
animscripts\cover_right::end_script();
|
|
break;
|
|
|
|
case "stand":
|
|
animscripts\cover_stand::end_script();
|
|
break;
|
|
|
|
case "crouch":
|
|
animscripts\cover_crouch::end_script();
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
covermulti_dotransition(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
self endon("killanimscript");
|
|
if(param_00 == "none" || param_03 == "none")
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_06 = covermulti_getanimtransition(param_00,param_01,param_02,param_03,param_04,param_05);
|
|
if(!isdefined(var_06))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self setflaggedanimknoball("cover_multi_trans",var_06,%body,1,0.2,1);
|
|
animscripts\shared::donotetracks("cover_multi_trans");
|
|
}
|
|
|
|
//Function Number: 14
|
|
covermulti_choosehidestate()
|
|
{
|
|
if(!isdefined(self.a.array) || !isdefined(self.a.array["alert_idle_back"]))
|
|
{
|
|
return "forward";
|
|
}
|
|
|
|
if(common_scripts\utility::cointoss())
|
|
{
|
|
return "forward";
|
|
}
|
|
|
|
return "back";
|
|
}
|
|
|
|
//Function Number: 15
|
|
covermulti_getstatefromdir(param_00,param_01)
|
|
{
|
|
if(param_01 == "left" || param_01 == "right")
|
|
{
|
|
return param_01;
|
|
}
|
|
|
|
if(param_00 doesnodeallowstance("stand"))
|
|
{
|
|
return "stand";
|
|
}
|
|
|
|
return "crouch";
|
|
}
|
|
|
|
//Function Number: 16
|
|
covermulti_getanimtransition(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
if(param_02 == "back")
|
|
{
|
|
var_06 = param_01 + "_back";
|
|
}
|
|
else if(param_01 == "stand" || param_01 == "crouch")
|
|
{
|
|
var_06 = param_01 + "_forward";
|
|
}
|
|
else
|
|
{
|
|
var_06 = param_01 + "_" + param_02;
|
|
}
|
|
|
|
var_06 = var_06 + "_to_";
|
|
if(param_05 == "back")
|
|
{
|
|
var_06 = var_06 + param_04 + "_back";
|
|
}
|
|
else if(param_03 == "stand" || param_03 == "crouch")
|
|
{
|
|
var_06 = var_06 + param_03 + "_forward";
|
|
}
|
|
else
|
|
{
|
|
var_06 = var_06 + param_03 + "_" + param_04;
|
|
}
|
|
|
|
var_07 = self.animarchetype;
|
|
if(!isdefined(var_07) || !isdefined(level.archetypes[var_07]["cover_multi"]))
|
|
{
|
|
var_07 = "soldier";
|
|
}
|
|
|
|
return level.archetypes[var_07]["cover_multi"][var_06];
|
|
}
|
|
|
|
//Function Number: 17
|
|
init_animset_cover_multi()
|
|
{
|
|
var_00 = [];
|
|
var_00["stand"] = [];
|
|
var_00["stand"]["trans"] = [];
|
|
var_00["stand"]["trans"]["left_stand"] = [];
|
|
var_00["stand"]["trans"]["left_crouch"] = [];
|
|
var_00["stand"]["trans"]["right_stand"] = [];
|
|
var_00["stand"]["trans"]["right_crouch"] = [];
|
|
var_00["stand"]["trans"]["front_stand"] = [];
|
|
var_00["stand"]["trans"]["front_crouch"] = [];
|
|
var_00["stand"]["trans"]["back_stand"] = [];
|
|
var_00["stand"]["trans"]["back_crouch"] = [];
|
|
var_00["left_stand_to_right_stand"] = undefined;
|
|
var_00["left_stand_to_right_crouch"] = undefined;
|
|
var_00["left_stand_to_stand_back"] = undefined;
|
|
var_00["left_stand_to_stand_forward"] = undefined;
|
|
var_00["left_stand_to_crouch_back"] = undefined;
|
|
var_00["left_stand_to_crouch_forward"] = undefined;
|
|
var_00["left_crouch_to_right_stand"] = undefined;
|
|
var_00["left_crouch_to_right_crouch"] = undefined;
|
|
var_00["left_crouch_to_stand_back"] = undefined;
|
|
var_00["left_crouch_to_stand_forward"] = undefined;
|
|
var_00["left_crouch_to_crouch_back"] = undefined;
|
|
var_00["left_crouch_to_crouch_forward"] = undefined;
|
|
var_00["crouch"] = [];
|
|
level.archetypes["soldier"]["cover_multi"] = var_00;
|
|
} |