mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-17 13:38:03 -05:00
982 lines
16 KiB
Plaintext
982 lines
16 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: animscripts\cover_behavior.gsc
|
|
* Game: Call of Duty: Modern Warfare 3
|
|
* Platform: PC
|
|
* Function Count: 37
|
|
* Decompile Time: 637 ms
|
|
* Timestamp: 10/27/2023 2:18:09 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
main(param_00)
|
|
{
|
|
self.var_CF9 = self.origin;
|
|
var_01 = gettime();
|
|
var_02 = spawnstruct();
|
|
var_02.var_F2E = var_01 - 1;
|
|
var_02.var_F2F = var_01 - 1;
|
|
func_0F69();
|
|
func_0F68();
|
|
self.var_F30 = gettime();
|
|
self.a.var_F31 = var_01;
|
|
self.a.var_F32 = 0;
|
|
self.a.movement = "stop";
|
|
self.var_F33 = var_01 + 3000;
|
|
thread func_0F50();
|
|
var_03 = gettime() > 2500;
|
|
var_04 = func_0F40();
|
|
for(;;)
|
|
{
|
|
if(animscripts/combat_utility::func_F34())
|
|
{
|
|
if(animscripts/combat_utility::func_F35(1))
|
|
{
|
|
wait 0.05;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if(isdefined(param_00.var_F36))
|
|
{
|
|
var_05 = gettime();
|
|
thread func_0F60();
|
|
[[ param_00.var_F36 ]]();
|
|
if(gettime() == var_05)
|
|
{
|
|
self notify("dont_end_idle");
|
|
}
|
|
}
|
|
|
|
if(isdefined(param_00.var_F37))
|
|
{
|
|
if([[ param_00.var_F37 ]]())
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
self safeteleport(self.var_CAF.origin,var_04);
|
|
if(!var_03)
|
|
{
|
|
idle(param_00,0.05 + randomfloat(1.5));
|
|
var_03 = 1;
|
|
continue;
|
|
}
|
|
|
|
if(func_0F44(param_00))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(level.throwgrenadeatplayerasap) && isalive(level.player))
|
|
{
|
|
if(func_0F61(param_00,level.player))
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if(func_0F42())
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_06 = 0;
|
|
var_07 = 0;
|
|
if(isalive(self.enemy))
|
|
{
|
|
var_06 = func_0F49();
|
|
var_07 = animscripts/utility::func_F39();
|
|
}
|
|
|
|
if(var_06)
|
|
{
|
|
if(self.a.var_F3A < gettime())
|
|
{
|
|
if(animscripts/combat_utility::func_F3B())
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
func_0F45(param_00);
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(self.aggressivemode) || func_0F67())
|
|
{
|
|
if(func_0F6D())
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(var_07)
|
|
{
|
|
func_0F46(param_00,var_02);
|
|
continue;
|
|
}
|
|
|
|
if(func_0F48(param_00,var_02))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 2
|
|
func_067F(param_00)
|
|
{
|
|
self.var_F3D = undefined;
|
|
self.a.var_F3E = undefined;
|
|
if(isdefined(self.var_F33) && self.var_F33 <= gettime())
|
|
{
|
|
self.var_F3F = gettime() + 5000;
|
|
self.var_F33 = undefined;
|
|
}
|
|
}
|
|
|
|
//Function Number: 3
|
|
func_0F40()
|
|
{
|
|
var_00 = (self.var_CAF.angles[0],animscripts/utility::func_F41(self.var_CAF),self.var_CAF.angles[2]);
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 4
|
|
func_0F42()
|
|
{
|
|
if(self atdangerousnode() && self.a.var_F43 < gettime())
|
|
{
|
|
if(animscripts/combat_utility::func_F3B())
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
self.a.var_F43 = gettime() + 30000;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 5
|
|
func_0F44(param_00)
|
|
{
|
|
if(func_0F4B(param_00))
|
|
{
|
|
if(func_0F49())
|
|
{
|
|
func_0F6B();
|
|
}
|
|
|
|
self.a.var_F31 = gettime();
|
|
return 1;
|
|
}
|
|
|
|
if(func_0F52(param_00,0))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 6
|
|
func_0F45(param_00)
|
|
{
|
|
if(distancesquared(self.origin,self.enemy.origin) > 562500)
|
|
{
|
|
if(func_0F61(param_00,self.enemy))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(func_0F55(param_00,"normal"))
|
|
{
|
|
func_0F6B();
|
|
self.a.var_F31 = gettime();
|
|
return;
|
|
}
|
|
|
|
idle(param_00);
|
|
}
|
|
|
|
//Function Number: 7
|
|
func_0F46(param_00,param_01)
|
|
{
|
|
if(self.var_748)
|
|
{
|
|
if(func_0F55(param_00,"ambush"))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
else if(self.providecoveringfire || gettime() >= param_01.var_F2F)
|
|
{
|
|
var_02 = "suppress";
|
|
if(!self.providecoveringfire && gettime() - self.var_F47 > 5000 && randomint(3) < 2)
|
|
{
|
|
var_02 = "ambush";
|
|
}
|
|
else if(!animscripts/shoot_behavior::func_CE9())
|
|
{
|
|
var_02 = "ambush";
|
|
}
|
|
|
|
if(func_0F55(param_00,var_02))
|
|
{
|
|
param_01.var_F2F = gettime() + randomintrange(3000,20000);
|
|
if(func_0F49())
|
|
{
|
|
self.a.var_F31 = gettime();
|
|
}
|
|
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(func_0F61(param_00,self.enemy))
|
|
{
|
|
return;
|
|
}
|
|
|
|
idle(param_00);
|
|
}
|
|
|
|
//Function Number: 8
|
|
func_0F48(param_00,param_01)
|
|
{
|
|
if(func_0F52(param_00,0.1))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(isdefined(self.enemy))
|
|
{
|
|
if(func_0F61(param_00,self.enemy))
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
if(!self.var_748 && gettime() >= param_01.var_F2E)
|
|
{
|
|
if(func_0F56(param_00))
|
|
{
|
|
param_01.var_F2E = gettime() + randomintrange(4000,15000);
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
if(gettime() > self.a.var_F3A)
|
|
{
|
|
if(func_0F6C())
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
if(self.var_748 || gettime() >= param_01.var_F2F && isdefined(self.enemy))
|
|
{
|
|
if(func_0F55(param_00,"ambush"))
|
|
{
|
|
if(func_0F49())
|
|
{
|
|
func_0F6B();
|
|
}
|
|
|
|
self.a.var_F31 = gettime();
|
|
param_01.var_F2F = gettime() + randomintrange(6000,20000);
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
idle(param_00);
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 9
|
|
func_0F49()
|
|
{
|
|
if(!isdefined(self.enemy))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(distancesquared(self.enemy.origin,self.var_CF9) < 256)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return animscripts/utility::func_F4A();
|
|
}
|
|
|
|
//Function Number: 10
|
|
func_0F4B(param_00)
|
|
{
|
|
if(!animscripts/utility::func_F4C())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_01 = gettime();
|
|
var_02 = 1;
|
|
while(animscripts/utility::func_F4C())
|
|
{
|
|
var_02 = 0;
|
|
self safeteleport(self.var_CAF.origin);
|
|
var_03 = 1;
|
|
if(isdefined(self.favor_blindfire))
|
|
{
|
|
var_03 = common_scripts\utility::cointoss();
|
|
}
|
|
|
|
if(var_03)
|
|
{
|
|
if(func_0F6E(param_00))
|
|
{
|
|
self notify("killanimscript");
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
if(self.a.var_CE2 && animscripts/utility::func_CE3())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(func_0F49() || animscripts/utility::func_F39())
|
|
{
|
|
if(isdefined(level.throwgrenadeatplayerasap) && isalive(level.player))
|
|
{
|
|
if(func_0F61(param_00,level.player))
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if(func_0F52(param_00,0))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(self.team != "allies" && gettime() >= var_01)
|
|
{
|
|
if(func_0F64(param_00))
|
|
{
|
|
var_01 = gettime();
|
|
if(!isdefined(self.favor_blindfire))
|
|
{
|
|
var_01 = var_01 + randomintrange(3000,12000);
|
|
}
|
|
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if(func_0F61(param_00,self.enemy))
|
|
{
|
|
var_02 = 1;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if(func_0F52(param_00,0.1))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
idle(param_00);
|
|
}
|
|
|
|
if(!var_02 && randomint(2) == 0)
|
|
{
|
|
func_0F58(param_00);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 11
|
|
func_0F4E(param_00)
|
|
{
|
|
var_01 = [];
|
|
if(param_00 == 1)
|
|
{
|
|
}
|
|
else if(var_01 == 2)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
for(var_02 = 0;var_02 < var_01;var_02++ = var_7B[1])
|
|
{
|
|
var_7B[var_02] = var_02;
|
|
}
|
|
|
|
for(var_02 = 0;var_02 < var_01;var_02++ = 1 - var_7B[0])
|
|
{
|
|
var_03 = var_02 + randomint(var_01 - var_02);
|
|
var_04 = var_7B[var_03];
|
|
var_7B[var_03] = var_7B[var_02];
|
|
var_7B[var_02] = var_04;
|
|
}
|
|
}
|
|
|
|
return var_7B;
|
|
}
|
|
|
|
//Function Number: 12
|
|
func_0F4F(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
thread func_0F60();
|
|
var_04 = gettime();
|
|
var_05 = undefined;
|
|
if(isdefined(param_03))
|
|
{
|
|
var_05 = [[ param_00 ]](param_01,param_02,param_03);
|
|
}
|
|
else if(isdefined(param_02))
|
|
{
|
|
var_05 = [[ param_00 ]](param_01,param_02);
|
|
}
|
|
else if(isdefined(param_01))
|
|
{
|
|
var_05 = [[ param_00 ]](param_01);
|
|
}
|
|
else
|
|
{
|
|
var_05 = [[ param_00 ]]();
|
|
}
|
|
|
|
if(!var_05)
|
|
{
|
|
self notify("dont_end_idle");
|
|
}
|
|
|
|
return var_05;
|
|
}
|
|
|
|
//Function Number: 13
|
|
func_0F50()
|
|
{
|
|
self endon("killanimscript");
|
|
self.var_F47 = gettime() - 100000;
|
|
self.var_F51 = self.var_F47;
|
|
for(;;)
|
|
{
|
|
self waittill("suppression");
|
|
var_00 = gettime();
|
|
if(self.var_F47 < var_00 - 700)
|
|
{
|
|
self.var_F51 = var_00;
|
|
}
|
|
|
|
self.var_F47 = var_00;
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
func_0F52(param_00,param_01)
|
|
{
|
|
if(self.bulletsinclip > weaponclipsize(self.weapon) * param_01)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
self.var_F53 = 1;
|
|
var_02 = func_0F4F(param_00.var_F54);
|
|
self.var_F53 = 0;
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 15
|
|
func_0F55(param_00,param_01)
|
|
{
|
|
thread animscripts/shoot_behavior::func_CD7(param_01);
|
|
if(!self.fixednode && !self.var_748)
|
|
{
|
|
thread func_0F66();
|
|
}
|
|
|
|
var_02 = func_0F4F(param_00.var_F55);
|
|
self notify("stop_deciding_how_to_shoot");
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 16
|
|
func_0F56(param_00)
|
|
{
|
|
if(self.a.var_CE2 && animscripts/utility::func_CE3())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.a.var_F31 + 6000 > gettime())
|
|
{
|
|
return func_0F58(param_00);
|
|
}
|
|
|
|
var_01 = func_0F4F(param_00.var_7A8,2 + randomfloat(2));
|
|
if(var_01)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return func_0F4F(param_00.var_F57);
|
|
}
|
|
|
|
//Function Number: 17
|
|
func_0F58(param_00)
|
|
{
|
|
var_01 = func_0F4F(param_00.var_F57);
|
|
if(var_01)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return func_0F4F(param_00.var_7A8,0);
|
|
}
|
|
|
|
//Function Number: 18
|
|
idle(param_00,param_01)
|
|
{
|
|
self.var_F5A = 0;
|
|
if(isdefined(param_00.var_F5B))
|
|
{
|
|
if(!self.a.var_F32 && gettime() - self.var_F51 < 600)
|
|
{
|
|
if([[ param_00.var_F5B ]]())
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
thread func_0F5F(param_00);
|
|
}
|
|
}
|
|
|
|
if(!self.a.var_F32)
|
|
{
|
|
thread func_0F5E(param_00.idle);
|
|
self.a.var_F32 = 1;
|
|
}
|
|
|
|
if(isdefined(param_01))
|
|
{
|
|
func_0F5C(param_01);
|
|
}
|
|
else
|
|
{
|
|
func_0F5D();
|
|
}
|
|
|
|
if(self.var_F5A)
|
|
{
|
|
self waittill("flinch_done");
|
|
}
|
|
|
|
self notify("stop_waiting_to_flinch");
|
|
}
|
|
|
|
//Function Number: 19
|
|
func_0F5C(param_00)
|
|
{
|
|
self endon("end_idle");
|
|
wait param_00;
|
|
}
|
|
|
|
//Function Number: 20
|
|
func_0F5D()
|
|
{
|
|
self endon("end_idle");
|
|
wait 0.3 + randomfloat(0.1);
|
|
self waittill("do_slow_things");
|
|
}
|
|
|
|
//Function Number: 21
|
|
func_0F5E(param_00)
|
|
{
|
|
self endon("killanimscript");
|
|
self [[ param_00 ]]();
|
|
}
|
|
|
|
//Function Number: 22
|
|
func_0F5F(param_00)
|
|
{
|
|
self endon("killanimscript");
|
|
self endon("stop_waiting_to_flinch");
|
|
var_01 = self.var_F47;
|
|
for(;;)
|
|
{
|
|
self waittill("suppression");
|
|
var_02 = gettime();
|
|
if(var_01 < var_02 - 2000)
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_01 = var_02;
|
|
}
|
|
|
|
self.var_F5A = 1;
|
|
thread func_0F60();
|
|
var_03 = [[ param_00.var_F5B ]]();
|
|
if(!var_03)
|
|
{
|
|
self notify("dont_end_idle");
|
|
}
|
|
|
|
self.var_F5A = 0;
|
|
self notify("flinch_done");
|
|
}
|
|
|
|
//Function Number: 23
|
|
func_0F60()
|
|
{
|
|
self endon("killanimscript");
|
|
self endon("dont_end_idle");
|
|
waittillframeend;
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self notify("end_idle");
|
|
self.a.var_F32 = 0;
|
|
}
|
|
|
|
//Function Number: 24
|
|
func_0F61(param_00,param_01)
|
|
{
|
|
var_02 = anglestoforward(self.angles);
|
|
var_03 = vectornormalize(param_01.origin - self.origin);
|
|
if(vectordot(var_02,var_03) < 0)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.var_748 && !animscripts/utility::func_CBC())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(animscripts/utility::func_F62())
|
|
{
|
|
return func_0F4F(param_00.var_F63,param_01);
|
|
}
|
|
|
|
return func_0F4F(param_00.var_73C,param_01);
|
|
}
|
|
|
|
//Function Number: 25
|
|
func_0F64(param_00)
|
|
{
|
|
if(!animscripts/utility::func_F65())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return func_0F4F(param_00.var_F64);
|
|
}
|
|
|
|
//Function Number: 26
|
|
func_0F66()
|
|
{
|
|
self endon("killanimscript");
|
|
self endon("stop_deciding_how_to_shoot");
|
|
for(;;)
|
|
{
|
|
if(self.fixednode || self.var_748)
|
|
{
|
|
return;
|
|
}
|
|
|
|
wait 0.5 + randomfloat(0.75);
|
|
if(!isdefined(self.enemy))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(func_0F67())
|
|
{
|
|
if(func_0F6D())
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(!animscripts/utility::func_CBC() && !animscripts/utility::func_CF3())
|
|
{
|
|
if(gettime() > self.a.var_F3A)
|
|
{
|
|
if(func_0F6C())
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 27
|
|
func_0F67()
|
|
{
|
|
if(!isdefined(self.enemy))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.enemy common_scripts\utility::isflashed())
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(isplayer(self.enemy))
|
|
{
|
|
if(isdefined(self.enemy.health) && self.enemy.health < self.enemy.maxhealth)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
else if(isai(self.enemy) && self.enemy animscripts/utility::func_F4C())
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(isdefined(self.enemy.var_F53) && self.enemy.var_F53)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 28
|
|
func_0F68()
|
|
{
|
|
self.a.var_F43 = 0;
|
|
}
|
|
|
|
//Function Number: 29
|
|
func_0F69()
|
|
{
|
|
var_00 = gettime();
|
|
if(isdefined(self.var_F6A) && var_00 > self.a.var_F3A)
|
|
{
|
|
self.a.var_F3A = var_00 + randomintrange(2000,5000);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self.enemy))
|
|
{
|
|
var_01 = distance2d(self.origin,self.enemy.origin);
|
|
if(var_01 < self.var_77C)
|
|
{
|
|
self.a.var_F3A = var_00 + randomintrange(5000,10000);
|
|
return;
|
|
}
|
|
|
|
if(var_01 > self.var_77E && var_01 < self.goalradius)
|
|
{
|
|
self.a.var_F3A = var_00 + randomintrange(2000,5000);
|
|
return;
|
|
}
|
|
|
|
self.a.var_F3A = var_00 + randomintrange(10000,15000);
|
|
return;
|
|
}
|
|
|
|
self.a.var_F3A = var_00 + randomintrange(5000,15000);
|
|
}
|
|
|
|
//Function Number: 30
|
|
func_0F6B()
|
|
{
|
|
if(isdefined(self.aggressivemode))
|
|
{
|
|
self.var_F30 = gettime() + randomintrange(500,1000);
|
|
return;
|
|
}
|
|
|
|
self.var_F30 = gettime() + randomintrange(3000,5000);
|
|
}
|
|
|
|
//Function Number: 31
|
|
func_0F6C()
|
|
{
|
|
return func_0F6D();
|
|
}
|
|
|
|
//Function Number: 32
|
|
func_0F6D()
|
|
{
|
|
if(self.fixednode || self.var_748)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(isdefined(self.aggressivemode) && gettime() >= self.var_F30)
|
|
{
|
|
return animscripts/combat_utility::func_F35(0);
|
|
}
|
|
|
|
var_00 = 0;
|
|
if(!isdefined(self.enemy) || !self.enemy common_scripts\utility::isflashed())
|
|
{
|
|
var_00 = animscripts/combat_utility::func_F3B();
|
|
}
|
|
|
|
if(!var_00 && isdefined(self.enemy) && !animscripts/utility::func_F4A())
|
|
{
|
|
if(gettime() >= self.var_F30)
|
|
{
|
|
return animscripts/combat_utility::func_F35(0);
|
|
}
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 33
|
|
func_0F6E(param_00)
|
|
{
|
|
if(isdefined(param_00.var_F37))
|
|
{
|
|
if([[ param_00.var_F37 ]]())
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return animscripts/combat_utility::func_F3B();
|
|
}
|
|
|
|
//Function Number: 34
|
|
func_0F6F()
|
|
{
|
|
self.a.array["turn_left_45"] = %exposed_tracking_turn45l;
|
|
self.a.array["turn_left_90"] = %exposed_tracking_turn90l;
|
|
self.a.array["turn_left_135"] = %exposed_tracking_turn135l;
|
|
self.a.array["turn_left_180"] = %exposed_tracking_turn180l;
|
|
self.a.array["turn_right_45"] = %exposed_tracking_turn45r;
|
|
self.a.array["turn_right_90"] = %exposed_tracking_turn90r;
|
|
self.a.array["turn_right_135"] = %exposed_tracking_turn135r;
|
|
self.a.array["turn_right_180"] = %exposed_tracking_turn180r;
|
|
}
|
|
|
|
//Function Number: 35
|
|
func_0F70()
|
|
{
|
|
self.a.array["turn_left_45"] = %exposed_crouch_turn_90_left;
|
|
self.a.array["turn_left_90"] = %exposed_crouch_turn_90_left;
|
|
self.a.array["turn_left_135"] = %exposed_crouch_turn_180_left;
|
|
self.a.array["turn_left_180"] = %exposed_crouch_turn_180_left;
|
|
self.a.array["turn_right_45"] = %exposed_crouch_turn_90_right;
|
|
self.a.array["turn_right_90"] = %exposed_crouch_turn_90_right;
|
|
self.a.array["turn_right_135"] = %exposed_crouch_turn_180_right;
|
|
self.a.array["turn_right_180"] = %exposed_crouch_turn_180_right;
|
|
}
|
|
|
|
//Function Number: 36
|
|
func_0F71(param_00)
|
|
{
|
|
if(isdefined(self.node))
|
|
{
|
|
var_01 = self.node;
|
|
var_02 = abs(angleclamp180(self.angles[1] - var_01.angles[1] + param_00));
|
|
if(self.a.pose == "stand" && var_01 gethighestnodestance() != "stand")
|
|
{
|
|
if(var_02 > 45 && var_02 < 90)
|
|
{
|
|
self orientmode("face angle",self.angles[1]);
|
|
}
|
|
else
|
|
{
|
|
self orientmode("face current");
|
|
}
|
|
|
|
var_03 = 1.5;
|
|
var_04 = getnotetracktimes(%exposed_stand_2_crouch,"anim_pose = \"crouch\")[0];
|
|
var_04 = min(1,var_04 * 1.1);
|
|
var_05 = var_04 * getanimlength(%exposed_stand_2_crouch) / var_03;
|
|
self setflaggedanimknoballrestart("crouchanim",%exposed_stand_2_crouch,%body,1,0.2,var_03);
|
|
animscripts/notetracks::func_D4F(var_05,"crouchanim");
|
|
self clearanim(%body,0.2);
|
|
}
|
|
|
|
self orientmode("face angle",self.angles[1]);
|
|
var_06 = angleclamp180(self.angles[1] - var_01.angles[1] + param_00);
|
|
if(abs(var_06) > 45)
|
|
{
|
|
if(self.a.pose == "stand")
|
|
{
|
|
func_0F6F();
|
|
}
|
|
else
|
|
{
|
|
func_0F70();
|
|
}
|
|
|
|
self.var_F72 = 45;
|
|
self.var_F3D = 1;
|
|
animscripts/combat::func_F73(var_06);
|
|
self.var_F3D = undefined;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 37
|
|
func_0F37()
|
|
{
|
|
if(!isdefined(self.enemy))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(isdefined(self.var_F6A))
|
|
{
|
|
self.var_F6A = undefined;
|
|
return 0;
|
|
}
|
|
|
|
if(!isdefined(self.node))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(randomint(3) == 0)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.fixednode || self.var_748 || self.var_766 || self.keepclaimednodeifvalid)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(distancesquared(self.origin,self.node.origin) > 256)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = self findshufflecovernode();
|
|
if(isdefined(var_00) && var_00 != self.node && self usecovernode(var_00))
|
|
{
|
|
self.var_F74 = 1;
|
|
self.var_F75 = var_00;
|
|
self.var_F6A = 1;
|
|
wait 0.5;
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
} |