mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-22 07:57:51 -05:00
Full AW Dump
This commit is contained in:
131
AW/PC/animscripts/animmode.gsc
Normal file
131
AW/PC/animscripts/animmode.gsc
Normal file
@ -0,0 +1,131 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: animmode.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 40 ms
|
||||
* Timestamp: 4/22/2024 1:59:48 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("stop_animmode");
|
||||
self notify("killanimscript");
|
||||
self._tag_entity endon(self._anime);
|
||||
if(isdefined(self._custom_anim_thread))
|
||||
{
|
||||
self thread [[ self._custom_anim_thread ]]();
|
||||
self._custom_anim_thread = undefined;
|
||||
}
|
||||
|
||||
var_00 = isdefined(self._custom_anim_loop) && self._custom_anim_loop;
|
||||
if(var_00)
|
||||
{
|
||||
self endon("stop_loop");
|
||||
self._custom_anim_loop = undefined;
|
||||
}
|
||||
else
|
||||
{
|
||||
thread notify_on_end(self._anime);
|
||||
}
|
||||
|
||||
var_01 = self._anime;
|
||||
self._anime = undefined;
|
||||
var_02 = 0;
|
||||
if(var_00 || isarray(level.scr_anim[self._animname][var_01]))
|
||||
{
|
||||
var_02 = level.scr_anim[self._animname][var_01].size;
|
||||
var_03 = level.scr_anim[self._animname][var_01][randomint(var_02)];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = level.scr_anim[self._animname][var_02];
|
||||
}
|
||||
|
||||
var_04 = getstartorigin(self._tag_entity.origin,self._tag_entity.angles,var_03);
|
||||
var_05 = getstartangles(self._tag_entity.origin,self._tag_entity.angles,var_03);
|
||||
var_06 = self getdroptofloorposition(var_04);
|
||||
if(isdefined(var_06))
|
||||
{
|
||||
var_04 = var_06;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
|
||||
if(!isdefined(self.noteleport))
|
||||
{
|
||||
self teleport(var_04,var_05);
|
||||
}
|
||||
|
||||
self.pushable = 0;
|
||||
var_07 = 0.3;
|
||||
var_08 = 0.2;
|
||||
if(isdefined(self.anim_blend_time_override))
|
||||
{
|
||||
var_07 = self.anim_blend_time_override;
|
||||
var_08 = self.anim_blend_time_override;
|
||||
}
|
||||
|
||||
self animmode(self._animmode);
|
||||
self clearanim(self.root_anim,var_07);
|
||||
self orientmode("face angle",var_05[1]);
|
||||
var_09 = "custom_animmode";
|
||||
self setflaggedanimrestart(var_09,var_03,1,var_08,1);
|
||||
self._tag_entity thread maps\_anim::start_notetrack_wait(self,var_09,var_01,self._animname,var_03);
|
||||
self._tag_entity thread maps\_anim::animscriptdonotetracksthread(self,var_09,var_01);
|
||||
var_0A = self._tag_entity;
|
||||
self._tag_entity = undefined;
|
||||
self._animmode = undefined;
|
||||
self endon("killanimscript");
|
||||
var_0B = "end";
|
||||
if(!var_00)
|
||||
{
|
||||
if(animhasnotetrack(var_03,"finish"))
|
||||
{
|
||||
var_0B = "finish";
|
||||
}
|
||||
else if(animhasnotetrack(var_03,"stop anim"))
|
||||
{
|
||||
var_0B = "stop anim";
|
||||
}
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
self waittillmatch(var_0B,var_09);
|
||||
if(var_00)
|
||||
{
|
||||
var_03 = level.scr_anim[self._animname][var_01][randomint(var_02)];
|
||||
self setflaggedanimknoblimitedrestart(var_09,var_03,1,0.2,1);
|
||||
if(isdefined(var_0A))
|
||||
{
|
||||
var_0A thread maps\_anim::start_notetrack_wait(self,var_09,var_01,self._animname,var_03);
|
||||
var_0A thread maps\_anim::animscriptdonotetracksthread(self,var_09,var_01);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if(var_0B != "end")
|
||||
{
|
||||
self orientmode("face motion");
|
||||
}
|
||||
|
||||
self notify("finished_custom_animmode" + var_01);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
notify_on_end(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("finished_custom_animmode" + param_00);
|
||||
self waittill("killanimscript");
|
||||
self notify("finished_custom_animmode" + param_00);
|
||||
}
|
1086
AW/PC/animscripts/animset.gsc
Normal file
1086
AW/PC/animscripts/animset.gsc
Normal file
File diff suppressed because it is too large
Load Diff
4233
AW/PC/animscripts/battlechatter.gsc
Normal file
4233
AW/PC/animscripts/battlechatter.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1481
AW/PC/animscripts/battlechatter_ai.gsc
Normal file
1481
AW/PC/animscripts/battlechatter_ai.gsc
Normal file
File diff suppressed because it is too large
Load Diff
70
AW/PC/animscripts/civilian.gsc
Normal file
70
AW/PC/animscripts/civilian.gsc
Normal file
@ -0,0 +1,70 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 4
|
||||
* Decompile Time: 67 ms
|
||||
* Timestamp: 4/22/2024 2:00:01 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
cover()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self clearanim(%animscript_root,0.2);
|
||||
animscripts\utility::updateisincombattimer();
|
||||
if(animscripts\utility::isincombat())
|
||||
{
|
||||
var_00 = "idle_combat";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = "idle_noncombat";
|
||||
}
|
||||
|
||||
var_01 = undefined;
|
||||
if(isdefined(self.animname) && isdefined(level.scr_anim[self.animname]))
|
||||
{
|
||||
var_01 = level.scr_anim[self.animname][var_00];
|
||||
}
|
||||
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
if(!isdefined(level.scr_anim["default_civilian"]))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = level.scr_anim["default_civilian"][var_00];
|
||||
}
|
||||
|
||||
thread move_check();
|
||||
for(;;)
|
||||
{
|
||||
self setflaggedanimknoball("idle",common_scripts\utility::random(var_01),%animscript_root,1,0.2,1);
|
||||
self waittillmatch("end","idle");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
move_check()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
while(!isdefined(self.champion))
|
||||
{
|
||||
wait(1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
stop()
|
||||
{
|
||||
cover();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
get_flashed_anim()
|
||||
{
|
||||
return level.civilianflashedarray[randomint(level.civilianflashedarray.size)];
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_combat.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_combat.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_combat.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 21 ms
|
||||
* Timestamp: 4/22/2024 1:58:35 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\civilian::cover();
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_cover_arrival.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_cover_arrival.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_cover_arrival.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 33 ms
|
||||
* Timestamp: 4/22/2024 1:58:35 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\cover_arrival::main();
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_cover_crouch.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_cover_crouch.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_cover_crouch.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 22 ms
|
||||
* Timestamp: 4/22/2024 1:58:36 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\civilian::cover();
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_cover_left.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_cover_left.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_cover_left.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 21 ms
|
||||
* Timestamp: 4/22/2024 1:58:36 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\civilian::cover();
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_cover_prone.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_cover_prone.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_cover_prone.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 23 ms
|
||||
* Timestamp: 4/22/2024 1:58:36 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\civilian::cover();
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_cover_right.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_cover_right.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_cover_right.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 21 ms
|
||||
* Timestamp: 4/22/2024 1:58:36 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\civilian::cover();
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_cover_stand.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_cover_stand.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_cover_stand.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 33 ms
|
||||
* Timestamp: 4/22/2024 1:58:37 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\civilian::cover();
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_death.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_death.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_death.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 21 ms
|
||||
* Timestamp: 4/22/2024 1:58:37 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\death::main();
|
||||
}
|
27
AW/PC/animscripts/civilian/civilian_flashed.gsc
Normal file
27
AW/PC/animscripts/civilian/civilian_flashed.gsc
Normal file
@ -0,0 +1,27 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_flashed.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 34 ms
|
||||
* Timestamp: 4/22/2024 1:58:37 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
get_flashed_anim()
|
||||
{
|
||||
return level.civilianflashedarray[randomint(level.civilianflashedarray.size)];
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
main()
|
||||
{
|
||||
var_00 = maps\_utility::flashbanggettimeleftsec();
|
||||
if(var_00 <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
animscripts\flashed::flashbangedloop(get_flashed_anim(),var_00);
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_grenade_response.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_grenade_response.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_grenade_response.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 22 ms
|
||||
* Timestamp: 4/22/2024 1:58:37 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\civilian::cover();
|
||||
}
|
243
AW/PC/animscripts/civilian/civilian_init.gsc
Normal file
243
AW/PC/animscripts/civilian/civilian_init.gsc
Normal file
@ -0,0 +1,243 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_init.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 9
|
||||
* Decompile Time: 112 ms
|
||||
* Timestamp: 4/22/2024 1:58:38 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\init::main();
|
||||
civilian_init();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
civilian_init()
|
||||
{
|
||||
self.allowdeath = 1;
|
||||
self.disablearrivals = 1;
|
||||
self.disableexits = 1;
|
||||
self.neverenablecqb = 1;
|
||||
self.alwaysrunforward = 1;
|
||||
self orientmode("face default");
|
||||
self.combatmode = "no_cover";
|
||||
self pushplayer(0);
|
||||
self.a.reacttobulletchance = 1;
|
||||
if(!isdefined(level.initialized_civilian_animations))
|
||||
{
|
||||
level.initialized_civilian_animations = 1;
|
||||
level.scr_anim["default_civilian"]["run_combat"][0] = %civilian_run_upright;
|
||||
level.scr_anim["default_civilian"]["run_hunched_combat"][0] = %civilian_run_hunched_a;
|
||||
level.scr_anim["default_civilian"]["run_hunched_combat"][1] = %civilian_run_hunched_c;
|
||||
level.scr_anim["default_civilian"]["run_hunched_combat"][2] = %civilian_run_hunched_flinch;
|
||||
level.scr_anim["default_civilian"]["run_noncombat"][0] = %civilian_walk_cool;
|
||||
var_00 = [];
|
||||
var_00[0] = 3;
|
||||
var_00[1] = 3;
|
||||
var_00[2] = 1;
|
||||
level.scr_anim["default_civilian"]["run_hunched_weights"] = common_scripts\utility::get_cumulative_weights(var_00);
|
||||
var_00 = [];
|
||||
var_00[0] = 1;
|
||||
level.scr_anim["default_civilian"]["run_weights"] = common_scripts\utility::get_cumulative_weights(var_00);
|
||||
level.scr_anim["default_civilian"]["idle_noncombat"][0] = %unarmed_cowerstand_idle;
|
||||
level.scr_anim["default_civilian"]["idle_combat"][0] = %casual_crouch_v2_idle;
|
||||
level.scr_anim["default_civilian"]["idle_combat"][1] = %unarmed_cowercrouch_idle_duck;
|
||||
level.civilianflashedarray[0] = %unarmed_cowerstand_react;
|
||||
level.civilianflashedarray[1] = %unarmed_cowercrouch_react_a;
|
||||
level.civilianflashedarray[2] = %unarmed_cowercrouch_react_b;
|
||||
}
|
||||
|
||||
var_01 = undefined;
|
||||
if(isdefined(self.civilian_walk_animation))
|
||||
{
|
||||
self.animname = self.civilian_walk_animation;
|
||||
attachprops(self.civilian_walk_animation);
|
||||
self.alertlevel = "noncombat";
|
||||
startnoncombat();
|
||||
}
|
||||
else
|
||||
{
|
||||
self.animname = "default_civilian";
|
||||
self.alertlevel = "alert";
|
||||
startcombat();
|
||||
}
|
||||
|
||||
thread checkcombatstate();
|
||||
self.dropweapon = 0;
|
||||
animscripts\shared::dropaiweapon();
|
||||
self.saved = 0;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
attachprops(param_00)
|
||||
{
|
||||
if(isdefined(self.hasattachedprops))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
initcivilianprops();
|
||||
var_01 = level.civilianprops[param_00];
|
||||
if(isdefined(var_01))
|
||||
{
|
||||
self.attachedpropmodel = var_01;
|
||||
self.attachedproptag = "tag_inhand";
|
||||
self attach(self.attachedpropmodel,self.attachedproptag,1);
|
||||
self.hasattachedprops = 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
detachprops()
|
||||
{
|
||||
if(isdefined(self.hasattachedprops))
|
||||
{
|
||||
self detach(self.attachedpropmodel,self.attachedproptag);
|
||||
var_00 = spawn("script_model",self gettagorigin(self.attachedproptag));
|
||||
var_00.angles = self gettagangles(self.attachedproptag);
|
||||
var_00 setmodel(self.attachedpropmodel);
|
||||
var_00 physicslaunchclient();
|
||||
var_00 thread waitforcleanup();
|
||||
self.hasattachedprops = undefined;
|
||||
self.attachedpropmodel = undefined;
|
||||
self.attachedproptag = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
waitforcleanup()
|
||||
{
|
||||
wait(10);
|
||||
self delete();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
initcivilianprops()
|
||||
{
|
||||
if(isdefined(level.civilianprops))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
anim.civilianprops = [];
|
||||
level.civilianprops["civilian_briefcase_walk"] = "com_metal_briefcase";
|
||||
level.civilianprops["civilian_crazy_walk"] = "electronics_pda";
|
||||
level.civilianprops["civilian_cellphone_walk"] = "com_cellphone_on";
|
||||
level.civilianprops["sit_lunch_A"] = "com_cellphone_on";
|
||||
level.civilianprops["civilian_soda_walk"] = "ma_cup_single_closed";
|
||||
level.civilianprops["civilian_paper_walk"] = "paper_memo";
|
||||
level.civilianprops["civilian_coffee_walk"] = "cs_coffeemug02";
|
||||
level.civilianprops["civilian_pda_walk"] = "electronics_pda";
|
||||
level.civilianprops["reading1"] = "open_book";
|
||||
level.civilianprops["reading2"] = "open_book";
|
||||
level.civilianprops["texting_stand"] = "electronics_pda";
|
||||
level.civilianprops["texting_sit"] = "electronics_pda";
|
||||
level.civilianprops["smoking1"] = "prop_cigarette";
|
||||
level.civilianprops["smoking2"] = "prop_cigarette";
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
startnoncombat()
|
||||
{
|
||||
self.turnrate = 0.2;
|
||||
if(isdefined(self.civilian_walk_animation))
|
||||
{
|
||||
var_00 = %civilian_briefcase_walk_dodge_l;
|
||||
var_01 = %civilian_briefcase_walk_dodge_r;
|
||||
if(isdefined(level.scr_anim[self.animname]["dodge_left"]))
|
||||
{
|
||||
var_00 = level.scr_anim[self.animname]["dodge_left"];
|
||||
}
|
||||
|
||||
if(isdefined(level.scr_anim[self.animname]["dodge_right"]))
|
||||
{
|
||||
var_01 = level.scr_anim[self.animname]["dodge_right"];
|
||||
}
|
||||
|
||||
animscripts\move::setdodgeanims(var_00,var_01);
|
||||
}
|
||||
|
||||
if(isdefined(level.scr_anim[self.animname]["turn_left_90"]))
|
||||
{
|
||||
self.pathturnanimoverridefunc = ::animscripts\civilian\civilian_move::civilian_noncombatmoveturn;
|
||||
self.pathturnanimblendtime = 0.1;
|
||||
maps\_utility::enable_turnanims();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_utility::disable_turnanims();
|
||||
}
|
||||
|
||||
self.run_overrideanim = level.scr_anim[self.animname]["run_noncombat"];
|
||||
self.walk_overrideanim = self.run_overrideanim;
|
||||
self.run_overridebulletreact = undefined;
|
||||
if(self.animname == "default_civilian")
|
||||
{
|
||||
self.run_override_weights = level.scr_anim[self.animname]["run_weights_noncombat"];
|
||||
self.walk_override_weights = self.run_override_weights;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
startcombat()
|
||||
{
|
||||
self notify("combat");
|
||||
animscripts\move::cleardodgeanims();
|
||||
self.pathturnanimblendtime = undefined;
|
||||
maps\_utility::enable_turnanims();
|
||||
self.turnrate = 0.3;
|
||||
var_00 = randomint(3) < 1;
|
||||
if(isdefined(self.force_civilian_stand_run))
|
||||
{
|
||||
var_00 = 1;
|
||||
}
|
||||
else if(isdefined(self.force_civilian_hunched_run))
|
||||
{
|
||||
var_00 = 0;
|
||||
}
|
||||
|
||||
if(var_00)
|
||||
{
|
||||
self.pathturnanimoverridefunc = ::animscripts\civilian\civilian_move::civilian_combatmoveturn;
|
||||
self.run_overrideanim = level.scr_anim["default_civilian"]["run_combat"];
|
||||
self.run_override_weights = level.scr_anim["default_civilian"]["run_weights"];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.pathturnanimoverridefunc = ::animscripts\civilian\civilian_move::civilian_combathunchedmoveturn;
|
||||
self.run_overrideanim = level.scr_anim["default_civilian"]["run_hunched_combat"];
|
||||
self.run_override_weights = level.scr_anim["default_civilian"]["run_hunched_weights"];
|
||||
}
|
||||
|
||||
self.run_overridebulletreact = [];
|
||||
self.run_overridebulletreact[0] = %run_react_stumble;
|
||||
self.walk_overrideanim = self.run_overrideanim;
|
||||
self.walk_override_weights = self.run_override_weights;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
checkcombatstate()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disable_combat_state_check");
|
||||
var_00 = self.alertlevelint > 1;
|
||||
for(;;)
|
||||
{
|
||||
var_01 = self.alertlevelint > 1;
|
||||
if(var_00 && !var_01)
|
||||
{
|
||||
startnoncombat();
|
||||
}
|
||||
else if(!var_00 && var_01)
|
||||
{
|
||||
startcombat();
|
||||
}
|
||||
|
||||
var_00 = var_01;
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
147
AW/PC/animscripts/civilian/civilian_move.gsc
Normal file
147
AW/PC/animscripts/civilian/civilian_move.gsc
Normal file
@ -0,0 +1,147 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_move.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 4
|
||||
* Decompile Time: 53 ms
|
||||
* Timestamp: 4/22/2024 1:58:38 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\move::main();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
civilian_noncombatmoveturn(param_00,param_01)
|
||||
{
|
||||
var_02 = undefined;
|
||||
if(param_00 < -60 && param_00 > -120)
|
||||
{
|
||||
var_02 = level.scr_anim[self.animname]["turn_left_90"];
|
||||
}
|
||||
|
||||
if(param_00 > 60 && param_00 < 120)
|
||||
{
|
||||
var_02 = level.scr_anim[self.animname]["turn_right_90"];
|
||||
}
|
||||
|
||||
if(isdefined(var_02) && animscripts\move::pathchange_candoturnanim(var_02))
|
||||
{
|
||||
return var_02;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
civilian_combatmoveturn(param_00,param_01)
|
||||
{
|
||||
var_02 = undefined;
|
||||
if(param_00 < -22.5)
|
||||
{
|
||||
if(param_00 > -45)
|
||||
{
|
||||
var_02 = %civilian_run_upright_turnl45;
|
||||
}
|
||||
else if(param_00 > -112.5)
|
||||
{
|
||||
var_02 = %civilian_run_upright_turnl90;
|
||||
}
|
||||
else if(param_00 > -157.5)
|
||||
{
|
||||
var_02 = %civilian_run_upright_turnl135;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = %civilian_run_upright_turn180;
|
||||
}
|
||||
}
|
||||
else if(param_00 > 22.5)
|
||||
{
|
||||
if(param_00 < 45)
|
||||
{
|
||||
var_02 = %civilian_run_upright_turnr45;
|
||||
}
|
||||
else if(param_00 < 112.5)
|
||||
{
|
||||
var_02 = %civilian_run_upright_turnr90;
|
||||
}
|
||||
else if(param_00 < 157.5)
|
||||
{
|
||||
var_02 = %civilian_run_upright_turnr135;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = %civilian_run_upright_turn180;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_02) && animscripts\move::pathchange_candoturnanim(var_02))
|
||||
{
|
||||
return var_02;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
civilian_combathunchedmoveturn(param_00,param_01)
|
||||
{
|
||||
var_02 = undefined;
|
||||
var_03 = undefined;
|
||||
if(param_00 < -22.5)
|
||||
{
|
||||
if(param_00 > -45)
|
||||
{
|
||||
var_02 = %civilian_run_hunched_turnl45;
|
||||
}
|
||||
else if(param_00 > -112.5)
|
||||
{
|
||||
var_02 = %civilian_run_hunched_turnl90;
|
||||
var_03 = animscripts\utility::randomanimoftwo(%civilian_run_hunched_turnl90_slide,%civilian_run_hunched_turnl90_stumble);
|
||||
}
|
||||
else if(param_00 > -157.5)
|
||||
{
|
||||
var_02 = %civilian_run_upright_turnl135;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = %civilian_run_upright_turn180;
|
||||
}
|
||||
}
|
||||
else if(param_00 > 22.5)
|
||||
{
|
||||
if(param_00 < 45)
|
||||
{
|
||||
var_02 = %civilian_run_hunched_turnr45;
|
||||
}
|
||||
else if(param_00 < 112.5)
|
||||
{
|
||||
var_02 = %civilian_run_hunched_turnr90;
|
||||
var_03 = animscripts\utility::randomanimoftwo(%civilian_run_hunched_turnr90_slide,%civilian_run_hunched_turnr90_stumble);
|
||||
}
|
||||
else if(param_00 < 157.5)
|
||||
{
|
||||
var_02 = %civilian_run_upright_turnr135;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = %civilian_run_upright_turn180;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_03) && randomint(3) < 2 && animscripts\move::pathchange_candoturnanim(var_03))
|
||||
{
|
||||
return var_03;
|
||||
}
|
||||
|
||||
if(isdefined(var_02) && animscripts\move::pathchange_candoturnanim(var_02))
|
||||
{
|
||||
return var_02;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_pain.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_pain.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_pain.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 21 ms
|
||||
* Timestamp: 4/22/2024 1:58:39 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\pain::main();
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_reactions.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_reactions.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_reactions.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 21 ms
|
||||
* Timestamp: 4/22/2024 1:58:39 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\civilian::cover();
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_scripted.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_scripted.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_scripted.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 20 ms
|
||||
* Timestamp: 4/22/2024 1:58:39 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\scripted::main();
|
||||
}
|
15
AW/PC/animscripts/civilian/civilian_stop.gsc
Normal file
15
AW/PC/animscripts/civilian/civilian_stop.gsc
Normal file
@ -0,0 +1,15 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: civilian\civilian_stop.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 20 ms
|
||||
* Timestamp: 4/22/2024 1:58:39 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
animscripts\civilian::stop();
|
||||
}
|
1728
AW/PC/animscripts/combat.gsc
Normal file
1728
AW/PC/animscripts/combat.gsc
Normal file
File diff suppressed because it is too large
Load Diff
21
AW/PC/animscripts/combat_say.gsc
Normal file
21
AW/PC/animscripts/combat_say.gsc
Normal file
@ -0,0 +1,21 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: combat_say.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 41 ms
|
||||
* Timestamp: 4/22/2024 2:00:05 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
generic_combat()
|
||||
{
|
||||
animscripts\battlechatter::playbattlechatter();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
specific_combat(param_00)
|
||||
{
|
||||
animscripts\battlechatter::playbattlechatter();
|
||||
}
|
2063
AW/PC/animscripts/combat_utility.gsc
Normal file
2063
AW/PC/animscripts/combat_utility.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1741
AW/PC/animscripts/corner.gsc
Normal file
1741
AW/PC/animscripts/corner.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1192
AW/PC/animscripts/cover_arrival.gsc
Normal file
1192
AW/PC/animscripts/cover_arrival.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1073
AW/PC/animscripts/cover_behavior.gsc
Normal file
1073
AW/PC/animscripts/cover_behavior.gsc
Normal file
File diff suppressed because it is too large
Load Diff
24
AW/PC/animscripts/cover_crouch.gsc
Normal file
24
AW/PC/animscripts/cover_crouch.gsc
Normal file
@ -0,0 +1,24 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: cover_crouch.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 41 ms
|
||||
* Timestamp: 4/22/2024 2:00:17 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("cover_crouch");
|
||||
animscripts\cover_wall::cover_wall_think("crouch");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
end_script()
|
||||
{
|
||||
self.covercrouchlean_aimmode = undefined;
|
||||
animscripts\cover_behavior::end_script("crouch");
|
||||
}
|
120
AW/PC/animscripts/cover_left.gsc
Normal file
120
AW/PC/animscripts/cover_left.gsc
Normal file
@ -0,0 +1,120 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: cover_left.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 5
|
||||
* Decompile Time: 80 ms
|
||||
* Timestamp: 4/22/2024 2:00:17 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init_animset_cover_left()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["alert_idle"] = %corner_standl_alert_idle;
|
||||
var_00["alert_idle_twitch"] = [%corner_standl_alert_twitch01,%corner_standl_alert_twitch02,%corner_standl_alert_twitch03,%corner_standl_alert_twitch04,%corner_standl_alert_twitch05,%corner_standl_alert_twitch06,%corner_standl_alert_twitch07];
|
||||
var_00["alert_idle_flinch"] = [%corner_standl_flinch];
|
||||
var_00["alert_to_A"] = [%corner_standl_trans_alert_2_a];
|
||||
var_00["alert_to_B"] = [%corner_standl_trans_alert_2_b_v2];
|
||||
var_00["A_to_alert"] = [%corner_standl_trans_a_2_alert_v2];
|
||||
var_00["A_to_alert_reload"] = [];
|
||||
var_00["A_to_B"] = [%corner_standl_trans_a_2_b_v2];
|
||||
var_00["B_to_alert"] = [%corner_standl_trans_b_2_alert_v2];
|
||||
var_00["B_to_alert_reload"] = [%corner_standl_reload_b_2_alert];
|
||||
var_00["B_to_A"] = [%corner_standl_trans_b_2_a_v2];
|
||||
var_00["lean_to_alert"] = [%cornerstndl_lean_2_alert];
|
||||
var_00["alert_to_lean"] = [%cornerstndl_alert_2_lean];
|
||||
var_00["look"] = %corner_standl_look;
|
||||
var_00["reload"] = [%corner_standl_reload_v1];
|
||||
var_00["grenade_exposed"] = %corner_standl_grenade_a;
|
||||
var_00["grenade_safe"] = %corner_standl_grenade_b;
|
||||
var_00["blind_fire"] = [%corner_standl_blindfire_v1,%corner_standl_blindfire_v2];
|
||||
var_00["alert_to_look"] = %corner_standl_alert_2_look;
|
||||
var_00["look_to_alert"] = %corner_standl_look_2_alert;
|
||||
var_00["look_to_alert_fast"] = %corner_standl_look_2_alert_fast_v1;
|
||||
var_00["look_idle"] = %corner_standl_look_idle;
|
||||
var_00["stance_change"] = %cornercrl_stand_2_alert;
|
||||
var_00["lean_aim_down"] = %cornerstndl_lean_aim_2;
|
||||
var_00["lean_aim_left"] = %cornerstndl_lean_aim_4;
|
||||
var_00["lean_aim_straight"] = %cornerstndl_lean_aim_5;
|
||||
var_00["lean_aim_right"] = %cornerstndl_lean_aim_6;
|
||||
var_00["lean_aim_up"] = %cornerstndl_lean_aim_8;
|
||||
var_00["lean_reload"] = %cornerstndl_lean_reload;
|
||||
var_00["lean_idle"] = [%cornerstndl_lean_idle];
|
||||
var_00["lean_single"] = %cornerstndl_lean_fire;
|
||||
var_00["lean_fire"] = %cornerstndl_lean_auto;
|
||||
level.archetypes["soldier"]["cover_left_stand"] = var_00;
|
||||
var_00 = [];
|
||||
var_00["alert_idle"] = %cornercrl_alert_idle;
|
||||
var_00["alert_idle_twitch"] = [];
|
||||
var_00["alert_idle_flinch"] = [];
|
||||
var_00["alert_to_A"] = [%cornercrl_trans_alert_2_a];
|
||||
var_00["alert_to_B"] = [%cornercrl_trans_alert_2_b];
|
||||
var_00["A_to_alert"] = [%cornercrl_trans_a_2_alert];
|
||||
var_00["A_to_alert_reload"] = [];
|
||||
var_00["A_to_B"] = [%cornercrl_trans_a_2_b];
|
||||
var_00["B_to_alert"] = [%cornercrl_trans_b_2_alert];
|
||||
var_00["B_to_alert_reload"] = [];
|
||||
var_00["B_to_A"] = [%cornercrl_trans_b_2_a];
|
||||
var_00["lean_to_alert"] = [%cornercrl_lean_2_alert];
|
||||
var_00["alert_to_lean"] = [%cornercrl_alert_2_lean];
|
||||
var_00["look"] = %cornercrl_look_fast;
|
||||
var_00["reload"] = [%cornercrl_reloada,%cornercrl_reloadb];
|
||||
var_00["grenade_safe"] = %cornercrl_grenadea;
|
||||
var_00["grenade_exposed"] = %cornercrl_grenadeb;
|
||||
var_00["alert_to_over"] = [%cornercrl_alert_2_over];
|
||||
var_00["over_to_alert"] = [%cornercrl_over_2_alert];
|
||||
var_00["over_to_alert_reload"] = [];
|
||||
var_00["blind_fire"] = [];
|
||||
var_00["rambo90"] = [];
|
||||
var_00["rambo45"] = [];
|
||||
var_00["stance_change"] = %cornercrl_alert_2_stand;
|
||||
var_00["lean_aim_down"] = %cornercrl_lean_aim_2;
|
||||
var_00["lean_aim_left"] = %cornercrl_lean_aim_4;
|
||||
var_00["lean_aim_straight"] = %cornercrl_lean_aim_5;
|
||||
var_00["lean_aim_right"] = %cornercrl_lean_aim_6;
|
||||
var_00["lean_aim_up"] = %cornercrl_lean_aim_8;
|
||||
var_00["lean_idle"] = [%cornercrl_lean_idle];
|
||||
var_00["lean_single"] = %cornercrl_lean_fire;
|
||||
var_00["lean_fire"] = %cornercrl_lean_auto;
|
||||
level.archetypes["soldier"]["cover_left_crouch"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
main()
|
||||
{
|
||||
self.animarrayfuncs = [];
|
||||
self.animarrayfuncs["hiding"]["stand"] = ::set_animarray_standing_left;
|
||||
self.animarrayfuncs["hiding"]["crouch"] = ::set_animarray_crouching_left;
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("cover_left");
|
||||
animscripts\corner::corner_think("left",90);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
end_script()
|
||||
{
|
||||
animscripts\corner::end_script_corner();
|
||||
animscripts\cover_behavior::end_script("left");
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
set_animarray_standing_left()
|
||||
{
|
||||
self.hideyawoffset = 90;
|
||||
self.a.array = animscripts\utility::lookupanimarray("cover_left_stand");
|
||||
if(isdefined(level.ramboanims))
|
||||
{
|
||||
self.a.array["rambo90"] = level.ramboanims.coverleft90;
|
||||
self.a.array["rambo45"] = level.ramboanims.coverleft45;
|
||||
self.a.array["grenade_rambo"] = level.ramboanims.coverleftgrenade;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
set_animarray_crouching_left()
|
||||
{
|
||||
self.hideyawoffset = 90;
|
||||
self.a.array = animscripts\utility::lookupanimarray("cover_left_crouch");
|
||||
}
|
428
AW/PC/animscripts/cover_multi.gsc
Normal file
428
AW/PC/animscripts/cover_multi.gsc
Normal file
@ -0,0 +1,428 @@
|
||||
/*******************************************************************
|
||||
* 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;
|
||||
}
|
351
AW/PC/animscripts/cover_prone.gsc
Normal file
351
AW/PC/animscripts/cover_prone.gsc
Normal file
@ -0,0 +1,351 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: cover_prone.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 15
|
||||
* Decompile Time: 214 ms
|
||||
* Timestamp: 4/22/2024 2:00:19 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init_animset_cover_prone()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["straight_level"] = %prone_aim_5;
|
||||
var_00["legs_up"] = %prone_aim_feet_45up;
|
||||
var_00["legs_down"] = %prone_aim_feet_45down;
|
||||
var_00["fire"] = %prone_fire_1;
|
||||
var_00["semi2"] = %prone_fire_burst;
|
||||
var_00["semi3"] = %prone_fire_burst;
|
||||
var_00["semi4"] = %prone_fire_burst;
|
||||
var_00["semi5"] = %prone_fire_burst;
|
||||
var_00["single"] = [%prone_fire_1];
|
||||
var_00["burst2"] = %prone_fire_burst;
|
||||
var_00["burst3"] = %prone_fire_burst;
|
||||
var_00["burst4"] = %prone_fire_burst;
|
||||
var_00["burst5"] = %prone_fire_burst;
|
||||
var_00["burst6"] = %prone_fire_burst;
|
||||
var_00["reload"] = %prone_reload;
|
||||
var_00["look"] = [%prone_twitch_look,%prone_twitch_lookfast,%prone_twitch_lookup];
|
||||
var_00["grenade_safe"] = [%prone_grenade_a,%prone_grenade_a];
|
||||
var_00["grenade_exposed"] = [%prone_grenade_a,%prone_grenade_a];
|
||||
var_00["exposed_idle"] = [%prone_idle];
|
||||
var_00["twitch"] = [%prone_twitch_ammocheck,%prone_twitch_look,%prone_twitch_scan,%prone_twitch_lookfast,%prone_twitch_lookup];
|
||||
var_00["hide_to_look"] = %coverstand_look_moveup;
|
||||
var_00["look_idle"] = %coverstand_look_idle;
|
||||
var_00["look_to_hide"] = %coverstand_look_movedown;
|
||||
var_00["look_to_hide_fast"] = %coverstand_look_movedown_fast;
|
||||
var_00["stand_2_prone"] = %stand_2_prone_nodelta;
|
||||
var_00["crouch_2_prone"] = %crouch_2_prone;
|
||||
var_00["prone_2_stand"] = %prone_2_stand_nodelta;
|
||||
var_00["prone_2_crouch"] = %prone_2_crouch;
|
||||
var_00["stand_2_prone_firing"] = %stand_2_prone_firing;
|
||||
var_00["crouch_2_prone_firing"] = %crouch_2_prone_firing;
|
||||
var_00["prone_2_stand_firing"] = %prone_2_stand_firing;
|
||||
var_00["prone_2_crouch_firing"] = %prone_2_crouch_firing;
|
||||
level.archetypes["soldier"]["cover_prone"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
main()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("cover_prone");
|
||||
if(weaponclass(self.weapon) == "rocketlauncher")
|
||||
{
|
||||
animscripts\combat::main();
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.a.arrivaltype) && self.a.arrivaltype == "prone_saw")
|
||||
{
|
||||
animscripts\cover_wall::useselfplacedturret("saw_bipod_prone","weapon_saw_MG_Setup");
|
||||
}
|
||||
else if(isdefined(self.node.turret))
|
||||
{
|
||||
animscripts\cover_wall::usestationaryturret();
|
||||
}
|
||||
|
||||
if(isdefined(self.enemy) && lengthsquared(self.origin - self.enemy.origin) < squared(512))
|
||||
{
|
||||
thread animscripts\combat::main();
|
||||
return;
|
||||
}
|
||||
|
||||
setup_cover_prone();
|
||||
self.covernode = self.node;
|
||||
self orientmode("face angle",self.covernode.angles[1]);
|
||||
self.a.goingtoproneaim = 1;
|
||||
self setproneanimnodes(-45,45,%prone_legs_down,%exposed_modern,%prone_legs_up);
|
||||
if(self.a.pose != "prone")
|
||||
{
|
||||
prone_transitionto("prone");
|
||||
}
|
||||
else
|
||||
{
|
||||
animscripts\utility::enterpronewrapper(0);
|
||||
}
|
||||
|
||||
thread animscripts\combat_utility::aimidlethread();
|
||||
setupproneaim(0.2);
|
||||
self setanim(%prone_aim_5,1,0.1);
|
||||
self orientmode("face angle",self.covernode.angles[1]);
|
||||
self animmode("zonly_physics");
|
||||
pronecombatmainloop();
|
||||
self notify("stop_deciding_how_to_shoot");
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
end_script()
|
||||
{
|
||||
self.a.goingtoproneaim = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
idlethread()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("kill_idle_thread");
|
||||
for(;;)
|
||||
{
|
||||
var_00 = animscripts\utility::animarraypickrandom("prone_idle");
|
||||
self setflaggedanimlimited("idle",var_00);
|
||||
self waittillmatch("end","idle");
|
||||
self clearanim(var_00,0.2);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
updatepronewrapper(param_00)
|
||||
{
|
||||
self updateprone(animscripts\utility::lookupanim("cover_prone","legs_up"),animscripts\utility::lookupanim("cover_prone","legs_down"),1,param_00,1);
|
||||
self setanim(%exposed_aiming,1,0.2);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
pronecombatmainloop()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
thread animscripts\track::trackshootentorpos();
|
||||
thread animscripts\shoot_behavior::decidewhatandhowtoshoot("normal");
|
||||
var_00 = gettime() > 2500;
|
||||
for(;;)
|
||||
{
|
||||
animscripts\utility::updateisincombattimer();
|
||||
updatepronewrapper(0.05);
|
||||
if(!var_00)
|
||||
{
|
||||
wait(0.05 + randomfloat(1.5));
|
||||
var_00 = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!isdefined(self.shootpos))
|
||||
{
|
||||
if(considerthrowgrenade())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01 = lengthsquared(self.origin - self.shootpos);
|
||||
if(self.a.pose != "crouch" && self isstanceallowed("crouch") && var_01 < squared(400))
|
||||
{
|
||||
if(var_01 < squared(285))
|
||||
{
|
||||
prone_transitionto("crouch");
|
||||
thread animscripts\combat::main();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(considerthrowgrenade())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(pronereload(0))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(animscripts\combat_utility::aimedatshootentorpos())
|
||||
{
|
||||
animscripts\combat_utility::shootuntilshootbehaviorchange();
|
||||
self clearanim(%add_fire,0.2);
|
||||
continue;
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
pronereload(param_00)
|
||||
{
|
||||
return animscripts\combat_utility::reload(param_00,animscripts\utility::animarray("reload"));
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
setup_cover_prone()
|
||||
{
|
||||
self setdefaultaimlimits(self.node);
|
||||
self.a.array = animscripts\utility::lookupanimarray("cover_prone");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
trythrowinggrenade(param_00,param_01)
|
||||
{
|
||||
var_02 = undefined;
|
||||
if(isdefined(param_01) && param_01)
|
||||
{
|
||||
var_02 = animscripts\utility::animarraypickrandom("grenade_safe");
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = animscripts\utility::animarraypickrandom("grenade_exposed");
|
||||
}
|
||||
|
||||
self animmode("zonly_physics");
|
||||
self.keepclaimednodeifvalid = 1;
|
||||
var_03 = (32,20,64);
|
||||
var_04 = animscripts\combat_utility::trygrenade(param_00,var_02);
|
||||
self.keepclaimednodeifvalid = 0;
|
||||
return var_04;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
considerthrowgrenade()
|
||||
{
|
||||
if(isdefined(level.throwgrenadeatplayerasap) && isalive(level.player))
|
||||
{
|
||||
if(trythrowinggrenade(level.player,200))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(self.enemy))
|
||||
{
|
||||
return trythrowinggrenade(self.enemy,850);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
shouldfirewhilechangingpose()
|
||||
{
|
||||
if(!isdefined(self.weapon) || !weaponisauto(self.weapon))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(isdefined(self.node) && distancesquared(self.origin,self.node.origin) < 256)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(isdefined(self.enemy) && self cansee(self.enemy) && !isdefined(self.grenade) && animscripts\shared::getaimyawtoshootentorpos() < 20)
|
||||
{
|
||||
return animscripts\move::mayshootwhilemoving();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
prone_transitionto(param_00)
|
||||
{
|
||||
if(param_00 == self.a.pose)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self clearanim(%animscript_root,0.3);
|
||||
animscripts\combat_utility::endfireandanimidlethread();
|
||||
if(shouldfirewhilechangingpose())
|
||||
{
|
||||
var_01 = animscripts\utility::animarray(self.a.pose + "_2_" + param_00 + "_firing");
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = animscripts\utility::animarray(self.a.pose + "_2_" + var_01);
|
||||
}
|
||||
|
||||
if(param_00 == "prone")
|
||||
{
|
||||
}
|
||||
|
||||
self setflaggedanimknoballrestart("trans",var_01,%body,1,0.2,1);
|
||||
animscripts\shared::donotetracks("trans");
|
||||
self setanimknoballrestart(animscripts\utility::animarray("straight_level"),%body,1,0.25);
|
||||
setupproneaim(0.25);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
finishnotetracks(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
animscripts\shared::donotetracks(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
setupproneaim(param_00)
|
||||
{
|
||||
self setanimknoball(%prone_aim_5,%body,1,param_00);
|
||||
self setanimlimited(%prone_aim_2_add,1,param_00);
|
||||
self setanimlimited(%prone_aim_4_add,1,param_00);
|
||||
self setanimlimited(%prone_aim_6_add,1,param_00);
|
||||
self setanimlimited(%prone_aim_8_add,1,param_00);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
proneto(param_00,param_01)
|
||||
{
|
||||
self clearanim(%animscript_root,0.3);
|
||||
var_02 = undefined;
|
||||
if(shouldfirewhilechangingpose())
|
||||
{
|
||||
if(param_00 == "crouch")
|
||||
{
|
||||
var_02 = %prone_2_crouch_firing;
|
||||
}
|
||||
else if(param_00 == "stand")
|
||||
{
|
||||
var_02 = %prone_2_stand_firing;
|
||||
}
|
||||
}
|
||||
else if(param_00 == "crouch")
|
||||
{
|
||||
var_02 = %prone_2_crouch;
|
||||
}
|
||||
else if(param_00 == "stand")
|
||||
{
|
||||
var_02 = %prone_2_stand_nodelta;
|
||||
}
|
||||
|
||||
if(isdefined(self.prone_anim_override))
|
||||
{
|
||||
var_02 = self.prone_anim_override;
|
||||
}
|
||||
|
||||
if(isdefined(self.prone_rate_override))
|
||||
{
|
||||
param_01 = self.prone_rate_override;
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = 1;
|
||||
}
|
||||
|
||||
animscripts\utility::exitpronewrapper(getanimlength(var_02) / 2);
|
||||
self setflaggedanimknoballrestart("trans",var_02,%body,1,0.2,param_01);
|
||||
animscripts\shared::donotetracks("trans");
|
||||
self clearanim(var_02,0.1);
|
||||
}
|
123
AW/PC/animscripts/cover_right.gsc
Normal file
123
AW/PC/animscripts/cover_right.gsc
Normal file
@ -0,0 +1,123 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: cover_right.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 5
|
||||
* Decompile Time: 105 ms
|
||||
* Timestamp: 4/22/2024 2:00:20 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init_animset_cover_right()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["alert_idle"] = %corner_standr_alert_idle;
|
||||
var_00["alert_idle_twitch"] = [%corner_standr_alert_twitch01,%corner_standr_alert_twitch02,%corner_standr_alert_twitch04,%corner_standr_alert_twitch05,%corner_standr_alert_twitch06,%corner_standr_alert_twitch07];
|
||||
var_00["alert_idle_flinch"] = [%corner_standr_flinch,%corner_standr_flinchb];
|
||||
var_00["alert_to_A"] = [%corner_standr_trans_alert_2_a,%corner_standr_trans_alert_2_a_v2];
|
||||
var_00["alert_to_B"] = [%corner_standr_trans_alert_2_b,%corner_standr_trans_alert_2_b_v2,%corner_standr_trans_alert_2_b_v3];
|
||||
var_00["A_to_alert"] = [%corner_standr_trans_a_2_alert_v2];
|
||||
var_00["A_to_alert_reload"] = [];
|
||||
var_00["A_to_B"] = [%corner_standr_trans_a_2_b,%corner_standr_trans_a_2_b_v2];
|
||||
var_00["B_to_alert"] = [%corner_standr_trans_b_2_alert,%corner_standr_trans_b_2_alert_v2,%corner_standr_trans_b_2_alert_v3];
|
||||
var_00["B_to_alert_reload"] = [%corner_standr_reload_b_2_alert];
|
||||
var_00["B_to_A"] = [%corner_standr_trans_b_2_a,%corner_standr_trans_b_2_a_v2];
|
||||
var_00["lean_to_alert"] = [%cornerstndr_lean_2_alert];
|
||||
var_00["alert_to_lean"] = [%cornerstndr_alert_2_lean];
|
||||
var_00["look"] = %corner_standr_look;
|
||||
var_00["reload"] = [%corner_standr_reload_v1];
|
||||
var_00["grenade_exposed"] = %corner_standr_grenade_a;
|
||||
var_00["grenade_safe"] = %corner_standr_grenade_b;
|
||||
var_00["blind_fire"] = [%corner_standr_blindfire_v1,%corner_standr_blindfire_v2];
|
||||
var_00["alert_to_look"] = %corner_standr_alert_2_look;
|
||||
var_00["look_to_alert"] = %corner_standr_look_2_alert;
|
||||
var_00["look_to_alert_fast"] = %corner_standr_look_2_alert_fast;
|
||||
var_00["look_idle"] = %corner_standr_look_idle;
|
||||
var_00["stance_change"] = %cornercrr_stand_2_alert;
|
||||
var_00["lean_aim_down"] = %cornerstndr_lean_aim_2;
|
||||
var_00["lean_aim_left"] = %cornerstndr_lean_aim_4;
|
||||
var_00["lean_aim_straight"] = %cornerstndr_lean_aim_5;
|
||||
var_00["lean_aim_right"] = %cornerstndr_lean_aim_6;
|
||||
var_00["lean_aim_up"] = %cornerstndr_lean_aim_8;
|
||||
var_00["lean_reload"] = %cornerstndr_lean_reload;
|
||||
var_00["lean_idle"] = [%cornerstndr_lean_idle];
|
||||
var_00["lean_single"] = %cornerstndr_lean_fire;
|
||||
var_00["lean_fire"] = %cornerstndr_lean_auto;
|
||||
level.archetypes["soldier"]["cover_right_stand"] = var_00;
|
||||
var_00 = [];
|
||||
var_00["alert_idle"] = %cornercrr_alert_idle;
|
||||
var_00["alert_idle_twitch"] = [%cornercrr_alert_twitch_v1,%cornercrr_alert_twitch_v2,%cornercrr_alert_twitch_v3];
|
||||
var_00["alert_idle_flinch"] = [];
|
||||
var_00["alert_to_A"] = [%cornercrr_trans_alert_2_a];
|
||||
var_00["alert_to_B"] = [%cornercrr_trans_alert_2_b];
|
||||
var_00["A_to_alert"] = [%cornercrr_trans_a_2_alert];
|
||||
var_00["A_to_alert_reload"] = [];
|
||||
var_00["A_to_B"] = [%cornercrr_trans_a_2_b];
|
||||
var_00["B_to_alert"] = [%cornercrr_trans_b_2_alert];
|
||||
var_00["B_to_alert_reload"] = [];
|
||||
var_00["B_to_A"] = [%cornercrr_trans_b_2_a];
|
||||
var_00["lean_to_alert"] = [%cornercrr_lean_2_alert];
|
||||
var_00["alert_to_lean"] = [%cornercrr_alert_2_lean];
|
||||
var_00["reload"] = [%cornercrr_reloada,%cornercrr_reloadb];
|
||||
var_00["grenade_exposed"] = %cornercrr_grenadea;
|
||||
var_00["grenade_safe"] = %cornercrr_grenadea;
|
||||
var_00["alert_to_over"] = [%cornercrr_alert_2_over];
|
||||
var_00["over_to_alert"] = [%cornercrr_over_2_alert];
|
||||
var_00["over_to_alert_reload"] = [];
|
||||
var_00["blind_fire"] = [];
|
||||
var_00["rambo90"] = [];
|
||||
var_00["rambo45"] = [];
|
||||
var_00["alert_to_look"] = %cornercrr_alert_2_look;
|
||||
var_00["look_to_alert"] = %cornercrr_look_2_alert;
|
||||
var_00["look_to_alert_fast"] = %cornercrr_look_2_alert_fast;
|
||||
var_00["look_idle"] = %cornercrr_look_idle;
|
||||
var_00["stance_change"] = %cornercrr_alert_2_stand;
|
||||
var_00["lean_aim_down"] = %cornercrr_lean_aim_2;
|
||||
var_00["lean_aim_left"] = %cornercrr_lean_aim_4;
|
||||
var_00["lean_aim_straight"] = %cornercrr_lean_aim_5;
|
||||
var_00["lean_aim_right"] = %cornercrr_lean_aim_6;
|
||||
var_00["lean_aim_up"] = %cornercrr_lean_aim_8;
|
||||
var_00["lean_idle"] = [%cornercrr_lean_idle];
|
||||
var_00["lean_single"] = %cornercrr_lean_fire;
|
||||
var_00["lean_fire"] = %cornercrr_lean_auto;
|
||||
level.archetypes["soldier"]["cover_right_crouch"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
main()
|
||||
{
|
||||
self.animarrayfuncs = [];
|
||||
self.animarrayfuncs["hiding"]["stand"] = ::set_animarray_standing_right;
|
||||
self.animarrayfuncs["hiding"]["crouch"] = ::set_animarray_crouching_right;
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("cover_right");
|
||||
animscripts\corner::corner_think("right",-90);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
end_script()
|
||||
{
|
||||
animscripts\corner::end_script_corner();
|
||||
animscripts\cover_behavior::end_script("right");
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
set_animarray_standing_right()
|
||||
{
|
||||
self.hideyawoffset = -90;
|
||||
self.a.array = animscripts\utility::lookupanimarray("cover_right_stand");
|
||||
if(isdefined(level.ramboanims))
|
||||
{
|
||||
self.a.array["rambo90"] = level.ramboanims.coverright90;
|
||||
self.a.array["rambo45"] = level.ramboanims.coverright45;
|
||||
self.a.array["grenade_rambo"] = level.ramboanims.coverrightgrenade;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
set_animarray_crouching_right()
|
||||
{
|
||||
self.hideyawoffset = -90;
|
||||
self.a.array = animscripts\utility::lookupanimarray("cover_right_crouch");
|
||||
}
|
23
AW/PC/animscripts/cover_stand.gsc
Normal file
23
AW/PC/animscripts/cover_stand.gsc
Normal file
@ -0,0 +1,23 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: cover_stand.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 38 ms
|
||||
* Timestamp: 4/22/2024 2:00:20 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("cover_stand");
|
||||
animscripts\cover_wall::cover_wall_think("stand");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
end_script()
|
||||
{
|
||||
animscripts\cover_behavior::end_script("stand");
|
||||
}
|
41
AW/PC/animscripts/cover_swim_left.gsc
Normal file
41
AW/PC/animscripts/cover_swim_left.gsc
Normal file
@ -0,0 +1,41 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: cover_swim_left.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 53 ms
|
||||
* Timestamp: 4/22/2024 2:00:21 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self.animarrayfuncs = [];
|
||||
self.animarrayfuncs["hiding"]["stand"] = ::setanims_coverleft_stand;
|
||||
self.animarrayfuncs["hiding"]["crouch"] = ::setanims_coverleft_stand;
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("cover_swim_left");
|
||||
if(!isdefined(self.approachtype) || self.approachtype != "cover_corner_l")
|
||||
{
|
||||
self.approachtype = "cover_corner_l";
|
||||
}
|
||||
|
||||
var_00 = level.archetypes["soldier"]["swim"]["arrival_cover_corner_l_angleDelta"][4][4];
|
||||
animscripts\corner::corner_think("left",var_00[1]);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
end_script()
|
||||
{
|
||||
animscripts\corner::end_script_corner();
|
||||
animscripts\cover_behavior::end_script("left");
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
setanims_coverleft_stand()
|
||||
{
|
||||
self.a.array = animscripts\swim::getswimanim("cover_corner_l");
|
||||
var_00 = level.archetypes["soldier"]["swim"]["arrival_cover_corner_l_angleDelta"][4][4];
|
||||
self.hideyawoffset = var_00[1];
|
||||
}
|
41
AW/PC/animscripts/cover_swim_right.gsc
Normal file
41
AW/PC/animscripts/cover_swim_right.gsc
Normal file
@ -0,0 +1,41 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: cover_swim_right.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 51 ms
|
||||
* Timestamp: 4/22/2024 2:00:21 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self.animarrayfuncs = [];
|
||||
self.animarrayfuncs["hiding"]["stand"] = ::setanims_coverright_stand;
|
||||
self.animarrayfuncs["hiding"]["crouch"] = ::setanims_coverright_stand;
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("cover_swim_right");
|
||||
if(!isdefined(self.approachtype) || self.approachtype != "cover_corner_r")
|
||||
{
|
||||
self.approachtype = "cover_corner_r";
|
||||
}
|
||||
|
||||
var_00 = level.archetypes["soldier"]["swim"]["arrival_cover_corner_r_angleDelta"][4][4];
|
||||
animscripts\corner::corner_think("right",var_00[1]);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
end_script()
|
||||
{
|
||||
animscripts\corner::end_script_corner();
|
||||
animscripts\cover_behavior::end_script("right");
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
setanims_coverright_stand()
|
||||
{
|
||||
self.a.array = animscripts\swim::getswimanim("cover_corner_r");
|
||||
var_00 = level.archetypes["soldier"]["swim"]["arrival_cover_corner_r_angleDelta"][4][4];
|
||||
self.hideyawoffset = var_00[1];
|
||||
}
|
39
AW/PC/animscripts/cover_swim_up.gsc
Normal file
39
AW/PC/animscripts/cover_swim_up.gsc
Normal file
@ -0,0 +1,39 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: cover_swim_up.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 53 ms
|
||||
* Timestamp: 4/22/2024 2:00:22 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self.animarrayfuncs = [];
|
||||
self.animarrayfuncs["hiding"]["stand"] = ::setanims_coverup_stand;
|
||||
self.animarrayfuncs["hiding"]["crouch"] = ::setanims_coverup_stand;
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("cover_swim_up");
|
||||
if(!isdefined(self.approachtype) || self.approachtype != "cover_u")
|
||||
{
|
||||
self.approachtype = "cover_u";
|
||||
}
|
||||
|
||||
animscripts\corner::corner_think("up",0);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
end_script()
|
||||
{
|
||||
animscripts\corner::end_script_corner();
|
||||
animscripts\cover_behavior::end_script("up");
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
setanims_coverup_stand()
|
||||
{
|
||||
self.a.array = animscripts\swim::getswimanim("cover_u");
|
||||
self.hideyawoffset = 0;
|
||||
}
|
1080
AW/PC/animscripts/cover_wall.gsc
Normal file
1080
AW/PC/animscripts/cover_wall.gsc
Normal file
File diff suppressed because it is too large
Load Diff
263
AW/PC/animscripts/cqb.gsc
Normal file
263
AW/PC/animscripts/cqb.gsc
Normal file
@ -0,0 +1,263 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: cqb.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 8
|
||||
* Decompile Time: 141 ms
|
||||
* Timestamp: 4/22/2024 2:00:24 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
movecqb()
|
||||
{
|
||||
animscripts\run::standrun_checkchangeweapon();
|
||||
if(self.a.pose != "stand")
|
||||
{
|
||||
self clearanim(%animscript_root,0.2);
|
||||
if(self.a.pose == "prone")
|
||||
{
|
||||
animscripts\utility::exitpronewrapper(1);
|
||||
}
|
||||
|
||||
self.a.pose = "stand";
|
||||
}
|
||||
|
||||
self.a.movement = self.movemode;
|
||||
cqbtracking();
|
||||
if(animscripts\run::move_checkstairstransition())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self clearanim(%stair_transitions,0.2);
|
||||
if(animscripts\run::standrun_checkreload())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.timeofmaincqbupdate))
|
||||
{
|
||||
var_00 = self.timeofmaincqbupdate;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = 0;
|
||||
}
|
||||
|
||||
self.timeofmaincqbupdate = gettime();
|
||||
var_01 = determinecqbanim();
|
||||
if(self.stairsstate == "none")
|
||||
{
|
||||
var_02 = 0.3;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = 0.1;
|
||||
}
|
||||
|
||||
var_03 = 0.2;
|
||||
var_04 = %walk_and_run_loops;
|
||||
if(self.timeofmaincqbupdate - var_00 > var_03 * 1000)
|
||||
{
|
||||
var_04 = %stand_and_crouch;
|
||||
}
|
||||
|
||||
self setflaggedanimknoball("runanim",var_01,var_04,1,var_02,self.moveplaybackrate,1);
|
||||
cqb_playfacialanim(var_01);
|
||||
animscripts\run::setmovenonforwardanims(animscripts\utility::lookupanim("cqb","move_b"),animscripts\utility::lookupanim("cqb","move_l"),animscripts\utility::lookupanim("cqb","move_r"));
|
||||
thread animscripts\run::setcombatstandmoveanimweights("cqb");
|
||||
animscripts\notetracks::donotetracksfortime(var_03,"runanim");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
determinecqbanim()
|
||||
{
|
||||
if(isdefined(self.custommoveanimset) && isdefined(self.custommoveanimset["cqb"]))
|
||||
{
|
||||
return animscripts\run::getrunanim();
|
||||
}
|
||||
|
||||
if(self.stairsstate == "up")
|
||||
{
|
||||
return animscripts\utility::lookupanim("cqb","stairs_up");
|
||||
}
|
||||
|
||||
if(self.stairsstate == "down")
|
||||
{
|
||||
return animscripts\utility::lookupanim("cqb","stairs_down");
|
||||
}
|
||||
|
||||
if(self.movemode == "walk")
|
||||
{
|
||||
return animscripts\utility::lookupanim("cqb","move_f");
|
||||
}
|
||||
|
||||
if(isdefined(self.a.bdisablemovetwitch) && self.a.bdisablemovetwitch)
|
||||
{
|
||||
return animscripts\utility::lookupanim("cqb","straight");
|
||||
}
|
||||
|
||||
var_00 = animscripts\utility::lookupanim("cqb","straight_twitch");
|
||||
if(!isdefined(var_00) || var_00.size == 0)
|
||||
{
|
||||
return animscripts\utility::lookupanim("cqb","straight");
|
||||
}
|
||||
|
||||
var_01 = animscripts\utility::getrandomintfromseed(self.a.runloopcount,4);
|
||||
if(var_01 == 0)
|
||||
{
|
||||
var_02 = animscripts\utility::getrandomintfromseed(self.a.runloopcount,var_00.size);
|
||||
return var_00[var_02];
|
||||
}
|
||||
|
||||
return animscripts\utility::lookupanim("cqb","straight");
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
cqb_reloadinternal()
|
||||
{
|
||||
self endon("movemode");
|
||||
self orientmode("face motion");
|
||||
var_00 = "reload_" + animscripts\combat_utility::getuniqueflagnameindex();
|
||||
var_01 = animscripts\utility::lookupanim("cqb","reload");
|
||||
if(isarray(var_01))
|
||||
{
|
||||
var_01 = var_01[randomint(var_01.size)];
|
||||
}
|
||||
|
||||
self setflaggedanimknoballrestart(var_00,var_01,%body,1,0.25);
|
||||
cqb_playfacialanim(var_01);
|
||||
animscripts\run::setmovenonforwardanims(animscripts\utility::lookupanim("cqb","move_b"),animscripts\utility::lookupanim("cqb","move_l"),animscripts\utility::lookupanim("cqb","move_r"));
|
||||
thread animscripts\run::setcombatstandmoveanimweights("cqb");
|
||||
animscripts\shared::donotetracks(var_00);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
cqbtracking()
|
||||
{
|
||||
var_00 = self.stairsstate != "none";
|
||||
var_01 = !var_00 && animscripts\move::mayshootwhilemoving();
|
||||
animscripts\run::setshootwhilemoving(var_01);
|
||||
if(var_00)
|
||||
{
|
||||
animscripts\run::endfaceenemyaimtracking();
|
||||
return;
|
||||
}
|
||||
|
||||
thread animscripts\run::faceenemyaimtracking();
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
setupcqbpointsofinterest()
|
||||
{
|
||||
level.cqbpointsofinterest = [];
|
||||
var_00 = getentarray("cqb_point_of_interest","targetname");
|
||||
for(var_01 = 0;var_01 < var_00.size;var_01++)
|
||||
{
|
||||
level.cqbpointsofinterest[var_01] = var_00[var_01].origin;
|
||||
var_00[var_01] delete();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
findcqbpointsofinterest()
|
||||
{
|
||||
if(isdefined(level.findingcqbpointsofinterest))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
anim.findingcqbpointsofinterest = 1;
|
||||
if(!level.cqbpointsofinterest.size)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
var_00 = getaiarray();
|
||||
var_01 = 0;
|
||||
foreach(var_03 in var_00)
|
||||
{
|
||||
if(isalive(var_03) && var_03 animscripts\utility::iscqbwalking() && !isdefined(var_03.disable_cqb_points_of_interest))
|
||||
{
|
||||
var_04 = var_03.a.movement != "stop";
|
||||
var_05 = (var_03.origin[0],var_03.origin[1],var_03 getshootatpos()[2]);
|
||||
var_06 = var_05;
|
||||
var_07 = anglestoforward(var_03.angles);
|
||||
if(var_04)
|
||||
{
|
||||
var_08 = bullettrace(var_06,var_06 + var_07 * 128,0,undefined);
|
||||
var_06 = var_08["position"];
|
||||
}
|
||||
|
||||
var_09 = -1;
|
||||
var_0A = 1048576;
|
||||
for(var_0B = 0;var_0B < level.cqbpointsofinterest.size;var_0B++)
|
||||
{
|
||||
var_0C = level.cqbpointsofinterest[var_0B];
|
||||
var_0D = distancesquared(var_0C,var_06);
|
||||
if(var_0D < var_0A)
|
||||
{
|
||||
if(var_04)
|
||||
{
|
||||
if(distancesquared(var_0C,var_05) < 4096)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_0E = vectordot(vectornormalize(var_0C - var_05),var_07);
|
||||
if(var_0E < 0.643 || var_0E > 0.966)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if(var_0D < 2500)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!sighttracepassed(var_06,var_0C,0,undefined))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_0A = var_0D;
|
||||
var_09 = var_0B;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_09 < 0)
|
||||
{
|
||||
var_03.cqb_point_of_interest = undefined;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03.cqb_point_of_interest = level.cqbpointsofinterest[var_09];
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
var_01 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(!var_01)
|
||||
{
|
||||
wait(0.25);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
cqb_playfacialanim(param_00)
|
||||
{
|
||||
self.facialidx = animscripts\face::playfacialanim(param_00,"run",self.facialidx);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
cqb_clearfacialanim()
|
||||
{
|
||||
self.facialidx = undefined;
|
||||
self clearanim(%head,0.2);
|
||||
}
|
918
AW/PC/animscripts/custom/snowmobile.gsc
Normal file
918
AW/PC/animscripts/custom/snowmobile.gsc
Normal file
@ -0,0 +1,918 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: custom\snowmobile.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 32
|
||||
* Decompile Time: 425 ms
|
||||
* Timestamp: 4/22/2024 1:58:41 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self.current_event = "none";
|
||||
self.shoot_while_driving_thread = undefined;
|
||||
snowmobile_geton();
|
||||
if(isdefined(self.drivingvehicle))
|
||||
{
|
||||
main_driver();
|
||||
return;
|
||||
}
|
||||
|
||||
main_passenger();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
snowmobile_geton()
|
||||
{
|
||||
self.grenadeawareness = 0;
|
||||
self.a.pose = "crouch";
|
||||
maps\_utility::disable_surprise();
|
||||
self.allowpain = 0;
|
||||
self.getoffvehiclefunc = ::snowmobile_getoff;
|
||||
self.specialdeathfunc = ::snowmobile_normal_death;
|
||||
self.disablebulletwhizbyreaction = 1;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
snowmobile_getoff()
|
||||
{
|
||||
self.allowpain = 1;
|
||||
self.getoffvehiclefunc = undefined;
|
||||
self.specialdeathfunc = undefined;
|
||||
self.a.specialshootbehavior = undefined;
|
||||
self.disablebulletwhizbyreaction = undefined;
|
||||
maps\_utility::gun_recall();
|
||||
self.onsnowmobile = undefined;
|
||||
self.custom_animscript["combat"] = undefined;
|
||||
self.custom_animscript["stop"] = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
main_driver()
|
||||
{
|
||||
var_00 = self.ridingvehicle.driver_shooting || self.ridingvehicle.riders.size == 1;
|
||||
snowmobile_setanim_driver(var_00);
|
||||
if(var_00)
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.primaryweapon,"left");
|
||||
self.rightaimlimit = 90;
|
||||
self.leftaimlimit = -90;
|
||||
animscripts\track::setanimaimweight(1,0.2);
|
||||
thread snowmobile_trackshootentorpos_driver();
|
||||
thread snowmobile_loop_driver_shooting();
|
||||
}
|
||||
else
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.primaryweapon,"none");
|
||||
thread snowmobile_loop_driver();
|
||||
}
|
||||
|
||||
snowmobile_handle_events("driver");
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
main_passenger()
|
||||
{
|
||||
snowmobile_setanim_passenger(self.ridingvehicle.passenger_shooting);
|
||||
if(self.ridingvehicle.passenger_shooting)
|
||||
{
|
||||
self.rightaimlimit = 180;
|
||||
self.leftaimlimit = -180;
|
||||
self.diraimlimit = 1;
|
||||
animscripts\track::setanimaimweight(1,0.2);
|
||||
thread snowmobile_trackshootentorpos_passenger();
|
||||
thread snowmobile_loop_passenger_shooting();
|
||||
}
|
||||
else
|
||||
{
|
||||
thread snowmobile_loop_passenger();
|
||||
}
|
||||
|
||||
snowmobile_handle_events("passenger");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
snowmobile_loop_driver()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
var_00 = "left2right";
|
||||
var_01 = [];
|
||||
var_01["left2right"] = getanimlength(animscripts\utility::animarray("left2right"));
|
||||
var_01["right2left"] = getanimlength(animscripts\utility::animarray("right2left"));
|
||||
self setanimknoball(%sm_turn,%body,1,0);
|
||||
self setanim(animscripts\utility::animarray("drive"),1,0);
|
||||
self setanimknob(animscripts\utility::animarray(var_00),1,0);
|
||||
self setanimtime(animscripts\utility::animarray(var_00),0.5);
|
||||
for(;;)
|
||||
{
|
||||
if(self.ridingvehicle.steering_enable)
|
||||
{
|
||||
var_02 = 0.5 * 1 + maps\_vehicle_code::update_steering(self.ridingvehicle);
|
||||
var_03 = self getanimtime(animscripts\utility::animarray(var_00));
|
||||
if(var_00 == "right2left")
|
||||
{
|
||||
var_03 = 1 - var_03;
|
||||
}
|
||||
|
||||
var_04 = 20 * abs(var_03 - var_02);
|
||||
if(var_03 < var_02)
|
||||
{
|
||||
var_00 = "left2right";
|
||||
var_04 = var_04 * var_01["left2right"];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = "right2left";
|
||||
var_04 = var_04 * var_01["right2left"];
|
||||
var_03 = 1 - var_03;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = "left2right";
|
||||
var_04 = 0;
|
||||
var_03 = 0.5;
|
||||
}
|
||||
|
||||
self setanimknoblimited(animscripts\utility::animarray(var_00),1,0.1,var_04);
|
||||
self setanimtime(animscripts\utility::animarray(var_00),var_03);
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
snowmobile_loop_passenger()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
self setanimknoball(animscripts\utility::animarray("hide"),%body,1,0);
|
||||
self setanimknob(animscripts\utility::animarray("drive"),1,0);
|
||||
for(;;)
|
||||
{
|
||||
var_00 = maps\_vehicle_code::update_steering(self.ridingvehicle);
|
||||
self setanimlimited(%sm_lean,abs(var_00),0.05);
|
||||
if(var_00 >= 0)
|
||||
{
|
||||
self setanimknoblimited(animscripts\utility::animarray("lean_right"),1,0.05);
|
||||
}
|
||||
else
|
||||
{
|
||||
self setanimknoblimited(animscripts\utility::animarray("lean_left"),1,0.05);
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
snowmobile_loop_driver_shooting()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
var_00 = 0.05;
|
||||
var_01 = 0;
|
||||
self setanimknoball(%sm_aiming,%body,1,0);
|
||||
self setanimknob(animscripts\utility::animarray("idle"),1,0);
|
||||
for(;;)
|
||||
{
|
||||
if(self.current_event != "none")
|
||||
{
|
||||
self waittill("snowmobile_event_finished");
|
||||
continue;
|
||||
}
|
||||
|
||||
var_02 = maps\_vehicle_code::update_steering(self.ridingvehicle);
|
||||
var_03 = 1 - abs(var_02);
|
||||
var_04 = max(0,0 - var_02);
|
||||
var_05 = max(0,var_02);
|
||||
self setanimlimited(animscripts\utility::animarray("straight_level_center"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("straight_level_left"),var_04,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("straight_level_right"),var_05,var_00);
|
||||
if(self.bulletsinclip <= 0)
|
||||
{
|
||||
animscripts\weaponlist::refillclip();
|
||||
var_01 = gettime() + 3000;
|
||||
}
|
||||
|
||||
if(var_01 <= gettime())
|
||||
{
|
||||
snowmobile_start_shooting();
|
||||
}
|
||||
|
||||
self setanimknoblimited(animscripts\utility::animarray("add_aim_left_center"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_left_left"),var_04,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_left_right"),var_05,var_00);
|
||||
self setanimknoblimited(animscripts\utility::animarray("add_aim_right_center"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_right_left"),var_04,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_right_right"),var_05,var_00);
|
||||
thread snowmobile_stop_shooting();
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
snowmobile_loop_passenger_shooting()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
var_00 = 0.05;
|
||||
self setanimknoball(%sm_aiming,%body,1,0);
|
||||
self setanimknob(animscripts\utility::animarray("idle"),1,0);
|
||||
for(;;)
|
||||
{
|
||||
if(self.current_event != "none")
|
||||
{
|
||||
self waittill("snowmobile_event_finished");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(snowmobile_reload())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01 = maps\_vehicle_code::update_steering(self.ridingvehicle);
|
||||
var_02 = 1 - abs(var_01);
|
||||
var_03 = max(0,0 - var_01);
|
||||
var_04 = max(0,var_01);
|
||||
self setanimlimited(animscripts\utility::animarray("straight_level_center"),var_02,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("straight_level_left"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("straight_level_right"),var_04,var_00);
|
||||
snowmobile_start_shooting();
|
||||
self setanimlimited(animscripts\utility::animarray("aim_left_center"),var_02,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("aim_left_left"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("aim_left_right"),var_04,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("aim_right_center"),var_02,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("aim_right_left"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("aim_right_right"),var_04,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_backleft_center"),var_02,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_backleft_left"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_backleft_right"),var_04,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_backright_center"),var_02,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_backright_left"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_backright_right"),var_04,var_00);
|
||||
if(isplayer(self.enemy))
|
||||
{
|
||||
self updateplayersightaccuracy();
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
thread snowmobile_stop_shooting();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
snowmobile_do_event(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self.ridingvehicle.steering_enable = 0;
|
||||
self setflaggedanimknoblimitedrestart("snowmobile_event",param_00,1,0.17);
|
||||
animscripts\shared::donotetracks("snowmobile_event",::snowmobile_waitfor_start_lean);
|
||||
self setanimknoblimited(animscripts\utility::animarray("event_restore"),1,0.1);
|
||||
self.ridingvehicle.steering_enable = 1;
|
||||
self.current_event = "none";
|
||||
self notify("snowmobile_event_finished");
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
snowmobile_handle_events(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
var_01 = self.ridingvehicle;
|
||||
for(;;)
|
||||
{
|
||||
if(var_01.event["jump"][param_00])
|
||||
{
|
||||
var_01.event["jump"][param_00] = 0;
|
||||
self notify("snowmobile_event_occurred");
|
||||
self.current_event = "jump";
|
||||
var_01.steering_enable = 0;
|
||||
self setflaggedanimknoblimitedrestart("jump",animscripts\utility::animarray("event_jump"),1,0.17);
|
||||
}
|
||||
|
||||
if(var_01.event["bump"][param_00])
|
||||
{
|
||||
var_01.event["bump"][param_00] = 0;
|
||||
self notify("snowmobile_event_occurred");
|
||||
if(self.current_event != "bump_big")
|
||||
{
|
||||
thread snowmobile_do_event(animscripts\utility::animarray("event_bump"));
|
||||
}
|
||||
}
|
||||
|
||||
if(var_01.event["bump_big"][param_00])
|
||||
{
|
||||
var_01.event["bump_big"][param_00] = 0;
|
||||
self notify("snowmobile_event_occurred");
|
||||
self.current_event = "bump_big";
|
||||
thread snowmobile_do_event(animscripts\utility::animarray("event_bump_big"));
|
||||
}
|
||||
|
||||
if(var_01.event["sway_left"][param_00])
|
||||
{
|
||||
var_01.event["sway_left"][param_00] = 0;
|
||||
self notify("snowmobile_event_occurred");
|
||||
if(self.current_event != "bump_big")
|
||||
{
|
||||
thread snowmobile_do_event(animscripts\utility::animarray("event_sway")["left"]);
|
||||
}
|
||||
}
|
||||
|
||||
if(var_01.event["sway_right"][param_00])
|
||||
{
|
||||
var_01.event["sway_right"][param_00] = 0;
|
||||
self notify("snowmobile_event_occurred");
|
||||
if(self.current_event != "bump_big")
|
||||
{
|
||||
thread snowmobile_do_event(animscripts\utility::animarray("event_sway")["right"]);
|
||||
}
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
snowmobile_start_shooting()
|
||||
{
|
||||
self notify("want_shoot_while_driving");
|
||||
self setanim(%sm_add_fire,1,0.2);
|
||||
if(isdefined(self.shoot_while_driving_thread))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.shoot_while_driving_thread = 1;
|
||||
thread snowmobile_decide_shoot();
|
||||
thread snowmobile_shoot();
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
snowmobile_stop_shooting()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("want_shoot_while_driving");
|
||||
wait(0.05);
|
||||
self notify("end_shoot_while_driving");
|
||||
self.shoot_while_driving_thread = undefined;
|
||||
self clearanim(%sm_add_fire,0.2);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
snowmobile_decide_shoot()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("end_shoot_while_driving");
|
||||
self.a.specialshootbehavior = ::snowmobileshootbehavior;
|
||||
snowmobile_decide_shoot_internal();
|
||||
self.shoot_while_driving_thread = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
snowmobile_decide_shoot_internal()
|
||||
{
|
||||
self endon("snowmobile_event_occurred");
|
||||
animscripts\shoot_behavior::decidewhatandhowtoshoot("normal");
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
snowmobileshootbehavior()
|
||||
{
|
||||
if(!isdefined(self.enemy))
|
||||
{
|
||||
self.shootent = undefined;
|
||||
self.shootpos = undefined;
|
||||
self.shootstyle = "none";
|
||||
return;
|
||||
}
|
||||
|
||||
self.shootent = self.enemy;
|
||||
self.shootpos = self.enemy getshootatpos();
|
||||
var_00 = distancesquared(self.origin,self.enemy.origin);
|
||||
if(var_00 < 1000000)
|
||||
{
|
||||
self.shootstyle = "full";
|
||||
}
|
||||
else if(var_00 < 4000000)
|
||||
{
|
||||
self.shootstyle = "burst";
|
||||
}
|
||||
else
|
||||
{
|
||||
self.shootstyle = "single";
|
||||
}
|
||||
|
||||
if(isdefined(self.enemy.vehicle))
|
||||
{
|
||||
var_01 = 0.5;
|
||||
var_02 = self.shootent.vehicle;
|
||||
var_03 = self.ridingvehicle;
|
||||
var_04 = var_03.origin - var_02.origin;
|
||||
var_05 = anglestoforward(var_02.angles);
|
||||
var_06 = anglestoright(var_02.angles);
|
||||
var_07 = vectordot(var_04,var_05);
|
||||
if(var_07 < 0)
|
||||
{
|
||||
var_08 = var_02 vehicle_getspeed() * var_01;
|
||||
var_08 = var_08 * 17.6;
|
||||
if(var_08 > 50)
|
||||
{
|
||||
var_09 = vectordot(var_04,var_06);
|
||||
var_09 = var_09 / 3;
|
||||
if(var_09 > 128)
|
||||
{
|
||||
var_09 = 128;
|
||||
}
|
||||
else if(var_09 < -128)
|
||||
{
|
||||
var_09 = -128;
|
||||
}
|
||||
|
||||
if(var_09 > 0)
|
||||
{
|
||||
var_09 = 128 - var_09;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_09 = -128 - var_09;
|
||||
}
|
||||
|
||||
self.shootent = undefined;
|
||||
self.shootpos = var_02.origin + var_08 * var_05 + var_09 * var_06;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
snowmobile_shoot()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("end_shoot_while_driving");
|
||||
self notify("doing_shootWhileDriving");
|
||||
self endon("doing_shootWhileDriving");
|
||||
for(;;)
|
||||
{
|
||||
if(!self.bulletsinclip)
|
||||
{
|
||||
wait(0.5);
|
||||
continue;
|
||||
}
|
||||
|
||||
animscripts\combat_utility::shootuntilshootbehaviorchange();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
snowmobile_reload()
|
||||
{
|
||||
if(!self.ridingvehicle.steering_enable)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!animscripts\combat_utility::needtoreload(0))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!animscripts\utility::usingriflelikeweapon())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
snowmobile_reload_internal();
|
||||
self notify("abort_reload");
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
snowmobile_reload_internal()
|
||||
{
|
||||
self endon("snowmobile_event_occurred");
|
||||
self.stop_aiming_for_reload = 1;
|
||||
self waittill("start_blending_reload");
|
||||
self setanim(%sm_aiming,0,0.25);
|
||||
self setflaggedanimrestart("gun_down",animscripts\utility::animarray("gun_down"),1,0.25);
|
||||
animscripts\shared::donotetracks("gun_down");
|
||||
self clearanim(animscripts\utility::animarray("gun_down"),0);
|
||||
self setflaggedanimknoballrestart("reload_anim",animscripts\utility::animarray("reload"),%body,1,0.25);
|
||||
animscripts\shared::donotetracks("reload_anim");
|
||||
self clearanim(%sm_reload,0.2);
|
||||
self setflaggedanimrestart("gun_up",animscripts\utility::animarray("gun_up"),1,0.25);
|
||||
self.gun_up_for_reload = 1;
|
||||
animscripts\shared::donotetracks("gun_up",::snowmobile_waitfor_start_aim);
|
||||
self.stop_aiming_for_reload = undefined;
|
||||
self clearanim(%sm_reload,0.1);
|
||||
self setanim(%sm_aiming,1,0.1);
|
||||
if(isdefined(self.gun_up_for_reload))
|
||||
{
|
||||
self.gun_up_for_reload = undefined;
|
||||
animscripts\shared::donotetracks("gun_up",::snowmobile_waitfor_end);
|
||||
self clearanim(animscripts\utility::animarray("gun_up"),0);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
snowmobile_waitfor_start_aim(param_00)
|
||||
{
|
||||
if(param_00 == "start_aim")
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
snowmobile_waitfor_end(param_00)
|
||||
{
|
||||
if(param_00 == "end")
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
snowmobile_waitfor_start_lean(param_00)
|
||||
{
|
||||
if(param_00 == "start_lean")
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
snowmobile_trackshootentorpos_driver()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("stop tracking");
|
||||
var_00 = 0.05;
|
||||
var_01 = 8;
|
||||
var_02 = 0;
|
||||
var_03 = 0;
|
||||
var_04 = 1;
|
||||
for(;;)
|
||||
{
|
||||
animscripts\track::incranimaimweight();
|
||||
var_05 = (self.origin[0],self.origin[1],self geteye()[2]);
|
||||
var_06 = self.shootpos;
|
||||
if(isdefined(self.shootent))
|
||||
{
|
||||
var_06 = self.shootent getshootatpos();
|
||||
}
|
||||
|
||||
if(!isdefined(var_06))
|
||||
{
|
||||
var_03 = 0;
|
||||
var_07 = self getanglestolikelyenemypath();
|
||||
if(isdefined(var_07))
|
||||
{
|
||||
var_03 = angleclamp180(self.angles[1] - var_07[1]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_08 = var_06 - var_05;
|
||||
var_09 = vectortoangles(var_08);
|
||||
var_03 = self.angles[1] - var_09[1];
|
||||
var_03 = angleclamp180(var_03);
|
||||
}
|
||||
|
||||
if(var_03 > self.rightaimlimit || var_03 < self.leftaimlimit)
|
||||
{
|
||||
var_03 = 0;
|
||||
}
|
||||
|
||||
if(var_04)
|
||||
{
|
||||
var_04 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0A = var_03 - var_02;
|
||||
if(abs(var_0A) > var_01)
|
||||
{
|
||||
var_03 = var_02 + var_01 * common_scripts\utility::sign(var_0A);
|
||||
}
|
||||
}
|
||||
|
||||
var_02 = var_03;
|
||||
var_0B = min(max(0 - var_03,0),90) / 90 * self.a.aimweight;
|
||||
var_0C = min(max(var_03,0),90) / 90 * self.a.aimweight;
|
||||
self setanimlimited(%sm_aim_4,var_0B,var_00);
|
||||
self setanimlimited(%sm_aim_6,var_0C,var_00);
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
snowmobile_trackshootentorpos_passenger()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("stop tracking");
|
||||
var_00 = 0.05;
|
||||
var_01 = 5;
|
||||
var_02 = 20;
|
||||
var_03 = 15;
|
||||
var_04 = 40;
|
||||
var_05 = 30;
|
||||
var_06 = 0;
|
||||
var_07 = 0;
|
||||
var_08 = 1;
|
||||
for(;;)
|
||||
{
|
||||
animscripts\track::incranimaimweight();
|
||||
var_09 = (self.origin[0],self.origin[1],self geteye()[2]);
|
||||
var_0A = self.shootpos;
|
||||
if(isdefined(self.shootent))
|
||||
{
|
||||
var_0A = self.shootent getshootatpos();
|
||||
}
|
||||
|
||||
if(!isdefined(var_0A))
|
||||
{
|
||||
var_07 = 0;
|
||||
var_0B = self getanglestolikelyenemypath();
|
||||
if(isdefined(var_0B))
|
||||
{
|
||||
var_07 = angleclamp180(self.angles[1] - var_0B[1]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0C = var_0A - var_09;
|
||||
var_0D = vectortoangles(var_0C);
|
||||
var_07 = self.angles[1] - var_0D[1];
|
||||
var_07 = angleclamp180(var_07);
|
||||
}
|
||||
|
||||
if(isdefined(self.stop_aiming_for_reload) || var_07 > 0 && var_07 - self.rightaimlimit * self.diraimlimit > 0 || var_07 < 0 && var_07 - self.leftaimlimit * self.diraimlimit < 0)
|
||||
{
|
||||
var_07 = 0;
|
||||
}
|
||||
|
||||
if(var_08)
|
||||
{
|
||||
var_08 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(var_06 < -180 + var_04 && var_07 > 180 - var_05)
|
||||
{
|
||||
var_07 = -179;
|
||||
}
|
||||
|
||||
if(var_06 > 180 - var_04 && var_07 < -180 + var_05)
|
||||
{
|
||||
var_07 = 179;
|
||||
}
|
||||
|
||||
var_0E = var_07 - var_06;
|
||||
var_0F = var_02 - var_01 * abs(var_0E) / 180 + var_01;
|
||||
if(isdefined(self.stop_aiming_for_reload))
|
||||
{
|
||||
var_0F = var_03;
|
||||
if(abs(var_06) < 45)
|
||||
{
|
||||
self notify("start_blending_reload");
|
||||
}
|
||||
}
|
||||
|
||||
if(abs(var_0E) > var_0F)
|
||||
{
|
||||
var_07 = var_06 + var_0F * common_scripts\utility::sign(var_0E);
|
||||
}
|
||||
}
|
||||
|
||||
var_06 = var_07;
|
||||
var_10 = max(-90 - var_07,0) / 90 * self.a.aimweight;
|
||||
var_11 = min(max(0 - var_07,0),90) / 90 * self.a.aimweight;
|
||||
var_12 = max(90 - abs(var_07),0) / 90 * self.a.aimweight;
|
||||
var_13 = min(max(var_07,0),90) / 90 * self.a.aimweight;
|
||||
var_14 = max(-90 + var_07,0) / 90 * self.a.aimweight;
|
||||
self setanimlimited(%sm_aim_1,var_10,var_00);
|
||||
self setanimlimited(%sm_aim_4_delta,var_11,var_00);
|
||||
self setanimlimited(%sm_aim_5_delta,var_12,var_00);
|
||||
self setanimlimited(%sm_aim_6_delta,var_13,var_00);
|
||||
self setanimlimited(%sm_aim_3,var_14,var_00);
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
snowmobile_get_death_anim(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = undefined;
|
||||
var_04 = undefined;
|
||||
var_05 = 0;
|
||||
for(var_06 = 0;var_06 < param_00.size;var_06++)
|
||||
{
|
||||
var_07 = animscripts\utility::absangleclamp180(param_02 - param_01[var_06]);
|
||||
if(!isdefined(var_03) || var_07 < var_05)
|
||||
{
|
||||
var_04 = var_03;
|
||||
var_03 = param_00[var_06];
|
||||
var_05 = var_07;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!isdefined(var_04))
|
||||
{
|
||||
var_04 = param_00[var_06];
|
||||
}
|
||||
}
|
||||
|
||||
var_08 = var_03;
|
||||
if(isdefined(level.prevsnowmobiledeath) && var_08 == level.prevsnowmobiledeath && gettime() - level.prevsnowmobiledeathtime < 500)
|
||||
{
|
||||
var_08 = var_04;
|
||||
}
|
||||
|
||||
anim.prevsnowmobiledeath = var_08;
|
||||
anim.prevsnowmobiledeathtime = gettime();
|
||||
return var_08;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
snowmobile_death_launchslide()
|
||||
{
|
||||
var_00 = self.ridingvehicle;
|
||||
var_01 = var_00.prevframevelocity;
|
||||
var_01 = (var_01[0],var_01[1],randomfloatrange(200,400)) * 0.75;
|
||||
if(lengthsquared(var_01) > 1000000)
|
||||
{
|
||||
var_01 = vectornormalize(var_01) * 1000;
|
||||
}
|
||||
|
||||
var_02 = spawn("script_origin",self.origin);
|
||||
var_02 moveslide((0,0,40),15,var_01);
|
||||
self linkto(var_02);
|
||||
var_02 thread deleteshortly();
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
snowmobile_normal_death()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00[0] = level.scr_anim["snowmobile"]["small"]["death"]["back"];
|
||||
var_00[1] = level.scr_anim["snowmobile"]["small"]["death"]["right"];
|
||||
var_00[2] = level.scr_anim["snowmobile"]["small"]["death"]["left"];
|
||||
var_01 = [];
|
||||
var_01[0] = -180;
|
||||
var_01[1] = -90;
|
||||
var_01[2] = 90;
|
||||
var_02 = snowmobile_get_death_anim(var_00,var_01,self.damageyaw);
|
||||
animscripts\death::playdeathanim(var_02);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
snowmobile_collide_death()
|
||||
{
|
||||
var_00 = self.ridingvehicle;
|
||||
if(!isdefined(var_00))
|
||||
{
|
||||
return snowmobile_normal_death();
|
||||
}
|
||||
|
||||
var_01 = var_00.prevframevelocity;
|
||||
snowmobile_death_launchslide();
|
||||
var_02 = vectortoangles(var_01);
|
||||
var_03 = angleclamp180(var_02[1] - self.angles[1]);
|
||||
var_04 = [];
|
||||
var_04[0] = level.scr_anim["snowmobile"]["big"]["death"]["back"];
|
||||
var_04[1] = level.scr_anim["snowmobile"]["big"]["death"]["left"];
|
||||
var_04[2] = level.scr_anim["snowmobile"]["big"]["death"]["front"];
|
||||
var_04[3] = level.scr_anim["snowmobile"]["big"]["death"]["right"];
|
||||
var_05 = [];
|
||||
var_05[0] = -180;
|
||||
var_05[1] = -90;
|
||||
var_05[2] = 0;
|
||||
var_05[3] = 90;
|
||||
var_06 = snowmobile_get_death_anim(var_04,var_05,var_03);
|
||||
animscripts\death::playdeathanim(var_06);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
deleteshortly()
|
||||
{
|
||||
var_00 = self.origin;
|
||||
for(var_01 = 0;var_01 < 60;var_01++)
|
||||
{
|
||||
wait(0.05);
|
||||
var_00 = self.origin;
|
||||
}
|
||||
|
||||
wait(3);
|
||||
if(isdefined(self))
|
||||
{
|
||||
self delete();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
snowmobile_setanim_common(param_00)
|
||||
{
|
||||
self.a.array["idle"] = level.scr_anim["snowmobile"][param_00]["idle"];
|
||||
self.a.array["drive"] = level.scr_anim["snowmobile"][param_00]["drive"];
|
||||
self.a.array["fire"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["single"] = animscripts\utility::array(level.scr_anim["snowmobile"][param_00]["single"]);
|
||||
self.a.array["burst2"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["burst3"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["burst4"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["burst5"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["burst6"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["semi2"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["semi3"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["semi4"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["semi5"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
snowmobile_setanim_driver(param_00)
|
||||
{
|
||||
self.a.array = [];
|
||||
snowmobile_setanim_common("driver");
|
||||
self.a.array["left2right"] = level.scr_anim["snowmobile"]["driver"]["left2right"];
|
||||
self.a.array["right2left"] = level.scr_anim["snowmobile"]["driver"]["right2left"];
|
||||
self.a.array["straight_level_left"] = level.scr_anim["snowmobile"]["driver"]["straight_level"]["left"];
|
||||
self.a.array["straight_level_center"] = level.scr_anim["snowmobile"]["driver"]["straight_level"]["center"];
|
||||
self.a.array["straight_level_right"] = level.scr_anim["snowmobile"]["driver"]["straight_level"]["right"];
|
||||
self.a.array["add_aim_left_left"] = level.scr_anim["snowmobile"]["driver"]["add_aim_left"]["left"];
|
||||
self.a.array["add_aim_left_center"] = level.scr_anim["snowmobile"]["driver"]["add_aim_left"]["center"];
|
||||
self.a.array["add_aim_left_right"] = level.scr_anim["snowmobile"]["driver"]["add_aim_left"]["right"];
|
||||
self.a.array["add_aim_right_left"] = level.scr_anim["snowmobile"]["driver"]["add_aim_right"]["left"];
|
||||
self.a.array["add_aim_right_center"] = level.scr_anim["snowmobile"]["driver"]["add_aim_right"]["center"];
|
||||
self.a.array["add_aim_right_right"] = level.scr_anim["snowmobile"]["driver"]["add_aim_right"]["right"];
|
||||
if(param_00)
|
||||
{
|
||||
self.a.array["event_jump"] = level.scr_anim["snowmobile"]["driver"]["shoot_jump"];
|
||||
self.a.array["event_bump"] = level.scr_anim["snowmobile"]["driver"]["shoot_bump"];
|
||||
self.a.array["event_bump_big"] = level.scr_anim["snowmobile"]["driver"]["shoot_bump_big"];
|
||||
self.a.array["event_sway"] = [];
|
||||
self.a.array["event_sway"]["left"] = level.scr_anim["snowmobile"]["driver"]["shoot_sway_left"];
|
||||
self.a.array["event_sway"]["right"] = level.scr_anim["snowmobile"]["driver"]["shoot_sway_right"];
|
||||
self.a.array["event_restore"] = %sm_aiming;
|
||||
return;
|
||||
}
|
||||
|
||||
self.a.array["event_jump"] = level.scr_anim["snowmobile"]["driver"]["drive_jump"];
|
||||
self.a.array["event_bump"] = level.scr_anim["snowmobile"]["driver"]["drive_bump"];
|
||||
self.a.array["event_bump_big"] = level.scr_anim["snowmobile"]["driver"]["drive_bump_big"];
|
||||
self.a.array["event_sway"] = [];
|
||||
self.a.array["event_sway"]["left"] = level.scr_anim["snowmobile"]["driver"]["drive_sway_left"];
|
||||
self.a.array["event_sway"]["right"] = level.scr_anim["snowmobile"]["driver"]["drive_sway_right"];
|
||||
self.a.array["event_restore"] = %sm_turn;
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
snowmobile_setanim_passenger(param_00)
|
||||
{
|
||||
self.a.array = [];
|
||||
snowmobile_setanim_common("passenger");
|
||||
self.a.array["hide"] = level.scr_anim["snowmobile"]["passenger"]["hide"];
|
||||
self.a.array["lean_left"] = level.scr_anim["snowmobile"]["passenger"]["add_lean"]["left"];
|
||||
self.a.array["lean_right"] = level.scr_anim["snowmobile"]["passenger"]["add_lean"]["right"];
|
||||
self.a.array["reload"] = level.scr_anim["snowmobile"]["passenger"]["reload"];
|
||||
self.a.array["gun_up"] = level.scr_anim["snowmobile"]["passenger"]["gun_up"];
|
||||
self.a.array["gun_down"] = level.scr_anim["snowmobile"]["passenger"]["gun_down"];
|
||||
self.a.array["aim_left_left"] = level.scr_anim["snowmobile"]["passenger"]["aim_left"]["left"];
|
||||
self.a.array["aim_left_center"] = level.scr_anim["snowmobile"]["passenger"]["aim_left"]["center"];
|
||||
self.a.array["aim_left_right"] = level.scr_anim["snowmobile"]["passenger"]["aim_left"]["right"];
|
||||
self.a.array["aim_right_left"] = level.scr_anim["snowmobile"]["passenger"]["aim_right"]["left"];
|
||||
self.a.array["aim_right_center"] = level.scr_anim["snowmobile"]["passenger"]["aim_right"]["center"];
|
||||
self.a.array["aim_right_right"] = level.scr_anim["snowmobile"]["passenger"]["aim_right"]["right"];
|
||||
self.a.array["add_aim_backleft_left"] = level.scr_anim["snowmobile"]["passenger"]["add_aim_backleft"]["left"];
|
||||
self.a.array["add_aim_backleft_center"] = level.scr_anim["snowmobile"]["passenger"]["add_aim_backleft"]["center"];
|
||||
self.a.array["add_aim_backleft_right"] = level.scr_anim["snowmobile"]["passenger"]["add_aim_backleft"]["right"];
|
||||
self.a.array["add_aim_backright_left"] = level.scr_anim["snowmobile"]["passenger"]["add_aim_backright"]["left"];
|
||||
self.a.array["add_aim_backright_center"] = level.scr_anim["snowmobile"]["passenger"]["add_aim_backright"]["center"];
|
||||
self.a.array["add_aim_backright_right"] = level.scr_anim["snowmobile"]["passenger"]["add_aim_backright"]["right"];
|
||||
self.a.array["straight_level_left"] = level.scr_anim["snowmobile"]["passenger"]["straight_level"]["left"];
|
||||
self.a.array["straight_level_center"] = level.scr_anim["snowmobile"]["passenger"]["straight_level"]["center"];
|
||||
self.a.array["straight_level_right"] = level.scr_anim["snowmobile"]["passenger"]["straight_level"]["right"];
|
||||
if(param_00)
|
||||
{
|
||||
self.a.array["event_jump"] = level.scr_anim["snowmobile"]["passenger"]["drive_jump"];
|
||||
self.a.array["event_bump"] = level.scr_anim["snowmobile"]["passenger"]["drive_bump"];
|
||||
self.a.array["event_bump_big"] = level.scr_anim["snowmobile"]["passenger"]["drive_bump_big"];
|
||||
self.a.array["event_sway"] = [];
|
||||
self.a.array["event_sway"]["left"] = level.scr_anim["snowmobile"]["passenger"]["drive_sway_left"];
|
||||
self.a.array["event_sway"]["right"] = level.scr_anim["snowmobile"]["passenger"]["drive_sway_right"];
|
||||
self.a.array["event_restore"] = %sm_aiming;
|
||||
return;
|
||||
}
|
||||
|
||||
self.a.array["event_jump"] = level.scr_anim["snowmobile"]["passenger"]["hide_jump"];
|
||||
self.a.array["event_bump"] = level.scr_anim["snowmobile"]["passenger"]["hide_bump"];
|
||||
self.a.array["event_bump_big"] = level.scr_anim["snowmobile"]["passenger"]["hide_bump_big"];
|
||||
self.a.array["event_sway"] = [];
|
||||
self.a.array["event_sway"]["left"] = level.scr_anim["snowmobile"]["passenger"]["hide_sway_left"];
|
||||
self.a.array["event_sway"]["right"] = level.scr_anim["snowmobile"]["passenger"]["hide_sway_right"];
|
||||
self.a.array["event_restore"] = %sm_turn;
|
||||
}
|
1490
AW/PC/animscripts/death.gsc
Normal file
1490
AW/PC/animscripts/death.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1944
AW/PC/animscripts/dog/dog_combat.gsc
Normal file
1944
AW/PC/animscripts/dog/dog_combat.gsc
Normal file
File diff suppressed because it is too large
Load Diff
20
AW/PC/animscripts/dog/dog_cover_arrival.gsc
Normal file
20
AW/PC/animscripts/dog/dog_cover_arrival.gsc
Normal file
@ -0,0 +1,20 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: dog\dog_cover_arrival.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 21 ms
|
||||
* Timestamp: 4/22/2024 1:58:44 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
thread animscripts\dog\dog_move::handlefootstepnotetracks();
|
||||
self clearanim(%dog_move,0.2);
|
||||
self setflaggedanimknoballrestart("dog_stop",self.dogarrivalanim,%body,1,0.2,self.moveplaybackrate);
|
||||
animscripts\shared::donotetracks("dog_stop");
|
||||
self.dogarrivalanim = undefined;
|
||||
}
|
95
AW/PC/animscripts/dog/dog_death.gsc
Normal file
95
AW/PC/animscripts/dog/dog_death.gsc
Normal file
@ -0,0 +1,95 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: dog\dog_death.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 45 ms
|
||||
* Timestamp: 4/22/2024 1:58:45 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(isdefined(level.shark_functions))
|
||||
{
|
||||
if(issubstr(self.model,"shark"))
|
||||
{
|
||||
self [[ level.shark_functions["death"] ]]();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self endon("killanimscript");
|
||||
if(isdefined(self.a.nodeath))
|
||||
{
|
||||
wait(1.1);
|
||||
var_00 = self getdroptofloorposition();
|
||||
if(isdefined(var_00))
|
||||
{
|
||||
var_01 = common_scripts\utility::spawn_tag_origin();
|
||||
var_01.origin = self.origin;
|
||||
var_01.angles = self.angles;
|
||||
self linkto(var_01);
|
||||
var_01 moveto(var_00,0.5);
|
||||
wait(0.5);
|
||||
self unlink();
|
||||
var_01 delete();
|
||||
}
|
||||
else
|
||||
{
|
||||
wait(0.5);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
self unlink();
|
||||
if(isdefined(self.enemy) && isdefined(self.enemy.syncedmeleetarget) && self.enemy.syncedmeleetarget == self)
|
||||
{
|
||||
self.enemy.syncedmeleetarget = undefined;
|
||||
}
|
||||
|
||||
self clearanim(%body,0.2);
|
||||
var_02 = getdogdeathanim("front");
|
||||
if(isdefined(self.deathanim))
|
||||
{
|
||||
var_02 = self.deathanim;
|
||||
}
|
||||
|
||||
if(isdefined(self.custom_deathsound))
|
||||
{
|
||||
self playsound(self.custom_deathsound);
|
||||
}
|
||||
else if(self isdogbeingdriven())
|
||||
{
|
||||
soundscripts\_snd::snd_message("anml_doberman","death");
|
||||
}
|
||||
else
|
||||
{
|
||||
soundscripts\_snd::snd_message("anml_doberman","death");
|
||||
}
|
||||
|
||||
self setflaggedanimrestart("dog_anim",var_02,1,0.2,1);
|
||||
animscripts\shared::donotetracks("dog_anim");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
getdogdeathanim(param_00)
|
||||
{
|
||||
var_01 = animscripts\utility::lookupdoganim("death",param_00);
|
||||
if(isarray(var_01))
|
||||
{
|
||||
return var_01[randomint(var_01.size)];
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
initdogarchetype_death()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["front"] = [%iw6_dog_death_4,%iw6_dog_death_6];
|
||||
level.archetypes["dog"]["death"] = var_00;
|
||||
}
|
61
AW/PC/animscripts/dog/dog_flashed.gsc
Normal file
61
AW/PC/animscripts/dog/dog_flashed.gsc
Normal file
@ -0,0 +1,61 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: dog\dog_flashed.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 33 ms
|
||||
* Timestamp: 4/22/2024 1:58:45 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(isdefined(level.shark_functions))
|
||||
{
|
||||
if(issubstr(self.model,"shark"))
|
||||
{
|
||||
self [[ level.shark_functions["flashed"] ]]();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self endon("killanimscript");
|
||||
self endon("stop_flashbang_effect");
|
||||
wait(randomfloatrange(0,0.4));
|
||||
self clearanim(%body,0.1);
|
||||
var_00 = maps\_utility::flashbanggettimeleftsec();
|
||||
if(var_00 > 2 && randomint(100) > 60)
|
||||
{
|
||||
self setflaggedanimrestart("flashed_anim",getdogflashedanim("flash_long"),1,0.2,self.animplaybackrate * 0.75);
|
||||
}
|
||||
else
|
||||
{
|
||||
self setflaggedanimrestart("flashed_anim",getdogflashedanim("flash_short"),1,0.2,self.animplaybackrate);
|
||||
}
|
||||
|
||||
var_01 = getanimlength(getdogflashedanim("flash_short")) * self.animplaybackrate;
|
||||
if(var_00 < var_01)
|
||||
{
|
||||
animscripts\notetracks::donotetracksfortime(var_00,"flashed_anim");
|
||||
}
|
||||
else
|
||||
{
|
||||
animscripts\shared::donotetracks("flashed_anim");
|
||||
}
|
||||
|
||||
self.flashed = 0;
|
||||
self notify("stop_flashbang_effect");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
getdogflashedanim(param_00)
|
||||
{
|
||||
var_01 = animscripts\utility::lookupdoganim("reaction",param_00);
|
||||
if(isdefined(var_01) && isarray(var_01))
|
||||
{
|
||||
return var_01[randomint(var_01.size)];
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
142
AW/PC/animscripts/dog/dog_init.gsc
Normal file
142
AW/PC/animscripts/dog/dog_init.gsc
Normal file
@ -0,0 +1,142 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: dog\dog_init.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 4
|
||||
* Decompile Time: 67 ms
|
||||
* Timestamp: 4/22/2024 1:58:45 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(isdefined(level.shark_functions))
|
||||
{
|
||||
if(issubstr(self.model,"shark"))
|
||||
{
|
||||
self [[ level.shark_functions["init"] ]]();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self useanimtree(#animtree);
|
||||
initdoganimations();
|
||||
initdogarchetype();
|
||||
animscripts\init::firstinit();
|
||||
self.ignoresuppression = 1;
|
||||
self.newenemyreactiondistsq = 0;
|
||||
self.chatinitialized = 0;
|
||||
self.nododgemove = 1;
|
||||
self.root_anim = %body;
|
||||
self.meleeattackdist = 0;
|
||||
thread setmeleeattackdist();
|
||||
self.a = spawnstruct();
|
||||
self.a.pose = "stand";
|
||||
self.a.nextstandinghitdying = 0;
|
||||
self.a.movement = "run";
|
||||
animscripts\init::set_anim_playback_rate();
|
||||
self.suppressionthreshold = 1;
|
||||
self.disablearrivals = 0;
|
||||
self.stopanimdistsq = level.dogstoppingdistsq;
|
||||
self.usechokepoints = 0;
|
||||
self.turnrate = 0.2;
|
||||
thread animscripts\combat_utility::monitorflash();
|
||||
self.pathenemyfightdist = 512;
|
||||
self settalktospecies("dog");
|
||||
self.health = int(level.dog_health * self.health);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
setmeleeattackdist()
|
||||
{
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
if(isdefined(self.enemy) && isplayer(self.enemy))
|
||||
{
|
||||
self.meleeattackdist = level.dogattackplayerdist;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.meleeattackdist = level.dogattackaidist;
|
||||
}
|
||||
|
||||
self waittill("enemy");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
initdoganimations()
|
||||
{
|
||||
if(!isdefined(level.dogsinitialized))
|
||||
{
|
||||
level.dogsinitialized = 1;
|
||||
precachestring(&"SCRIPT_PLATFORM_DOG_DEATH_DO_NOTHING");
|
||||
precachestring(&"SCRIPT_PLATFORM_DOG_DEATH_TOO_LATE");
|
||||
precachestring(&"SCRIPT_PLATFORM_DOG_DEATH_TOO_SOON");
|
||||
precachestring(&"SCRIPT_PLATFORM_DOG_HINT");
|
||||
precachestring(&"NEW_DOG_DEATH_DO_NOTHING_ALT");
|
||||
precachestring(&"NEW_DOG_DEATH_TOO_LATE_ALT");
|
||||
precachestring(&"NEW_DOG_DEATH_TOO_SOON_ALT");
|
||||
}
|
||||
|
||||
if(isdefined(level.notfirsttimedogs))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
precacheshader("hud_dog_melee");
|
||||
precacheshader("hud_hyena_melee");
|
||||
anim.notfirsttimedogs = 1;
|
||||
anim.dogstoppingdistsq = lengthsquared(getmovedelta(%iw6_dog_attackidle_runin_8,0,1) * 3);
|
||||
anim.dogstartmovedist = length(getmovedelta(%iw6_dog_attackidle_runout_8,0,1));
|
||||
anim.dogattackplayerdist = 102;
|
||||
var_00 = getstartorigin((0,0,0),(0,0,0),%iw6_dog_kill_front_quick_1);
|
||||
anim.dogattackaidist = length(var_00);
|
||||
anim.dogtraverseanims = [];
|
||||
level.dogtraverseanims["wallhop"] = %iw6_dog_traverse_over_24;
|
||||
level.dogtraverseanims["window_40"] = %iw6_dog_traverse_over_36;
|
||||
level.dogtraverseanims["jump_down_40"] = %iw6_dog_traverse_down_40;
|
||||
level.dogtraverseanims["jump_down_24"] = %iw6_dog_traverse_down_24;
|
||||
level.dogtraverseanims["jump_up_24"] = %iw6_dog_traverse_up_24;
|
||||
level.dogtraverseanims["jump_up_40"] = %iw6_dog_traverse_up_40;
|
||||
level.dogtraverseanims["jump_up_80"] = %iw6_dog_traverse_up_70;
|
||||
level.dogtraverseanims["jump_down_70"] = %iw6_dog_traverse_down_70;
|
||||
level.doglookpose["attackIdle"][2] = %german_shepherd_attack_look_down;
|
||||
level.doglookpose["attackIdle"][4] = %german_shepherd_attack_look_left;
|
||||
level.doglookpose["attackIdle"][6] = %german_shepherd_attack_look_right;
|
||||
level.doglookpose["attackIdle"][8] = %german_shepherd_attack_look_up;
|
||||
level.doglookpose["normal"][2] = %german_shepherd_look_down;
|
||||
level.doglookpose["normal"][4] = %german_shepherd_look_left;
|
||||
level.doglookpose["normal"][6] = %german_shepherd_look_right;
|
||||
level.doglookpose["normal"][8] = %german_shepherd_look_up;
|
||||
level._effect["dog_bite_blood"] = loadfx("fx/impacts/deathfx_dogbite");
|
||||
level._effect["deathfx_bloodpool"] = loadfx("fx/impacts/deathfx_bloodpool_view");
|
||||
var_01 = 5;
|
||||
var_02 = [];
|
||||
for(var_03 = 0;var_03 <= var_01;var_03++)
|
||||
{
|
||||
var_02[var_02.size] = var_03 / var_01;
|
||||
}
|
||||
|
||||
level.dog_melee_index = 0;
|
||||
level.dog_melee_timing_array = common_scripts\utility::array_randomize(var_02);
|
||||
setdvar("friendlySaveFromDog","0");
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
initdogarchetype()
|
||||
{
|
||||
animscripts\animset::init_anim_sets();
|
||||
if(animscripts\animset::archetypeexists("dog"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level.archetypes["dog"] = [];
|
||||
animscripts\dog\dog_stop::initdogarchetype_stop();
|
||||
animscripts\dog\dog_move::initdogarchetype_move();
|
||||
animscripts\dog\dog_pain::initdogarchetype_reaction();
|
||||
animscripts\dog\dog_death::initdogarchetype_death();
|
||||
}
|
151
AW/PC/animscripts/dog/dog_kill_traversal.gsc
Normal file
151
AW/PC/animscripts/dog/dog_kill_traversal.gsc
Normal file
@ -0,0 +1,151 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: dog\dog_kill_traversal.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 6
|
||||
* Decompile Time: 94 ms
|
||||
* Timestamp: 4/22/2024 1:58:46 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
check_kill_traversal(param_00)
|
||||
{
|
||||
if(self.team != "allies")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
self endon("killanimscript");
|
||||
var_01 = self getnegotiationstartnode();
|
||||
var_02 = self getnegotiationendnode();
|
||||
var_03 = getaiarray("axis");
|
||||
var_04 = undefined;
|
||||
var_05 = dog_get_within_range(var_02.origin,var_03,90);
|
||||
if(var_05.size > 0)
|
||||
{
|
||||
var_06 = var_05[0];
|
||||
var_07 = lengthsquared(var_01.origin - var_02.origin);
|
||||
var_08 = lengthsquared(var_01.origin - var_06.origin);
|
||||
if(var_08 < var_07)
|
||||
{
|
||||
self.syncedmeleetarget2 = var_06;
|
||||
var_06.syncedmeleetarget2 = self;
|
||||
var_06.traversedata = param_00;
|
||||
var_09 = [];
|
||||
var_09[0][0] = 400;
|
||||
var_09[0][1] = "blood_small";
|
||||
var_09[0][2] = "J_Neck";
|
||||
var_09[1][0] = 2300;
|
||||
var_09[1][1] = "blood_medium";
|
||||
var_09[1][2] = "J_Neck";
|
||||
var_09[2][0] = 2600;
|
||||
var_09[2][1] = "blood_medium";
|
||||
var_09[2][2] = "J_Neck";
|
||||
var_09[3][0] = 3300;
|
||||
var_09[3][1] = "blood_heavy";
|
||||
var_09[3][2] = "J_Neck";
|
||||
var_06 thread monitorfx(var_09);
|
||||
var_06 animcustom(::human_traverse_kill);
|
||||
self orientmode("face angle",var_01.angles[1]);
|
||||
dog_traverse_kill(param_00);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
dog_get_within_range(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = [];
|
||||
for(var_04 = 0;var_04 < param_01.size;var_04++)
|
||||
{
|
||||
if(distance(param_01[var_04].origin,param_00) <= param_02)
|
||||
{
|
||||
var_03[var_03.size] = param_01[var_04];
|
||||
}
|
||||
}
|
||||
|
||||
return var_03;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
dog_traverse_kill(param_00)
|
||||
{
|
||||
self.safetochangescript = 0;
|
||||
self.orig_flashbangimmunity = self.flashbangimmunity;
|
||||
self.flashbangimmunity = 1;
|
||||
self.pushable = 0;
|
||||
self traversemode("nogravity");
|
||||
self traversemode("noclip");
|
||||
self clearpitchorient();
|
||||
self setcandamage(0);
|
||||
self clearanim(%body,0.1);
|
||||
self setflaggedanimrestart("dog_traverse",level.scr_anim["generic"][param_00["traverseAnim"]][0],1,0.2,1);
|
||||
animscripts\shared::donotetracks("dog_traverse");
|
||||
self unlink();
|
||||
self setcandamage(1);
|
||||
self traversemode("gravity");
|
||||
self.pushable = 1;
|
||||
self.safetochangescript = 1;
|
||||
self.flashbangimmunity = self.orig_flashbangimmunity;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
human_traverse_kill()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("death");
|
||||
self orientmode("face point",self.syncedmeleetarget2.origin,1);
|
||||
self animmode("nogravity");
|
||||
self.a.pose = "stand";
|
||||
self.a.special = "none";
|
||||
if(animscripts\utility::usingsidearm())
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.primaryweapon,"right");
|
||||
}
|
||||
|
||||
self clearanim(%body,0.1);
|
||||
self setflaggedanimrestart("aianim",level.scr_anim["generic"][self.traversedata["traverseAnim"]][1],1,0.1,1);
|
||||
if(isdefined(self.traversedata["linkMe"]))
|
||||
{
|
||||
thread dog_link();
|
||||
}
|
||||
|
||||
animscripts\shared::donotetracks("aianim");
|
||||
self waittillmatch("end","aianim");
|
||||
if(isalive(self) && !isdefined(self.magic_bullet_shield))
|
||||
{
|
||||
self.a.nodeath = 1;
|
||||
animscripts\shared::dropallaiweapons();
|
||||
self kill();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
monitorfx(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
var_01 = 0;
|
||||
var_02 = gettime();
|
||||
while(var_01 < param_00.size)
|
||||
{
|
||||
var_03 = gettime() - var_02;
|
||||
if(var_03 >= param_00[var_01][0])
|
||||
{
|
||||
playfxontag(level._effect[param_00[var_01][1]],self,param_00[var_01][2]);
|
||||
var_01++;
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
dog_link()
|
||||
{
|
||||
wait(0.15);
|
||||
self.syncedmeleetarget2 linkto(self,"tag_sync",(0,0,0),(0,0,0));
|
||||
}
|
1358
AW/PC/animscripts/dog/dog_move.gsc
Normal file
1358
AW/PC/animscripts/dog/dog_move.gsc
Normal file
File diff suppressed because it is too large
Load Diff
76
AW/PC/animscripts/dog/dog_pain.gsc
Normal file
76
AW/PC/animscripts/dog/dog_pain.gsc
Normal file
@ -0,0 +1,76 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: dog\dog_pain.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 44 ms
|
||||
* Timestamp: 4/22/2024 1:58:48 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(isdefined(level.shark_functions))
|
||||
{
|
||||
if(issubstr(self.model,"shark"))
|
||||
{
|
||||
self [[ level.shark_functions["pain"] ]]();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self endon("killanimscript");
|
||||
if(isdefined(self.enemy) && isdefined(self.enemy.syncedmeleetarget) && self.enemy.syncedmeleetarget == self && !isdefined(self.disablepain) || !self.disablepain)
|
||||
{
|
||||
self unlink();
|
||||
self.enemy.syncedmeleetarget = undefined;
|
||||
}
|
||||
|
||||
self animmode("zonly_physics");
|
||||
self clearanim(%body,0.2);
|
||||
if(self.prevscript == "dog_stop")
|
||||
{
|
||||
var_00 = "idle_pain";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = "run_pain";
|
||||
}
|
||||
|
||||
self setflaggedanimrestart("dog_pain_anim",getdogpainanim(var_00),1,0.2,1);
|
||||
if(self isdogbeingdriven())
|
||||
{
|
||||
self playsound("bullet_large_flesh");
|
||||
}
|
||||
else
|
||||
{
|
||||
self playsound("bullet_large_flesh_npc");
|
||||
}
|
||||
|
||||
soundscripts\_snd::snd_message("anml_doberman","pain");
|
||||
animscripts\shared::donotetracks("dog_pain_anim");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
getdogpainanim(param_00)
|
||||
{
|
||||
var_01 = animscripts\utility::lookupdoganim("reaction",param_00);
|
||||
if(isarray(var_01))
|
||||
{
|
||||
return var_01[randomint(var_01.size)];
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
initdogarchetype_reaction()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["flash_long"] = [%iw6_dog_run_pain_4,%iw6_dog_run_pain_6];
|
||||
var_00["flash_short"] = %german_shepherd_run_flashbang_b;
|
||||
var_00["run_pain"] = [%iw6_dog_run_pain_4,%iw6_dog_run_pain_6];
|
||||
var_00["idle_pain"] = [%iw6_dog_alertidle_pain_4,%iw6_dog_alertidle_pain_6];
|
||||
level.archetypes["dog"]["reaction"] = var_00;
|
||||
}
|
22
AW/PC/animscripts/dog/dog_reactions.gsc
Normal file
22
AW/PC/animscripts/dog/dog_reactions.gsc
Normal file
@ -0,0 +1,22 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: dog\dog_reactions.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 22 ms
|
||||
* Timestamp: 4/22/2024 1:58:48 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(isdefined(level.shark_functions))
|
||||
{
|
||||
if(issubstr(self.model,"shark"))
|
||||
{
|
||||
self [[ level.shark_functions["reactions"] ]]();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
72
AW/PC/animscripts/dog/dog_scripted.gsc
Normal file
72
AW/PC/animscripts/dog/dog_scripted.gsc
Normal file
@ -0,0 +1,72 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: dog\dog_scripted.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 43 ms
|
||||
* Timestamp: 4/22/2024 1:58:49 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(isdefined(level.shark_functions))
|
||||
{
|
||||
if(issubstr(self.model,"shark"))
|
||||
{
|
||||
self [[ level.shark_functions["scripted"] ]]();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self endon("death");
|
||||
self notify("killanimscript");
|
||||
self.codescripted["root"] = %body;
|
||||
self endon("end_sequence");
|
||||
self startscriptedanim(self.codescripted["notifyName"],self.codescripted["origin"],self.codescripted["angles"],self.codescripted["anim"],self.codescripted["animMode"],self.codescripted["root"],self.codescripted["goalTime"]);
|
||||
self.codescripted = undefined;
|
||||
if(isdefined(self.deathstring_passed))
|
||||
{
|
||||
self.deathstring = self.deathstring_passed;
|
||||
}
|
||||
|
||||
self waittill("killanimscript");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
init(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
||||
{
|
||||
if(isdefined(level.shark_functions))
|
||||
{
|
||||
if(issubstr(self.model,"shark"))
|
||||
{
|
||||
self [[ level.shark_functions["scripted_init"] ]](param_00,param_01,param_02,param_03,param_04,param_05);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self.codescripted["notifyName"] = param_00;
|
||||
self.codescripted["origin"] = param_01;
|
||||
self.codescripted["angles"] = param_02;
|
||||
self.codescripted["anim"] = param_03;
|
||||
if(isdefined(param_04))
|
||||
{
|
||||
self.codescripted["animMode"] = param_04;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.codescripted["animMode"] = "normal";
|
||||
}
|
||||
|
||||
if(isdefined(param_05))
|
||||
{
|
||||
self.codescripted["root"] = param_05;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.codescripted["root"] = %body;
|
||||
}
|
||||
|
||||
self.codescripted["goalTime"] = param_06;
|
||||
}
|
984
AW/PC/animscripts/dog/dog_stop.gsc
Normal file
984
AW/PC/animscripts/dog/dog_stop.gsc
Normal file
@ -0,0 +1,984 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: dog\dog_stop.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 36
|
||||
* Decompile Time: 403 ms
|
||||
* Timestamp: 4/22/2024 1:58:50 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(isdefined(level.shark_functions))
|
||||
{
|
||||
if(issubstr(self.model,"shark"))
|
||||
{
|
||||
self [[ level.shark_functions["stop"] ]]();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self endon("killanimscript");
|
||||
self clearanim(%body,0.2);
|
||||
self setanim(%dog_idle_knob);
|
||||
thread waitforstatechange();
|
||||
self.dognextidletwitchtime = getdognexttwitchtime();
|
||||
self.moveanimtype = "walk";
|
||||
self.idleanimtype = undefined;
|
||||
for(;;)
|
||||
{
|
||||
if(self isdogbeingdriven())
|
||||
{
|
||||
dodrivenidle();
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(self.specialidleanim))
|
||||
{
|
||||
dospecialidle();
|
||||
continue;
|
||||
}
|
||||
|
||||
var_00 = dogstop_getnode();
|
||||
if(!self isdogbeingdriven() && !isdefined(self.bidlelooking) || !self.bidlelooking)
|
||||
{
|
||||
var_01 = 262144;
|
||||
var_02 = self.doghandler;
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
if(isdefined(var_02.node) && isdefined(var_00))
|
||||
{
|
||||
var_03 = var_02.origin - self.origin;
|
||||
turntoangle(vectortoyaw(var_03));
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = 65536;
|
||||
var_05 = 6400;
|
||||
var_06 = distancesquared(self.origin,var_02.origin);
|
||||
if(var_06 < var_05)
|
||||
{
|
||||
turntoangle(var_02.angles[1]);
|
||||
}
|
||||
else if(var_06 < var_04)
|
||||
{
|
||||
var_03 = var_02.origin - self.origin;
|
||||
var_07 = vectortoyaw(var_03);
|
||||
turntoangle(var_07);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if((!isdefined(var_00) || !issubstr(var_00.type,"Cover") || isdefined(self.favoriteenemy)) && isdefined(self.enemy) && isalive(self.enemy) && self seerecently(self.enemy,5) || distancesquared(self.origin,self.enemy.origin) < var_01)
|
||||
{
|
||||
var_08 = self.enemy.origin - self.origin;
|
||||
turntoangle(vectortoyaw(var_08));
|
||||
}
|
||||
else if(isdefined(var_00) && shouldfacenodedir(var_00))
|
||||
{
|
||||
turntoangle(var_00.angles[1]);
|
||||
}
|
||||
|
||||
self orientmode("face angle",self.angles[1]);
|
||||
}
|
||||
|
||||
if(isdefined(self.customidleanimset))
|
||||
{
|
||||
stoplookatidle();
|
||||
docustomidle();
|
||||
continue;
|
||||
}
|
||||
|
||||
var_09 = getdefaultidlestate();
|
||||
if(var_09 == "casualidle")
|
||||
{
|
||||
if(isdefined(self.idlelookattargets))
|
||||
{
|
||||
dolookatidle();
|
||||
}
|
||||
else
|
||||
{
|
||||
stoplookatidle();
|
||||
playidleanim("casualidle",getdogstopanim("casualidle"),0,0.5,2);
|
||||
}
|
||||
}
|
||||
else if(var_09 == "attackidle")
|
||||
{
|
||||
if(isdefined(self.idlelookattargets) && isdefined(self.aggresivelookat))
|
||||
{
|
||||
dolookatidle();
|
||||
}
|
||||
else
|
||||
{
|
||||
stopidlesound();
|
||||
stoplookatidle();
|
||||
var_0A = !isdefined(self.enemy) || distance2dsquared(self.origin,self.enemy.origin) > 589824;
|
||||
if(var_0A && gettime() > self.dognextidletwitchtime)
|
||||
{
|
||||
var_0B = chooseattackidle();
|
||||
playidleanim("attackidle",getdogstopanim(var_0B),0,0.2,-1);
|
||||
self.dognextidletwitchtime = getdognexttwitchtime();
|
||||
}
|
||||
else
|
||||
{
|
||||
playidleanim("attackidle",getdogstopanim("attackidle"),0,0.5,0.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
stopidlesound();
|
||||
stoplookatidle();
|
||||
playidleanim(var_09,getdogstopanim(var_09),0,0.5,2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
end_script()
|
||||
{
|
||||
if(isdefined(self.prevturnrate))
|
||||
{
|
||||
self.turnrate = self.prevturnrate;
|
||||
self.prevturnrate = undefined;
|
||||
}
|
||||
|
||||
self.dogturnadjust = undefined;
|
||||
self.dogturnrate = undefined;
|
||||
self.dognextidletwitchtime = undefined;
|
||||
self.currenttrackingyawspeed = undefined;
|
||||
self.currenttrackingyaw = undefined;
|
||||
stopidlesound();
|
||||
stoplookatidle();
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
playidleanim(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
self endon("killIdleAnim");
|
||||
if(isdefined(self.idleanimtype) && self.idleanimtype != param_00)
|
||||
{
|
||||
var_05 = getdogstoptransitionanim(self.idleanimtype,param_00);
|
||||
if(isdefined(var_05))
|
||||
{
|
||||
self setflaggedanimknobrestart("dog_idle_transition",var_05,1,0.2,self.animplaybackrate);
|
||||
animscripts\shared::donotetracks("dog_idle_transition");
|
||||
param_03 = 0.2;
|
||||
}
|
||||
}
|
||||
|
||||
self.idleanimtype = param_00;
|
||||
if(param_02)
|
||||
{
|
||||
self setflaggedanimknobrestart("dog_idle",param_01,1,param_03,self.animplaybackrate);
|
||||
}
|
||||
else
|
||||
{
|
||||
self setflaggedanimknob("dog_idle",param_01,1,param_03,self.animplaybackrate);
|
||||
}
|
||||
|
||||
if(param_04 > 0)
|
||||
{
|
||||
animscripts\notetracks::donotetracksfortime(param_04,"dog_idle");
|
||||
return;
|
||||
}
|
||||
|
||||
animscripts\shared::donotetracks("dog_idle");
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
waitforstatechange()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
var_00 = self isdogbeingdriven();
|
||||
var_01 = self.defaultidlestateoverride;
|
||||
for(;;)
|
||||
{
|
||||
var_02 = self isdogbeingdriven();
|
||||
if(var_02 != var_00)
|
||||
{
|
||||
killidleanim();
|
||||
var_00 = var_02;
|
||||
self orientmode("face angle",self.angles[1]);
|
||||
}
|
||||
else if(animscripts\dog\dog_move::aredifferent(self.defaultidlestateoverride,var_01))
|
||||
{
|
||||
killidleanim();
|
||||
var_01 = self.defaultidlestateoverride;
|
||||
}
|
||||
|
||||
wait(0.1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
killidleanim()
|
||||
{
|
||||
self notify("killIdleAnim");
|
||||
stoplookatidle();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
shouldfacenodedir(param_00)
|
||||
{
|
||||
return param_00.type == "Guard" || param_00.type == "Exposed" || issubstr(param_00.type,"Cover ");
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
getturnanim(param_00)
|
||||
{
|
||||
var_01 = getdefaultidlestate();
|
||||
if(var_01 == "casualidle" || var_01 == "sniffidle")
|
||||
{
|
||||
if(param_00 < -135 || param_00 > 135)
|
||||
{
|
||||
return getdogstopanim("casual_turn_180");
|
||||
}
|
||||
|
||||
if(param_00 < 0)
|
||||
{
|
||||
return getdogstopanim("casual_turn_right");
|
||||
}
|
||||
|
||||
return getdogstopanim("casual_turn_left");
|
||||
}
|
||||
|
||||
if(param_00 < -135 || param_00 > 135)
|
||||
{
|
||||
return getdogstopanim("attack_turn_180");
|
||||
}
|
||||
|
||||
if(param_00 < 0)
|
||||
{
|
||||
return getdogstopanim("attack_turn_right");
|
||||
}
|
||||
|
||||
return getdogstopanim("attack_turn_left");
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
handledogturnnotetracks(param_00)
|
||||
{
|
||||
if(param_00 == "turn_begin")
|
||||
{
|
||||
var_01 = angleclamp180(self.angles[1] + self.dogturnadjust);
|
||||
self.dogturnadjust = undefined;
|
||||
self.prevturnrate = self.turnrate;
|
||||
self.turnrate = self.dogturnrate;
|
||||
self.dogturnrate = undefined;
|
||||
self orientmode("face angle",var_01);
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00 == "turn_end")
|
||||
{
|
||||
self.turnrate = self.prevturnrate;
|
||||
self.prevturnrate = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
turntoangle(param_00,param_01)
|
||||
{
|
||||
self endon("killIdleAnim");
|
||||
var_02 = self.angles[1];
|
||||
var_03 = angleclamp180(param_00 - var_02);
|
||||
if(-0.5 < var_03 && var_03 < 0.5)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(-15 < var_03 && var_03 < 15)
|
||||
{
|
||||
rotatetoangle(param_00,2);
|
||||
return;
|
||||
}
|
||||
|
||||
stopidlesound();
|
||||
var_04 = getturnanim(var_03);
|
||||
var_05 = getanimlength(var_04);
|
||||
var_06 = getangledelta(var_04);
|
||||
var_07 = 0.2;
|
||||
if(var_05 < 0.7)
|
||||
{
|
||||
var_07 = 0.05;
|
||||
}
|
||||
|
||||
if(isdefined(param_01) && param_01)
|
||||
{
|
||||
self animmode("zonly_physics");
|
||||
}
|
||||
else
|
||||
{
|
||||
self animmode("angle deltas");
|
||||
}
|
||||
|
||||
self setanim(%dog_idle_knob,1,var_07);
|
||||
self setflaggedanimknobrestart("dog_turn",var_04,1,var_07);
|
||||
if(animhasnotetrack(var_04,"turn_begin") && animhasnotetrack(var_04,"turn_end"))
|
||||
{
|
||||
var_08 = getnotetracktimes(var_04,"turn_begin");
|
||||
var_09 = getnotetracktimes(var_04,"turn_end");
|
||||
var_0A = var_09[0] - var_08[0] * var_05;
|
||||
self.dogturnadjust = angleclamp180(var_03 - var_06);
|
||||
self.dogturnrate = max(abs(self.dogturnadjust) / var_0A / 1000,0.01);
|
||||
self orientmode("face angle",self.angles[1]);
|
||||
animscripts\shared::donotetracks("dog_turn",::handledogturnnotetracks);
|
||||
}
|
||||
else
|
||||
{
|
||||
self.prevturnrate = self.turnrate;
|
||||
self.turnrate = max(abs(angleclamp180(var_03 - var_06)) / var_05 / 1000,0.01);
|
||||
self orientmode("face angle",angleclamp180(param_00 - var_06));
|
||||
animscripts\shared::donotetracks("dog_turn");
|
||||
self.turnrate = self.prevturnrate;
|
||||
self.prevturnrate = undefined;
|
||||
}
|
||||
|
||||
self clearanim(var_04,0.2);
|
||||
self animmode("none");
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
rotatetoangle(param_00,param_01)
|
||||
{
|
||||
self orientmode("face angle",param_00);
|
||||
while(abs(angleclamp180(param_00 - self.angles[1])) > param_01)
|
||||
{
|
||||
wait(0.1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
shouldcoveridle()
|
||||
{
|
||||
var_00 = dogstop_getnode();
|
||||
if(isdefined(var_00) && issubstr(var_00.type,"Cover"))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
chooseattackidle()
|
||||
{
|
||||
var_00 = ["attackidle_twitch_1","attackidle_twitch_2"];
|
||||
var_01 = [1,1];
|
||||
if(!isdefined(self.script_nobark) || !self.script_nobark)
|
||||
{
|
||||
var_02 = var_00.size;
|
||||
var_00[var_02] = "attackidle_bark";
|
||||
var_01[var_02] = 4;
|
||||
}
|
||||
|
||||
var_03 = 0;
|
||||
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
||||
{
|
||||
var_03 = var_03 + var_01[var_02];
|
||||
}
|
||||
|
||||
var_04 = randomint(var_03);
|
||||
var_05 = 0;
|
||||
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
||||
{
|
||||
var_05 = var_05 + var_01[var_02];
|
||||
if(var_04 < var_05)
|
||||
{
|
||||
return var_00[var_02];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
dodrivenidle()
|
||||
{
|
||||
playidlesound(self.customidlesound);
|
||||
playidleanim("sneakstandidle",getdogstopanim("sneakstandidle"),0,0.5,-1);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
dospecialidle()
|
||||
{
|
||||
if(isarray(self.specialidleanim))
|
||||
{
|
||||
var_00 = self.specialidleanim[randomint(self.specialidleanim.size)];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = self.specialidleanim;
|
||||
}
|
||||
|
||||
playidlesound(self.customidlesound);
|
||||
playidleanim("specialidle",var_00,0,0.5,-1);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
docustomidle()
|
||||
{
|
||||
if(isarray(self.customidleanimset))
|
||||
{
|
||||
if(isdefined(self.customidleanimweights))
|
||||
{
|
||||
var_00 = animscripts\utility::anim_array(self.customidleanimset,self.customidleanimweights);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = self.customidleanimset[randomint(self.customidleanimset.size)];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = self.customidleanimset;
|
||||
}
|
||||
|
||||
playidlesound(self.customidlesound);
|
||||
playidleanim("customidle",var_00,0,0.5,-1);
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
dolookatidle()
|
||||
{
|
||||
if(!isdefined(self.bidlelooking) || !self.bidlelooking)
|
||||
{
|
||||
self.bidlelooking = 1;
|
||||
thread lookatidleupdate();
|
||||
}
|
||||
|
||||
wait(0.5);
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
stoplookatidle()
|
||||
{
|
||||
if(!isdefined(self.bidlelooking) || !self.bidlelooking)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.bidlelooking = undefined;
|
||||
self.idletrackloop = undefined;
|
||||
self notify("endIdleLookAt");
|
||||
self clearanim(%look_2,1);
|
||||
self clearanim(%look_4,1);
|
||||
self clearanim(%look_6,1);
|
||||
self clearanim(%look_8,1);
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
lookatidleupdate()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("endIdleLookAt");
|
||||
while(isdefined(self.idlelookattargets) && isarray(self.idlelookattargets) && self.idlelookattargets.size > 0)
|
||||
{
|
||||
var_00 = getlookattarget(self.lookattarget);
|
||||
self.lookattarget = var_00;
|
||||
if(!isdefined(self.idletrackloop))
|
||||
{
|
||||
thread idletrackloop();
|
||||
}
|
||||
|
||||
var_01 = 3 + randomfloat(3);
|
||||
wait(var_01);
|
||||
}
|
||||
|
||||
stoplookatidle();
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
getlookattarget(param_00)
|
||||
{
|
||||
if(isdefined(self.alwayslookatfirsttarget) && self.alwayslookatfirsttarget && self.idlelookattargets.size > 0)
|
||||
{
|
||||
return self.idlelookattargets[0];
|
||||
}
|
||||
|
||||
var_01 = isdefined(param_00);
|
||||
if(self.idlelookattargets.size == 1)
|
||||
{
|
||||
if(var_01)
|
||||
{
|
||||
return undefined;
|
||||
}
|
||||
else
|
||||
{
|
||||
return self.idlelookattargets[0];
|
||||
}
|
||||
}
|
||||
|
||||
if(var_01)
|
||||
{
|
||||
var_02 = randomint(100);
|
||||
if(var_02 < 33)
|
||||
{
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
var_03 = self.idlelookattargets;
|
||||
var_04 = [];
|
||||
var_05 = 0;
|
||||
var_06 = !var_01;
|
||||
for(var_07 = 0;var_07 < var_03.size;var_07++)
|
||||
{
|
||||
if(!var_06 && var_03[var_07] == param_00)
|
||||
{
|
||||
var_08 = var_03.size - 1;
|
||||
if(var_07 != var_08)
|
||||
{
|
||||
var_03[var_07] = var_03[var_08];
|
||||
}
|
||||
|
||||
var_03[var_08] = undefined;
|
||||
var_06 = 1;
|
||||
if(var_07 == var_08)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var_09 = distance2dsquared(self.origin,var_03[var_07].origin);
|
||||
var_04[var_07] = 1 / var_09;
|
||||
var_05 = var_05 + var_04[var_07];
|
||||
}
|
||||
|
||||
var_0A = randomfloat(var_05);
|
||||
var_0B = 0;
|
||||
for(var_07 = 0;var_07 < var_03.size;var_07++)
|
||||
{
|
||||
var_0B = var_0B + var_04[var_07];
|
||||
if(var_0A < var_0B)
|
||||
{
|
||||
return var_03[var_07];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
idletrackloop()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("endIdleLookAt");
|
||||
self.idletrackloop = 1;
|
||||
self clearanim(%dog_idle_knob,0.2);
|
||||
self setanimknob(getdogstopanimbase(),1,0.5);
|
||||
self setanimknoblimited(getdogstopanimlook("2"),1,0);
|
||||
self setanimknoblimited(getdogstopanimlook("4"),1,0);
|
||||
self setanimknoblimited(getdogstopanimlook("6"),1,0);
|
||||
self setanimknoblimited(getdogstopanimlook("8"),1,0);
|
||||
var_00 = 90;
|
||||
var_01 = -100;
|
||||
var_02 = -25;
|
||||
var_03 = 25;
|
||||
self.currenttrackingyaw = 0;
|
||||
self.currenttrackingyawspeed = 0;
|
||||
for(;;)
|
||||
{
|
||||
var_04 = self geteye();
|
||||
if(isdefined(self.lookattarget))
|
||||
{
|
||||
var_05 = self.lookattarget geteye();
|
||||
var_06 = var_05 - var_04;
|
||||
var_07 = vectortoangles(var_06);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_07 = self.angles;
|
||||
}
|
||||
|
||||
var_08 = angleclamp180(var_07[1] - self.angles[1]);
|
||||
var_09 = angleclamp180(var_07[0] - self.angles[0]);
|
||||
if(var_08 > var_00 || var_08 < var_01)
|
||||
{
|
||||
self.currenttrackingyaw = 0;
|
||||
self.currenttrackingyawspeed = 0;
|
||||
turntoangle(self.angles[1] + var_08 * 0.75);
|
||||
self setanimknob(getdogstopanimbase(),1,0.1);
|
||||
continue;
|
||||
}
|
||||
|
||||
var_0A = calctrackingyaw(var_08,self.currenttrackingyaw,self.currenttrackingyawspeed);
|
||||
self.currenttrackingyaw = var_0A;
|
||||
var_0B = 0;
|
||||
var_0C = 0;
|
||||
var_0D = 0;
|
||||
var_0E = 0;
|
||||
if(var_0A > 0)
|
||||
{
|
||||
var_0B = clamp(var_0A / var_00,0,1);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0C = clamp(var_0A / var_01,0,1);
|
||||
}
|
||||
|
||||
if(var_09 < 0)
|
||||
{
|
||||
var_0D = clamp(var_09 / var_02,0,1);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0E = clamp(var_09 / var_03,0,1);
|
||||
}
|
||||
|
||||
self setanimlimited(%look_2,var_0E,1);
|
||||
self setanimlimited(%look_4,var_0B,0.1);
|
||||
self setanimlimited(%look_6,var_0C,0.1);
|
||||
self setanimlimited(%look_8,var_0D,1);
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
calctrackingyaw(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = 90;
|
||||
var_04 = -100;
|
||||
var_05 = 1;
|
||||
var_06 = 0.5;
|
||||
var_07 = 6;
|
||||
var_08 = clamp(param_00,var_04,var_03);
|
||||
var_09 = angleclamp180(var_08 - param_01);
|
||||
if(var_08 > param_01)
|
||||
{
|
||||
if(param_02 >= 0 && !needtodecelforarrival(var_09,param_02,var_06))
|
||||
{
|
||||
var_0A = param_02 + var_05;
|
||||
}
|
||||
else if(var_03 >= 0)
|
||||
{
|
||||
var_0A = var_03 - var_07;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0A = var_03 + var_07;
|
||||
}
|
||||
}
|
||||
else if(var_03 <= 0 && !needtodecelforarrival(var_0A,var_03,var_07))
|
||||
{
|
||||
var_0A = var_03 - var_06;
|
||||
}
|
||||
else if(var_03 <= 0)
|
||||
{
|
||||
var_0A = var_03 + var_07;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0A = var_03 - var_07;
|
||||
}
|
||||
|
||||
var_0A = clamp(var_0A,-1 * var_07,var_07);
|
||||
if(var_08 >= param_01 && param_01 + var_0A > var_08)
|
||||
{
|
||||
var_0A = var_08 - param_01;
|
||||
}
|
||||
else if(var_08 <= param_01 && param_01 + var_0A < var_08)
|
||||
{
|
||||
var_0A = var_08 - param_01;
|
||||
}
|
||||
|
||||
var_0B = param_01 + var_0A;
|
||||
self.currenttrackingyawspeed = var_0A;
|
||||
return var_0B;
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
needtodecelforarrival(param_00,param_01,param_02)
|
||||
{
|
||||
if(param_01 == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_03 = abs(param_00);
|
||||
var_04 = abs(param_01);
|
||||
param_02 = abs(param_02);
|
||||
while(var_03 > 0)
|
||||
{
|
||||
var_03 = var_03 - var_04;
|
||||
var_04 = var_04 - param_02;
|
||||
if(var_04 < 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
dogstop_getnode()
|
||||
{
|
||||
if(isdefined(self.node))
|
||||
{
|
||||
return self.node;
|
||||
}
|
||||
|
||||
return self.prevnode;
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
getdefaultidlestate(param_00)
|
||||
{
|
||||
if(isdefined(self.defaultidlestateoverride))
|
||||
{
|
||||
return self.defaultidlestateoverride;
|
||||
}
|
||||
|
||||
var_01 = isdefined(self.enemy) && isalive(self.enemy);
|
||||
var_02 = var_01 && distancesquared(self.origin,self.enemy.origin) < 1000000 && isdefined(self.favoriteenemy) || self seerecently(self.enemy,5);
|
||||
var_03 = dogstop_getnode();
|
||||
if(isdefined(self.aggresivelookat))
|
||||
{
|
||||
return "attackidle";
|
||||
}
|
||||
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
param_00 = 1;
|
||||
}
|
||||
|
||||
if(isdefined(var_03) && !param_00 || distance(self.origin,var_03.origin) <= 32)
|
||||
{
|
||||
if(var_03.type == "Guard")
|
||||
{
|
||||
if(var_02)
|
||||
{
|
||||
return "attackidle";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "alertidle";
|
||||
}
|
||||
}
|
||||
else if(issubstr(var_03.type,"Cover"))
|
||||
{
|
||||
return "sneakidle";
|
||||
}
|
||||
else if(var_01)
|
||||
{
|
||||
if(var_02)
|
||||
{
|
||||
return "attackidle";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "alertidle";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var_02)
|
||||
{
|
||||
return "attackidle";
|
||||
}
|
||||
|
||||
if(animscripts\dog\dog_move::shouldsniff())
|
||||
{
|
||||
return "sniffidle";
|
||||
}
|
||||
|
||||
return "casualidle";
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
should_growl()
|
||||
{
|
||||
if(isdefined(self.script_growl))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(!isdefined(self.enemy))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!isalive(self.enemy))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return !self cansee(self.enemy);
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
lookattarget(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("stop tracking");
|
||||
self clearanim(%german_shepherd_look_2,0);
|
||||
self clearanim(%german_shepherd_look_4,0);
|
||||
self clearanim(%german_shepherd_look_6,0);
|
||||
self clearanim(%german_shepherd_look_8,0);
|
||||
self setdefaultaimlimits();
|
||||
self.rightaimlimit = 90;
|
||||
self.leftaimlimit = -90;
|
||||
self setanimlimited(level.doglookpose[param_00][2],1,0);
|
||||
self setanimlimited(level.doglookpose[param_00][4],1,0);
|
||||
self setanimlimited(level.doglookpose[param_00][6],1,0);
|
||||
self setanimlimited(level.doglookpose[param_00][8],1,0);
|
||||
animscripts\track::setanimaimweight(1,0.2);
|
||||
animscripts\track::trackloop(%german_shepherd_look_2,%german_shepherd_look_4,%german_shepherd_look_6,%german_shepherd_look_8);
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
playidlesound(param_00)
|
||||
{
|
||||
if(!animscripts\dog\dog_move::aredifferent(self.idlesound,param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
stopidlesound();
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
thread loopidlesound(param_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
loopidlesound(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
var_01 = spawn("script_origin",self.origin);
|
||||
var_01.angles = self.angles;
|
||||
var_01 linkto(self);
|
||||
self.idlesoundorigin = var_01;
|
||||
self.idlesound = param_00;
|
||||
for(;;)
|
||||
{
|
||||
var_01 playsound(param_00,"dog_idle_sound");
|
||||
var_02 = idlesound_waitfordoneordeath(var_01,"dog_idle_sound");
|
||||
if(!isdefined(var_02))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
idlesound_waitfordoneordeath(param_00,param_01)
|
||||
{
|
||||
self endon("death");
|
||||
param_00 endon("death");
|
||||
param_00 waittill(param_01);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
stopidlesound()
|
||||
{
|
||||
if(isdefined(self.idlesoundorigin))
|
||||
{
|
||||
if(self.idlesoundorigin iswaitingonsound())
|
||||
{
|
||||
self.idlesoundorigin stopsounds();
|
||||
wait(0.05);
|
||||
}
|
||||
|
||||
self.idlesoundorigin delete();
|
||||
self.idlesoundorigin = undefined;
|
||||
self.idlesound = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
getdognexttwitchtime()
|
||||
{
|
||||
if(isdefined(self.script_nobark) && self.script_nobark)
|
||||
{
|
||||
return gettime() + 4000 + randomint(3000);
|
||||
}
|
||||
|
||||
return gettime() + 1000 + randomint(1000);
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
getdogstopanimbase()
|
||||
{
|
||||
if(isdefined(self.aggresivelookat))
|
||||
{
|
||||
return getdogstopanim("attackidle_base");
|
||||
}
|
||||
|
||||
return getdogstopanim("casualidle_base");
|
||||
}
|
||||
|
||||
//Function Number: 33
|
||||
getdogstopanimlook(param_00)
|
||||
{
|
||||
if(isdefined(self.aggresivelookat))
|
||||
{
|
||||
return getdogstopanim("attackidle_look_" + param_00);
|
||||
}
|
||||
|
||||
return getdogstopanim("casualidle_look_" + param_00);
|
||||
}
|
||||
|
||||
//Function Number: 34
|
||||
getdogstopanim(param_00)
|
||||
{
|
||||
var_01 = animscripts\utility::lookupdoganim("stop",param_00);
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 35
|
||||
getdogstoptransitionanim(param_00,param_01)
|
||||
{
|
||||
var_02 = animscripts\utility::lookupdoganim("stop","transition");
|
||||
if(isdefined(var_02[param_00]) && isdefined(var_02[param_00][param_01]))
|
||||
{
|
||||
return var_02[param_00][param_01];
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
//Function Number: 36
|
||||
initdogarchetype_stop()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["attackidle"] = %iw6_dog_attackidle;
|
||||
var_00["attack_turn_left"] = %iw6_dog_attackidle_turn_4;
|
||||
var_00["attack_turn_right"] = %iw6_dog_attackidle_turn_6;
|
||||
var_00["attack_turn_180"] = %iw6_dog_attackidle_turn_2;
|
||||
var_00["attackidle_base"] = %iw6_dog_attackidle_base;
|
||||
var_00["attackidle_look_2"] = %iw6_dog_attackidle_2;
|
||||
var_00["attackidle_look_8"] = %iw6_dog_attackidle_8;
|
||||
var_00["alertidle"] = %iw6_dog_alertidle;
|
||||
var_00["attackidle_bark"] = %iw6_dog_attackidle_bark;
|
||||
var_00["attackidle_twitch_1"] = %iw6_dog_attackidle_twitch_1;
|
||||
var_00["attackidle_twitch_2"] = %iw6_dog_attackidle_twitch_2;
|
||||
var_00["casualidle"] = %iw6_dog_casualidle;
|
||||
var_00["casual_turn_left"] = %iw6_dog_casualidle_turn_4;
|
||||
var_00["casual_turn_right"] = %iw6_dog_casualidle_turn_6;
|
||||
var_00["casual_turn_180"] = %iw6_dog_casualidle_turn_2;
|
||||
var_00["casualidle_base"] = %iw6_dog_casualidle_base;
|
||||
var_00["casualidle_look_2"] = %iw6_dog_casualidle_2;
|
||||
var_00["casualidle_look_4"] = %iw6_dog_casualidle_4;
|
||||
var_00["casualidle_look_6"] = %iw6_dog_casualidle_6;
|
||||
var_00["casualidle_look_8"] = %iw6_dog_casualidle_8;
|
||||
var_00["sneakstandidle"] = %iw6_dog_sneak_stand_idle;
|
||||
var_00["sneakidle"] = %iw6_dog_sneakidle;
|
||||
var_00["sniffidle"] = %iw6_dog_sniff_idle;
|
||||
var_00["transition"] = [];
|
||||
var_00["transition"]["casualidle"] = [];
|
||||
var_00["transition"]["casualidle"]["sneakidle"] = %iw6_dog_idle_2_sneak_idle;
|
||||
var_00["transition"]["casualidle"]["alertidle"] = %iw6_dog_idle_2_alert_idle;
|
||||
var_00["transition"]["casualidle"]["attackidle"] = %iw6_dog_idle_2_alert_idle;
|
||||
var_00["transition"]["alertidle"] = [];
|
||||
var_00["transition"]["alertidle"]["casualidle"] = %iw6_dog_alert_2_casual_idle;
|
||||
var_00["transition"]["alertidle"]["sneakidle"] = %iw6_dog_idle_2_sneak_idle;
|
||||
var_00["transition"]["attackidle"] = [];
|
||||
var_00["transition"]["attackidle"]["casualidle"] = %iw6_dog_alert_2_casual_idle;
|
||||
var_00["transition"]["attackidle"]["sneakidle"] = %iw6_dog_idle_2_sneak_idle;
|
||||
var_00["transition"]["sneakidle"] = [];
|
||||
var_00["transition"]["sneakidle"]["casualidle"] = %iw6_dog_sneak_2_casual_idle;
|
||||
var_00["transition"]["sneakidle"]["alertidle"] = %iw6_dog_sneak_2_casual_idle;
|
||||
var_00["transition"]["sneakidle"]["attackidle"] = %iw6_dog_sneak_2_casual_idle;
|
||||
level.archetypes["dog"]["stop"] = var_00;
|
||||
}
|
309
AW/PC/animscripts/door.gsc
Normal file
309
AW/PC/animscripts/door.gsc
Normal file
@ -0,0 +1,309 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: door.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 11
|
||||
* Decompile Time: 171 ms
|
||||
* Timestamp: 4/22/2024 2:00:27 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
doorenterexitcheck()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
if(isdefined(self.disabledoorbehavior))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
var_00 = self getdoorpathnode();
|
||||
if(isdefined(var_00))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
wait(0.2);
|
||||
}
|
||||
|
||||
var_01 = var_00.type == "Door Interior" || self comparenodedirtopathdir(var_00);
|
||||
if(var_01)
|
||||
{
|
||||
doorenter(var_00);
|
||||
}
|
||||
else
|
||||
{
|
||||
doorexit(var_00);
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
var_02 = self getdoorpathnode();
|
||||
if(!isdefined(var_02) || var_02 != var_00)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
wait(0.2);
|
||||
}
|
||||
|
||||
thread doorenterexitcheck();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
teamflashbangimmune()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self.teamflashbangimmunity = 1;
|
||||
wait(5);
|
||||
self.teamflashbangimmunity = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
dodoorgrenadethrow(param_00)
|
||||
{
|
||||
thread teamflashbangimmune();
|
||||
if(self.grenadeweapon == "flash_grenade")
|
||||
{
|
||||
self notify("flashbang_thrown");
|
||||
}
|
||||
|
||||
self orientmode("face current");
|
||||
param_00.nextdoorgrenadetime = gettime() + 5000;
|
||||
self.minindoortime = gettime() + 100000;
|
||||
self notify("move_interrupt");
|
||||
self.update_move_anim_type = undefined;
|
||||
self clearanim(%combatrun,0.2);
|
||||
self.a.movement = "stop";
|
||||
self waittill("done_grenade_throw");
|
||||
self orientmode("face default");
|
||||
self.minindoortime = gettime() + 5000;
|
||||
self.grenadeweapon = self.oldgrenadeweapon;
|
||||
self.oldgrenadeweapon = undefined;
|
||||
animscripts\run::endfaceenemyaimtracking();
|
||||
thread animscripts\move::pathchangelistener();
|
||||
thread animscripts\move::restartmoveloop(1);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
doorenter_trygrenade(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
var_05 = 0;
|
||||
var_06 = 3;
|
||||
var_07 = undefined;
|
||||
var_07 = %cqb_stand_grenade_throw;
|
||||
var_08 = anglestoforward(param_00.angles);
|
||||
if(param_00.type == "Door Interior" && !self comparenodedirtopathdir(param_00))
|
||||
{
|
||||
var_08 = -1 * var_08;
|
||||
}
|
||||
|
||||
var_09 = (param_00.origin[0],param_00.origin[1],param_00.origin[2] + 64);
|
||||
var_0A = var_09;
|
||||
if(param_02)
|
||||
{
|
||||
var_0B = anglestoright(param_00.angles);
|
||||
var_0C = param_00.origin - self.origin;
|
||||
var_0D = vectordot(var_0B,var_0C);
|
||||
if(var_0D > 20)
|
||||
{
|
||||
var_0D = 20;
|
||||
}
|
||||
else if(var_0D < -20)
|
||||
{
|
||||
var_0D = -20;
|
||||
}
|
||||
|
||||
var_0A = var_09 + var_0D * var_0B;
|
||||
}
|
||||
|
||||
while(var_06 > 0)
|
||||
{
|
||||
if(isdefined(self.grenade) || !isdefined(self.enemy))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(onsamesideofdoor(param_00,var_08))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!self seerecently(self.enemy,0.2) && self.a.pose == "stand" && distance2dandheightcheck(self.enemy.origin - param_00.origin,360000,16384))
|
||||
{
|
||||
if(isdefined(param_00.nextdoorgrenadetime) && param_00.nextdoorgrenadetime > gettime())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(self canshootenemy())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_0C = param_00.origin - self.origin;
|
||||
if(lengthsquared(var_0C) < param_03)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(vectordot(var_0C,var_08) < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.oldgrenadeweapon = self.grenadeweapon;
|
||||
self.grenadeweapon = param_01;
|
||||
animscripts\combat_utility::setactivegrenadetimer(self.enemy);
|
||||
if(!var_05)
|
||||
{
|
||||
var_0E = var_09 + var_08 * 100;
|
||||
if(!self isgrenadepossafe(self.enemy,var_0E,128))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var_05 = 1;
|
||||
if(animscripts\combat_utility::trygrenadethrow(self.enemy,var_0A,var_07,animscripts\combat_utility::getgrenadethrowoffset(var_07),1,0,1))
|
||||
{
|
||||
dodoorgrenadethrow(param_00);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var_06--;
|
||||
wait(param_04);
|
||||
var_0F = self getdoorpathnode();
|
||||
if(!isdefined(var_0F) || var_0F != param_00)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
indoorcqbtogglecheck()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
if(isdefined(self.disabledoorbehavior))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.isindoor = 0;
|
||||
for(;;)
|
||||
{
|
||||
if(self isindoor() && !self.doingambush)
|
||||
{
|
||||
doorenter_enable_cqbwalk();
|
||||
}
|
||||
else if(!isdefined(self.minindoortime) || self.minindoortime < gettime())
|
||||
{
|
||||
self.minindoortime = undefined;
|
||||
doorexit_disable_cqbwalk();
|
||||
}
|
||||
|
||||
wait(0.2);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
doorenter_enable_cqbwalk()
|
||||
{
|
||||
if(!isdefined(self.neverenablecqb) && !self.doingambush)
|
||||
{
|
||||
self.isindoor = 1;
|
||||
if(!isdefined(self.cqbwalking) || !self.cqbwalking)
|
||||
{
|
||||
maps\_utility::enable_cqbwalk(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
doorexit_disable_cqbwalk()
|
||||
{
|
||||
if(!isdefined(self.cqbenabled))
|
||||
{
|
||||
self.isindoor = 0;
|
||||
if(isdefined(self.cqbwalking) && self.cqbwalking)
|
||||
{
|
||||
maps\_utility::disable_cqbwalk();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
distance2dandheightcheck(param_00,param_01,param_02)
|
||||
{
|
||||
return param_00[0] * param_00[0] + param_00[1] * param_00[1] < param_01 && param_00[2] * param_00[2] < param_02;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
onsamesideofdoor(param_00,param_01)
|
||||
{
|
||||
var_02 = param_00.origin - self.origin;
|
||||
var_03 = param_00.origin - self.enemy.origin;
|
||||
return vectordot(var_02,param_01) * vectordot(var_03,param_01) > 0;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
doorenter(param_00)
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
if(isdefined(self.doorfragchance) && self.doorfragchance == 0 || self.doorfragchance < randomfloat(1))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if(distance2dandheightcheck(self.origin - param_00.origin,562500,25600))
|
||||
{
|
||||
doorenter_trygrenade(param_00,"fraggrenade",0,302500,0.3);
|
||||
param_00 = self getdoorpathnode();
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
wait(0.1);
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
if(distance2dandheightcheck(self.origin - param_00.origin,36864,6400))
|
||||
{
|
||||
doorenter_enable_cqbwalk();
|
||||
self.minindoortime = gettime() + 6000;
|
||||
if(isdefined(self.doorflashchance) && self.doorflashchance == 0 || self.doorflashchance < randomfloat(1))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
doorenter_trygrenade(param_00,"flash_grenade",1,4096,0.2);
|
||||
return;
|
||||
}
|
||||
|
||||
wait(0.1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
doorexit(param_00)
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
if(!self.isindoor || distancesquared(self.origin,param_00.origin) < 1024)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
wait(0.1);
|
||||
}
|
||||
}
|
534
AW/PC/animscripts/exit_node.gsc
Normal file
534
AW/PC/animscripts/exit_node.gsc
Normal file
@ -0,0 +1,534 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: exit_node.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 15
|
||||
* Decompile Time: 245 ms
|
||||
* Timestamp: 4/22/2024 2:00:28 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
startmovetransition()
|
||||
{
|
||||
if(isdefined(self.custommovetransition))
|
||||
{
|
||||
custommovetransition();
|
||||
return;
|
||||
}
|
||||
|
||||
self endon("killanimscript");
|
||||
if(!checktransitionpreconditions())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = self.origin;
|
||||
var_01 = self.angles[1];
|
||||
var_02 = "exposed";
|
||||
var_03 = 0;
|
||||
var_04 = getexitnode();
|
||||
if(isdefined(var_04))
|
||||
{
|
||||
var_05 = determinenodeexittype(var_04);
|
||||
if(isdefined(var_05))
|
||||
{
|
||||
var_02 = var_05;
|
||||
var_03 = 1;
|
||||
if(isdefined(self.heat))
|
||||
{
|
||||
var_02 = determineheatcoverexittype(var_04,var_02);
|
||||
}
|
||||
|
||||
if(!isdefined(level.exposedtransition[var_02]) && var_02 != "stand_unstable" && var_02 != "stand_unstable_run" && var_02 != "stand_saw" && var_02 != "crouch_saw")
|
||||
{
|
||||
var_06 = animscripts\utility::absangleclamp180(self.angles[1] - animscripts\utility::getnodeforwardyaw(var_04));
|
||||
if(var_06 < 5)
|
||||
{
|
||||
if(!isdefined(self.heat))
|
||||
{
|
||||
var_00 = var_04.origin;
|
||||
}
|
||||
|
||||
var_01 = animscripts\utility::getnodeforwardyaw(var_04);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!checktransitionconditions(var_02,var_04))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_07 = isdefined(level.exposedtransition[var_02]);
|
||||
if(!var_03)
|
||||
{
|
||||
var_02 = determinenonnodeexittype();
|
||||
}
|
||||
|
||||
var_08 = (-1 * self.lookaheaddir[0],-1 * self.lookaheaddir[1],0);
|
||||
var_09 = getmaxdirectionsandexcludedirfromapproachtype(var_04);
|
||||
var_0A = var_09.maxdirections;
|
||||
var_0B = var_09.excludedir;
|
||||
var_0C = spawnstruct();
|
||||
calculatenodetransitionangles(var_0C,var_02,0,var_01,var_08,var_0A,var_0B);
|
||||
sortnodetransitionangles(var_0C,var_0A);
|
||||
var_0D = -1;
|
||||
var_0E = 3;
|
||||
if(var_07)
|
||||
{
|
||||
var_0E = 1;
|
||||
}
|
||||
|
||||
for(var_0F = 1;var_0F <= var_0E;var_0F++)
|
||||
{
|
||||
var_0D = var_0C.transindex[var_0F];
|
||||
if(checknodeexitpos(var_00,var_01,var_02,var_07,var_0D))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_0F > var_0E)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_10 = distancesquared(self.origin,self.coverexitpos) * 1.25 * 1.25;
|
||||
if(distancesquared(self.origin,self.pathgoalpos) < var_10)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
donodeexitanimation(var_02,var_0D);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
determinenodeexittype(param_00)
|
||||
{
|
||||
if(animscripts\utility::is_free_running() && param_00.type == "Cover Crouch")
|
||||
{
|
||||
return "free_run_out_of_cover_crouch";
|
||||
}
|
||||
|
||||
if(animscripts\cover_arrival::canusesawapproach(param_00))
|
||||
{
|
||||
if(param_00.type == "Cover Stand")
|
||||
{
|
||||
return "stand_saw";
|
||||
}
|
||||
|
||||
if(param_00.type == "Cover Crouch")
|
||||
{
|
||||
return "crouch_saw";
|
||||
}
|
||||
else if(param_00.type == "Cover Prone")
|
||||
{
|
||||
return "prone_saw";
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(level.approach_types[param_00.type]))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(level.requiredexitstance[param_00.type]) && level.requiredexitstance[param_00.type] != self.a.pose)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = self.a.pose;
|
||||
if(var_01 == "prone")
|
||||
{
|
||||
var_01 = "crouch";
|
||||
}
|
||||
|
||||
var_02 = level.approach_types[param_00.type][var_01];
|
||||
if(animscripts\cover_arrival::usereadystand() && var_02 == "exposed")
|
||||
{
|
||||
var_02 = "exposed_ready";
|
||||
}
|
||||
|
||||
if(animscripts\utility::isunstableground())
|
||||
{
|
||||
if(var_02 == "exposed")
|
||||
{
|
||||
var_02 = "exposed_unstable";
|
||||
if(self.movemode == "run")
|
||||
{
|
||||
var_02 = var_02 + "_run";
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
else if(var_02 == "stand")
|
||||
{
|
||||
var_02 = "stand_unstable";
|
||||
if(self.movemode == "run")
|
||||
{
|
||||
var_02 = var_02 + "_run";
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
}
|
||||
|
||||
if(animscripts\utility::shouldcqb())
|
||||
{
|
||||
var_03 = var_02 + "_cqb";
|
||||
if(isdefined(level.archetypes["soldier"]["cover_exit"][var_03]))
|
||||
{
|
||||
var_02 = var_03;
|
||||
}
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
checktransitionpreconditions()
|
||||
{
|
||||
if(!isdefined(self.pathgoalpos))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!self shouldfacemotion())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(self.a.pose == "prone")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(isdefined(self.disableexits) && self.disableexits)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(self.stairsstate != "none")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!self isstanceallowed("stand") && !isdefined(self.heat))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(distancesquared(self.origin,self.pathgoalpos) < 10000)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
checktransitionconditions(param_00,param_01)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(param_00 == "exposed" || isdefined(self.heat))
|
||||
{
|
||||
if(self.a.pose != "stand" && self.a.pose != "crouch")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(self.a.movement != "stop")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(self.heat) && isdefined(self.enemy) && vectordot(self.lookaheaddir,self.enemy.origin - self.origin) < 0)
|
||||
{
|
||||
if(animscripts\utility::canseeenemyfromexposed() && distancesquared(self.origin,self.enemy.origin) < 90000)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
determinenonnodeexittype(param_00)
|
||||
{
|
||||
if(self.a.pose == "stand")
|
||||
{
|
||||
param_00 = "exposed";
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 = "exposed_crouch";
|
||||
}
|
||||
|
||||
if(animscripts\cover_arrival::usereadystand())
|
||||
{
|
||||
param_00 = "exposed_ready";
|
||||
}
|
||||
|
||||
if(param_00 == "exposed" && animscripts\utility::isunstableground())
|
||||
{
|
||||
param_00 = "exposed_unstable";
|
||||
if(self.movemode == "run")
|
||||
{
|
||||
param_00 = param_00 + "_run";
|
||||
}
|
||||
|
||||
return param_00;
|
||||
}
|
||||
|
||||
if(animscripts\utility::shouldcqb())
|
||||
{
|
||||
param_00 = param_00 + "_cqb";
|
||||
}
|
||||
else if(isdefined(self.heat))
|
||||
{
|
||||
param_00 = "heat";
|
||||
}
|
||||
|
||||
return param_00;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
getmaxdirectionsandexcludedirfromapproachtype(param_00)
|
||||
{
|
||||
var_01 = spawnstruct();
|
||||
if(isdefined(param_00) && isdefined(level.maxdirections[param_00.type]))
|
||||
{
|
||||
var_01.maxdirections = level.maxdirections[param_00.type];
|
||||
var_01.excludedir = level.excludedir[param_00.type];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01.maxdirections = 9;
|
||||
var_01.excludedir = -1;
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
calculatenodetransitionangles(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
||||
{
|
||||
param_00.transitions = [];
|
||||
param_00.transindex = [];
|
||||
var_07 = undefined;
|
||||
var_08 = 1;
|
||||
var_09 = 0;
|
||||
if(param_02)
|
||||
{
|
||||
var_07 = animscripts\utility::lookupanim("cover_trans_angles",param_01);
|
||||
var_08 = -1;
|
||||
var_09 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_07 = animscripts\utility::lookupanim("cover_exit_angles",param_01);
|
||||
var_08 = 1;
|
||||
var_09 = 180;
|
||||
}
|
||||
|
||||
for(var_0A = 1;var_0A <= param_05;var_0A++)
|
||||
{
|
||||
param_00.transindex[var_0A] = var_0A;
|
||||
if(var_0A == 5 || var_0A == param_06 || !isdefined(var_07[var_0A]))
|
||||
{
|
||||
param_00.transitions[var_0A] = -1.0003;
|
||||
continue;
|
||||
}
|
||||
|
||||
var_0B = (0,param_03 + var_08 * var_07[var_0A] + var_09,0);
|
||||
var_0C = vectornormalize(anglestoforward(var_0B));
|
||||
param_00.transitions[var_0A] = vectordot(param_04,var_0C);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
sortnodetransitionangles(param_00,param_01)
|
||||
{
|
||||
for(var_02 = 2;var_02 <= param_01;var_02++)
|
||||
{
|
||||
var_03 = param_00.transitions[param_00.transindex[var_02]];
|
||||
var_04 = param_00.transindex[var_02];
|
||||
for(var_05 = var_02 - 1;var_05 >= 1;var_05--)
|
||||
{
|
||||
if(var_03 < param_00.transitions[param_00.transindex[var_05]])
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
param_00.transindex[var_05 + 1] = param_00.transindex[var_05];
|
||||
}
|
||||
|
||||
param_00.transindex[var_05 + 1] = var_04;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
checknodeexitpos(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
var_05 = (0,param_01,0);
|
||||
var_06 = anglestoforward(var_05);
|
||||
var_07 = anglestoright(var_05);
|
||||
var_08 = animscripts\utility::lookuptransitionanim("cover_exit_dist",param_02,param_04);
|
||||
var_09 = var_06 * var_08[0];
|
||||
var_0A = var_07 * var_08[1];
|
||||
var_0B = param_00 + var_09 - var_0A;
|
||||
self.coverexitpos = var_0B;
|
||||
if(!param_03 && !self checkcoverexitposwithpath(var_0B))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!self maymovefrompointtopoint(self.origin,var_0B))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(param_04 <= 6 || param_03)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
var_0C = animscripts\utility::lookuptransitionanim("cover_exit_postdist",param_02,param_04);
|
||||
var_09 = var_06 * var_0C[0];
|
||||
var_0A = var_07 * var_0C[1];
|
||||
var_0D = var_0B + var_09 - var_0A;
|
||||
self.coverexitpos = var_0D;
|
||||
return self maymovefrompointtopoint(var_0B,var_0D);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
donodeexitanimation(param_00,param_01)
|
||||
{
|
||||
var_02 = animscripts\utility::lookuptransitionanim("cover_exit",param_00,param_01);
|
||||
var_03 = vectortoangles(self.lookaheaddir);
|
||||
if(self.a.pose == "prone")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_04 = 0.2;
|
||||
if(self.swimmer)
|
||||
{
|
||||
self animmode("nogravity",0);
|
||||
}
|
||||
else
|
||||
{
|
||||
self animmode("zonly_physics",0);
|
||||
}
|
||||
|
||||
self orientmode("face angle",self.angles[1]);
|
||||
self setflaggedanimknoballrestart("coverexit",var_02,%body,1,var_04,self.movetransitionrate);
|
||||
animscripts\shared::donotetracks("coverexit");
|
||||
self.a.pose = "stand";
|
||||
self.a.movement = "run";
|
||||
self.ignorepathchange = undefined;
|
||||
self orientmode("face motion");
|
||||
self animmode("none",0);
|
||||
finishcoverexitnotetracks("coverexit");
|
||||
self clearanim(%animscript_root,0.2);
|
||||
self orientmode("face default");
|
||||
self animmode("normal",0);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
finishcoverexitnotetracks(param_00)
|
||||
{
|
||||
self endon("move_loop_restart");
|
||||
animscripts\shared::donotetracks(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
determineheatcoverexittype(param_00,param_01)
|
||||
{
|
||||
if(param_00.type == "Cover Right")
|
||||
{
|
||||
param_01 = "heat_right";
|
||||
}
|
||||
else if(param_00.type == "Cover Left")
|
||||
{
|
||||
param_01 = "heat_left";
|
||||
}
|
||||
|
||||
return param_01;
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
getexitnode()
|
||||
{
|
||||
var_00 = undefined;
|
||||
if(!isdefined(self.heat))
|
||||
{
|
||||
var_01 = 400;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = 4096;
|
||||
}
|
||||
|
||||
if(animscripts\utility::isspaceai())
|
||||
{
|
||||
var_01 = 1024;
|
||||
}
|
||||
|
||||
if(isdefined(self.node) && distancesquared(self.origin,self.node.origin) < var_01)
|
||||
{
|
||||
var_00 = self.node;
|
||||
}
|
||||
else if(isdefined(self.prevnode) && distancesquared(self.origin,self.prevnode.origin) < var_01)
|
||||
{
|
||||
var_00 = self.prevnode;
|
||||
}
|
||||
|
||||
if(isdefined(var_00) && isdefined(self.heat) && animscripts\utility::absangleclamp180(self.angles[1] - var_00.angles[1]) > 30)
|
||||
{
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
custommovetransition()
|
||||
{
|
||||
var_00 = self.custommovetransition;
|
||||
if(!isdefined(self.permanentcustommovetransition))
|
||||
{
|
||||
self.custommovetransition = undefined;
|
||||
}
|
||||
|
||||
var_01 = [[ var_00 ]]();
|
||||
if(!isdefined(self.permanentcustommovetransition))
|
||||
{
|
||||
self.startmovetransitionanim = undefined;
|
||||
}
|
||||
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
var_01 = 0.2;
|
||||
}
|
||||
|
||||
self clearanim(%animscript_root,var_01);
|
||||
self orientmode("face default");
|
||||
self animmode("none",0);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
debug_arrival(param_00)
|
||||
{
|
||||
if(!animscripts\cover_arrival::debug_arrivals_on_actor())
|
||||
{
|
||||
}
|
||||
}
|
538
AW/PC/animscripts/face.gsc
Normal file
538
AW/PC/animscripts/face.gsc
Normal file
@ -0,0 +1,538 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: face.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 19
|
||||
* Decompile Time: 272 ms
|
||||
* Timestamp: 4/22/2024 2:00:29 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
initcharacterface()
|
||||
{
|
||||
if(!level.usefacialanims)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(self.a.currentdialogimportance))
|
||||
{
|
||||
self.a.currentdialogimportance = 0;
|
||||
self.a.idleface = level.alertface;
|
||||
self.facewaiting = [];
|
||||
self.facelastnotifynum = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
saygenericdialogue(param_00)
|
||||
{
|
||||
var_01 = undefined;
|
||||
switch(self.voice)
|
||||
{
|
||||
case "czech":
|
||||
case "french":
|
||||
case "seal":
|
||||
case "taskforce":
|
||||
case "delta":
|
||||
case "pmc":
|
||||
case "xslice":
|
||||
case "american":
|
||||
var_02 = "friendly";
|
||||
var_03 = level.numfriendlyvoices;
|
||||
break;
|
||||
|
||||
default:
|
||||
var_02 = "enemy";
|
||||
var_03 = level.numenemyvoices;
|
||||
break;
|
||||
}
|
||||
|
||||
var_01 = 1 + self getentitynumber() % var_03;
|
||||
var_02 = var_02 + "_" + var_01;
|
||||
var_04 = undefined;
|
||||
switch(param_00)
|
||||
{
|
||||
case "meleecharge":
|
||||
case "meleeattack":
|
||||
var_05 = 0.5;
|
||||
break;
|
||||
|
||||
case "flashbang":
|
||||
var_05 = 0.7;
|
||||
break;
|
||||
|
||||
case "pain":
|
||||
var_05 = 0.9;
|
||||
break;
|
||||
|
||||
case "pain_small":
|
||||
var_05 = 0.9;
|
||||
break;
|
||||
|
||||
case "dogdeathlongplr":
|
||||
case "dogdeathshortplr":
|
||||
case "dogdeathlong":
|
||||
case "dogdeathshort":
|
||||
case "melee_death":
|
||||
case "death":
|
||||
var_05 = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
var_05 = 0.3;
|
||||
break;
|
||||
}
|
||||
|
||||
var_06 = undefined;
|
||||
if(isdefined(self.generic_voice_override))
|
||||
{
|
||||
var_06 = self.generic_voice_override + "_" + param_00 + "_" + var_02;
|
||||
if(!soundexists(var_06))
|
||||
{
|
||||
var_06 = "generic_" + param_00 + "_" + var_02;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_06 = "generic_" + param_00 + "_" + var_02;
|
||||
}
|
||||
|
||||
thread playfacethread(var_04,var_06,var_05);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
setidlefacedelayed(param_00)
|
||||
{
|
||||
animscripts\battlechatter::playbattlechatter();
|
||||
self.a.idleface = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
setidleface(param_00)
|
||||
{
|
||||
if(!level.usefacialanims)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
animscripts\battlechatter::playbattlechatter();
|
||||
self.a.idleface = param_00;
|
||||
playidleface();
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
sayspecificdialogue(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
thread playfacethread(param_00,param_01,param_02,param_03,param_04,param_05);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
chooseanimfromset(param_00)
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
playidleface()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
playfacethread(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
self.a.facialanimdone = 1;
|
||||
self.a.facialsounddone = 1;
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
if(!soundexists(param_01))
|
||||
{
|
||||
wait(0);
|
||||
self notify(param_03);
|
||||
}
|
||||
|
||||
self playsoundatviewheight(param_01,"animscript facesound" + param_03,1);
|
||||
thread waitforfacesound(param_03);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
self playsoundatviewheight(param_01);
|
||||
}
|
||||
|
||||
if(!level.usefacialanims)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
initcharacterface();
|
||||
if(!isdefined(param_00) && !isdefined(param_01))
|
||||
{
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
wait(0);
|
||||
self.faceresult = "failed";
|
||||
self notify(param_03);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
self endon("death");
|
||||
if(isstring(param_02))
|
||||
{
|
||||
switch(param_02)
|
||||
{
|
||||
case "any":
|
||||
param_02 = 0.1;
|
||||
break;
|
||||
|
||||
case "pain":
|
||||
param_02 = 0.9;
|
||||
break;
|
||||
|
||||
case "death":
|
||||
param_02 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(param_02 <= self.a.currentdialogimportance && isdefined(param_04) && param_04 == "wait")
|
||||
{
|
||||
var_06 = self.facewaiting.size;
|
||||
var_07 = self.facelastnotifynum + 1;
|
||||
self.facewaiting[var_06]["facialanim"] = param_00;
|
||||
self.facewaiting[var_06]["soundAlias"] = param_01;
|
||||
self.facewaiting[var_06]["importance"] = param_02;
|
||||
self.facewaiting[var_06]["notifyString"] = param_03;
|
||||
self.facewaiting[var_06]["waitOrNot"] = param_04;
|
||||
self.facewaiting[var_06]["timeToWait"] = param_05;
|
||||
self.facewaiting[var_06]["notifyNum"] = var_07;
|
||||
thread playface_waitfornotify("animscript face stop waiting " + self.facewaiting[var_06]["notifyNum"],"Face done waiting","Face done waiting");
|
||||
if(isdefined(param_05))
|
||||
{
|
||||
thread playface_waitfortime(param_05,"Face done waiting","Face done waiting");
|
||||
}
|
||||
|
||||
self waittill("Face done waiting");
|
||||
var_06 = undefined;
|
||||
for(var_08 = 0;var_08 < self.facewaiting.size;var_08++)
|
||||
{
|
||||
if(self.facewaiting[var_08]["notifyNum"] == var_07)
|
||||
{
|
||||
var_06 = var_08;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(self.a.facewaitforresult == "notify")
|
||||
{
|
||||
playfacethread(self.facewaiting[var_06]["facialanim"],self.facewaiting[var_06]["soundAlias"],self.facewaiting[var_06]["importance"],self.facewaiting[var_06]["notifyString"]);
|
||||
}
|
||||
else if(isdefined(param_03))
|
||||
{
|
||||
self.faceresult = "failed";
|
||||
self notify(param_03);
|
||||
}
|
||||
|
||||
for(var_08 = var_06 + 1;var_08 < self.facewaiting.size;var_08++)
|
||||
{
|
||||
self.facewaiting[var_08 - 1]["facialanim"] = self.facewaiting[var_08]["facialanim"];
|
||||
self.facewaiting[var_08 - 1]["soundAlias"] = self.facewaiting[var_08]["soundAlias"];
|
||||
self.facewaiting[var_08 - 1]["importance"] = self.facewaiting[var_08]["importance"];
|
||||
self.facewaiting[var_08 - 1]["notifyString"] = self.facewaiting[var_08]["notifyString"];
|
||||
self.facewaiting[var_08 - 1]["waitOrNot"] = self.facewaiting[var_08]["waitOrNot"];
|
||||
self.facewaiting[var_08 - 1]["timeToWait"] = self.facewaiting[var_08]["timeToWait"];
|
||||
self.facewaiting[var_08 - 1]["notifyNum"] = self.facewaiting[var_08]["notifyNum"];
|
||||
}
|
||||
|
||||
self.facewaiting[self.facewaiting.size - 1] = undefined;
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_02 >= self.a.currentdialogimportance)
|
||||
{
|
||||
self notify("end current face");
|
||||
self endon("end current face");
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
if(isdefined(self.a.currentdialognotifystring))
|
||||
{
|
||||
self.faceresult = "interrupted";
|
||||
self notify(self.a.currentdialognotifystring);
|
||||
}
|
||||
}
|
||||
|
||||
self.a.currentdialogimportance = param_02;
|
||||
self.a.currentdialogsound = param_01;
|
||||
self.a.currentdialognotifystring = param_03;
|
||||
self.a.facialanimdone = 1;
|
||||
self.a.facialsounddone = 1;
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
maps\_anim::disabledefaultfacialanims();
|
||||
self setflaggedanimknobrestart("animscript faceanim",param_00,1,0.1,1);
|
||||
self.a.facialanimdone = 0;
|
||||
thread waitforfacialanim();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\_anim::disabledefaultfacialanims(0);
|
||||
}
|
||||
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
self playsoundatviewheight(param_01,"animscript facesound",1);
|
||||
self.a.facialsounddone = 0;
|
||||
thread waitforfacesound();
|
||||
}
|
||||
|
||||
while(!self.a.facialanimdone || !self.a.facialsounddone)
|
||||
{
|
||||
self waittill("animscript facedone");
|
||||
}
|
||||
|
||||
self.a.currentdialogimportance = 0;
|
||||
self.a.currentdialogsound = undefined;
|
||||
self.a.currentdialognotifystring = undefined;
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
self.faceresult = "finished";
|
||||
self notify(param_03);
|
||||
}
|
||||
|
||||
if(isdefined(self.facewaiting) && self.facewaiting.size > 0)
|
||||
{
|
||||
var_09 = 0;
|
||||
var_0A = 1;
|
||||
for(var_08 = 0;var_08 < self.facewaiting.size;var_08++)
|
||||
{
|
||||
if(self.facewaiting[var_08]["importance"] > var_09)
|
||||
{
|
||||
var_09 = self.facewaiting[var_08]["importance"];
|
||||
var_0A = var_08;
|
||||
}
|
||||
}
|
||||
|
||||
self notify("animscript face stop waiting " + self.facewaiting[var_0A]["notifyNum"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(isai(self))
|
||||
{
|
||||
playidleface();
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
self.faceresult = "failed";
|
||||
self notify(param_03);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
waitforfacialanim()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("end current face");
|
||||
animscripts\shared::donotetracks("animscript faceanim");
|
||||
self.a.facialanimdone = 1;
|
||||
self notify("animscript facedone");
|
||||
maps\_anim::disabledefaultfacialanims(0);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
waitforfacesound(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self waittill("animscript facesound" + param_00);
|
||||
self notify(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
playface_waitfornotify(param_00,param_01,param_02)
|
||||
{
|
||||
self endon("death");
|
||||
self endon(param_02);
|
||||
self waittill(param_00);
|
||||
self.a.facewaitforresult = "notify";
|
||||
self notify(param_01);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
playface_waitfortime(param_00,param_01,param_02)
|
||||
{
|
||||
self endon("death");
|
||||
self endon(param_02);
|
||||
wait(param_00);
|
||||
self.a.facewaitforresult = "time";
|
||||
self notify(param_01);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
initlevelface()
|
||||
{
|
||||
anim.numfriendlyvoices = 8;
|
||||
anim.numenemyvoices = 8;
|
||||
initfacialanims();
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
initfacialanims()
|
||||
{
|
||||
anim.facial = [];
|
||||
level.facial["pain"] = [%facial_pain_1,%facial_pain_2,%facial_pain_3,%facial_pain_4];
|
||||
level.facial["aim"] = [%facial_aim_1,%facial_aim_2];
|
||||
level.facial["run"] = [%facial_run_1,%facial_run_2];
|
||||
level.facial["corner_stand_L"] = [%facial_corner_stand_l_1,%facial_corner_stand_l_2];
|
||||
level.facial["corner_stand_R"] = [%facial_corner_stand_r_1,%facial_corner_stand_r_2];
|
||||
level.facial["death"] = [%facial_death_1,%facial_death_2,%facial_death_3,%facial_death_4];
|
||||
level.facial["idle"] = [%facial_idle_1,%facial_idle_2,%facial_idle_3];
|
||||
level.facial["pain_blend"] = [%facial_pain_blend_1,%facial_pain_blend_2,%facial_pain_blend_3,%facial_pain_blend_4];
|
||||
level.facial["aim_blend"] = [%facial_aim_blend_1,%facial_aim_blend_2];
|
||||
level.facial["run_blend"] = [%facial_run_blend_1,%facial_run_blend_2];
|
||||
level.facial["corner_stand_L_blend"] = [%facial_corner_stand_l_blend_1,%facial_corner_stand_l_blend_2];
|
||||
level.facial["corner_stand_R_blend"] = [%facial_corner_stand_r_blend_1,%facial_corner_stand_r_blend_2];
|
||||
level.facial["death_blend"] = [%facial_death_blend_1,%facial_death_blend_2,%facial_death_blend_3,%facial_death_blend_4];
|
||||
level.facial["idle_blend"] = [%facial_idle_blend_1,%facial_idle_blend_2,%facial_idle_blend_3];
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
animhasfacialoverride(param_00)
|
||||
{
|
||||
return animhasnotetrack(param_00,"facial_override");
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
playfacialanim(param_00,param_01,param_02)
|
||||
{
|
||||
if(!isdefined(self.facialidlemonitor))
|
||||
{
|
||||
thread facial_idle_monitor_thread();
|
||||
}
|
||||
|
||||
if(isdefined(self.bdisabledefaultfacialanims) && self.bdisabledefaultfacialanims)
|
||||
{
|
||||
self clearanim(%head,0.2);
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(param_00) && animhasfacialoverride(param_00))
|
||||
{
|
||||
self clearanim(%head,0.2);
|
||||
return;
|
||||
}
|
||||
|
||||
if(self hasblendshapes())
|
||||
{
|
||||
param_01 = param_01 + "_blend";
|
||||
}
|
||||
|
||||
if(!isdefined(level.facial[param_01]))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(param_02) && param_02 >= 0 && param_02 < level.facial[param_01].size)
|
||||
{
|
||||
var_03 = param_02;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = randomint(level.facial[param_02].size);
|
||||
}
|
||||
|
||||
var_04 = level.facial[param_01][var_03];
|
||||
self setanimknob(var_04);
|
||||
if(param_01 == "death")
|
||||
{
|
||||
thread end_facial_on_death();
|
||||
}
|
||||
|
||||
return var_03;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
end_facial_on_death()
|
||||
{
|
||||
wait(1);
|
||||
if(isdefined(self))
|
||||
{
|
||||
self clearanim(%head,0.2);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
get_eye_relative_dir()
|
||||
{
|
||||
if(self gettagindex("jnt_eyelid_TL") == -1 || self gettagindex("tag_eye") == -1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(self gettagindex("jnt_eyelid_TR") == -1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = self gettagangles("tag_eye");
|
||||
var_01 = self gettagangles("jnt_eyelid_TR");
|
||||
var_02 = self gettagangles("jnt_eyelid_TL");
|
||||
var_03 = angleclamp180(abs(var_00[0] - var_01[0]));
|
||||
var_04 = angleclamp180(abs(var_00[0] - var_02[0]));
|
||||
if(!isdefined(self.prev_eyel_diff))
|
||||
{
|
||||
self.prev_eyel_diff = var_03;
|
||||
}
|
||||
|
||||
if(!isdefined(self.prev_eyer_diff))
|
||||
{
|
||||
self.prev_eyer_diff = var_04;
|
||||
}
|
||||
|
||||
if(!isdefined(self.eye_move_counter))
|
||||
{
|
||||
self.eye_move_counter = 0;
|
||||
}
|
||||
|
||||
if(angleclamp180(var_03 - self.prev_eyel_diff) > 5 || angleclamp180(var_04 - self.prev_eyer_diff) > 5)
|
||||
{
|
||||
self.prev_eyel_diff = var_03;
|
||||
self.prev_eyer_diff = var_04;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.eye_move_counter++;
|
||||
}
|
||||
|
||||
if(isdefined(self.eye_move_counter) && self.eye_move_counter > 4 && isdefined(self.script) && self.script != "scripted")
|
||||
{
|
||||
var_05 = playfacialanim(undefined,"idle",undefined);
|
||||
if(isdefined(var_05))
|
||||
{
|
||||
wait(getanimlength(level.facial["idle"][var_05]));
|
||||
}
|
||||
|
||||
self.eye_move_counter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
facial_idle_monitor_thread()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
self.facialidlemonitor = 1;
|
||||
for(;;)
|
||||
{
|
||||
get_eye_relative_dir();
|
||||
wait(0.35);
|
||||
}
|
||||
}
|
23
AW/PC/animscripts/first_frame.gsc
Normal file
23
AW/PC/animscripts/first_frame.gsc
Normal file
@ -0,0 +1,23 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: first_frame.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 27 ms
|
||||
* Timestamp: 4/22/2024 2:00:30 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("stop_first_frame");
|
||||
self notify("killanimscript");
|
||||
self.pushable = 0;
|
||||
self clearanim(self.root_anim,0.3);
|
||||
self orientmode("face angle",self.angles[1]);
|
||||
self setanim(level.scr_anim[self._animname][self._first_frame_anim],1,0,0);
|
||||
self._first_frame_anim = undefined;
|
||||
self waittill("killanimscript");
|
||||
}
|
87
AW/PC/animscripts/flashed.gsc
Normal file
87
AW/PC/animscripts/flashed.gsc
Normal file
@ -0,0 +1,87 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: flashed.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 5
|
||||
* Decompile Time: 78 ms
|
||||
* Timestamp: 4/22/2024 2:00:30 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init_animset_flashed()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["flashed"] = [%exposed_flashbang_v2,%exposed_flashbang_v4];
|
||||
var_00["flashed"] = common_scripts\utility::array_randomize(var_00["flashed"]);
|
||||
level.archetypes["soldier"]["flashed"] = var_00;
|
||||
level.flashanimindex["soldier"] = 0;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
getnextflashanim()
|
||||
{
|
||||
var_00 = "soldier";
|
||||
if(isdefined(self.animarchetype) && isdefined(level.flashanimindex[self.animarchetype]))
|
||||
{
|
||||
var_00 = self.animarchetype;
|
||||
}
|
||||
|
||||
level.flashanimindex[var_00]++;
|
||||
if(level.flashanimindex[var_00] >= level.archetypes[var_00]["flashed"]["flashed"].size)
|
||||
{
|
||||
level.flashanimindex[var_00] = 0;
|
||||
level.archetypes[var_00]["flashed"]["flashed"] = common_scripts\utility::array_randomize(level.archetypes[var_00]["flashed"]["flashed"]);
|
||||
}
|
||||
|
||||
return level.archetypes[var_00]["flashed"]["flashed"][level.flashanimindex[var_00]];
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
flashbanganim(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self setflaggedanimknoball("flashed_anim",param_00,%body,0.2,randomfloatrange(0.9,1.1));
|
||||
animscripts\shared::donotetracks("flashed_anim");
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
main()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("flashed");
|
||||
var_00 = maps\_utility::flashbanggettimeleftsec();
|
||||
if(var_00 <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
animscripts\face::saygenericdialogue("flashbang");
|
||||
if(isdefined(self.specialflashedfunc))
|
||||
{
|
||||
self [[ self.specialflashedfunc ]]();
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = getnextflashanim();
|
||||
flashbangedloop(var_01,var_00);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
flashbangedloop(param_00,param_01)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
if(self.a.pose == "prone")
|
||||
{
|
||||
animscripts\utility::exitpronewrapper(1);
|
||||
}
|
||||
|
||||
self.a.pose = "stand";
|
||||
self.allowdeath = 1;
|
||||
thread flashbanganim(param_00);
|
||||
wait(param_01);
|
||||
self notify("stop_flashbang_effect");
|
||||
self.flashed = 0;
|
||||
}
|
200
AW/PC/animscripts/free_run.gsc
Normal file
200
AW/PC/animscripts/free_run.gsc
Normal file
@ -0,0 +1,200 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: free_run.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 7
|
||||
* Decompile Time: 121 ms
|
||||
* Timestamp: 4/22/2024 2:00:31 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
waittillframeend;
|
||||
waittillframeend;
|
||||
setup_free_run_move_anims();
|
||||
setup_free_run_cover_crouch_anims();
|
||||
setup_free_run_transition_anims();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
setup_free_run_move_anims()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["sprint"] = %freerunnerb_loop;
|
||||
var_00["move_f"] = %freerunnerb_loop;
|
||||
var_00["move_l"] = %freerunnerb_loop;
|
||||
var_00["move_r"] = %freerunnerb_loop;
|
||||
var_00["move_b"] = %freerunnerb_loop;
|
||||
level.archetypes["soldier"]["free_run_move"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
setup_free_run_cover_crouch_anims()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["hide_idle"] = %unarmed_covercrouch_hide_idle;
|
||||
var_00["hide_idle_twitch"] = animscripts\utility::array(%unarmed_covercrouch_twitch_1,%unarmed_covercrouch_twitch_2,%unarmed_covercrouch_twitch_3,%unarmed_covercrouch_twitch_4);
|
||||
var_00["look"] = animscripts\utility::array(%unarmed_covercrouch_hide_look);
|
||||
var_00["add_aim_up"] = %covercrouch_aim8_add;
|
||||
var_00["add_aim_down"] = %covercrouch_aim2_add;
|
||||
var_00["add_aim_left"] = %covercrouch_aim4_add;
|
||||
var_00["add_aim_right"] = %covercrouch_aim6_add;
|
||||
var_00["straight_level"] = %covercrouch_aim5;
|
||||
var_00["hide_idle_flinch"] = animscripts\utility::array();
|
||||
var_00["hide_2_crouch"] = %covercrouch_hide_2_aim;
|
||||
var_00["hide_2_stand"] = %covercrouch_hide_2_stand;
|
||||
var_00["hide_2_lean"] = %covercrouch_hide_2_lean;
|
||||
var_00["hide_2_right"] = %covercrouch_hide_2_right;
|
||||
var_00["hide_2_left"] = %covercrouch_hide_2_left;
|
||||
var_00["crouch_2_hide"] = %covercrouch_aim_2_hide;
|
||||
var_00["stand_2_hide"] = %covercrouch_stand_2_hide;
|
||||
var_00["lean_2_hide"] = %covercrouch_lean_2_hide;
|
||||
var_00["right_2_hide"] = %covercrouch_right_2_hide;
|
||||
var_00["left_2_hide"] = %covercrouch_left_2_hide;
|
||||
var_00["smg_hide_2_stand"] = %smg_covercrouch_hide_2_stand;
|
||||
var_00["smg_stand_2_hide"] = %smg_covercrouch_stand_2_hide;
|
||||
var_00["crouch_aim"] = %covercrouch_aim5;
|
||||
var_00["stand_aim"] = %exposed_aim_5;
|
||||
var_00["lean_aim"] = %covercrouch_lean_aim5;
|
||||
var_00["fire"] = %exposed_shoot_auto_v2;
|
||||
var_00["semi2"] = %exposed_shoot_semi2;
|
||||
var_00["semi3"] = %exposed_shoot_semi3;
|
||||
var_00["semi4"] = %exposed_shoot_semi4;
|
||||
var_00["semi5"] = %exposed_shoot_semi5;
|
||||
var_00["single"] = [%exposed_shoot_semi1];
|
||||
var_00["burst2"] = %exposed_shoot_burst3;
|
||||
var_00["burst3"] = %exposed_shoot_burst3;
|
||||
var_00["burst4"] = %exposed_shoot_burst4;
|
||||
var_00["burst5"] = %exposed_shoot_burst5;
|
||||
var_00["burst6"] = %exposed_shoot_burst6;
|
||||
var_00["blind_fire"] = animscripts\utility::array(%covercrouch_blindfire_1,%covercrouch_blindfire_2,%covercrouch_blindfire_3,%covercrouch_blindfire_4);
|
||||
var_00["reload"] = %covercrouch_reload_hide;
|
||||
var_00["grenade_safe"] = animscripts\utility::array(%covercrouch_grenadea,%covercrouch_grenadeb);
|
||||
var_00["grenade_exposed"] = animscripts\utility::array(%covercrouch_grenadea,%covercrouch_grenadeb);
|
||||
var_00["exposed_idle"] = animscripts\utility::array(%exposed_idle_alert_v1,%exposed_idle_alert_v2,%exposed_idle_alert_v3);
|
||||
level.archetypes["soldier"]["free_run_cover_crouch"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
setup_free_run_transition_anims()
|
||||
{
|
||||
var_00 = "free_run_into_cover_crouch";
|
||||
var_01 = [];
|
||||
var_01[1] = %unarmed_covercrouch_arrive_7;
|
||||
var_01[2] = %unarmed_covercrouch_arrive_8;
|
||||
var_01[3] = %unarmed_covercrouch_arrive_9;
|
||||
var_01[4] = %unarmed_covercrouch_arrive_4;
|
||||
var_01[6] = %unarmed_covercrouch_arrive_6;
|
||||
level.archetypes["soldier"]["cover_trans"][var_00] = var_01;
|
||||
var_02 = "free_run_out_of_cover_crouch";
|
||||
var_01 = [];
|
||||
var_01[1] = %unarmed_covercrouch_exit_1;
|
||||
var_01[2] = %unarmed_covercrouch_exit_2;
|
||||
var_01[3] = %unarmed_covercrouch_exit_3;
|
||||
var_01[4] = %unarmed_covercrouch_exit_4;
|
||||
var_01[6] = %unarmed_covercrouch_exit_6;
|
||||
level.archetypes["soldier"]["cover_exit"][var_02] = var_01;
|
||||
for(var_03 = 1;var_03 <= 6;var_03++)
|
||||
{
|
||||
if(var_03 == 5)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
level.archetypes["soldier"]["cover_trans_dist"][var_00][var_03] = getmovedelta(level.archetypes["soldier"]["cover_trans"][var_00][var_03],0,1);
|
||||
level.archetypes["soldier"]["cover_trans_angles"][var_00][var_03] = getangledelta(level.archetypes["soldier"]["cover_trans"][var_00][var_03],0,1);
|
||||
if(animhasnotetrack(level.archetypes["soldier"]["cover_exit"][var_02][var_03],"code_move"))
|
||||
{
|
||||
var_04 = getnotetracktimes(level.archetypes["soldier"]["cover_exit"][var_02][var_03],"code_move")[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = 1;
|
||||
}
|
||||
|
||||
level.archetypes["soldier"]["cover_exit_dist"][var_02][var_03] = getmovedelta(level.archetypes["soldier"]["cover_exit"][var_02][var_03],0,var_04);
|
||||
level.archetypes["soldier"]["cover_exit_angles"][var_02][var_03] = getangledelta(level.archetypes["soldier"]["cover_exit"][var_02][var_03],0,1);
|
||||
}
|
||||
|
||||
level.archetypes["soldier"]["CoverTransLongestDist"][var_00] = 0;
|
||||
for(var_03 = 1;var_03 <= 6;var_03++)
|
||||
{
|
||||
if(var_03 == 5)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_05 = lengthsquared(level.archetypes["soldier"]["cover_trans_dist"][var_00][var_03]);
|
||||
if(level.archetypes["soldier"]["CoverTransLongestDist"][var_00] < var_05)
|
||||
{
|
||||
level.archetypes["soldier"]["CoverTransLongestDist"][var_00] = var_05;
|
||||
}
|
||||
}
|
||||
|
||||
level.arrivalendstance[var_00] = "crouch";
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
move_free_run()
|
||||
{
|
||||
if(self.a.pose != "stand")
|
||||
{
|
||||
self clearanim(%animscript_root,0.2);
|
||||
if(self.a.pose == "prone")
|
||||
{
|
||||
animscripts\utility::exitpronewrapper(1);
|
||||
}
|
||||
|
||||
self.a.pose = "stand";
|
||||
}
|
||||
|
||||
self.a.movement = self.movemode;
|
||||
var_00 = animscripts\utility::lookupanim("free_run_move","sprint");
|
||||
var_01 = self.moveplaybackrate;
|
||||
var_02 = 0.3;
|
||||
if(self.movemode == "walk")
|
||||
{
|
||||
var_01 = var_01 * 0.6;
|
||||
}
|
||||
|
||||
self setflaggedanimknoball("runanim",var_00,%walk_and_run_loops,1,var_02,var_01,1);
|
||||
animscripts\run::setmovenonforwardanims(animscripts\utility::lookupanim("free_run_move","move_b"),animscripts\utility::lookupanim("free_run_move","move_l"),animscripts\utility::lookupanim("free_run_move","move_r"));
|
||||
thread animscripts\run::setcombatstandmoveanimweights("free_run_move");
|
||||
animscripts\notetracks::donotetracksfortime(0.2,"runanim");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
enable_free_running(param_00)
|
||||
{
|
||||
if(!isdefined(param_00) || param_00 == 0)
|
||||
{
|
||||
self.free_running_hidden_weapon = self.weapon;
|
||||
maps\_utility::gun_remove();
|
||||
self.weapon = "none";
|
||||
}
|
||||
else if(isdefined(self.free_running_hidden_weapon))
|
||||
{
|
||||
self.free_running_hidden_weapon = undefined;
|
||||
}
|
||||
|
||||
self.free_running = 1;
|
||||
animscripts\move::register_pluggable_move_loop_override(::move_free_run);
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
disable_free_running()
|
||||
{
|
||||
if(isdefined(self.free_running))
|
||||
{
|
||||
if(isdefined(self.free_running_hidden_weapon))
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.free_running_hidden_weapon,"right");
|
||||
self.free_running_hidden_weapon = undefined;
|
||||
}
|
||||
|
||||
self.free_running = undefined;
|
||||
animscripts\move::clear_pluggable_move_loop_override();
|
||||
}
|
||||
}
|
104
AW/PC/animscripts/grenade_cower.gsc
Normal file
104
AW/PC/animscripts/grenade_cower.gsc
Normal file
@ -0,0 +1,104 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: grenade_cower.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 53 ms
|
||||
* Timestamp: 4/22/2024 2:00:31 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("grenadecower");
|
||||
if(isdefined(self.grenadecowerfunction))
|
||||
{
|
||||
self [[ self.grenadecowerfunction ]]();
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.team))
|
||||
{
|
||||
maps\_dds::dds_notify("react_grenade",self.team == "allies");
|
||||
}
|
||||
|
||||
if(self.a.pose == "prone")
|
||||
{
|
||||
animscripts\stop::main();
|
||||
return;
|
||||
}
|
||||
|
||||
self animmode("zonly_physics");
|
||||
self orientmode("face angle",self.angles[1]);
|
||||
var_00 = 0;
|
||||
if(isdefined(self.grenade))
|
||||
{
|
||||
var_00 = angleclamp180(vectortoangles(self.grenade.origin - self.origin)[1] - self.angles[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = self.angles[1];
|
||||
}
|
||||
|
||||
if(self.a.pose == "stand")
|
||||
{
|
||||
if(isdefined(self.grenade) && trydive(var_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self setflaggedanimknoballrestart("cowerstart",animscripts\utility::lookupanim("grenade","cower_squat"),%body,1,0.2);
|
||||
animscripts\shared::donotetracks("cowerstart");
|
||||
}
|
||||
|
||||
self.a.pose = "crouch";
|
||||
self.a.movement = "stop";
|
||||
self setflaggedanimknoballrestart("cower",animscripts\utility::lookupanim("grenade","cower_squat_idle"),%body,1,0.2);
|
||||
animscripts\shared::donotetracks("cower");
|
||||
self waittill("never");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
end_script()
|
||||
{
|
||||
self.safetochangescript = 1;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
trydive(param_00)
|
||||
{
|
||||
if(randomint(2) == 0)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(self.stairsstate != "none")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_01 = undefined;
|
||||
if(abs(param_00) > 90)
|
||||
{
|
||||
var_01 = animscripts\utility::lookupanim("grenade","cower_dive_back");
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = animscripts\utility::lookupanim("grenade","cower_dive_front");
|
||||
}
|
||||
|
||||
var_02 = getmovedelta(var_01,0,0.5);
|
||||
var_03 = self localtoworldcoords(var_02);
|
||||
if(!self maymovetopoint(var_03))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
self.safetochangescript = 0;
|
||||
self setflaggedanimknoballrestart("cowerstart",var_01,%body,1,0.2);
|
||||
animscripts\shared::donotetracks("cowerstart");
|
||||
self.safetochangescript = 1;
|
||||
return 1;
|
||||
}
|
128
AW/PC/animscripts/grenade_return_throw.gsc
Normal file
128
AW/PC/animscripts/grenade_return_throw.gsc
Normal file
@ -0,0 +1,128 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: grenade_return_throw.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 4
|
||||
* Decompile Time: 65 ms
|
||||
* Timestamp: 4/22/2024 2:00:32 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self orientmode("face default");
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("grenade_return_throw");
|
||||
self animmode("zonly_physics");
|
||||
var_00 = undefined;
|
||||
var_01 = 1000;
|
||||
if(isdefined(self.enemy))
|
||||
{
|
||||
var_01 = distance(self.origin,self.enemy.origin);
|
||||
}
|
||||
|
||||
var_02 = [];
|
||||
if(var_01 < 600 && islowthrowsafe())
|
||||
{
|
||||
if(var_01 < 300)
|
||||
{
|
||||
if(animscripts\utility::usingsmg())
|
||||
{
|
||||
var_02 = animscripts\utility::lookupanim("grenade","return_throw_short_smg");
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = animscripts\utility::lookupanim("grenade","return_throw_short");
|
||||
}
|
||||
}
|
||||
else if(animscripts\utility::usingsmg())
|
||||
{
|
||||
var_02 = animscripts\utility::lookupanim("grenade","return_throw_long_smg");
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = animscripts\utility::lookupanim("grenade","return_throw_long");
|
||||
}
|
||||
}
|
||||
|
||||
if(var_02.size == 0)
|
||||
{
|
||||
if(animscripts\utility::usingsmg())
|
||||
{
|
||||
var_02 = animscripts\utility::lookupanim("grenade","return_throw_default_smg");
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = animscripts\utility::lookupanim("grenade","return_throw_default");
|
||||
}
|
||||
}
|
||||
|
||||
var_00 = var_02[randomint(var_02.size)];
|
||||
self setflaggedanimknoballrestart("throwanim",var_00,%body,1,0.3);
|
||||
var_04 = animhasnotetrack(var_00,"grenade_left") || animhasnotetrack(var_00,"grenade_right");
|
||||
if(var_04)
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.weapon,"left");
|
||||
thread putweaponbackinrighthand();
|
||||
thread notifygrenadepickup("throwanim","grenade_left");
|
||||
thread notifygrenadepickup("throwanim","grenade_right");
|
||||
self waittill("grenade_pickup");
|
||||
self pickupgrenade();
|
||||
animscripts\battlechatter_ai::evaluateattackevent("grenade");
|
||||
if(isdefined(self.team))
|
||||
{
|
||||
maps\_dds::dds_notify_grenade(self.grenadeweapon,self.team == "allies",1);
|
||||
}
|
||||
|
||||
self waittillmatch("grenade_throw","throwanim");
|
||||
}
|
||||
else
|
||||
{
|
||||
self waittillmatch("grenade_throw","throwanim");
|
||||
self pickupgrenade();
|
||||
animscripts\battlechatter_ai::evaluateattackevent("grenade");
|
||||
if(isdefined(self.team))
|
||||
{
|
||||
maps\_dds::dds_notify_grenade(self.grenadeweapon,self.team == "allies",1);
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(self.grenade))
|
||||
{
|
||||
self throwgrenade();
|
||||
}
|
||||
|
||||
wait(1);
|
||||
if(var_04)
|
||||
{
|
||||
self notify("put_weapon_back_in_right_hand");
|
||||
animscripts\shared::placeweaponon(self.weapon,"right");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
islowthrowsafe()
|
||||
{
|
||||
var_00 = (self.origin[0],self.origin[1],self.origin[2] + 20);
|
||||
var_01 = var_00 + anglestoforward(self.angles) * 50;
|
||||
return sighttracepassed(var_00,var_01,0,undefined);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
putweaponbackinrighthand()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("put_weapon_back_in_right_hand");
|
||||
self waittill("killanimscript");
|
||||
animscripts\shared::placeweaponon(self.weapon,"right");
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
notifygrenadepickup(param_00,param_01)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("grenade_pickup");
|
||||
self waittillmatch(param_01,param_00);
|
||||
self notify("grenade_pickup");
|
||||
}
|
768
AW/PC/animscripts/hummer_turret/common.gsc
Normal file
768
AW/PC/animscripts/hummer_turret/common.gsc
Normal file
@ -0,0 +1,768 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: hummer_turret\common.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 37
|
||||
* Decompile Time: 452 ms
|
||||
* Timestamp: 4/22/2024 1:58:52 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
humvee_turret_init(param_00,param_01)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize(param_01);
|
||||
self.no_ai = 1;
|
||||
self.nodrop = 1;
|
||||
self.a.movement = "stop";
|
||||
self.a.special = param_01;
|
||||
self.a.usingturret = param_00;
|
||||
self.ignoreme = 1;
|
||||
if(isdefined(self.minigun_ignoreme))
|
||||
{
|
||||
self.ignoreme = self.minigun_ignoreme;
|
||||
}
|
||||
|
||||
self.iscustomanimating = 0;
|
||||
self setturretanim(self.primaryturretanim);
|
||||
self setanimknobrestart(self.primaryturretanim,1,0.2,1);
|
||||
if(isdefined(self.weapon))
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.weapon,"none");
|
||||
}
|
||||
|
||||
self.getoffvehiclefunc = ::turret_cleanup_on_unload;
|
||||
self notify("guy_man_turret_stop");
|
||||
param_00 notify("stop_burst_fire_unmanned");
|
||||
param_00.turretstate = "start";
|
||||
param_00.aiowner = self;
|
||||
param_00.firetime = 0;
|
||||
param_00 setmode("sentry");
|
||||
param_00 setsentryowner(self);
|
||||
param_00 setdefaultdroppitch(0);
|
||||
param_00 setturretcanaidetach(0);
|
||||
gunner_pain_init();
|
||||
level thread handle_gunner_pain(self,param_00);
|
||||
level thread handle_gunner_death(self,param_00);
|
||||
param_00 thread turret_track_rotatedirection(self);
|
||||
param_00.dofiring = 0;
|
||||
thread firedirector(param_00);
|
||||
wait(0.05);
|
||||
if(isalive(self))
|
||||
{
|
||||
thread gunner_turning_anims(param_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
gunner_pain_init()
|
||||
{
|
||||
self.allowpain = 0;
|
||||
maps\_utility::setflashbangimmunity(1);
|
||||
self.og_health = self.health;
|
||||
self.health = 200;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
gunner_pain_reset()
|
||||
{
|
||||
self.allowpain = 1;
|
||||
maps\_utility::setflashbangimmunity(0);
|
||||
self.health = self.og_health;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
handle_gunner_pain(param_00,param_01)
|
||||
{
|
||||
param_00 endon("death");
|
||||
param_01 endon("death");
|
||||
param_00 endon("dismount");
|
||||
param_00 endon("jumping_out");
|
||||
for(;;)
|
||||
{
|
||||
var_02 = "flashbang";
|
||||
var_03 = param_00 common_scripts\utility::waittill_any_return("damage",var_02);
|
||||
var_04 = common_scripts\utility::random(param_00.turretpainanims);
|
||||
if(var_03 == var_02)
|
||||
{
|
||||
var_04 = param_00.turretflashbangedanim;
|
||||
param_00 animscripts\face::saygenericdialogue("flashbang");
|
||||
}
|
||||
|
||||
param_00 docustomanim(param_01,var_04,0);
|
||||
param_01 notify("pain_done");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
turret_recenter()
|
||||
{
|
||||
turret_aim_straight();
|
||||
self waittill("pain_done");
|
||||
turret_aim_restore();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
handle_gunner_death(param_00,param_01)
|
||||
{
|
||||
param_00 endon("dismount");
|
||||
param_01 endon("turret_cleanup");
|
||||
param_00.deathanim = param_00.turretdeathanim;
|
||||
param_00.nomeleedeathorient = 1;
|
||||
param_00.noragdoll = 1;
|
||||
param_00 waittill("death");
|
||||
level thread turret_cleanup(param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
turret_cleanup_on_unload()
|
||||
{
|
||||
var_00 = self.ridingvehicle.mgturret[0];
|
||||
if(isalive(self))
|
||||
{
|
||||
self.no_ai = undefined;
|
||||
self.nodrop = undefined;
|
||||
self.ignoreme = 0;
|
||||
self.a.special = "none";
|
||||
self.a.usingturret = undefined;
|
||||
self.deathanim = undefined;
|
||||
gunner_pain_reset();
|
||||
self.iscustomanimating = undefined;
|
||||
self.turretspecialanims = undefined;
|
||||
self.turretpainanims = undefined;
|
||||
self.getoffvehiclefunc = undefined;
|
||||
self stopuseturret();
|
||||
if(isdefined(self.weapon))
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.weapon,"right");
|
||||
}
|
||||
}
|
||||
|
||||
level thread turret_cleanup(self,var_00);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
turret_cleanup(param_00,param_01)
|
||||
{
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
param_01 notify("kill_fireController");
|
||||
param_01 notify("turret_cleanup");
|
||||
param_01 setmode("manual");
|
||||
param_01 cleartargetentity();
|
||||
param_01 setdefaultdroppitch(param_01.default_drop_pitch);
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
param_00 clearanim(param_00.additiveusegunroot,0);
|
||||
param_00 clearanim(param_00.additiverotateroot,0);
|
||||
param_00 clearanim(param_00.turretspecialanimsroot,0);
|
||||
}
|
||||
|
||||
param_01.fireinterval = undefined;
|
||||
param_01.closeenoughaimdegrees = undefined;
|
||||
param_01.firecontrollerfunc = undefined;
|
||||
param_01.turretstate = "free";
|
||||
param_01.aiowner = undefined;
|
||||
param_01.firetime = undefined;
|
||||
if(isdefined(param_01.specialcleanupfunc))
|
||||
{
|
||||
level [[ param_01.specialcleanupfunc ]](param_00,param_01);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
turret_track_rotatedirection(param_00)
|
||||
{
|
||||
self endon("turret_cleanup");
|
||||
self endon("death");
|
||||
param_00 endon("death");
|
||||
param_00 endon("detach");
|
||||
var_01 = "tag_aim";
|
||||
var_02 = self gettagangles(var_01);
|
||||
turret_update_rotatedirection("none");
|
||||
for(;;)
|
||||
{
|
||||
var_03 = self gettagangles(var_01);
|
||||
var_04 = anglestoright(var_02);
|
||||
var_05 = anglestoforward(var_03);
|
||||
var_06 = vectordot(var_04,var_05);
|
||||
if(var_06 == 0)
|
||||
{
|
||||
turret_update_rotatedirection("none");
|
||||
}
|
||||
else if(var_06 > 0)
|
||||
{
|
||||
turret_update_rotatedirection("right");
|
||||
}
|
||||
else
|
||||
{
|
||||
turret_update_rotatedirection("left");
|
||||
}
|
||||
|
||||
var_02 = self gettagangles(var_01);
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
turret_update_rotatedirection(param_00)
|
||||
{
|
||||
if(!isdefined(self.rotatedirection) || self.rotatedirection != param_00)
|
||||
{
|
||||
self.rotatedirection = param_00;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
gunner_turning_anims(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
param_00 endon("death");
|
||||
self endon("dismount");
|
||||
param_00 endon("turret_cleanup");
|
||||
var_01 = 0.3;
|
||||
var_02 = 0.3;
|
||||
for(;;)
|
||||
{
|
||||
param_00 waittill("new_fireTarget");
|
||||
wait(0.05);
|
||||
if(!isdefined(param_00.firetarget) || self.iscustomanimating)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03 = undefined;
|
||||
if(!param_00 turret_aiming_near_target(param_00.firetarget,param_00.closeenoughaimdegrees))
|
||||
{
|
||||
if(param_00.rotatedirection == "right")
|
||||
{
|
||||
var_03 = self.additiveturretrotateright;
|
||||
}
|
||||
else if(param_00.rotatedirection == "left")
|
||||
{
|
||||
var_03 = self.additiveturretrotateleft;
|
||||
}
|
||||
|
||||
if(isdefined(var_03))
|
||||
{
|
||||
self setanimlimited(self.additiverotateroot,1,var_01,1);
|
||||
self setanimknoblimited(var_03,1,0,1);
|
||||
while(isdefined(param_00.firetarget) && !param_00 turret_aiming_near_target(param_00.firetarget,param_00.closeenoughaimdegrees))
|
||||
{
|
||||
if(self.iscustomanimating)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
|
||||
self clearanim(self.additiverotateroot,var_02);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
vehicle_passenger_2_turret(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
param_00.usedpositions[self.vehicle_position] = 0;
|
||||
maps\_vehicle_aianim::guy_cleanup_vehiclevars();
|
||||
guy_gets_on_turret(param_00,param_01,param_02,param_03);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
guy_goes_directly_to_turret(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
guy_gets_on_turret(param_00,param_01,param_02,param_03);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
guy_gets_on_turret(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
self endon("death");
|
||||
param_02 endon("death");
|
||||
self stopanimscripted();
|
||||
self notify("newanim");
|
||||
self.drivingvehicle = undefined;
|
||||
self.no_ai = 1;
|
||||
param_03 = %humvee_passenger_2_turret;
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = self.passenger_2_turret_anim;
|
||||
}
|
||||
|
||||
var_04 = maps\_vehicle_aianim::anim_pos(param_00,param_01);
|
||||
var_05 = param_00 gettagorigin(var_04.sittag);
|
||||
var_06 = param_00 gettagangles(var_04.sittag);
|
||||
param_02 setdefaultdroppitch(0);
|
||||
param_02 thread turret_animate(param_02.passenger2turret_anime);
|
||||
self animscripted("passenger2turret",var_05,var_06,param_03);
|
||||
wait(getanimlength(param_03));
|
||||
self stopanimscripted();
|
||||
param_02 turret_aim_restore();
|
||||
self useturret(param_02);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
turret_animate(param_00)
|
||||
{
|
||||
if(isdefined(self.idleanim))
|
||||
{
|
||||
self clearanim(self.idleanim,0);
|
||||
self.idleanim = undefined;
|
||||
}
|
||||
|
||||
self setflaggedanimknobrestart("minigun_turret",param_00,1,0,1);
|
||||
self waittillmatch("end","minigun_turret");
|
||||
self clearanim(param_00,0);
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
turret_animfirstframe(param_00)
|
||||
{
|
||||
self setanimknobrestart(param_00,1,0,0);
|
||||
self.idleanim = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
firedirector(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
param_00 endon("death");
|
||||
self endon("dismount");
|
||||
param_00 endon("kill_fireController");
|
||||
param_00 thread turret_target_updater(self);
|
||||
wait(0.05);
|
||||
self thread [[ param_00.firecontrollerfunc ]](param_00);
|
||||
var_01 = undefined;
|
||||
for(;;)
|
||||
{
|
||||
var_01 = param_00.firetarget;
|
||||
while(param_00 target_confirm(var_01))
|
||||
{
|
||||
if(param_00 turret_aiming_near_target(var_01,param_00.closeenoughaimdegrees))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
|
||||
if(param_00 target_confirm(var_01) && !self.ignoreall)
|
||||
{
|
||||
param_00.dofiring = 1;
|
||||
}
|
||||
|
||||
while(param_00 target_confirm(var_01) && !self.ignoreall && !self.iscustomanimating)
|
||||
{
|
||||
wait(0.05);
|
||||
}
|
||||
|
||||
if(param_00.dofiring || self.ignoreall)
|
||||
{
|
||||
param_00.dofiring = 0;
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
target_confirm(param_00)
|
||||
{
|
||||
if(isdefined(self.dontshoot))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!isdefined(self.firetarget))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!turret_target_validate(param_00))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(param_00 != self.firetarget)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
turret_target_updater(param_00)
|
||||
{
|
||||
param_00 endon("death");
|
||||
self endon("death");
|
||||
param_00 endon("dismount");
|
||||
self endon("kill_fireController");
|
||||
self.firetarget = undefined;
|
||||
var_01 = undefined;
|
||||
var_02 = undefined;
|
||||
for(;;)
|
||||
{
|
||||
var_01 = self getturrettarget(0);
|
||||
var_03 = 0;
|
||||
if(turret_target_validate(var_01) || !isdefined(var_01))
|
||||
{
|
||||
if(!isdefined(var_01) && isdefined(var_02))
|
||||
{
|
||||
var_03 = 1;
|
||||
}
|
||||
else if(isdefined(var_01) && !isdefined(var_02))
|
||||
{
|
||||
var_03 = 1;
|
||||
}
|
||||
else if(isdefined(var_01) && var_01 != var_02)
|
||||
{
|
||||
var_03 = 1;
|
||||
}
|
||||
|
||||
if(var_03)
|
||||
{
|
||||
self.firetarget = var_01;
|
||||
var_02 = var_01;
|
||||
self notify("new_fireTarget");
|
||||
}
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
turret_target_validate(param_00)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(isdefined(param_00.ignoreme) && param_00.ignoreme)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(issubstr(param_00.code_classname,"actor") && !isalive(param_00))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
set_manual_target(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
self endon("turret_cleanup");
|
||||
var_04 = self getmode();
|
||||
if(var_04 != "manual")
|
||||
{
|
||||
self setmode("manual");
|
||||
}
|
||||
|
||||
if(!isdefined(param_01) && !isdefined(param_02))
|
||||
{
|
||||
param_01 = 1.5;
|
||||
param_02 = 3;
|
||||
}
|
||||
|
||||
custom_anim_wait();
|
||||
self settargetentity(param_00);
|
||||
self waittill("turret_on_target");
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
self waittill(param_03);
|
||||
}
|
||||
else if(isdefined(param_02))
|
||||
{
|
||||
wait(randomfloatrange(param_01,param_02));
|
||||
}
|
||||
else
|
||||
{
|
||||
wait(param_01);
|
||||
}
|
||||
|
||||
custom_anim_wait();
|
||||
self cleartargetentity(param_00);
|
||||
if(isdefined(var_04))
|
||||
{
|
||||
self setmode(var_04);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
doshoot(param_00)
|
||||
{
|
||||
self notify("doshoot_starting");
|
||||
self setanimlimited(self.additiveusegunroot,1,0.1);
|
||||
self setanimknoblimited(self.additiveturretfire,1,0.1);
|
||||
param_00.turretstate = "fire";
|
||||
param_00 thread fire(self);
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
fire(param_00)
|
||||
{
|
||||
param_00 endon("death");
|
||||
self endon("death");
|
||||
param_00 endon("dismount");
|
||||
self endon("kill_fireController");
|
||||
self endon("stopfiring");
|
||||
self endon("custom_anim");
|
||||
for(;;)
|
||||
{
|
||||
self shootturret();
|
||||
wait(self.fireinterval);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
doaim(param_00)
|
||||
{
|
||||
param_00.turretstate = "aim";
|
||||
param_00 notify("stopfiring");
|
||||
thread doaim_idle_think(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
doaim_idle_think(param_00)
|
||||
{
|
||||
self notify("doaim_idle_think");
|
||||
self endon("doaim_idle_think");
|
||||
self endon("custom_anim");
|
||||
self endon("doshoot_starting");
|
||||
self endon("death");
|
||||
param_00 endon("death");
|
||||
var_01 = param_00.ownervehicle;
|
||||
var_02 = -1;
|
||||
for(;;)
|
||||
{
|
||||
if(var_01 vehicle_getspeed() < 1 && var_02)
|
||||
{
|
||||
self setanimlimited(self.additiveusegunroot,1,0.1);
|
||||
self setanimknoblimited(self.additiveturretidle,1,0.1);
|
||||
var_02 = 0;
|
||||
}
|
||||
else if(var_01 vehicle_getspeed() >= 1 && !var_02)
|
||||
{
|
||||
self setanimlimited(self.additiveusegunroot,1,0.1);
|
||||
self setanimknoblimited(self.additiveturretdriveidle,1,0.1);
|
||||
var_02 = 1;
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
turret_gunner_custom_anim(param_00,param_01,param_02)
|
||||
{
|
||||
self endon("death");
|
||||
param_00 endon("death");
|
||||
self endon("dismount");
|
||||
self endon("jumping_out");
|
||||
var_03 = self.turretspecialanims[param_01];
|
||||
custom_anim_wait();
|
||||
var_04 = param_00 reload_disable_safe();
|
||||
docustomanim(param_00,var_03,param_02);
|
||||
if(var_04)
|
||||
{
|
||||
param_00 reload_enable();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
reload_disable_safe()
|
||||
{
|
||||
var_00 = 0;
|
||||
if(!isdefined(self.disablereload) || !self.disablereload)
|
||||
{
|
||||
var_00 = 1;
|
||||
self.disablereload = 1;
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
reload_enable()
|
||||
{
|
||||
self.disablereload = 0;
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
doreload(param_00)
|
||||
{
|
||||
if(isdefined(param_00.disablereload))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self endon("death");
|
||||
param_00 endon("death");
|
||||
self endon("dismount");
|
||||
self endon("jumping_out");
|
||||
if(animscripts\battlechatter::bcsenabled())
|
||||
{
|
||||
if(level.chatinitialized)
|
||||
{
|
||||
thread maps\_utility::custom_battlechatter("inform_reloading");
|
||||
}
|
||||
}
|
||||
else if(isdefined(self.team))
|
||||
{
|
||||
maps\_dds::dds_notify("act_reload",self.team == "allies");
|
||||
}
|
||||
|
||||
docustomanim(param_00,self.turretreloadanim,1);
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
docustomanim(param_00,param_01,param_02)
|
||||
{
|
||||
self notify("do_custom_anim");
|
||||
self endon("do_custom_anim");
|
||||
self.iscustomanimating = 1;
|
||||
self.customanim = param_01;
|
||||
param_00.turretstate = "customanim";
|
||||
param_00 turretfiredisable();
|
||||
if(param_00 getbarrelspinrate() > 0)
|
||||
{
|
||||
param_00 stopbarrelspin();
|
||||
}
|
||||
|
||||
param_00 notify("kill_fireController");
|
||||
self notify("custom_anim");
|
||||
if(isdefined(param_02) && param_02)
|
||||
{
|
||||
param_00 turret_aim_straight();
|
||||
}
|
||||
|
||||
self setanimknoblimitedrestart(self.turretspecialanimsroot,1,0.2);
|
||||
self setflaggedanimknobrestart("special_anim",param_01,1,0,1);
|
||||
for(;;)
|
||||
{
|
||||
self waittill("special_anim",var_03);
|
||||
if(var_03 == "end")
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
self clearanim(self.turretspecialanimsroot,0.2);
|
||||
self setanimlimited(self.primaryturretanim,1);
|
||||
self setanimlimited(self.additiveusegunroot,1);
|
||||
if(isdefined(param_02) && param_02)
|
||||
{
|
||||
param_00 turret_aim_restore();
|
||||
}
|
||||
|
||||
self.customanim = undefined;
|
||||
self.iscustomanimating = 0;
|
||||
param_00 turretfireenable();
|
||||
thread firedirector(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
custom_anim_wait()
|
||||
{
|
||||
self endon("death");
|
||||
if(!isdefined(self.iscustomanimating))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
while(self.iscustomanimating)
|
||||
{
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
turret_aim_straight(param_00)
|
||||
{
|
||||
if(self getmode() == "sentry")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
var_01 = self gettagangles("tag_flash");
|
||||
param_00 = (0,var_01[1],var_01[2]);
|
||||
}
|
||||
|
||||
self.oldmode = self getmode();
|
||||
self setmode("manual");
|
||||
var_02 = anglestoforward(param_00);
|
||||
var_03 = var_02 * 96;
|
||||
var_04 = self gettagorigin("tag_aim") + var_03;
|
||||
self.temptarget = spawn("script_origin",var_04);
|
||||
self.temptarget.ignoreme = 1;
|
||||
self.temptarget linkto(self.ownervehicle);
|
||||
self cleartargetentity();
|
||||
self settargetentity(self.temptarget);
|
||||
self waittill("turret_on_target");
|
||||
}
|
||||
|
||||
//Function Number: 33
|
||||
turret_aim_restore()
|
||||
{
|
||||
self cleartargetentity();
|
||||
if(isdefined(self.temptarget))
|
||||
{
|
||||
self.temptarget unlink();
|
||||
self.temptarget delete();
|
||||
}
|
||||
|
||||
if(isdefined(self.oldmode))
|
||||
{
|
||||
self setmode(self.oldmode);
|
||||
self.oldmode = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 34
|
||||
turret_aiming_near_target(param_00,param_01)
|
||||
{
|
||||
var_02 = turret_get_angle_to_target(param_00);
|
||||
if(var_02 <= param_01)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 35
|
||||
turret_get_angle_to_target(param_00)
|
||||
{
|
||||
var_01 = vectortoyaw(param_00.origin - self.origin);
|
||||
var_02 = self gettagangles("tag_flash")[1];
|
||||
var_03 = animscripts\utility::absangleclamp180(var_02 - var_01);
|
||||
return var_03;
|
||||
}
|
||||
|
||||
//Function Number: 36
|
||||
lerp_out_drop_pitch(param_00)
|
||||
{
|
||||
var_01 = maps\_utility::create_blend(::blend_droppitch,20,0);
|
||||
var_01.time = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 37
|
||||
blend_droppitch(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = param_01 * 1 - param_00 + param_02 * param_00;
|
||||
self setdefaultdroppitch(var_03);
|
||||
}
|
62
AW/PC/animscripts/hummer_turret/dshk_stand.gsc
Normal file
62
AW/PC/animscripts/hummer_turret/dshk_stand.gsc
Normal file
@ -0,0 +1,62 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: hummer_turret\dshk_stand.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 54 ms
|
||||
* Timestamp: 4/22/2024 1:58:52 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
var_00 = self getturret();
|
||||
var_01 = get_death_anim();
|
||||
self.desired_anim_pose = "stand";
|
||||
animscripts\utility::updateanimpose();
|
||||
self.primaryturretanim = %gazgunner_aim;
|
||||
self.additiveturretrotateleft = %gaz_turret_aim_6_add;
|
||||
self.additiveturretrotateright = %gaz_turret_aim_4_add;
|
||||
self.additiverotateroot = %additive_gazgunner_aim_leftright;
|
||||
self.additiveturretidle = %gaz_turret_idle;
|
||||
self.additiveturretdriveidle = %gaz_turret_idle;
|
||||
self.additiveturretfire = %gaz_turret_fire;
|
||||
self.additiveusegunroot = %additive_gazgunner_usegun;
|
||||
self.turretdeathanimroot = %gazgunner_death;
|
||||
self.turretdeathanim = var_01;
|
||||
self.turretpainanims[0] = %gaz_turret_paina;
|
||||
self.turretpainanims[1] = %gaz_turret_painb;
|
||||
self.turretflashbangedanim = %gaz_turret_flincha;
|
||||
self.turretreloadanim = %gaz_turret_paina;
|
||||
self.turretspecialanimsroot = %gazgunner;
|
||||
var_02 = [];
|
||||
var_02["humvee_turret_flinchA"] = %gaz_turret_flincha;
|
||||
var_02["humvee_turret_flinchB"] = %gaz_turret_flinchb;
|
||||
self.turretspecialanims = var_02;
|
||||
var_00 setup_turret_anims();
|
||||
thread animscripts\hummer_turret\minigun_code::main(var_00);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
get_death_anim()
|
||||
{
|
||||
var_00 = %gaz_turret_death;
|
||||
if(isdefined(self.ridingvehicle))
|
||||
{
|
||||
if(isdefined(level.dshk_death_anim))
|
||||
{
|
||||
var_00 = self [[ level.dshk_death_anim ]]();
|
||||
}
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
setup_turret_anims()
|
||||
{
|
||||
self useanimtree(#animtree);
|
||||
self.passenger2turret_anime = %humvee_passenger_2_turret_minigun;
|
||||
self.turret2passenger_anime = %humvee_turret_2_passenger_minigun;
|
||||
}
|
149
AW/PC/animscripts/hummer_turret/minigun_code.gsc
Normal file
149
AW/PC/animscripts/hummer_turret/minigun_code.gsc
Normal file
@ -0,0 +1,149 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: hummer_turret\minigun_code.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 4
|
||||
* Decompile Time: 52 ms
|
||||
* Timestamp: 4/22/2024 1:58:52 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main(param_00)
|
||||
{
|
||||
param_00.fireinterval = 0.1;
|
||||
param_00.closeenoughaimdegrees = 45;
|
||||
param_00.firecontrollerfunc = ::firecontroller_minigun;
|
||||
param_00.specialcleanupfunc = ::minigun_cleanup_func;
|
||||
param_00.default_drop_pitch = 20;
|
||||
animscripts\hummer_turret\common::humvee_turret_init(param_00,"minigun");
|
||||
wait(0.05);
|
||||
param_00 notify("turret_ready");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
minigun_cleanup_func(param_00,param_01)
|
||||
{
|
||||
if(param_01 getbarrelspinrate() > 0)
|
||||
{
|
||||
param_01 stopbarrelspin();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
firecontroller_minigun(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("dismount");
|
||||
param_00 endon("kill_fireController");
|
||||
param_00 endon("death");
|
||||
param_00.extrafiretime_min = 600;
|
||||
param_00.extrafiretime_max = 900;
|
||||
var_01 = -1;
|
||||
var_02 = undefined;
|
||||
var_03 = undefined;
|
||||
param_00.extraspintime_min = 250;
|
||||
param_00.extraspintime_max = 2250;
|
||||
var_04 = -1;
|
||||
var_05 = undefined;
|
||||
var_06 = 0;
|
||||
var_07 = 0;
|
||||
param_00.secsoffiringbeforereload = 15;
|
||||
if(isdefined(param_00.secsoffiringbeforereloaddefault))
|
||||
{
|
||||
param_00.secsoffiringbeforereload = param_00.secsoffiringbeforereloaddefault;
|
||||
}
|
||||
|
||||
param_00.firetime = 0;
|
||||
animscripts\hummer_turret\common::doaim(param_00);
|
||||
for(;;)
|
||||
{
|
||||
if(param_00.dofiring && !var_06 && !self.iscustomanimating)
|
||||
{
|
||||
var_06 = 1;
|
||||
if(!var_07)
|
||||
{
|
||||
param_00 minigun_spinup();
|
||||
var_07 = 1;
|
||||
}
|
||||
|
||||
param_00 notify("startfiring");
|
||||
var_01 = gettime();
|
||||
animscripts\hummer_turret\common::doshoot(param_00);
|
||||
wait(0.05);
|
||||
}
|
||||
else if(!param_00.dofiring && var_06)
|
||||
{
|
||||
if(!isdefined(var_02))
|
||||
{
|
||||
var_02 = gettime();
|
||||
}
|
||||
|
||||
if(!isdefined(var_03))
|
||||
{
|
||||
var_03 = randomfloatrange(param_00.extrafiretime_min,param_00.extrafiretime_max);
|
||||
}
|
||||
|
||||
if(gettime() - var_02 >= var_03)
|
||||
{
|
||||
var_06 = 0;
|
||||
animscripts\hummer_turret\common::doaim(param_00);
|
||||
var_04 = gettime();
|
||||
var_02 = undefined;
|
||||
var_03 = undefined;
|
||||
}
|
||||
}
|
||||
else if(!param_00.dofiring && !var_06 && var_07)
|
||||
{
|
||||
if(!isdefined(var_05))
|
||||
{
|
||||
var_05 = randomfloatrange(param_00.extraspintime_min,param_00.extraspintime_max);
|
||||
}
|
||||
|
||||
if(self.iscustomanimating || gettime() - var_04 >= var_05)
|
||||
{
|
||||
param_00 stopbarrelspin();
|
||||
var_07 = 0;
|
||||
var_05 = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if(param_00.turretstate == "fire")
|
||||
{
|
||||
param_00.firetime = param_00.firetime + 0.05;
|
||||
}
|
||||
|
||||
if(param_00.firetime > param_00.secsoffiringbeforereload)
|
||||
{
|
||||
param_00.dofiring = 0;
|
||||
var_06 = 0;
|
||||
animscripts\hummer_turret\common::doaim(param_00);
|
||||
var_04 = -1;
|
||||
var_02 = undefined;
|
||||
var_03 = undefined;
|
||||
thread animscripts\hummer_turret\common::doreload(param_00);
|
||||
param_00.firetime = 0;
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
minigun_spinup()
|
||||
{
|
||||
if(self getbarrelspinrate() == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self startbarrelspin();
|
||||
while(self getbarrelspinrate() < 1)
|
||||
{
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
53
AW/PC/animscripts/hummer_turret/minigun_stand.gsc
Normal file
53
AW/PC/animscripts/hummer_turret/minigun_stand.gsc
Normal file
@ -0,0 +1,53 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: hummer_turret\minigun_stand.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 35 ms
|
||||
* Timestamp: 4/22/2024 1:58:53 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
var_00 = self getturret();
|
||||
self.desired_anim_pose = "stand";
|
||||
animscripts\utility::updateanimpose();
|
||||
self.primaryturretanim = %humveegunner_aim;
|
||||
self.additiveturretrotateleft = %humvee_turret_aim_6_add;
|
||||
self.additiveturretrotateright = %humvee_turret_aim_4_add;
|
||||
self.additiverotateroot = %additive_humveegunner_aim_leftright;
|
||||
self.additiveturretidle = %humvee_turret_idle;
|
||||
self.additiveturretdriveidle = %humvee_turret_driveidle;
|
||||
self.additiveturretfire = %humvee_turret_fire;
|
||||
self.additiveusegunroot = %additive_humveegunner_usegun;
|
||||
self.turretdeathanimroot = %humveegunner_death;
|
||||
self.turretdeathanim = %humvee_turret_death;
|
||||
self.turretpainanims[0] = %humvee_turret_paina;
|
||||
self.turretpainanims[1] = %humvee_turret_painb;
|
||||
self.turretflashbangedanim = %humvee_turret_flincha;
|
||||
self.turretreloadanim = %humvee_turret_rechamber;
|
||||
self.turretspecialanimsroot = %humveegunner;
|
||||
var_01 = [];
|
||||
var_01["humvee_turret_bounce"] = %humvee_turret_bounce;
|
||||
var_01["humvee_turret_idle_lookback"] = %humvee_turret_idle_lookback;
|
||||
var_01["humvee_turret_idle_lookbackB"] = %humvee_turret_idle_lookbackb;
|
||||
var_01["humvee_turret_idle_signal_forward"] = %humvee_turret_idle_signal_forward;
|
||||
var_01["humvee_turret_idle_signal_side"] = %humvee_turret_idle_signal_side;
|
||||
var_01["humvee_turret_radio"] = %humvee_turret_radio;
|
||||
var_01["humvee_turret_flinchA"] = %humvee_turret_flincha;
|
||||
var_01["humvee_turret_flinchB"] = %humvee_turret_flinchb;
|
||||
var_01["humvee_turret_rechamber"] = %humvee_turret_rechamber;
|
||||
self.turretspecialanims = var_01;
|
||||
var_00 setup_turret_anims();
|
||||
thread animscripts\hummer_turret\minigun_code::main(var_00);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
setup_turret_anims()
|
||||
{
|
||||
self useanimtree(#animtree);
|
||||
self.passenger2turret_anime = %humvee_passenger_2_turret_minigun;
|
||||
self.turret2passenger_anime = %humvee_turret_2_passenger_minigun;
|
||||
}
|
653
AW/PC/animscripts/init.gsc
Normal file
653
AW/PC/animscripts/init.gsc
Normal file
@ -0,0 +1,653 @@
|
||||
/*******************************************************************
|
||||
* 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();
|
||||
}
|
||||
}
|
||||
}
|
852
AW/PC/animscripts/init_move_transitions.gsc
Normal file
852
AW/PC/animscripts/init_move_transitions.gsc
Normal file
@ -0,0 +1,852 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: init_move_transitions.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 11
|
||||
* Decompile Time: 186 ms
|
||||
* Timestamp: 4/22/2024 2:00:34 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init_move_transition_arrays()
|
||||
{
|
||||
if(isdefined(level.move_transition_arrays))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
anim.move_transition_arrays = 1;
|
||||
if(!isdefined(level.covertrans))
|
||||
{
|
||||
anim.covertrans = [];
|
||||
}
|
||||
|
||||
if(!isdefined(level.coverexit))
|
||||
{
|
||||
anim.coverexit = [];
|
||||
}
|
||||
|
||||
anim.maxdirections = [];
|
||||
anim.excludedir = [];
|
||||
anim.traverseinfo = [];
|
||||
if(!isdefined(level.covertransdist))
|
||||
{
|
||||
anim.covertransdist = [];
|
||||
}
|
||||
|
||||
if(!isdefined(level.coverexitdist))
|
||||
{
|
||||
anim.coverexitdist = [];
|
||||
}
|
||||
|
||||
anim.coverexitpostdist = [];
|
||||
anim.covertranspredist = [];
|
||||
if(!isdefined(level.covertransangles))
|
||||
{
|
||||
anim.covertransangles = [];
|
||||
}
|
||||
|
||||
if(!isdefined(level.coverexitangles))
|
||||
{
|
||||
anim.coverexitangles = [];
|
||||
}
|
||||
|
||||
anim.arrivalendstance = [];
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
initsoldierentrance()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["right"][1] = %corner_standr_trans_in_1;
|
||||
var_00["right"][2] = %corner_standr_trans_in_2;
|
||||
var_00["right"][3] = %corner_standr_trans_in_3;
|
||||
var_00["right"][4] = %corner_standr_trans_in_4;
|
||||
var_00["right"][6] = %corner_standr_trans_in_6;
|
||||
var_00["right"][8] = %corner_standr_trans_in_8;
|
||||
var_00["right"][9] = %corner_standr_trans_in_9;
|
||||
var_00["right_crouch"][1] = %cornercrr_trans_in_ml;
|
||||
var_00["right_crouch"][2] = %cornercrr_trans_in_m;
|
||||
var_00["right_crouch"][3] = %cornercrr_trans_in_mr;
|
||||
var_00["right_crouch"][4] = %cornercrr_trans_in_l;
|
||||
var_00["right_crouch"][6] = %cornercrr_trans_in_r;
|
||||
var_00["right_crouch"][8] = %cornercrr_trans_in_f;
|
||||
var_00["right_crouch"][9] = %cornercrr_trans_in_mf;
|
||||
var_00["right_cqb"][1] = %corner_standr_trans_cqb_in_1;
|
||||
var_00["right_cqb"][2] = %corner_standr_trans_cqb_in_2;
|
||||
var_00["right_cqb"][3] = %corner_standr_trans_cqb_in_3;
|
||||
var_00["right_cqb"][4] = %corner_standr_trans_cqb_in_4;
|
||||
var_00["right_cqb"][6] = %corner_standr_trans_cqb_in_6;
|
||||
var_00["right_cqb"][8] = %corner_standr_trans_cqb_in_8;
|
||||
var_00["right_cqb"][9] = %corner_standr_trans_cqb_in_9;
|
||||
var_00["right_crouch_cqb"][1] = %cornercrr_cqb_trans_in_1;
|
||||
var_00["right_crouch_cqb"][2] = %cornercrr_cqb_trans_in_2;
|
||||
var_00["right_crouch_cqb"][3] = %cornercrr_cqb_trans_in_3;
|
||||
var_00["right_crouch_cqb"][4] = %cornercrr_cqb_trans_in_4;
|
||||
var_00["right_crouch_cqb"][6] = %cornercrr_cqb_trans_in_6;
|
||||
var_00["right_crouch_cqb"][8] = %cornercrr_cqb_trans_in_8;
|
||||
var_00["right_crouch_cqb"][9] = %cornercrr_cqb_trans_in_9;
|
||||
var_00["left"][1] = %corner_standl_trans_in_1;
|
||||
var_00["left"][2] = %corner_standl_trans_in_2;
|
||||
var_00["left"][3] = %corner_standl_trans_in_3;
|
||||
var_00["left"][4] = %corner_standl_trans_in_4;
|
||||
var_00["left"][6] = %corner_standl_trans_in_6;
|
||||
var_00["left"][7] = %corner_standl_trans_in_7;
|
||||
var_00["left"][8] = %corner_standl_trans_in_8;
|
||||
var_00["left_crouch"][1] = %cornercrl_trans_in_ml;
|
||||
var_00["left_crouch"][2] = %cornercrl_trans_in_m;
|
||||
var_00["left_crouch"][3] = %cornercrl_trans_in_mr;
|
||||
var_00["left_crouch"][4] = %cornercrl_trans_in_l;
|
||||
var_00["left_crouch"][6] = %cornercrl_trans_in_r;
|
||||
var_00["left_crouch"][7] = %cornercrl_trans_in_mf;
|
||||
var_00["left_crouch"][8] = %cornercrl_trans_in_f;
|
||||
var_00["left_cqb"][1] = %corner_standl_trans_cqb_in_1;
|
||||
var_00["left_cqb"][2] = %corner_standl_trans_cqb_in_2;
|
||||
var_00["left_cqb"][3] = %corner_standl_trans_cqb_in_3;
|
||||
var_00["left_cqb"][4] = %corner_standl_trans_cqb_in_4;
|
||||
var_00["left_cqb"][6] = %corner_standl_trans_cqb_in_6;
|
||||
var_00["left_cqb"][7] = %corner_standl_trans_cqb_in_7;
|
||||
var_00["left_cqb"][8] = %corner_standl_trans_cqb_in_8;
|
||||
var_00["left_crouch_cqb"][1] = %cornercrl_cqb_trans_in_1;
|
||||
var_00["left_crouch_cqb"][2] = %cornercrl_cqb_trans_in_2;
|
||||
var_00["left_crouch_cqb"][3] = %cornercrl_cqb_trans_in_3;
|
||||
var_00["left_crouch_cqb"][4] = %cornercrl_cqb_trans_in_4;
|
||||
var_00["left_crouch_cqb"][6] = %cornercrl_cqb_trans_in_6;
|
||||
var_00["left_crouch_cqb"][7] = %cornercrl_cqb_trans_in_7;
|
||||
var_00["left_crouch_cqb"][8] = %cornercrl_cqb_trans_in_8;
|
||||
var_00["crouch"][1] = %covercrouch_run_in_ml;
|
||||
var_00["crouch"][2] = %covercrouch_run_in_m;
|
||||
var_00["crouch"][3] = %covercrouch_run_in_mr;
|
||||
var_00["crouch"][4] = %covercrouch_run_in_l;
|
||||
var_00["crouch"][6] = %covercrouch_run_in_r;
|
||||
var_00["stand"][1] = %coverstand_trans_in_ml;
|
||||
var_00["stand"][2] = %coverstand_trans_in_m;
|
||||
var_00["stand"][3] = %coverstand_trans_in_mr;
|
||||
var_00["stand"][4] = %coverstand_trans_in_l;
|
||||
var_00["stand"][6] = %coverstand_trans_in_r;
|
||||
var_00["stand_saw"][1] = %saw_gunner_runin_ml;
|
||||
var_00["stand_saw"][2] = %saw_gunner_runin_m;
|
||||
var_00["stand_saw"][3] = %saw_gunner_runin_mr;
|
||||
var_00["stand_saw"][4] = %saw_gunner_runin_l;
|
||||
var_00["stand_saw"][6] = %saw_gunner_runin_r;
|
||||
var_00["stand_unstable"] = [];
|
||||
var_00["stand_unstable"][1] = %lag_unstable_moveforward_arrive_1;
|
||||
var_00["stand_unstable"][2] = %lag_unstable_moveforward_arrive_2;
|
||||
var_00["stand_unstable"][3] = %lag_unstable_moveforward_arrive_3;
|
||||
var_00["stand_unstable"][4] = %lag_unstable_moveforward_arrive_4;
|
||||
var_00["stand_unstable"][6] = %lag_unstable_moveforward_arrive_6;
|
||||
var_00["stand_unstable"][7] = %lag_unstable_moveforward_arrive_7;
|
||||
var_00["stand_unstable"][8] = %lag_unstable_moveforward_arrive_8;
|
||||
var_00["stand_unstable"][9] = %lag_unstable_moveforward_arrive_9;
|
||||
var_00["stand_unstable_run"] = [];
|
||||
var_00["stand_unstable_run"][1] = %lag_unstable_run_arrive_1;
|
||||
var_00["stand_unstable_run"][2] = %lag_unstable_run_arrive_2;
|
||||
var_00["stand_unstable_run"][3] = %lag_unstable_run_arrive_3;
|
||||
var_00["stand_unstable_run"][4] = %lag_unstable_run_arrive_4;
|
||||
var_00["stand_unstable_run"][6] = %lag_unstable_run_arrive_6;
|
||||
var_00["stand_unstable_run"][7] = %lag_unstable_run_arrive_7;
|
||||
var_00["stand_unstable_run"][8] = %lag_unstable_run_arrive_8;
|
||||
var_00["stand_unstable_run"][9] = %lag_unstable_run_arrive_9;
|
||||
var_00["crouch_saw"][1] = %saw_gunner_lowwall_runin_ml;
|
||||
var_00["crouch_saw"][2] = %saw_gunner_lowwall_runin_m;
|
||||
var_00["crouch_saw"][3] = %saw_gunner_lowwall_runin_mr;
|
||||
var_00["crouch_saw"][4] = %saw_gunner_lowwall_runin_l;
|
||||
var_00["crouch_saw"][6] = %saw_gunner_lowwall_runin_r;
|
||||
var_00["prone_saw"][1] = %saw_gunner_prone_runin_ml;
|
||||
var_00["prone_saw"][2] = %saw_gunner_prone_runin_m;
|
||||
var_00["prone_saw"][3] = %saw_gunner_prone_runin_mr;
|
||||
var_00["exposed"] = [];
|
||||
var_00["exposed"][1] = %run_2_idle_1;
|
||||
var_00["exposed"][2] = %run_2_stand_f_6;
|
||||
var_00["exposed"][3] = %run_2_idle_3;
|
||||
var_00["exposed"][4] = %run_2_stand_90l;
|
||||
var_00["exposed"][6] = %run_2_stand_90r;
|
||||
var_00["exposed"][7] = %run_2_idle_7;
|
||||
var_00["exposed"][8] = %run_2_stand_180l;
|
||||
var_00["exposed"][9] = %run_2_idle_9;
|
||||
var_00["exposed_smg"] = [];
|
||||
var_00["exposed_smg"][1] = %cqb_stop_1;
|
||||
var_00["exposed_smg"][2] = %smg_run_2_stand_f_6;
|
||||
var_00["exposed_smg"][3] = %cqb_stop_3;
|
||||
var_00["exposed_smg"][4] = %run_2_stand_90l;
|
||||
var_00["exposed_smg"][6] = %run_2_stand_90r;
|
||||
var_00["exposed_smg"][7] = %cqb_stop_7;
|
||||
var_00["exposed_smg"][8] = %run_2_stand_180l;
|
||||
var_00["exposed_smg"][9] = %cqb_stop_9;
|
||||
var_00["exposed_crouch"] = [];
|
||||
var_00["exposed_crouch"][1] = %run_2_crouch_idle_1;
|
||||
var_00["exposed_crouch"][2] = %run_2_crouch_f;
|
||||
var_00["exposed_crouch"][3] = %run_2_crouch_idle_3;
|
||||
var_00["exposed_crouch"][4] = %run_2_crouch_90l;
|
||||
var_00["exposed_crouch"][6] = %run_2_crouch_90r;
|
||||
var_00["exposed_crouch"][7] = %run_2_crouch_idle_7;
|
||||
var_00["exposed_crouch"][8] = %run_2_crouch_180l;
|
||||
var_00["exposed_crouch"][9] = %run_2_crouch_idle_9;
|
||||
var_00["exposed_cqb"] = [];
|
||||
var_00["exposed_cqb"][1] = %cqb_stop_1;
|
||||
var_00["exposed_cqb"][2] = %cqb_stop_2;
|
||||
var_00["exposed_cqb"][3] = %cqb_stop_3;
|
||||
var_00["exposed_cqb"][4] = %cqb_stop_4;
|
||||
var_00["exposed_cqb"][6] = %cqb_stop_6;
|
||||
var_00["exposed_cqb"][7] = %cqb_stop_7;
|
||||
var_00["exposed_cqb"][8] = %cqb_stop_8;
|
||||
var_00["exposed_cqb"][9] = %cqb_stop_9;
|
||||
var_00["exposed_crouch_cqb"] = [];
|
||||
var_00["exposed_crouch_cqb"][1] = %cqb_crouch_stop_1;
|
||||
var_00["exposed_crouch_cqb"][2] = %cqb_crouch_stop_2;
|
||||
var_00["exposed_crouch_cqb"][3] = %cqb_crouch_stop_3;
|
||||
var_00["exposed_crouch_cqb"][4] = %cqb_crouch_stop_4;
|
||||
var_00["exposed_crouch_cqb"][6] = %cqb_crouch_stop_6;
|
||||
var_00["exposed_crouch_cqb"][7] = %cqb_crouch_stop_7;
|
||||
var_00["exposed_crouch_cqb"][8] = %cqb_crouch_stop_8;
|
||||
var_00["exposed_crouch_cqb"][9] = %cqb_crouch_stop_9;
|
||||
var_00["exposed_unstable"] = [];
|
||||
var_00["exposed_unstable"][1] = %lag_unstable_moveforward_arrive_1;
|
||||
var_00["exposed_unstable"][2] = %lag_unstable_moveforward_arrive_2;
|
||||
var_00["exposed_unstable"][3] = %lag_unstable_moveforward_arrive_3;
|
||||
var_00["exposed_unstable"][4] = %lag_unstable_moveforward_arrive_4;
|
||||
var_00["exposed_unstable"][6] = %lag_unstable_moveforward_arrive_6;
|
||||
var_00["exposed_unstable"][7] = %lag_unstable_moveforward_arrive_7;
|
||||
var_00["exposed_unstable"][8] = %lag_unstable_moveforward_arrive_8;
|
||||
var_00["exposed_unstable"][9] = %lag_unstable_moveforward_arrive_9;
|
||||
var_00["exposed_unstable_run"] = [];
|
||||
var_00["exposed_unstable_run"][1] = %lag_unstable_run_arrive_1;
|
||||
var_00["exposed_unstable_run"][2] = %lag_unstable_run_arrive_2;
|
||||
var_00["exposed_unstable_run"][3] = %lag_unstable_run_arrive_3;
|
||||
var_00["exposed_unstable_run"][4] = %lag_unstable_run_arrive_4;
|
||||
var_00["exposed_unstable_run"][6] = %lag_unstable_run_arrive_6;
|
||||
var_00["exposed_unstable_run"][7] = %lag_unstable_run_arrive_7;
|
||||
var_00["exposed_unstable_run"][8] = %lag_unstable_run_arrive_8;
|
||||
var_00["exposed_unstable_run"][9] = %lag_unstable_run_arrive_9;
|
||||
var_00["heat"] = [];
|
||||
var_00["heat"][1] = %heat_approach_1;
|
||||
var_00["heat"][2] = %heat_approach_2;
|
||||
var_00["heat"][3] = %heat_approach_3;
|
||||
var_00["heat"][4] = %heat_approach_4;
|
||||
var_00["heat"][6] = %heat_approach_6;
|
||||
var_00["heat"][8] = %heat_approach_8;
|
||||
var_00["heat_left"] = [];
|
||||
var_00["heat_right"] = [];
|
||||
var_00["wall_over_96"][1] = %traverse90_in_ml;
|
||||
var_00["wall_over_96"][2] = %traverse90_in_m;
|
||||
var_00["wall_over_96"][3] = %traverse90_in_mr;
|
||||
level.traverseinfo["wall_over_96"]["height"] = 96;
|
||||
var_00["wall_over_40"][1] = %traverse_window_m_2_run;
|
||||
var_00["wall_over_40"][2] = %traverse_window_m_2_run;
|
||||
var_00["wall_over_40"][3] = %traverse_window_m_2_run;
|
||||
level.archetypes["soldier"]["cover_trans"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
initsoldierexit()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["right"][1] = %corner_standr_trans_out_1;
|
||||
var_00["right"][2] = %corner_standr_trans_out_2;
|
||||
var_00["right"][3] = %corner_standr_trans_out_3;
|
||||
var_00["right"][4] = %corner_standr_trans_out_4;
|
||||
var_00["right"][6] = %corner_standr_trans_out_6;
|
||||
var_00["right"][8] = %corner_standr_trans_out_8;
|
||||
var_00["right"][9] = %corner_standr_trans_out_9;
|
||||
var_00["right_crouch"][1] = %cornercrr_trans_out_ml;
|
||||
var_00["right_crouch"][2] = %cornercrr_trans_out_m;
|
||||
var_00["right_crouch"][3] = %cornercrr_trans_out_mr;
|
||||
var_00["right_crouch"][4] = %cornercrr_trans_out_l;
|
||||
var_00["right_crouch"][6] = %cornercrr_trans_out_r;
|
||||
var_00["right_crouch"][8] = %cornercrr_trans_out_f;
|
||||
var_00["right_crouch"][9] = %cornercrr_trans_out_mf;
|
||||
var_00["right_cqb"][1] = %corner_standr_trans_cqb_out_1;
|
||||
var_00["right_cqb"][2] = %corner_standr_trans_cqb_out_2;
|
||||
var_00["right_cqb"][3] = %corner_standr_trans_cqb_out_3;
|
||||
var_00["right_cqb"][4] = %corner_standr_trans_cqb_out_4;
|
||||
var_00["right_cqb"][6] = %corner_standr_trans_cqb_out_6;
|
||||
var_00["right_cqb"][8] = %corner_standr_trans_cqb_out_8;
|
||||
var_00["right_cqb"][9] = %corner_standr_trans_cqb_out_9;
|
||||
var_00["right_crouch_cqb"][1] = %cornercrr_cqb_trans_out_1;
|
||||
var_00["right_crouch_cqb"][2] = %cornercrr_cqb_trans_out_2;
|
||||
var_00["right_crouch_cqb"][3] = %cornercrr_cqb_trans_out_3;
|
||||
var_00["right_crouch_cqb"][4] = %cornercrr_cqb_trans_out_4;
|
||||
var_00["right_crouch_cqb"][6] = %cornercrr_cqb_trans_out_6;
|
||||
var_00["right_crouch_cqb"][8] = %cornercrr_cqb_trans_out_8;
|
||||
var_00["right_crouch_cqb"][9] = %cornercrr_cqb_trans_out_9;
|
||||
var_00["left"][1] = %corner_standl_trans_out_1;
|
||||
var_00["left"][2] = %corner_standl_trans_out_2;
|
||||
var_00["left"][3] = %corner_standl_trans_out_3;
|
||||
var_00["left"][4] = %corner_standl_trans_out_4;
|
||||
var_00["left"][6] = %corner_standl_trans_out_6;
|
||||
var_00["left"][7] = %corner_standl_trans_out_7;
|
||||
var_00["left"][8] = %corner_standl_trans_out_8;
|
||||
var_00["left_crouch"][1] = %cornercrl_trans_out_ml;
|
||||
var_00["left_crouch"][2] = %cornercrl_trans_out_m;
|
||||
var_00["left_crouch"][3] = %cornercrl_trans_out_mr;
|
||||
var_00["left_crouch"][4] = %cornercrl_trans_out_l;
|
||||
var_00["left_crouch"][6] = %cornercrl_trans_out_r;
|
||||
var_00["left_crouch"][7] = %cornercrl_trans_out_mf;
|
||||
var_00["left_crouch"][8] = %cornercrl_trans_out_f;
|
||||
var_00["left_cqb"][1] = %corner_standl_trans_cqb_out_1;
|
||||
var_00["left_cqb"][2] = %corner_standl_trans_cqb_out_2;
|
||||
var_00["left_cqb"][3] = %corner_standl_trans_cqb_out_3;
|
||||
var_00["left_cqb"][4] = %corner_standl_trans_cqb_out_4;
|
||||
var_00["left_cqb"][6] = %corner_standl_trans_cqb_out_6;
|
||||
var_00["left_cqb"][7] = %corner_standl_trans_cqb_out_7;
|
||||
var_00["left_cqb"][8] = %corner_standl_trans_cqb_out_8;
|
||||
var_00["left_crouch_cqb"][1] = %cornercrl_cqb_trans_out_1;
|
||||
var_00["left_crouch_cqb"][2] = %cornercrl_cqb_trans_out_2;
|
||||
var_00["left_crouch_cqb"][3] = %cornercrl_cqb_trans_out_3;
|
||||
var_00["left_crouch_cqb"][4] = %cornercrl_cqb_trans_out_4;
|
||||
var_00["left_crouch_cqb"][6] = %cornercrl_cqb_trans_out_6;
|
||||
var_00["left_crouch_cqb"][7] = %cornercrl_cqb_trans_out_7;
|
||||
var_00["left_crouch_cqb"][8] = %cornercrl_cqb_trans_out_8;
|
||||
var_00["crouch"][1] = %covercrouch_run_out_ml;
|
||||
var_00["crouch"][2] = %covercrouch_run_out_m;
|
||||
var_00["crouch"][3] = %covercrouch_run_out_mr;
|
||||
var_00["crouch"][4] = %covercrouch_run_out_l;
|
||||
var_00["crouch"][6] = %covercrouch_run_out_r;
|
||||
var_00["stand"][1] = %coverstand_trans_out_ml;
|
||||
var_00["stand"][2] = %coverstand_trans_out_m;
|
||||
var_00["stand"][3] = %coverstand_trans_out_mr;
|
||||
var_00["stand"][4] = %coverstand_trans_out_l;
|
||||
var_00["stand"][6] = %coverstand_trans_out_r;
|
||||
var_00["stand_saw"][1] = %saw_gunner_runout_ml;
|
||||
var_00["stand_saw"][2] = %saw_gunner_runout_m;
|
||||
var_00["stand_saw"][3] = %saw_gunner_runout_mr;
|
||||
var_00["stand_saw"][4] = %saw_gunner_runout_l;
|
||||
var_00["stand_saw"][6] = %saw_gunner_runout_r;
|
||||
var_00["stand_unstable"] = [];
|
||||
var_00["stand_unstable"][1] = %lag_unstable_moveforward_exit_1;
|
||||
var_00["stand_unstable"][2] = %lag_unstable_moveforward_exit_2;
|
||||
var_00["stand_unstable"][3] = %lag_unstable_moveforward_exit_3;
|
||||
var_00["stand_unstable"][4] = %lag_unstable_moveforward_exit_4;
|
||||
var_00["stand_unstable"][6] = %lag_unstable_moveforward_exit_6;
|
||||
var_00["stand_unstable"][7] = %lag_unstable_moveforward_exit_7;
|
||||
var_00["stand_unstable"][8] = %lag_unstable_moveforward_exit_8;
|
||||
var_00["stand_unstable"][9] = %lag_unstable_moveforward_exit_9;
|
||||
var_00["stand_unstable_run"] = [];
|
||||
var_00["stand_unstable_run"][1] = %lag_unstable_run_exit_1;
|
||||
var_00["stand_unstable_run"][2] = %lag_unstable_run_exit_2;
|
||||
var_00["stand_unstable_run"][3] = %lag_unstable_run_exit_3;
|
||||
var_00["stand_unstable_run"][4] = %lag_unstable_run_exit_4;
|
||||
var_00["stand_unstable_run"][6] = %lag_unstable_run_exit_6;
|
||||
var_00["stand_unstable_run"][7] = %lag_unstable_run_exit_7;
|
||||
var_00["stand_unstable_run"][8] = %lag_unstable_run_exit_8;
|
||||
var_00["stand_unstable_run"][9] = %lag_unstable_run_exit_9;
|
||||
var_00["prone_saw"][2] = %saw_gunner_prone_runout_m;
|
||||
var_00["prone_saw"][4] = %saw_gunner_prone_runout_l;
|
||||
var_00["prone_saw"][6] = %saw_gunner_prone_runout_r;
|
||||
var_00["prone_saw"][8] = %saw_gunner_prone_runout_f;
|
||||
var_00["crouch_saw"][1] = %saw_gunner_lowwall_runout_ml;
|
||||
var_00["crouch_saw"][2] = %saw_gunner_lowwall_runout_m;
|
||||
var_00["crouch_saw"][3] = %saw_gunner_lowwall_runout_mr;
|
||||
var_00["crouch_saw"][4] = %saw_gunner_lowwall_runout_l;
|
||||
var_00["crouch_saw"][6] = %saw_gunner_lowwall_runout_r;
|
||||
var_00["exposed"] = [];
|
||||
var_00["exposed"][1] = %cqb_start_1;
|
||||
var_00["exposed"][2] = %stand_2_run_180l;
|
||||
var_00["exposed"][3] = %cqb_start_3;
|
||||
var_00["exposed"][4] = %stand_2_run_l;
|
||||
var_00["exposed"][6] = %stand_2_run_r;
|
||||
var_00["exposed"][7] = %cqb_start_7;
|
||||
var_00["exposed"][8] = %surprise_start_v1;
|
||||
var_00["exposed"][9] = %cqb_start_9;
|
||||
var_00["exposed_smg"] = [];
|
||||
var_00["exposed_smg"][1] = %cqb_start_1;
|
||||
var_00["exposed_smg"][2] = %smg_stand_2_run_180l;
|
||||
var_00["exposed_smg"][3] = %cqb_start_3;
|
||||
var_00["exposed_smg"][4] = %smg_stand_2_run_l;
|
||||
var_00["exposed_smg"][6] = %smg_stand_2_run_r;
|
||||
var_00["exposed_smg"][7] = %cqb_start_7;
|
||||
var_00["exposed_smg"][8] = %smg_stand_2_run_f_2;
|
||||
var_00["exposed_smg"][9] = %cqb_start_9;
|
||||
var_00["exposed_crouch"] = [];
|
||||
var_00["exposed_crouch"][1] = %cqb_crouch_start_1;
|
||||
var_00["exposed_crouch"][2] = %crouch_2run_180;
|
||||
var_00["exposed_crouch"][3] = %cqb_crouch_start_3;
|
||||
var_00["exposed_crouch"][4] = %crouch_2run_l;
|
||||
var_00["exposed_crouch"][6] = %crouch_2run_r;
|
||||
var_00["exposed_crouch"][7] = %cqb_crouch_start_7;
|
||||
var_00["exposed_crouch"][8] = %crouch_2run_f;
|
||||
var_00["exposed_crouch"][9] = %cqb_crouch_start_9;
|
||||
var_00["exposed_cqb"] = [];
|
||||
var_00["exposed_cqb"][1] = %cqb_start_1;
|
||||
var_00["exposed_cqb"][2] = %cqb_start_2;
|
||||
var_00["exposed_cqb"][3] = %cqb_start_3;
|
||||
var_00["exposed_cqb"][4] = %cqb_start_4;
|
||||
var_00["exposed_cqb"][6] = %cqb_start_6;
|
||||
var_00["exposed_cqb"][7] = %cqb_start_7;
|
||||
var_00["exposed_cqb"][8] = %cqb_start_8;
|
||||
var_00["exposed_cqb"][9] = %cqb_start_9;
|
||||
var_00["exposed_crouch_cqb"] = [];
|
||||
var_00["exposed_crouch_cqb"][1] = %cqb_crouch_start_1;
|
||||
var_00["exposed_crouch_cqb"][2] = %cqb_crouch_start_2;
|
||||
var_00["exposed_crouch_cqb"][3] = %cqb_crouch_start_3;
|
||||
var_00["exposed_crouch_cqb"][4] = %cqb_crouch_start_4;
|
||||
var_00["exposed_crouch_cqb"][6] = %cqb_crouch_start_6;
|
||||
var_00["exposed_crouch_cqb"][7] = %cqb_crouch_start_7;
|
||||
var_00["exposed_crouch_cqb"][8] = %cqb_crouch_start_8;
|
||||
var_00["exposed_crouch_cqb"][9] = %cqb_crouch_start_9;
|
||||
var_00["exposed_unstable"] = [];
|
||||
var_00["exposed_unstable"][1] = %lag_unstable_moveforward_exit_1;
|
||||
var_00["exposed_unstable"][2] = %lag_unstable_moveforward_exit_2;
|
||||
var_00["exposed_unstable"][3] = %lag_unstable_moveforward_exit_3;
|
||||
var_00["exposed_unstable"][4] = %lag_unstable_moveforward_exit_4;
|
||||
var_00["exposed_unstable"][6] = %lag_unstable_moveforward_exit_6;
|
||||
var_00["exposed_unstable"][7] = %lag_unstable_moveforward_exit_7;
|
||||
var_00["exposed_unstable"][8] = %lag_unstable_moveforward_exit_8;
|
||||
var_00["exposed_unstable"][9] = %lag_unstable_moveforward_exit_9;
|
||||
var_00["exposed_unstable_run"] = [];
|
||||
var_00["exposed_unstable_run"][1] = %lag_unstable_run_exit_1;
|
||||
var_00["exposed_unstable_run"][2] = %lag_unstable_run_exit_2;
|
||||
var_00["exposed_unstable_run"][3] = %lag_unstable_run_exit_3;
|
||||
var_00["exposed_unstable_run"][4] = %lag_unstable_run_exit_4;
|
||||
var_00["exposed_unstable_run"][6] = %lag_unstable_run_exit_6;
|
||||
var_00["exposed_unstable_run"][7] = %lag_unstable_run_exit_7;
|
||||
var_00["exposed_unstable_run"][8] = %lag_unstable_run_exit_8;
|
||||
var_00["exposed_unstable_run"][9] = %lag_unstable_run_exit_9;
|
||||
var_00["heat"] = [];
|
||||
var_00["heat"][1] = %heat_exit_1;
|
||||
var_00["heat"][2] = %heat_exit_2;
|
||||
var_00["heat"][3] = %heat_exit_3;
|
||||
var_00["heat"][4] = %heat_exit_4;
|
||||
var_00["heat"][6] = %heat_exit_6;
|
||||
var_00["heat"][7] = %heat_exit_7;
|
||||
var_00["heat"][8] = %heat_exit_8;
|
||||
var_00["heat"][9] = %heat_exit_9;
|
||||
var_00["heat_left"] = [];
|
||||
var_00["heat_left"][1] = %heat_exit_1;
|
||||
var_00["heat_left"][2] = %heat_exit_2;
|
||||
var_00["heat_left"][3] = %heat_exit_3;
|
||||
var_00["heat_left"][4] = %heat_exit_4;
|
||||
var_00["heat_left"][6] = %heat_exit_6;
|
||||
var_00["heat_left"][7] = %heat_exit_8l;
|
||||
var_00["heat_left"][8] = %heat_exit_8l;
|
||||
var_00["heat_left"][9] = %heat_exit_8r;
|
||||
var_00["heat_right"] = [];
|
||||
var_00["heat_right"][1] = %heat_exit_1;
|
||||
var_00["heat_right"][2] = %heat_exit_2;
|
||||
var_00["heat_right"][3] = %heat_exit_3;
|
||||
var_00["heat_right"][4] = %heat_exit_4;
|
||||
var_00["heat_right"][6] = %heat_exit_6;
|
||||
var_00["heat_right"][7] = %heat_exit_8l;
|
||||
var_00["heat_right"][8] = %heat_exit_8r;
|
||||
var_00["heat_right"][9] = %heat_exit_8r;
|
||||
level.archetypes["soldier"]["cover_exit"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
initsoldiersplittimes()
|
||||
{
|
||||
level.archetypes["soldier"]["cover_trans_split"]["left"][7] = 0.369369;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["left_crouch"][7] = 0.321321;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["left_crouch_cqb"][7] = 0.2002;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["left_cqb"][7] = 0.275275;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["left"][7] = 0.550551;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["left_crouch"][7] = 0.558559;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["left_cqb"][7] = 0.358358;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["left_crouch_cqb"][7] = 0.359359;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["heat_left"][7] = 0.42;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["left"][8] = 0.525526;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["left_crouch"][8] = 0.448448;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["left_crouch_cqb"][8] = 0.251251;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["left_cqb"][8] = 0.335335;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["left"][8] = 0.616617;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["left_crouch"][8] = 0.453453;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["left_crouch_cqb"][8] = 0.572573;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["left_cqb"][8] = 0.336336;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["heat_left"][8] = 0.42;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["right"][8] = 0.472472;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["right_crouch"][8] = 0.248248;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["right_cqb"][8] = 0.345345;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["right_crouch_cqb"][8] = 0.428428;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["right"][8] = 0.431431;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["right_crouch"][8] = 0.545546;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["right_cqb"][8] = 0.335335;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["right_crouch_cqb"][8] = 0.4004;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["heat_right"][8] = 0.4;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["right"][9] = 0.551552;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["right_crouch"][9] = 0.2002;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["right_cqb"][9] = 0.3003;
|
||||
level.archetypes["soldier"]["cover_trans_split"]["right_crouch_cqb"][9] = 0.224224;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["right"][9] = 0.485485;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["right_crouch"][9] = 0.493493;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["right_cqb"][9] = 0.438438;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["right_crouch_cqb"][9] = 0.792793;
|
||||
level.archetypes["soldier"]["cover_exit_split"]["heat_right"][9] = 0.4;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
inits1soldiersplittimes()
|
||||
{
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["left"][7] = 0.465465;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["left_crouch"][7] = 0.284284;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["left_crouch_cqb"][7] = 0.246246;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["left_cqb"][7] = 0.454454;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["left"][7] = 0.555556;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["left_crouch"][7] = 0.644645;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["left_crouch_cqb"][7] = 0.678679;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["left_cqb"][7] = 0.598599;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["left"][8] = 0.4004;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["left_crouch"][8] = 0.404404;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["left_crouch_cqb"][8] = 0.33033;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["left_cqb"][8] = 0.456456;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["left"][8] = 0.54955;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["left_crouch"][8] = 0.537538;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["left_crouch_cqb"][8] = 0.544545;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["left_cqb"][8] = 0.67968;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["right"][8] = 0.446446;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["right_crouch"][8] = 0.23023;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["right_cqb"][8] = 0.269269;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["right_crouch_cqb"][8] = 0.438438;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["right"][8] = 0.431431;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["right_crouch"][8] = 0.66967;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["right_cqb"][8] = 0.602603;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["right_crouch_cqb"][8] = 0.621622;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["right"][9] = 0.418418;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["right_crouch"][9] = 0.21021;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["right_cqb"][9] = 0.317317;
|
||||
level.archetypes["s1_soldier"]["cover_trans_split"]["right_crouch_cqb"][9] = 0.396396;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["right"][9] = 0.461461;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["right_crouch"][9] = 0.638639;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["right_cqb"][9] = 0.50951;
|
||||
level.archetypes["s1_soldier"]["cover_exit_split"]["right_crouch_cqb"][9] = 0.550551;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
inittransdistandanglesforarchetype(param_00)
|
||||
{
|
||||
if(!isdefined(level.archetypes[param_00]))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = [];
|
||||
var_01[0] = "left";
|
||||
var_01[1] = "right";
|
||||
var_01[2] = "left_crouch";
|
||||
var_01[3] = "right_crouch";
|
||||
var_01[4] = "crouch";
|
||||
var_01[5] = "stand";
|
||||
var_01[6] = "exposed";
|
||||
var_01[7] = "exposed_crouch";
|
||||
var_01[8] = "stand_saw";
|
||||
var_01[9] = "prone_saw";
|
||||
var_01[10] = "crouch_saw";
|
||||
var_01[11] = "wall_over_40";
|
||||
var_01[12] = "right_cqb";
|
||||
var_01[13] = "right_crouch_cqb";
|
||||
var_01[14] = "left_cqb";
|
||||
var_01[15] = "left_crouch_cqb";
|
||||
var_01[16] = "exposed_cqb";
|
||||
var_01[17] = "exposed_crouch_cqb";
|
||||
var_01[18] = "heat";
|
||||
var_01[19] = "heat_left";
|
||||
var_01[20] = "heat_right";
|
||||
var_01[21] = "exposed_ready";
|
||||
var_01[22] = "exposed_ready_cqb";
|
||||
var_01[23] = "exposed_smg";
|
||||
var_01[24] = "exposed_unstable";
|
||||
var_01[25] = "stand_unstable";
|
||||
var_01[26] = "exposed_unstable_run";
|
||||
var_01[27] = "stand_unstable_run";
|
||||
if(!isdefined(level.archetypes[param_00]["cover_trans"]))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for(var_02 = 1;var_02 <= 6;var_02++)
|
||||
{
|
||||
if(var_02 == 5)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
for(var_03 = 0;var_03 < var_01.size;var_03++)
|
||||
{
|
||||
var_04 = var_01[var_03];
|
||||
if(isdefined(level.archetypes[param_00]["cover_trans"][var_04]) && isdefined(level.archetypes[param_00]["cover_trans"][var_04][var_02]))
|
||||
{
|
||||
level.archetypes[param_00]["cover_trans_dist"][var_04][var_02] = getmovedelta(level.archetypes[param_00]["cover_trans"][var_04][var_02],0,1);
|
||||
level.archetypes[param_00]["cover_trans_angles"][var_04][var_02] = getangledelta(level.archetypes[param_00]["cover_trans"][var_04][var_02],0,1);
|
||||
}
|
||||
|
||||
if(isdefined(level.archetypes[param_00]["cover_exit"][var_04]) && isdefined(level.archetypes[param_00]["cover_exit"][var_04][var_02]))
|
||||
{
|
||||
if(animhasnotetrack(level.archetypes[param_00]["cover_exit"][var_04][var_02],"code_move"))
|
||||
{
|
||||
var_05 = getnotetracktimes(level.archetypes[param_00]["cover_exit"][var_04][var_02],"code_move")[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_05 = 1;
|
||||
}
|
||||
|
||||
level.archetypes[param_00]["cover_exit_dist"][var_04][var_02] = getmovedelta(level.archetypes[param_00]["cover_exit"][var_04][var_02],0,var_05);
|
||||
level.archetypes[param_00]["cover_exit_angles"][var_04][var_02] = getangledelta(level.archetypes[param_00]["cover_exit"][var_04][var_02],0,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(level.archetypes[param_00]["CoverTransLongestDist"]))
|
||||
{
|
||||
level.archetypes[param_00]["CoverTransLongestDist"] = [];
|
||||
}
|
||||
|
||||
for(var_03 = 0;var_03 < var_01.size;var_03++)
|
||||
{
|
||||
var_04 = var_01[var_03];
|
||||
level.archetypes[param_00]["CoverTransLongestDist"][var_04] = 0;
|
||||
for(var_02 = 1;var_02 <= 6;var_02++)
|
||||
{
|
||||
if(var_02 == 5 || !isdefined(level.archetypes[param_00]["cover_trans"][var_04]) || !isdefined(level.archetypes[param_00]["cover_trans"][var_04][var_02]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_06 = lengthsquared(level.archetypes[param_00]["cover_trans_dist"][var_04][var_02]);
|
||||
if(level.archetypes[param_00]["CoverTransLongestDist"][var_04] < var_06)
|
||||
{
|
||||
level.archetypes[param_00]["CoverTransLongestDist"][var_04] = var_06;
|
||||
}
|
||||
}
|
||||
|
||||
level.archetypes[param_00]["CoverTransLongestDist"][var_04] = sqrt(level.archetypes[param_00]["CoverTransLongestDist"][var_04]);
|
||||
}
|
||||
|
||||
level.exposedtransition["exposed"] = 1;
|
||||
level.exposedtransition["exposed_crouch"] = 1;
|
||||
level.exposedtransition["exposed_cqb"] = 1;
|
||||
level.exposedtransition["exposed_crouch_cqb"] = 1;
|
||||
level.exposedtransition["exposed_ready_cqb"] = 1;
|
||||
level.exposedtransition["exposed_unstable"] = 1;
|
||||
level.exposedtransition["exposed_unstable_run"] = 1;
|
||||
level.exposedtransition["exposed_ready"] = 1;
|
||||
level.exposedtransition["exposed_smg"] = 1;
|
||||
level.exposedtransition["heat"] = 1;
|
||||
if(!isdefined(level.archetypes[param_00]["longestExposedApproachDist"]))
|
||||
{
|
||||
level.archetypes[param_00]["longestExposedApproachDist"] = 0;
|
||||
}
|
||||
|
||||
foreach(var_04, var_08 in level.exposedtransition)
|
||||
{
|
||||
for(var_02 = 7;var_02 <= 9;var_02++)
|
||||
{
|
||||
if(isdefined(level.archetypes[param_00]["cover_trans"][var_04]) && isdefined(level.archetypes[param_00]["cover_trans"][var_04][var_02]))
|
||||
{
|
||||
level.archetypes[param_00]["cover_trans_dist"][var_04][var_02] = getmovedelta(level.archetypes[param_00]["cover_trans"][var_04][var_02],0,1);
|
||||
level.archetypes[param_00]["cover_trans_angles"][var_04][var_02] = getangledelta(level.archetypes[param_00]["cover_trans"][var_04][var_02],0,1);
|
||||
}
|
||||
|
||||
if(isdefined(level.archetypes[param_00]["cover_exit"][var_04]) && isdefined(level.archetypes[param_00]["cover_exit"][var_04][var_02]))
|
||||
{
|
||||
var_09 = animhasnotetrack(level.archetypes[param_00]["cover_exit"][var_04][var_02],"code_move");
|
||||
var_05 = getnotetracktimes(level.archetypes[param_00]["cover_exit"][var_04][var_02],"code_move")[0];
|
||||
level.archetypes[param_00]["cover_exit_dist"][var_04][var_02] = getmovedelta(level.archetypes[param_00]["cover_exit"][var_04][var_02],0,var_05);
|
||||
level.archetypes[param_00]["cover_exit_angles"][var_04][var_02] = getangledelta(level.archetypes[param_00]["cover_exit"][var_04][var_02],0,1);
|
||||
}
|
||||
}
|
||||
|
||||
for(var_02 = 1;var_02 <= 9;var_02++)
|
||||
{
|
||||
if(!isdefined(level.archetypes[param_00]["cover_trans"][var_04]) || !isdefined(level.archetypes[param_00]["cover_trans"][var_04][var_02]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_0A = length(level.archetypes[param_00]["cover_trans_dist"][var_04][var_02]);
|
||||
if(var_0A > level.archetypes[param_00]["longestExposedApproachDist"])
|
||||
{
|
||||
level.archetypes[param_00]["longestExposedApproachDist"] = var_0A;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
initmovestartstoptransitions()
|
||||
{
|
||||
init_move_transition_arrays();
|
||||
anim.approach_types = [];
|
||||
level.approach_types["Cover Left"] = [];
|
||||
level.approach_types["Cover Left"]["stand"] = "left";
|
||||
level.approach_types["Cover Left"]["crouch"] = "left_crouch";
|
||||
level.maxdirections["Cover Left"] = 9;
|
||||
level.excludedir["Cover Left"] = 9;
|
||||
level.approach_types["Cover Right"] = [];
|
||||
level.approach_types["Cover Right"]["stand"] = "right";
|
||||
level.approach_types["Cover Right"]["crouch"] = "right_crouch";
|
||||
level.maxdirections["Cover Right"] = 9;
|
||||
level.excludedir["Cover Right"] = 7;
|
||||
level.approach_types["Cover Crouch"] = [];
|
||||
level.approach_types["Cover Crouch"]["stand"] = "crouch";
|
||||
level.approach_types["Cover Crouch"]["crouch"] = "crouch";
|
||||
level.approach_types["Conceal Crouch"] = level.approach_types["Cover Crouch"];
|
||||
level.approach_types["Cover Crouch Window"] = level.approach_types["Cover Crouch"];
|
||||
level.maxdirections["Cover Crouch"] = 6;
|
||||
level.excludedir["Cover Crouch"] = -1;
|
||||
level.maxdirections["Conceal Crouch"] = 6;
|
||||
level.excludedir["Conceal Crouch"] = -1;
|
||||
level.approach_types["Cover Stand"] = [];
|
||||
level.approach_types["Cover Stand"]["stand"] = "stand";
|
||||
level.approach_types["Cover Stand"]["crouch"] = "stand";
|
||||
level.approach_types["Conceal Stand"] = level.approach_types["Cover Stand"];
|
||||
level.maxdirections["Cover Stand"] = 6;
|
||||
level.excludedir["Cover Stand"] = -1;
|
||||
level.maxdirections["Conceal Stand"] = 6;
|
||||
level.excludedir["Conceal Stand"] = -1;
|
||||
level.approach_types["Cover Prone"] = [];
|
||||
level.approach_types["Cover Prone"]["stand"] = "exposed";
|
||||
level.approach_types["Cover Prone"]["crouch"] = "exposed";
|
||||
level.approach_types["Conceal Prone"] = level.approach_types["Cover Prone"];
|
||||
level.excludedir["Conceal Prone"] = -1;
|
||||
level.approach_types["Path"] = [];
|
||||
level.approach_types["Path"]["stand"] = "exposed";
|
||||
level.approach_types["Path"]["crouch"] = "exposed_crouch";
|
||||
level.approach_types["Guard"] = level.approach_types["Path"];
|
||||
level.approach_types["Ambush"] = level.approach_types["Path"];
|
||||
level.approach_types["Scripted"] = level.approach_types["Path"];
|
||||
level.approach_types["Exposed"] = level.approach_types["Path"];
|
||||
level.iscombatpathnode["Guard"] = 1;
|
||||
level.iscombatpathnode["Ambush"] = 1;
|
||||
level.iscombatpathnode["Exposed"] = 1;
|
||||
level.iscombatscriptnode["Guard"] = 1;
|
||||
level.iscombatscriptnode["Exposed"] = 1;
|
||||
initsoldierentrance();
|
||||
initsoldierexit();
|
||||
if(maps\_utility::s1_motionset_avaliable())
|
||||
{
|
||||
animscripts\s1_common_anims::initsoliders1entrance();
|
||||
animscripts\s1_common_anims::initsoliders1exit();
|
||||
}
|
||||
|
||||
inittransdistandanglesforarchetype("soldier");
|
||||
if(maps\_utility::s1_motionset_avaliable())
|
||||
{
|
||||
inittransdistandanglesforarchetype("s1_soldier");
|
||||
}
|
||||
|
||||
initsoldiersplittimes();
|
||||
if(maps\_utility::s1_motionset_avaliable())
|
||||
{
|
||||
inits1soldiersplittimes();
|
||||
}
|
||||
|
||||
anim.splitarrivalsleft = [];
|
||||
level.splitarrivalsleft["left"] = 1;
|
||||
level.splitarrivalsleft["left_crouch"] = 1;
|
||||
level.splitarrivalsleft["left_crouch_cqb"] = 1;
|
||||
level.splitarrivalsleft["left_cqb"] = 1;
|
||||
anim.splitexitsleft = [];
|
||||
level.splitexitsleft["left"] = 1;
|
||||
level.splitexitsleft["left_crouch"] = 1;
|
||||
level.splitexitsleft["left_crouch_cqb"] = 1;
|
||||
level.splitexitsleft["left_cqb"] = 1;
|
||||
level.splitexitsleft["heat_left"] = 1;
|
||||
anim.splitarrivalsright = [];
|
||||
level.splitarrivalsright["right"] = 1;
|
||||
level.splitarrivalsright["right_crouch"] = 1;
|
||||
level.splitarrivalsright["right_cqb"] = 1;
|
||||
level.splitarrivalsright["right_crouch_cqb"] = 1;
|
||||
anim.splitexitsright = [];
|
||||
level.splitexitsright["right"] = 1;
|
||||
level.splitexitsright["right_crouch"] = 1;
|
||||
level.splitexitsright["right_cqb"] = 1;
|
||||
level.splitexitsright["right_crouch_cqb"] = 1;
|
||||
level.splitexitsright["heat_right"] = 1;
|
||||
getsplittimes("soldier");
|
||||
if(maps\_utility::s1_motionset_avaliable())
|
||||
{
|
||||
getsplittimes("s1_soldier");
|
||||
}
|
||||
|
||||
level.arrivalendstance["left"] = "stand";
|
||||
level.arrivalendstance["left_cqb"] = "stand";
|
||||
level.arrivalendstance["right"] = "stand";
|
||||
level.arrivalendstance["right_cqb"] = "stand";
|
||||
level.arrivalendstance["stand"] = "stand";
|
||||
level.arrivalendstance["stand_saw"] = "stand";
|
||||
level.arrivalendstance["stand_unstable"] = "stand";
|
||||
level.arrivalendstance["exposed"] = "stand";
|
||||
level.arrivalendstance["exposed_cqb"] = "stand";
|
||||
level.arrivalendstance["exposed_smg"] = "stand";
|
||||
level.arrivalendstance["exposed_unstable"] = "stand";
|
||||
level.arrivalendstance["exposed_unstable_run"] = "stand";
|
||||
level.arrivalendstance["heat"] = "stand";
|
||||
level.arrivalendstance["left_crouch"] = "crouch";
|
||||
level.arrivalendstance["left_crouch_cqb"] = "crouch";
|
||||
level.arrivalendstance["right_crouch"] = "crouch";
|
||||
level.arrivalendstance["right_crouch_cqb"] = "crouch";
|
||||
level.arrivalendstance["crouch_saw"] = "crouch";
|
||||
level.arrivalendstance["crouch"] = "crouch";
|
||||
level.arrivalendstance["exposed_crouch"] = "crouch";
|
||||
level.arrivalendstance["exposed_crouch_cqb"] = "crouch";
|
||||
level.arrivalendstance["prone_saw"] = "prone";
|
||||
level.arrivalendstance["exposed_ready"] = "stand";
|
||||
level.arrivalendstance["exposed_ready_cqb"] = "stand";
|
||||
level.requiredexitstance["Cover Stand"] = "stand";
|
||||
level.requiredexitstance["Conceal Stand"] = "stand";
|
||||
level.requiredexitstance["Cover Crouch"] = "crouch";
|
||||
level.requiredexitstance["Conceal Crouch"] = "crouch";
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
getsplittimes(param_00)
|
||||
{
|
||||
getsplittimesside(param_00,7,8,0,level.splitarrivalsleft,level.splitexitsleft);
|
||||
getsplittimesside(param_00,8,9,1,level.splitarrivalsright,level.splitexitsright);
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
getsplittimesside(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
var_06 = 0;
|
||||
for(var_07 = param_01;var_07 <= param_02;var_07++)
|
||||
{
|
||||
if(!var_06)
|
||||
{
|
||||
foreach(var_0A, var_09 in param_04)
|
||||
{
|
||||
if(isdefined(level.archetypes[param_00]["cover_trans"]) && isdefined(level.archetypes[param_00]["cover_trans"][var_0A]) && isdefined(level.archetypes[param_00]["cover_trans"][var_0A][var_07]))
|
||||
{
|
||||
level.archetypes[param_00]["cover_trans_predist"][var_0A][var_07] = getmovedelta(level.archetypes[param_00]["cover_trans"][var_0A][var_07],0,gettranssplittime(param_00,var_0A,var_07));
|
||||
level.archetypes[param_00]["cover_trans_dist"][var_0A][var_07] = getmovedelta(level.archetypes[param_00]["cover_trans"][var_0A][var_07],0,1) - level.archetypes[param_00]["cover_trans_predist"][var_0A][var_07];
|
||||
level.archetypes[param_00]["cover_trans_angles"][var_0A][var_07] = getangledelta(level.archetypes[param_00]["cover_trans"][var_0A][var_07],0,1);
|
||||
}
|
||||
}
|
||||
|
||||
foreach(var_0A, var_09 in param_05)
|
||||
{
|
||||
if(isdefined(level.archetypes[param_00]["cover_exit"]) && isdefined(level.archetypes[param_00]["cover_exit"][var_0A]) && isdefined(level.archetypes[param_00]["cover_exit"][var_0A][var_07]))
|
||||
{
|
||||
level.archetypes[param_00]["cover_exit_dist"][var_0A][var_07] = getmovedelta(level.archetypes[param_00]["cover_exit"][var_0A][var_07],0,getexitsplittime(param_00,var_0A,var_07));
|
||||
level.archetypes[param_00]["cover_exit_postdist"][var_0A][var_07] = getmovedelta(level.archetypes[param_00]["cover_exit"][var_0A][var_07],0,1) - level.archetypes[param_00]["cover_exit_dist"][var_0A][var_07];
|
||||
level.archetypes[param_00]["cover_exit_angles"][var_0A][var_07] = getangledelta(level.archetypes[param_00]["cover_exit"][var_0A][var_07],0,1);
|
||||
}
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
getexitsplittime(param_00,param_01,param_02)
|
||||
{
|
||||
if(isdefined(level.archetypes[param_00]["cover_exit_split"][param_01]) && isdefined(level.archetypes[param_00]["cover_exit_split"][param_01][param_02]))
|
||||
{
|
||||
return level.archetypes[param_00]["cover_exit_split"][param_01][param_02];
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
gettranssplittime(param_00,param_01,param_02)
|
||||
{
|
||||
if(isdefined(level.archetypes[param_00]["cover_trans_split"][param_01]) && isdefined(level.archetypes[param_00]["cover_trans_split"][param_01][param_02]))
|
||||
{
|
||||
return level.archetypes[param_00]["cover_trans_split"][param_01][param_02];
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
1633
AW/PC/animscripts/melee.gsc
Normal file
1633
AW/PC/animscripts/melee.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1427
AW/PC/animscripts/move.gsc
Normal file
1427
AW/PC/animscripts/move.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1400
AW/PC/animscripts/notetracks.gsc
Normal file
1400
AW/PC/animscripts/notetracks.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1852
AW/PC/animscripts/pain.gsc
Normal file
1852
AW/PC/animscripts/pain.gsc
Normal file
File diff suppressed because it is too large
Load Diff
346
AW/PC/animscripts/reactions.gsc
Normal file
346
AW/PC/animscripts/reactions.gsc
Normal file
@ -0,0 +1,346 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: reactions.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 12
|
||||
* Decompile Time: 188 ms
|
||||
* Timestamp: 4/22/2024 2:00:46 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("reactions");
|
||||
newenemysurprisedreaction();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
init_animset_reactions()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["cover_stand"] = [%stand_cover_reaction_a,%stand_cover_reaction_b];
|
||||
var_00["cover_crouch"] = [%stand_cover_reaction_a,%stand_cover_reaction_b];
|
||||
var_00["cover_left"] = [%stand_cover_reaction_a,%stand_cover_reaction_b];
|
||||
var_00["cover_right"] = [%stand_cover_reaction_a,%stand_cover_reaction_b];
|
||||
level.archetypes["soldier"]["cover_reactions"] = var_00;
|
||||
var_00 = [];
|
||||
var_00[0] = %run_wizby_a;
|
||||
var_00[1] = %run_wizby_b;
|
||||
level.archetypes["soldier"]["running_react_to_bullets"] = var_00;
|
||||
anim.lastrunningreactanim = 0;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
reactionscheckloop()
|
||||
{
|
||||
thread bulletwhizbycheckloop();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
canreactagain()
|
||||
{
|
||||
return !isdefined(self.lastreacttime) || gettime() - self.lastreacttime > 2000;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
bulletwhizbyreaction()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self.lastreacttime = gettime();
|
||||
self.a.movement = "stop";
|
||||
var_00 = isdefined(self.whizbyenemy) && distancesquared(self.origin,self.whizbyenemy.origin) < 160000;
|
||||
self animmode("gravity");
|
||||
self orientmode("face current");
|
||||
if(var_00 || common_scripts\utility::cointoss())
|
||||
{
|
||||
self clearanim(%animscript_root,0.1);
|
||||
var_01 = [];
|
||||
if(animscripts\utility::usingsmg())
|
||||
{
|
||||
var_01[0] = %smg_exposed_idle_reacta;
|
||||
var_01[1] = %smg_exposed_idle_reactb;
|
||||
var_01[2] = %smg_exposed_idle_twitch;
|
||||
var_01[3] = %smg_exposed_idle_twitch_v4;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01[0] = %exposed_idle_reacta;
|
||||
var_01[1] = %exposed_idle_reactb;
|
||||
var_01[2] = %exposed_idle_twitch;
|
||||
var_01[3] = %exposed_idle_twitch_v4;
|
||||
}
|
||||
|
||||
var_02 = var_01[randomint(var_01.size)];
|
||||
if(var_00)
|
||||
{
|
||||
var_03 = 1 + randomfloat(0.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = 0.2 + randomfloat(0.5);
|
||||
}
|
||||
|
||||
self setflaggedanimknobrestart("reactanim",var_02,1,0.1,1);
|
||||
animscripts\notetracks::donotetracksfortime(var_03,"reactanim");
|
||||
self clearanim(%animscript_root,0.1);
|
||||
if(!var_00 && self.stairsstate == "none" && !isdefined(self.disable_dive_whizby_react))
|
||||
{
|
||||
var_04 = 1 + randomfloat(0.2);
|
||||
var_05 = animscripts\utility::randomanimoftwo(%exposed_dive_grenade_b,%exposed_dive_grenade_f);
|
||||
self setflaggedanimknobrestart("dive",var_05,1,0.1,var_04);
|
||||
animscripts\shared::donotetracks("dive");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
wait(randomfloat(0.2));
|
||||
var_04 = 1.2 + randomfloat(0.3);
|
||||
if(self.a.pose == "stand")
|
||||
{
|
||||
self clearanim(%animscript_root,0.1);
|
||||
self setflaggedanimknobrestart("crouch",%exposed_stand_2_crouch,1,0.1,var_04);
|
||||
animscripts\shared::donotetracks("crouch");
|
||||
}
|
||||
|
||||
var_06 = anglestoforward(self.angles);
|
||||
if(isdefined(self.whizbyenemy))
|
||||
{
|
||||
var_07 = vectornormalize(self.whizbyenemy.origin - self.origin);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_07 = var_07;
|
||||
}
|
||||
|
||||
if(vectordot(var_07,var_06) > 0)
|
||||
{
|
||||
var_08 = animscripts\utility::randomanimoftwo(%exposed_crouch_idle_twitch_v2,%exposed_crouch_idle_twitch_v3);
|
||||
self clearanim(%animscript_root,0.1);
|
||||
self setflaggedanimknobrestart("twitch",var_08,1,0.1,1);
|
||||
animscripts\shared::donotetracks("twitch");
|
||||
}
|
||||
else
|
||||
{
|
||||
var_09 = animscripts\utility::randomanimoftwo(%exposed_crouch_turn_180_left,%exposed_crouch_turn_180_right);
|
||||
self clearanim(%animscript_root,0.1);
|
||||
self setflaggedanimknobrestart("turn",var_09,1,0.1,1);
|
||||
animscripts\shared::donotetracks("turn");
|
||||
}
|
||||
}
|
||||
|
||||
self clearanim(%animscript_root,0.1);
|
||||
self.whizbyenemy = undefined;
|
||||
self animmode("normal");
|
||||
self orientmode("face default");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
bulletwhizbycheckloop()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
if(isdefined(self.disablebulletwhizbyreaction))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
self waittill("bulletwhizby",var_00);
|
||||
if(!isdefined(var_00.team) || self.team == var_00.team)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(self.covernode) || isdefined(self.ambushnode))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self.a.pose != "stand")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!canreactagain())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
self.whizbyenemy = var_00;
|
||||
self animcustom(::bulletwhizbyreaction);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
clearlookatthread()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
wait(0.3);
|
||||
self setlookatentity();
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
getnewenemyreactionanim()
|
||||
{
|
||||
var_00 = undefined;
|
||||
if(self nearclaimnodeandangle())
|
||||
{
|
||||
var_01 = animscripts\utility::lookupanimarray("cover_reactions");
|
||||
if(isdefined(var_01[self.prevscript]))
|
||||
{
|
||||
var_02 = anglestoforward(self.node.angles);
|
||||
var_03 = vectornormalize(self.reactiontargetpos - self.origin);
|
||||
if(vectordot(var_02,var_03) < -0.5)
|
||||
{
|
||||
self orientmode("face current");
|
||||
var_04 = randomint(var_01[self.prevscript].size);
|
||||
var_00 = var_01[self.prevscript][var_04];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(var_00))
|
||||
{
|
||||
var_05 = [];
|
||||
if(animscripts\utility::usingsmg())
|
||||
{
|
||||
var_05[0] = %smg_exposed_backpedal;
|
||||
var_05[1] = %smg_exposed_idle_reactb;
|
||||
}
|
||||
else if(isdefined(self.animarchetype) && self.animarchetype == "s1_soldier")
|
||||
{
|
||||
var_05[0] = %s1_exposed_backpedal;
|
||||
var_05[1] = %s1_exposed_idle_alert_v5;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_05[0] = %exposed_backpedal;
|
||||
var_05[1] = %exposed_idle_reactb;
|
||||
}
|
||||
|
||||
if(isdefined(self.enemy) && distancesquared(self.enemy.origin,self.reactiontargetpos) < 65536)
|
||||
{
|
||||
self orientmode("face enemy");
|
||||
}
|
||||
else
|
||||
{
|
||||
self orientmode("face point",self.reactiontargetpos);
|
||||
}
|
||||
|
||||
if(self.a.pose == "crouch")
|
||||
{
|
||||
var_03 = vectornormalize(self.reactiontargetpos - self.origin);
|
||||
var_06 = anglestoforward(self.angles);
|
||||
if(vectordot(var_06,var_03) < -0.5)
|
||||
{
|
||||
self orientmode("face current");
|
||||
var_05[0] = %crouch_cover_reaction_a;
|
||||
var_05[1] = %crouch_cover_reaction_b;
|
||||
}
|
||||
}
|
||||
|
||||
var_00 = var_05[randomint(var_05.size)];
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
stealthnewenemyreactanim()
|
||||
{
|
||||
self clearanim(%animscript_root,0.2);
|
||||
if(randomint(4) < 3)
|
||||
{
|
||||
self orientmode("face enemy");
|
||||
var_00 = %exposed_idle_reactb;
|
||||
if(animscripts\utility::usingsmg())
|
||||
{
|
||||
var_00 = %smg_exposed_idle_reactb;
|
||||
}
|
||||
|
||||
self setflaggedanimknobrestart("reactanim",var_00,1,0.2,1);
|
||||
var_01 = getanimlength(var_00);
|
||||
animscripts\notetracks::donotetracksfortime(var_01 * 0.8,"reactanim");
|
||||
self orientmode("face current");
|
||||
return;
|
||||
}
|
||||
|
||||
self orientmode("face enemy");
|
||||
var_02 = %exposed_backpedal;
|
||||
var_03 = %exposed_backpedal_v2;
|
||||
if(animscripts\utility::usingsmg())
|
||||
{
|
||||
var_02 = %smg_exposed_backpedal;
|
||||
var_03 = %smg_exposed_backpedal_v2;
|
||||
}
|
||||
|
||||
self setflaggedanimknobrestart("reactanim",var_02,1,0.2,1);
|
||||
var_01 = getanimlength(var_02);
|
||||
animscripts\notetracks::donotetracksfortime(var_01 * 0.8,"reactanim");
|
||||
self orientmode("face current");
|
||||
self clearanim(%animscript_root,0.2);
|
||||
self setflaggedanimknobrestart("reactanim",var_03,1,0.2,1);
|
||||
animscripts\shared::donotetracks("reactanim");
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
newenemyreactionanim()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("endNewEnemyReactionAnim");
|
||||
self.lastreacttime = gettime();
|
||||
self.a.movement = "stop";
|
||||
self.playing_new_enemy_reaction_anim = 1;
|
||||
if(isdefined(self._stealth) && self.alertlevel != "combat")
|
||||
{
|
||||
stealthnewenemyreactanim();
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = getnewenemyreactionanim();
|
||||
self clearanim(%animscript_root,0.2);
|
||||
self setflaggedanimknobrestart("reactanim",var_00,1,0.2,1);
|
||||
animscripts\shared::donotetracks("reactanim");
|
||||
}
|
||||
|
||||
self notify("newEnemyReactionDone");
|
||||
self.playing_new_enemy_reaction_anim = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
newenemysurprisedreaction()
|
||||
{
|
||||
self endon("death");
|
||||
if(isdefined(self.disablereactionanims))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!canreactagain())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(self.a.pose == "prone" || isdefined(self.a.onback))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self animmode("gravity");
|
||||
if(isdefined(self.enemy))
|
||||
{
|
||||
newenemyreactionanim();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
end_script()
|
||||
{
|
||||
if(isdefined(self.playing_new_enemy_reaction_anim))
|
||||
{
|
||||
self notify("newEnemyReactionDone");
|
||||
self.playing_new_enemy_reaction_anim = undefined;
|
||||
}
|
||||
}
|
803
AW/PC/animscripts/riotshield/riotshield.gsc
Normal file
803
AW/PC/animscripts/riotshield/riotshield.gsc
Normal file
@ -0,0 +1,803 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: riotshield\riotshield.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 28
|
||||
* Decompile Time: 333 ms
|
||||
* Timestamp: 4/22/2024 1:58:54 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init_riotshield_ai_anims()
|
||||
{
|
||||
level.notetracks["detach shield"] = ::notetrackdetachshield;
|
||||
animscripts\init_move_transitions::init_move_transition_arrays();
|
||||
var_00 = [];
|
||||
var_00["cover_trans"]["riotshield"][1] = %riotshield_run_approach_1;
|
||||
var_00["cover_trans"]["riotshield"][2] = %riotshield_run_approach_2;
|
||||
var_00["cover_trans"]["riotshield"][3] = %riotshield_run_approach_3;
|
||||
var_00["cover_trans"]["riotshield"][4] = %riotshield_run_approach_4;
|
||||
var_00["cover_trans"]["riotshield"][6] = %riotshield_run_approach_6;
|
||||
var_00["cover_trans"]["riotshield"][7] = undefined;
|
||||
var_00["cover_trans"]["riotshield"][8] = %riotshield_walk2crouch_8;
|
||||
var_00["cover_trans"]["riotshield"][9] = undefined;
|
||||
var_00["cover_trans"]["riotshield_crouch"][1] = %riotshield_walk_approach_1;
|
||||
var_00["cover_trans"]["riotshield_crouch"][2] = %riotshield_walk_approach_2;
|
||||
var_00["cover_trans"]["riotshield_crouch"][3] = %riotshield_walk_approach_3;
|
||||
var_00["cover_trans"]["riotshield_crouch"][4] = %riotshield_walk_approach_4;
|
||||
var_00["cover_trans"]["riotshield_crouch"][6] = %riotshield_walk_approach_6;
|
||||
var_00["cover_trans"]["riotshield_crouch"][7] = undefined;
|
||||
var_00["cover_trans"]["riotshield_crouch"][8] = %riotshield_walk2crouch_8;
|
||||
var_00["cover_trans"]["riotshield_crouch"][9] = undefined;
|
||||
var_01 = [];
|
||||
var_01[0] = "riotshield";
|
||||
var_01[1] = "riotshield_crouch";
|
||||
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
||||
{
|
||||
var_03 = var_01[var_02];
|
||||
for(var_04 = 1;var_04 <= 9;var_04++)
|
||||
{
|
||||
if(var_04 == 5)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(var_00["cover_trans"][var_03][var_04]))
|
||||
{
|
||||
var_00["cover_trans_dist"][var_03][var_04] = getmovedelta(var_00["cover_trans"][var_03][var_04],0,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var_00["cover_trans_angles"]["riotshield_crouch"][1] = 45;
|
||||
var_00["cover_trans_angles"]["riotshield_crouch"][2] = 0;
|
||||
var_00["cover_trans_angles"]["riotshield_crouch"][3] = -45;
|
||||
var_00["cover_trans_angles"]["riotshield_crouch"][4] = 90;
|
||||
var_00["cover_trans_angles"]["riotshield_crouch"][6] = -90;
|
||||
var_00["cover_trans_angles"]["riotshield_crouch"][8] = 180;
|
||||
var_00["cover_trans_angles"]["riotshield"][1] = 45;
|
||||
var_00["cover_trans_angles"]["riotshield"][2] = 0;
|
||||
var_00["cover_trans_angles"]["riotshield"][3] = -45;
|
||||
var_00["cover_trans_angles"]["riotshield"][4] = 90;
|
||||
var_00["cover_trans_angles"]["riotshield"][6] = -90;
|
||||
var_00["cover_trans_angles"]["riotshield"][8] = 180;
|
||||
animscripts\animset::registerarchetype("riotshield",var_00,0);
|
||||
level.arrivalendstance["riotshield"] = "crouch";
|
||||
level.arrivalendstance["riotshield_crouch"] = "crouch";
|
||||
animscripts\combat_utility::addgrenadethrowanimoffset(%riotshield_crouch_grenade_toss,(-3.20014,1.7098,55.6886));
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
notetrackdetachshield(param_00,param_01)
|
||||
{
|
||||
animscripts\shared::dropaiweapon(self.secondaryweapon);
|
||||
self.secondaryweapon = "none";
|
||||
if(isalive(self))
|
||||
{
|
||||
riotshield_turn_into_regular_ai();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
riotshield_approach_type()
|
||||
{
|
||||
if(self.a.pose == "crouch")
|
||||
{
|
||||
return "riotshield_crouch";
|
||||
}
|
||||
|
||||
return "riotshield";
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
riotshield_approach_conditions(param_00)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
init_riotshield_ai()
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.secondaryweapon,"left",0);
|
||||
self.animarchetype = "riotshield";
|
||||
self initriotshieldhealth(self.secondaryweapon);
|
||||
self.shieldmodelvariant = 0;
|
||||
thread riotshield_damaged();
|
||||
self.subclass = "riotshield";
|
||||
self.approachtypefunc = ::riotshield_approach_type;
|
||||
self.approachconditioncheckfunc = ::riotshield_approach_conditions;
|
||||
self.faceenemyarrival = 1;
|
||||
self.disablecoverarrivalsonly = 1;
|
||||
self.pathrandompercent = 0;
|
||||
self.interval = 0;
|
||||
self.disabledoorbehavior = 1;
|
||||
self.no_pistol_switch = 1;
|
||||
self.dontshootwhilemoving = 1;
|
||||
self.disablebulletwhizbyreaction = 1;
|
||||
self.disablefriendlyfirereaction = 1;
|
||||
self.neversprintforvariation = 1;
|
||||
self.combatmode = "no_cover";
|
||||
self.fixednode = 0;
|
||||
self.maxfaceenemydist = 1500;
|
||||
self.nomeleechargedelay = 1;
|
||||
self.meleechargedistsq = squared(256);
|
||||
self.meleeplayerwhilemoving = 1;
|
||||
self.usemuzzlesideoffset = 1;
|
||||
if(level.gameskill < 1)
|
||||
{
|
||||
self.shieldbulletblocklimit = randomintrange(4,8);
|
||||
}
|
||||
else
|
||||
{
|
||||
self.shieldbulletblocklimit = randomintrange(8,12);
|
||||
}
|
||||
|
||||
self.shieldbulletblockcount = 0;
|
||||
self.shieldbulletblocktime = 0;
|
||||
self.walkdist = 500;
|
||||
self.walkdistfacingmotion = 500;
|
||||
self.grenadeawareness = 1;
|
||||
self.frontshieldanglecos = 0.5;
|
||||
self.nogrenadereturnthrow = 1;
|
||||
self.a.grenadethrowpose = "crouch";
|
||||
self.minexposedgrenadedist = 400;
|
||||
self.ignoresuppression = 1;
|
||||
self.specialmelee_standard = ::riotshield_melee_standard;
|
||||
self.specialmeleechooseaction = ::riotshield_melee_aivsai;
|
||||
maps\_utility::disable_turnanims();
|
||||
maps\_utility::disable_surprise();
|
||||
maps\_utility::disable_cqbwalk();
|
||||
init_riotshield_animsets();
|
||||
if(level.gameskill < 1)
|
||||
{
|
||||
self.bullet_resistance = 30;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.bullet_resistance = 40;
|
||||
}
|
||||
|
||||
maps\_utility::add_damage_function(::maps\_spawner::bullet_resistance);
|
||||
maps\_utility::add_damage_function(::animscripts\pain::additive_pain);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
riotshield_charge()
|
||||
{
|
||||
if(!animscripts\melee::melee_standard_updateandvalidatetarget())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_00 = getmovedelta(%riotshield_basha_attack,0,1);
|
||||
var_01 = lengthsquared(var_00);
|
||||
if(distancesquared(self.origin,self.melee.target.origin) < var_01)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
animscripts\melee::melee_playchargesound();
|
||||
var_02 = 0.1;
|
||||
var_03 = 1;
|
||||
for(;;)
|
||||
{
|
||||
if(!animscripts\melee::melee_standard_updateandvalidatetarget())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(var_03)
|
||||
{
|
||||
self.a.pose = "stand";
|
||||
self setflaggedanimknoball("chargeanim",%riotshield_sprint,%body,1,0.2,1);
|
||||
var_03 = 0;
|
||||
}
|
||||
|
||||
self orientmode("face point",self.melee.target.origin);
|
||||
animscripts\notetracks::donotetracksfortime(var_02,"chargeanim");
|
||||
var_04 = distancesquared(self.origin,self.melee.target.origin);
|
||||
if(var_04 < var_01)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if(gettime() >= self.melee.giveuptime)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
riotshield_melee_standard()
|
||||
{
|
||||
self animmode("zonly_physics");
|
||||
animscripts\melee::melee_standard_resetgiveuptime();
|
||||
for(;;)
|
||||
{
|
||||
if(!riotshield_charge())
|
||||
{
|
||||
self.nextmeleechargetime = gettime() + 1500;
|
||||
self.nextmeleechargetarget = self.melee.target;
|
||||
break;
|
||||
}
|
||||
|
||||
animscripts\battlechatter_ai::evaluatemeleeevent();
|
||||
self orientmode("face point",self.melee.target.origin);
|
||||
self setflaggedanimknoballrestart("meleeanim",%riotshield_bash_vs_player,%body,1,0.2,1);
|
||||
self.melee.inprogress = 1;
|
||||
if(!animscripts\melee::melee_standard_playattackloop())
|
||||
{
|
||||
animscripts\melee::melee_standard_delaystandardcharge(self.melee.target);
|
||||
break;
|
||||
}
|
||||
|
||||
self animmode("none");
|
||||
}
|
||||
|
||||
self animmode("none");
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
riotshield_melee_aivsai()
|
||||
{
|
||||
var_00 = self.melee.target;
|
||||
if(self.subclass == "riotshield" && var_00.subclass == "riotshield")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
animscripts\melee::melee_decide_winner();
|
||||
var_01 = vectortoangles(var_00.origin - self.origin);
|
||||
var_02 = angleclamp180(var_00.angles[1] - var_01[1]);
|
||||
if(abs(var_02) > 100)
|
||||
{
|
||||
if(self.melee.winner)
|
||||
{
|
||||
if(self.subclass == "riotshield")
|
||||
{
|
||||
self.melee.animname = %riotshield_basha_attack;
|
||||
var_00.melee.animname = %riotshield_basha_defend;
|
||||
var_00.melee.surviveanimname = %riotshield_basha_defend_survive;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.melee.animname = %riotshield_bashb_defend;
|
||||
var_00.melee.animname = %riotshield_bashb_attack;
|
||||
}
|
||||
}
|
||||
else if(self.subclass == "riotshield")
|
||||
{
|
||||
self.melee.animname = %riotshield_bashb_attack;
|
||||
var_00.melee.animname = %riotshield_bashb_defend;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.melee.animname = %riotshield_basha_defend;
|
||||
var_00.melee.animname = %riotshield_basha_attack;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
self.melee.startpos = getstartorigin(var_00.origin,var_00.angles,self.melee.animname);
|
||||
self.melee.startangles = (var_00.angles[0],angleclamp180(var_00.angles[1] + 180),var_00.angles[2]);
|
||||
self.lockorientation = 0;
|
||||
var_00.lockorientation = 0;
|
||||
return animscripts\melee::melee_updateandvalidatestartpos();
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
riotshield_startmovetransition()
|
||||
{
|
||||
if(isdefined(self.disableexits))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self orientmode("face angle",self.angles[1]);
|
||||
self animmode("zonly_physics",0);
|
||||
if(self.a.pose == "crouch")
|
||||
{
|
||||
if(isdefined(self.sprint) || isdefined(self.fastwalk))
|
||||
{
|
||||
var_00 = %riotshield_crouch2stand;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = %riotshield_crouch2walk;
|
||||
}
|
||||
|
||||
var_01 = randomfloatrange(0.9,1.1);
|
||||
if(isdefined(self.copgroup))
|
||||
{
|
||||
var_01 = 2.5;
|
||||
}
|
||||
|
||||
self setflaggedanimknoballrestart("startmove",var_00,%body,1,0.1,var_01);
|
||||
animscripts\shared::donotetracks("startmove");
|
||||
self clearanim(%riotshield_crouch2walk,0.5);
|
||||
}
|
||||
|
||||
if(isdefined(self.sprint) || isdefined(self.fastwalk))
|
||||
{
|
||||
self allowedstances("stand","crouch");
|
||||
self.a.pose = "stand";
|
||||
}
|
||||
|
||||
self orientmode("face default");
|
||||
self animmode("normal",0);
|
||||
thread riotshield_bullet_hit_shield();
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
riotshield_endmovetransition()
|
||||
{
|
||||
if(self.prevscript == "move" && self.a.pose == "crouch")
|
||||
{
|
||||
self clearanim(%animscript_root,0.2);
|
||||
var_00 = randomfloatrange(0.9,1.1);
|
||||
if(isdefined(self.copgroup))
|
||||
{
|
||||
var_00 = 2.5;
|
||||
}
|
||||
|
||||
self animmode("zonly_physics");
|
||||
self setflaggedanimknoballrestart("endmove",%riotshield_walk2crouch_8,%body,1,0.2,var_00);
|
||||
animscripts\shared::donotetracks("endmove");
|
||||
self animmode("normal");
|
||||
}
|
||||
|
||||
self allowedstances("crouch");
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
riotshield_startcombat()
|
||||
{
|
||||
riotshield_endmovetransition();
|
||||
self.pushable = 0;
|
||||
thread riotshield_bullet_hit_shield();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
riotshield_bullet_hit_shield()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("bullet_hitshield");
|
||||
var_00 = gettime();
|
||||
if(var_00 - self.shieldbulletblocktime > 500)
|
||||
{
|
||||
self.shieldbulletblockcount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.shieldbulletblockcount++;
|
||||
}
|
||||
|
||||
self.shieldbulletblocktime = var_00;
|
||||
if(self.shieldbulletblockcount > self.shieldbulletblocklimit)
|
||||
{
|
||||
self dodamage(1,(0,0,0));
|
||||
}
|
||||
|
||||
if(common_scripts\utility::cointoss())
|
||||
{
|
||||
var_01 = %riotshield_reacta;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = %riotshield_reactb;
|
||||
}
|
||||
|
||||
self notify("new_hit_react");
|
||||
self setflaggedanimrestart("hitreact",var_01,1,0.1,1);
|
||||
thread riotshield_bullet_hit_shield_clear();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
riotshield_bullet_hit_shield_clear()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("new_hit_react");
|
||||
self waittillmatch("end","hitreact");
|
||||
self clearanim(%riotshield_react,0.1);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
riotshield_grenadecower()
|
||||
{
|
||||
if(self.a.pose == "stand")
|
||||
{
|
||||
self clearanim(%animscript_root,0.2);
|
||||
self setflaggedanimknoballrestart("trans",%riotshield_walk2crouch_8,%body,1,0.2,1.2);
|
||||
animscripts\shared::donotetracks("trans");
|
||||
}
|
||||
|
||||
if(isdefined(self.grenade))
|
||||
{
|
||||
var_00 = 1;
|
||||
var_01 = self.grenade.origin - self.origin;
|
||||
if(isdefined(self.enemy))
|
||||
{
|
||||
var_02 = self.enemy.origin - self.origin;
|
||||
if(vectordot(var_01,var_02) < 0)
|
||||
{
|
||||
var_00 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_00)
|
||||
{
|
||||
var_03 = angleclamp180(self.angles[1] - vectortoyaw(var_01));
|
||||
if(!isdefined(self.turnthreshold))
|
||||
{
|
||||
self.turnthreshold = 55;
|
||||
}
|
||||
|
||||
while(abs(var_03) > self.turnthreshold)
|
||||
{
|
||||
if(!isdefined(self.a.array))
|
||||
{
|
||||
animscripts\combat::setup_anim_array();
|
||||
}
|
||||
|
||||
if(!animscripts\combat::turntofacerelativeyaw(var_03))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
var_03 = angleclamp180(self.angles[1] - vectortoyaw(var_01));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self setanimknoball(%riotshield_crouch_aim_5,%body,1,0.2,1);
|
||||
self setflaggedanimknoballrestart("grenadecower",%riotshield_crouch_idle_add,%add_idle,1,0.2,self.animplaybackrate);
|
||||
animscripts\shared::donotetracks("grenadecower");
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
riotshield_flashbang()
|
||||
{
|
||||
self notify("flashed");
|
||||
if(!isdefined(self.a.onback))
|
||||
{
|
||||
var_00 = randomfloatrange(0.9,1.1);
|
||||
self.frontshieldanglecos = 1;
|
||||
var_01 = [];
|
||||
var_01[0] = %riotshield_crouch_grenade_flash1;
|
||||
var_01[1] = %riotshield_crouch_grenade_flash2;
|
||||
var_01[2] = %riotshield_crouch_grenade_flash3;
|
||||
var_01[3] = %riotshield_crouch_grenade_flash4;
|
||||
var_02 = var_01[randomint(var_01.size)];
|
||||
self setflaggedanimknoballrestart("flashanim",var_02,%body,1,0.1,var_00);
|
||||
self.minpaindamage = 1000;
|
||||
animscripts\shared::donotetracks("flashanim");
|
||||
}
|
||||
else
|
||||
{
|
||||
wait(0.1);
|
||||
}
|
||||
|
||||
self.minpaindamage = 0;
|
||||
if(isdefined(self.subclass) && self.subclass == "riotshield")
|
||||
{
|
||||
self.frontshieldanglecos = 0.5;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
riotshield_pain()
|
||||
{
|
||||
self.a.pose = "crouch";
|
||||
if(animscripts\utility::usingsidearm())
|
||||
{
|
||||
maps\_utility::forceuseweapon(self.primaryweapon,"primary");
|
||||
}
|
||||
|
||||
if(!isdefined(self.a.onback))
|
||||
{
|
||||
var_00 = randomfloatrange(0.8,1.15);
|
||||
self.frontshieldanglecos = 1;
|
||||
if((self.damageyaw < -120 || self.damageyaw > 120) && isexplosivedamagemod(self.damagemod))
|
||||
{
|
||||
var_01 = [];
|
||||
var_01[0] = %riotshield_crouch_grenade_blowback;
|
||||
var_01[1] = %riotshield_crouch_grenade_blowbackl;
|
||||
var_01[2] = %riotshield_crouch_grenade_blowbackr;
|
||||
var_02 = var_01[randomint(var_01.size)];
|
||||
self setflaggedanimknoballrestart("painanim",var_02,%body,1,0.2,var_00);
|
||||
self.minpaindamage = 1000;
|
||||
}
|
||||
else
|
||||
{
|
||||
self setflaggedanimknoballrestart("painanim",%riotshield_crouch_pain,%body,1,0.2,var_00);
|
||||
}
|
||||
|
||||
animscripts\shared::donotetracks("painanim");
|
||||
}
|
||||
else
|
||||
{
|
||||
wait(0.1);
|
||||
}
|
||||
|
||||
self.minpaindamage = 0;
|
||||
if(isdefined(self.subclass) && self.subclass == "riotshield")
|
||||
{
|
||||
self.frontshieldanglecos = 0.5;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
riotshield_death()
|
||||
{
|
||||
if(isdefined(self.a.onback) && self.a.pose == "crouch")
|
||||
{
|
||||
var_00 = [];
|
||||
var_00[0] = %dying_back_death_v2;
|
||||
var_00[1] = %dying_back_death_v3;
|
||||
var_00[2] = %dying_back_death_v4;
|
||||
var_01 = var_00[randomint(var_00.size)];
|
||||
animscripts\death::playdeathanim(var_01);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(self.prevscript == "pain" || self.prevscript == "flashed")
|
||||
{
|
||||
var_02 = randomint(2) == 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = 1;
|
||||
}
|
||||
|
||||
if(var_02)
|
||||
{
|
||||
if(common_scripts\utility::cointoss())
|
||||
{
|
||||
var_01 = %riotshield_crouch_death;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = %riotshield_crouch_death_fallback;
|
||||
}
|
||||
|
||||
animscripts\death::playdeathanim(var_02);
|
||||
return 1;
|
||||
}
|
||||
|
||||
self.a.pose = "crouch";
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
init_riotshield_animsets()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["sprint"] = %riotshield_sprint;
|
||||
var_00["prone"] = %prone_crawl;
|
||||
var_00["straight"] = %riotshield_run_f;
|
||||
var_00["move_f"] = %riotshield_run_f;
|
||||
var_00["move_l"] = %riotshield_run_l;
|
||||
var_00["move_r"] = %riotshield_run_r;
|
||||
var_00["move_b"] = %riotshield_run_b;
|
||||
var_00["crouch"] = %riotshield_crouchwalk_f;
|
||||
var_00["crouch_l"] = %riotshield_crouchwalk_l;
|
||||
var_00["crouch_r"] = %riotshield_crouchwalk_r;
|
||||
var_00["crouch_b"] = %riotshield_crouchwalk_b;
|
||||
var_00["stairs_up"] = %traverse_stair_run_01;
|
||||
var_00["stairs_down"] = %traverse_stair_run_down;
|
||||
self.custommoveanimset["run"] = var_00;
|
||||
self.custommoveanimset["walk"] = var_00;
|
||||
self.custommoveanimset["cqb"] = var_00;
|
||||
self.customidleanimset = [];
|
||||
self.customidleanimset["crouch"] = %riotshield_crouch_aim_5;
|
||||
self.customidleanimset["crouch_add"] = %riotshield_crouch_idle_add;
|
||||
self.customidleanimset["stand"] = %riotshield_crouch_aim_5;
|
||||
self.customidleanimset["stand_add"] = %riotshield_crouch_idle_add;
|
||||
self.a.pose = "crouch";
|
||||
self allowedstances("crouch");
|
||||
var_00 = level.animsets.defaultstand;
|
||||
var_00["add_aim_up"] = %riotshield_crouch_aim_8;
|
||||
var_00["add_aim_down"] = %riotshield_crouch_aim_2;
|
||||
var_00["add_aim_left"] = %riotshield_crouch_aim_4;
|
||||
var_00["add_aim_right"] = %riotshield_crouch_aim_6;
|
||||
var_00["straight_level"] = %riotshield_crouch_aim_5;
|
||||
var_00["fire"] = %riotshield_crouch_fire_auto;
|
||||
var_00["single"] = animscripts\utility::array(%riotshield_crouch_fire_single);
|
||||
var_00["burst2"] = %riotshield_crouch_fire_burst;
|
||||
var_00["burst3"] = %riotshield_crouch_fire_burst;
|
||||
var_00["burst4"] = %riotshield_crouch_fire_burst;
|
||||
var_00["burst5"] = %riotshield_crouch_fire_burst;
|
||||
var_00["burst6"] = %riotshield_crouch_fire_burst;
|
||||
var_00["semi2"] = %riotshield_crouch_fire_burst;
|
||||
var_00["semi3"] = %riotshield_crouch_fire_burst;
|
||||
var_00["semi4"] = %riotshield_crouch_fire_burst;
|
||||
var_00["semi5"] = %riotshield_crouch_fire_burst;
|
||||
var_00["exposed_idle"] = animscripts\utility::array(%riotshield_crouch_idle_add,%riotshield_crouch_twitch);
|
||||
var_00["exposed_grenade"] = animscripts\utility::array(%riotshield_crouch_grenade_toss);
|
||||
var_00["reload"] = animscripts\utility::array(%riotshield_crouch_reload);
|
||||
var_00["reload_crouchhide"] = animscripts\utility::array(%riotshield_crouch_reload);
|
||||
var_00["turn_left_45"] = %riotshield_crouch_lturn;
|
||||
var_00["turn_left_90"] = %riotshield_crouch_lturn;
|
||||
var_00["turn_left_135"] = %riotshield_crouch_lturn;
|
||||
var_00["turn_left_180"] = %riotshield_crouch_lturn;
|
||||
var_00["turn_right_45"] = %riotshield_crouch_rturn;
|
||||
var_00["turn_right_90"] = %riotshield_crouch_rturn;
|
||||
var_00["turn_right_135"] = %riotshield_crouch_rturn;
|
||||
var_00["turn_right_180"] = %riotshield_crouch_rturn;
|
||||
var_00["stand_2_crouch"] = %riotshield_walk2crouch_8;
|
||||
animscripts\animset::init_animset_complete_custom_stand(var_00);
|
||||
animscripts\animset::init_animset_complete_custom_crouch(var_00);
|
||||
self.chooseposefunc = ::riotshield_choose_pose;
|
||||
self.painfunction = ::riotshield_pain;
|
||||
self.specialdeathfunc = ::riotshield_death;
|
||||
self.specialflashedfunc = ::riotshield_flashbang;
|
||||
self.grenadecowerfunction = ::riotshield_grenadecower;
|
||||
self.custommovetransition = ::riotshield_startmovetransition;
|
||||
self.permanentcustommovetransition = 1;
|
||||
common_scripts\utility::set_exception("exposed",::riotshield_startcombat);
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
riotshield_choose_pose(param_00)
|
||||
{
|
||||
if(isdefined(self.grenade))
|
||||
{
|
||||
return "stand";
|
||||
}
|
||||
|
||||
return animscripts\utility::choosepose(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
riotshield_sprint_on()
|
||||
{
|
||||
self.maxfaceenemydist = 128;
|
||||
self.sprint = 1;
|
||||
self orientmode("face default");
|
||||
self.lockorientation = 0;
|
||||
self.walkdist = 32;
|
||||
self.walkdistfacingmotion = 32;
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
riotshield_fastwalk_on()
|
||||
{
|
||||
self.maxfaceenemydist = 128;
|
||||
self.fastwalk = 1;
|
||||
self.walkdist = 32;
|
||||
self.walkdistfacingmotion = 32;
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
riotshield_sprint_off()
|
||||
{
|
||||
self.maxfaceenemydist = 1500;
|
||||
self.walkdist = 500;
|
||||
self.walkdistfacingmotion = 500;
|
||||
self.sprint = undefined;
|
||||
self allowedstances("crouch");
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
riotshield_fastwalk_off()
|
||||
{
|
||||
self.maxfaceenemydist = 1500;
|
||||
self.walkdist = 500;
|
||||
self.walkdistfacingmotion = 500;
|
||||
self.fastwalk = undefined;
|
||||
self allowedstances("crouch");
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
null_func()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
riotshield_init_flee()
|
||||
{
|
||||
if(self.script == "move")
|
||||
{
|
||||
self animcustom(::null_func);
|
||||
}
|
||||
|
||||
self.custommovetransition = ::riotshield_flee_and_drop_shield;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
riotshield_flee_and_drop_shield()
|
||||
{
|
||||
self.custommovetransition = ::riotshield_startmovetransition;
|
||||
self animmode("zonly_physics",0);
|
||||
self orientmode("face current");
|
||||
if(!isdefined(self.dropshieldinplace) && isdefined(self.enemy) && vectordot(self.lookaheaddir,anglestoforward(self.angles)) < 0)
|
||||
{
|
||||
var_00 = %riotshield_crouch2walk_2flee;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = %riotshield_crouch2stand_shield_drop;
|
||||
}
|
||||
|
||||
var_01 = randomfloatrange(0.85,1.1);
|
||||
self setflaggedanimknoball("fleeanim",var_00,%animscript_root,1,0.1,var_01);
|
||||
animscripts\shared::donotetracks("fleeanim");
|
||||
self.maxfaceenemydist = 32;
|
||||
self.lockorientation = 0;
|
||||
self orientmode("face default");
|
||||
self animmode("normal",0);
|
||||
animscripts\shared::donotetracks("fleeanim");
|
||||
self clearanim(var_00,0.2);
|
||||
self.maxfaceenemydist = 128;
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
riotshield_turn_into_regular_ai()
|
||||
{
|
||||
self.subclass = "regular";
|
||||
self.combatmode = "cover";
|
||||
self.approachtypefunc = undefined;
|
||||
self.approachconditioncheckfunc = undefined;
|
||||
self.faceenemyarrival = undefined;
|
||||
self.disablecoverarrivalsonly = undefined;
|
||||
self.pathrandompercent = 0;
|
||||
self.interval = 80;
|
||||
self.disabledoorbehavior = undefined;
|
||||
self.no_pistol_switch = undefined;
|
||||
self.dontshootwhilemoving = undefined;
|
||||
self.disablebulletwhizbyreaction = undefined;
|
||||
self.disablefriendlyfirereaction = undefined;
|
||||
self.neversprintforvariation = undefined;
|
||||
self.maxfaceenemydist = 128;
|
||||
self.nomeleechargedelay = undefined;
|
||||
self.meleechargedistsq = undefined;
|
||||
self.meleeplayerwhilemoving = undefined;
|
||||
self.usemuzzlesideoffset = undefined;
|
||||
self.pathenemyfightdist = 128;
|
||||
self.pathenemylookahead = 128;
|
||||
self.walkdist = 256;
|
||||
self.walkdistfacingmotion = 64;
|
||||
self.lockorientation = 0;
|
||||
self.frontshieldanglecos = 1;
|
||||
self.nogrenadereturnthrow = 0;
|
||||
self.ignoresuppression = 0;
|
||||
self.sprint = undefined;
|
||||
self allowedstances("stand","crouch","prone");
|
||||
self.specialmelee_standard = undefined;
|
||||
self.specialmeleechooseaction = undefined;
|
||||
maps\_utility::enable_turnanims();
|
||||
self.bullet_resistance = undefined;
|
||||
maps\_utility::remove_damage_function(::maps\_spawner::bullet_resistance);
|
||||
maps\_utility::remove_damage_function(::animscripts\pain::additive_pain);
|
||||
animscripts\animset::clear_custom_animset();
|
||||
self.chooseposefunc = ::animscripts\utility::choosepose;
|
||||
self.painfunction = undefined;
|
||||
self.specialdeathfunc = undefined;
|
||||
self.specialflashedfunc = undefined;
|
||||
self.grenadecowerfunction = undefined;
|
||||
self.custommovetransition = undefined;
|
||||
self.permanentcustommovetransition = undefined;
|
||||
common_scripts\utility::clear_exception("exposed");
|
||||
common_scripts\utility::clear_exception("stop_immediate");
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
riotshield_damaged()
|
||||
{
|
||||
self endon("death");
|
||||
self waittill("riotshield_damaged");
|
||||
self.shieldbroken = 1;
|
||||
animscripts\shared::detachallweaponmodels();
|
||||
self.shieldmodelvariant = 1;
|
||||
animscripts\shared::updateattachedweaponmodels();
|
||||
}
|
1254
AW/PC/animscripts/run.gsc
Normal file
1254
AW/PC/animscripts/run.gsc
Normal file
File diff suppressed because it is too large
Load Diff
928
AW/PC/animscripts/s1_common_anims.gsc
Normal file
928
AW/PC/animscripts/s1_common_anims.gsc
Normal file
@ -0,0 +1,928 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: s1_common_anims.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 30
|
||||
* Decompile Time: 459 ms
|
||||
* Timestamp: 4/22/2024 2:00:50 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
initsoliders1entrance()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["stand"][1] = %s1_coverstand_trans_in_ml;
|
||||
var_00["stand"][2] = %s1_coverstand_trans_in_m;
|
||||
var_00["stand"][3] = %s1_coverstand_trans_in_mr;
|
||||
var_00["stand"][4] = %s1_coverstand_trans_in_l;
|
||||
var_00["stand"][6] = %s1_coverstand_trans_in_r;
|
||||
var_00["right"][1] = %s1_corner_standr_trans_in_1;
|
||||
var_00["right"][2] = %s1_corner_standr_trans_in_2;
|
||||
var_00["right"][3] = %s1_corner_standr_trans_in_3;
|
||||
var_00["right"][4] = %s1_corner_standr_trans_in_4;
|
||||
var_00["right"][6] = %s1_corner_standr_trans_in_6;
|
||||
var_00["right"][8] = %s1_corner_standr_trans_in_8;
|
||||
var_00["right"][9] = %s1_corner_standr_trans_in_9;
|
||||
var_00["right_cqb"][1] = %s1_corner_standr_trans_cqb_in_1;
|
||||
var_00["right_cqb"][2] = %s1_corner_standr_trans_cqb_in_2;
|
||||
var_00["right_cqb"][3] = %s1_corner_standr_trans_cqb_in_3;
|
||||
var_00["right_cqb"][4] = %s1_corner_standr_trans_cqb_in_4;
|
||||
var_00["right_cqb"][6] = %s1_corner_standr_trans_cqb_in_6;
|
||||
var_00["right_cqb"][8] = %s1_corner_standr_trans_cqb_in_8;
|
||||
var_00["right_cqb"][9] = %s1_corner_standr_trans_cqb_in_9;
|
||||
var_00["right_crouch"][1] = %s1_cornercrr_trans_in_ml;
|
||||
var_00["right_crouch"][2] = %s1_cornercrr_trans_in_m;
|
||||
var_00["right_crouch"][3] = %s1_cornercrr_trans_in_mr;
|
||||
var_00["right_crouch"][4] = %s1_cornercrr_trans_in_l;
|
||||
var_00["right_crouch"][6] = %s1_cornercrr_trans_in_r;
|
||||
var_00["right_crouch"][8] = %s1_cornercrr_trans_in_f;
|
||||
var_00["right_crouch"][9] = %s1_cornercrr_trans_in_mf;
|
||||
var_00["right_crouch_cqb"][1] = %s1_cornercrr_cqb_trans_in_1;
|
||||
var_00["right_crouch_cqb"][2] = %s1_cornercrr_cqb_trans_in_2;
|
||||
var_00["right_crouch_cqb"][3] = %s1_cornercrr_cqb_trans_in_3;
|
||||
var_00["right_crouch_cqb"][4] = %s1_cornercrr_cqb_trans_in_4;
|
||||
var_00["right_crouch_cqb"][6] = %s1_cornercrr_cqb_trans_in_6;
|
||||
var_00["right_crouch_cqb"][8] = %s1_cornercrr_cqb_trans_in_8;
|
||||
var_00["right_crouch_cqb"][9] = %s1_cornercrr_cqb_trans_in_9;
|
||||
var_00["left"][1] = %s1_corner_standl_trans_in_1;
|
||||
var_00["left"][2] = %s1_corner_standl_trans_in_2;
|
||||
var_00["left"][3] = %s1_corner_standl_trans_in_3;
|
||||
var_00["left"][4] = %s1_corner_standl_trans_in_4;
|
||||
var_00["left"][6] = %s1_corner_standl_trans_in_6;
|
||||
var_00["left"][7] = %s1_corner_standl_trans_in_7;
|
||||
var_00["left"][8] = %s1_corner_standl_trans_in_8;
|
||||
var_00["left_cqb"][1] = %s1_corner_standl_trans_cqb_in_1;
|
||||
var_00["left_cqb"][2] = %s1_corner_standl_trans_cqb_in_2;
|
||||
var_00["left_cqb"][3] = %s1_corner_standl_trans_cqb_in_3;
|
||||
var_00["left_cqb"][4] = %s1_corner_standl_trans_cqb_in_4;
|
||||
var_00["left_cqb"][6] = %s1_corner_standl_trans_cqb_in_6;
|
||||
var_00["left_cqb"][7] = %s1_corner_standl_trans_cqb_in_7;
|
||||
var_00["left_cqb"][8] = %s1_corner_standl_trans_cqb_in_8;
|
||||
var_00["left_crouch_cqb"][1] = %s1_cornercrl_cqb_trans_in_1;
|
||||
var_00["left_crouch_cqb"][2] = %s1_cornercrl_cqb_trans_in_2;
|
||||
var_00["left_crouch_cqb"][3] = %s1_cornercrl_cqb_trans_in_3;
|
||||
var_00["left_crouch_cqb"][4] = %s1_cornercrl_cqb_trans_in_4;
|
||||
var_00["left_crouch_cqb"][6] = %s1_cornercrl_cqb_trans_in_6;
|
||||
var_00["left_crouch_cqb"][7] = %s1_cornercrl_cqb_trans_in_7;
|
||||
var_00["left_crouch_cqb"][8] = %s1_cornercrl_cqb_trans_in_8;
|
||||
var_00["left_crouch"][1] = %s1_cornercrl_trans_in_ml;
|
||||
var_00["left_crouch"][2] = %s1_cornercrl_trans_in_m;
|
||||
var_00["left_crouch"][3] = %s1_cornercrl_trans_in_mr;
|
||||
var_00["left_crouch"][4] = %s1_cornercrl_trans_in_l;
|
||||
var_00["left_crouch"][6] = %s1_cornercrl_trans_in_r;
|
||||
var_00["left_crouch"][7] = %s1_cornercrl_trans_in_mf;
|
||||
var_00["left_crouch"][8] = %s1_cornercrl_trans_in_f;
|
||||
var_00["left_crouch_cqb"][1] = %s1_cornercrl_cqb_trans_in_1;
|
||||
var_00["left_crouch_cqb"][2] = %s1_cornercrl_cqb_trans_in_2;
|
||||
var_00["left_crouch_cqb"][3] = %s1_cornercrl_cqb_trans_in_3;
|
||||
var_00["left_crouch_cqb"][4] = %s1_cornercrl_cqb_trans_in_4;
|
||||
var_00["left_crouch_cqb"][6] = %s1_cornercrl_cqb_trans_in_6;
|
||||
var_00["left_crouch_cqb"][7] = %s1_cornercrl_cqb_trans_in_7;
|
||||
var_00["left_crouch_cqb"][8] = %s1_cornercrl_cqb_trans_in_8;
|
||||
var_00["exposed"][1] = %s1_run_2_idle_1;
|
||||
var_00["exposed"][2] = %s1_run_2_stand_f_6;
|
||||
var_00["exposed"][3] = %s1_run_2_idle_3;
|
||||
var_00["exposed"][4] = %s1_run_2_stand_90l;
|
||||
var_00["exposed"][6] = %s1_run_2_stand_90r;
|
||||
var_00["exposed"][7] = %s1_run_2_idle_7;
|
||||
var_00["exposed"][8] = %s1_run_2_stand_180l;
|
||||
var_00["exposed"][9] = %s1_run_2_idle_9;
|
||||
var_00["exposed_cqb"][1] = %cqb_stop_1;
|
||||
var_00["exposed_cqb"][2] = %cqb_stop_2;
|
||||
var_00["exposed_cqb"][3] = %cqb_stop_3;
|
||||
var_00["exposed_cqb"][4] = %cqb_stop_4;
|
||||
var_00["exposed_cqb"][6] = %cqb_stop_6;
|
||||
var_00["exposed_cqb"][7] = %cqb_stop_7;
|
||||
var_00["exposed_cqb"][8] = %cqb_stop_8;
|
||||
var_00["exposed_cqb"][9] = %cqb_stop_9;
|
||||
var_00["exposed_crouch"][1] = %s1_cqb_crouch_stop_1;
|
||||
var_00["exposed_crouch"][2] = %s1_cqb_crouch_stop_2;
|
||||
var_00["exposed_crouch"][3] = %s1_cqb_crouch_stop_3;
|
||||
var_00["exposed_crouch"][4] = %s1_cqb_crouch_stop_4;
|
||||
var_00["exposed_crouch"][6] = %s1_cqb_crouch_stop_6;
|
||||
var_00["exposed_crouch"][7] = %s1_cqb_crouch_stop_7;
|
||||
var_00["exposed_crouch"][8] = %s1_cqb_crouch_stop_8;
|
||||
var_00["exposed_crouch"][9] = %s1_cqb_crouch_stop_9;
|
||||
var_00["exposed_crouch_cqb"][1] = %s1_cqb_crouch_stop_1;
|
||||
var_00["exposed_crouch_cqb"][2] = %s1_cqb_crouch_stop_2;
|
||||
var_00["exposed_crouch_cqb"][3] = %s1_cqb_crouch_stop_3;
|
||||
var_00["exposed_crouch_cqb"][4] = %s1_cqb_crouch_stop_4;
|
||||
var_00["exposed_crouch_cqb"][6] = %s1_cqb_crouch_stop_6;
|
||||
var_00["exposed_crouch_cqb"][7] = %s1_cqb_crouch_stop_7;
|
||||
var_00["exposed_crouch_cqb"][8] = %s1_cqb_crouch_stop_8;
|
||||
var_00["exposed_crouch_cqb"][9] = %s1_cqb_crouch_stop_9;
|
||||
var_00["crouch"][1] = %s1_covercrouch_run_in_ml;
|
||||
var_00["crouch"][2] = %s1_covercrouch_run_in_m;
|
||||
var_00["crouch"][3] = %s1_covercrouch_run_in_mr;
|
||||
var_00["crouch"][4] = %s1_covercrouch_run_in_l;
|
||||
var_00["crouch"][6] = %s1_covercrouch_run_in_r;
|
||||
level.archetypes["s1_soldier"]["cover_trans"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
initsoliders1exit()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["right"][1] = %s1_corner_standr_trans_out_1;
|
||||
var_00["right"][2] = %s1_corner_standr_trans_out_2;
|
||||
var_00["right"][3] = %s1_corner_standr_trans_out_3;
|
||||
var_00["right"][4] = %s1_corner_standr_trans_out_4;
|
||||
var_00["right"][6] = %s1_corner_standr_trans_out_6;
|
||||
var_00["right"][8] = %s1_corner_standr_trans_out_8;
|
||||
var_00["right"][9] = %s1_corner_standr_trans_out_9;
|
||||
var_00["right_cqb"][1] = %s1_corner_standr_trans_cqb_out_1;
|
||||
var_00["right_cqb"][2] = %s1_corner_standr_trans_cqb_out_2;
|
||||
var_00["right_cqb"][3] = %s1_corner_standr_trans_cqb_out_3;
|
||||
var_00["right_cqb"][4] = %s1_corner_standr_trans_cqb_out_4;
|
||||
var_00["right_cqb"][6] = %s1_corner_standr_trans_cqb_out_6;
|
||||
var_00["right_cqb"][8] = %s1_corner_standr_trans_cqb_out_8;
|
||||
var_00["right_cqb"][9] = %s1_corner_standr_trans_cqb_out_9;
|
||||
var_00["right_crouch"][1] = %s1_cornercrr_trans_out_ml;
|
||||
var_00["right_crouch"][2] = %s1_cornercrr_trans_out_m;
|
||||
var_00["right_crouch"][3] = %s1_cornercrr_trans_out_mr;
|
||||
var_00["right_crouch"][4] = %s1_cornercrr_trans_out_l;
|
||||
var_00["right_crouch"][6] = %s1_cornercrr_trans_out_r;
|
||||
var_00["right_crouch"][8] = %s1_cornercrr_trans_out_f;
|
||||
var_00["right_crouch"][9] = %s1_cornercrr_trans_out_mf;
|
||||
var_00["right_crouch_cqb"][1] = %s1_cornercrr_cqb_trans_out_1;
|
||||
var_00["right_crouch_cqb"][2] = %s1_cornercrr_cqb_trans_out_2;
|
||||
var_00["right_crouch_cqb"][3] = %s1_cornercrr_cqb_trans_out_3;
|
||||
var_00["right_crouch_cqb"][4] = %s1_cornercrr_cqb_trans_out_4;
|
||||
var_00["right_crouch_cqb"][6] = %s1_cornercrr_cqb_trans_out_6;
|
||||
var_00["right_crouch_cqb"][8] = %s1_cornercrr_cqb_trans_out_8;
|
||||
var_00["right_crouch_cqb"][9] = %s1_cornercrr_cqb_trans_out_9;
|
||||
var_00["left"][1] = %s1_corner_standl_trans_out_1;
|
||||
var_00["left"][2] = %s1_corner_standl_trans_out_2;
|
||||
var_00["left"][3] = %s1_corner_standl_trans_out_3;
|
||||
var_00["left"][4] = %s1_corner_standl_trans_out_4;
|
||||
var_00["left"][6] = %s1_corner_standl_trans_out_6;
|
||||
var_00["left"][7] = %s1_corner_standl_trans_out_7;
|
||||
var_00["left"][8] = %s1_corner_standl_trans_out_8;
|
||||
var_00["left_cqb"][1] = %s1_corner_standl_trans_cqb_out_1;
|
||||
var_00["left_cqb"][2] = %s1_corner_standl_trans_cqb_out_2;
|
||||
var_00["left_cqb"][3] = %s1_corner_standl_trans_cqb_out_3;
|
||||
var_00["left_cqb"][4] = %s1_corner_standl_trans_cqb_out_4;
|
||||
var_00["left_cqb"][6] = %s1_corner_standl_trans_cqb_out_6;
|
||||
var_00["left_cqb"][7] = %s1_corner_standl_trans_cqb_out_7;
|
||||
var_00["left_cqb"][8] = %s1_corner_standl_trans_cqb_out_8;
|
||||
var_00["right_cqb"][1] = %s1_corner_standr_trans_cqb_out_1;
|
||||
var_00["right_cqb"][2] = %s1_corner_standr_trans_cqb_out_2;
|
||||
var_00["right_cqb"][3] = %s1_corner_standr_trans_cqb_out_3;
|
||||
var_00["right_cqb"][4] = %s1_corner_standr_trans_cqb_out_4;
|
||||
var_00["right_cqb"][6] = %s1_corner_standr_trans_cqb_out_6;
|
||||
var_00["right_cqb"][8] = %s1_corner_standr_trans_cqb_out_8;
|
||||
var_00["right_cqb"][9] = %s1_corner_standr_trans_cqb_out_9;
|
||||
var_00["left_crouch"][1] = %s1_cornercrl_trans_out_ml;
|
||||
var_00["left_crouch"][2] = %s1_cornercrl_trans_out_m;
|
||||
var_00["left_crouch"][3] = %s1_cornercrl_trans_out_mr;
|
||||
var_00["left_crouch"][4] = %s1_cornercrl_trans_out_l;
|
||||
var_00["left_crouch"][6] = %s1_cornercrl_trans_out_r;
|
||||
var_00["left_crouch"][7] = %s1_cornercrl_trans_out_mf;
|
||||
var_00["left_crouch"][8] = %s1_cornercrl_trans_out_f;
|
||||
var_00["left_crouch_cqb"][1] = %s1_cornercrl_cqb_trans_out_1;
|
||||
var_00["left_crouch_cqb"][2] = %s1_cornercrl_cqb_trans_out_2;
|
||||
var_00["left_crouch_cqb"][3] = %s1_cornercrl_cqb_trans_out_3;
|
||||
var_00["left_crouch_cqb"][4] = %s1_cornercrl_cqb_trans_out_4;
|
||||
var_00["left_crouch_cqb"][6] = %s1_cornercrl_cqb_trans_out_6;
|
||||
var_00["left_crouch_cqb"][7] = %s1_cornercrl_cqb_trans_out_7;
|
||||
var_00["left_crouch_cqb"][8] = %s1_cornercrl_cqb_trans_out_8;
|
||||
var_00["exposed_crouch"][1] = %s1_cqb_crouch_start_1;
|
||||
var_00["exposed_crouch"][2] = %s1_cqb_crouch_start_2;
|
||||
var_00["exposed_crouch"][3] = %s1_cqb_crouch_start_3;
|
||||
var_00["exposed_crouch"][4] = %s1_cqb_crouch_start_4;
|
||||
var_00["exposed_crouch"][6] = %s1_cqb_crouch_start_6;
|
||||
var_00["exposed_crouch"][7] = %s1_cqb_crouch_start_7;
|
||||
var_00["exposed_crouch"][8] = %s1_cqb_crouch_start_8;
|
||||
var_00["exposed_crouch"][9] = %s1_cqb_crouch_start_9;
|
||||
var_00["exposed_crouch_cqb"][1] = %s1_cqb_crouch_start_1;
|
||||
var_00["exposed_crouch_cqb"][2] = %s1_cqb_crouch_start_2;
|
||||
var_00["exposed_crouch_cqb"][3] = %s1_cqb_crouch_start_3;
|
||||
var_00["exposed_crouch_cqb"][4] = %s1_cqb_crouch_start_4;
|
||||
var_00["exposed_crouch_cqb"][6] = %s1_cqb_crouch_start_6;
|
||||
var_00["exposed_crouch_cqb"][7] = %s1_cqb_crouch_start_7;
|
||||
var_00["exposed_crouch_cqb"][8] = %s1_cqb_crouch_start_8;
|
||||
var_00["exposed_crouch_cqb"][9] = %s1_cqb_crouch_start_9;
|
||||
var_00["exposed"] = [];
|
||||
var_00["exposed"][1] = %cqb_start_1;
|
||||
var_00["exposed"][2] = %s1_stand_2_run_180l;
|
||||
var_00["exposed"][3] = %cqb_start_3;
|
||||
var_00["exposed"][4] = %s1_stand_2_run_l;
|
||||
var_00["exposed"][6] = %s1_stand_2_run_r;
|
||||
var_00["exposed"][7] = %cqb_start_7;
|
||||
var_00["exposed"][8] = %s1_surprise_start_v1;
|
||||
var_00["exposed"][9] = %cqb_start_9;
|
||||
var_00["exposed_cqb"][1] = %cqb_start_1;
|
||||
var_00["exposed_cqb"][2] = %cqb_start_2;
|
||||
var_00["exposed_cqb"][3] = %cqb_start_3;
|
||||
var_00["exposed_cqb"][4] = %cqb_start_4;
|
||||
var_00["exposed_cqb"][6] = %cqb_start_6;
|
||||
var_00["exposed_cqb"][7] = %cqb_start_7;
|
||||
var_00["exposed_cqb"][8] = %cqb_start_8;
|
||||
var_00["exposed_cqb"][9] = %cqb_start_9;
|
||||
var_00["crouch"][1] = %s1_covercrouch_run_out_ml;
|
||||
var_00["crouch"][2] = %s1_covercrouch_run_out_m;
|
||||
var_00["crouch"][3] = %s1_covercrouch_run_out_mr;
|
||||
var_00["crouch"][4] = %s1_covercrouch_run_out_l;
|
||||
var_00["crouch"][6] = %s1_covercrouch_run_out_r;
|
||||
var_00["stand"][1] = %s1_coverstand_trans_out_ml;
|
||||
var_00["stand"][2] = %s1_coverstand_trans_out_m;
|
||||
var_00["stand"][3] = %s1_coverstand_trans_out_mr;
|
||||
var_00["stand"][4] = %s1_coverstand_trans_out_l;
|
||||
var_00["stand"][6] = %s1_coverstand_trans_out_r;
|
||||
level.archetypes["s1_soldier"]["cover_exit"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
init_s1_animset_cover_wall()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["add_aim_up"] = %s1_covercrouch_aim8_add;
|
||||
var_00["add_aim_down"] = %s1_covercrouch_aim2_add;
|
||||
var_00["add_aim_left"] = %s1_covercrouch_aim4_add;
|
||||
var_00["add_aim_right"] = %s1_covercrouch_aim6_add;
|
||||
var_00["straight_level"] = %s1_covercrouch_aim5;
|
||||
var_00["hide_idle"] = %s1_covercrouch_hide_idle;
|
||||
var_00["hide_idle_twitch"] = animscripts\utility::array(%s1_covercrouch_twitch_1,%s1_covercrouch_twitch_2,%s1_covercrouch_twitch_3,%s1_covercrouch_twitch_4,%s1_covercrouch_twitch_5);
|
||||
var_00["hide_idle_flinch"] = animscripts\utility::array(%s1_covercrouch_explosion_1,%s1_covercrouch_explosion_2,%s1_covercrouch_explosion_3);
|
||||
var_00["hide_2_crouch"] = %s1_covercrouch_hide_2_aim;
|
||||
var_00["hide_2_stand"] = %s1_covercrouch_hide_2_stand;
|
||||
var_00["hide_2_lean"] = %s1_covercrouch_hide_2_lean;
|
||||
var_00["hide_2_right"] = %s1_covercrouch_hide_2_right;
|
||||
var_00["hide_2_left"] = %s1_covercrouch_hide_2_left;
|
||||
var_00["crouch_2_hide"] = %s1_covercrouch_aim_2_hide;
|
||||
var_00["stand_2_hide"] = %s1_covercrouch_stand_2_hide;
|
||||
var_00["lean_2_hide"] = %s1_covercrouch_lean_2_hide;
|
||||
var_00["right_2_hide"] = %s1_covercrouch_right_2_hide;
|
||||
var_00["left_2_hide"] = %s1_covercrouch_left_2_hide;
|
||||
var_00["crouch_aim"] = %s1_covercrouch_aim5;
|
||||
var_00["stand_aim"] = %s1_coverstand_aim_5;
|
||||
var_00["lean_aim"] = %s1_covercrouch_lean_aim5;
|
||||
var_00["fire"] = %s1_exposed_shoot_auto;
|
||||
var_00["semi2"] = %s1_exposed_shoot_semi2;
|
||||
var_00["semi3"] = %s1_exposed_shoot_semi3;
|
||||
var_00["semi4"] = %s1_exposed_shoot_semi4;
|
||||
var_00["semi5"] = %s1_exposed_shoot_semi5;
|
||||
var_00["single"] = [%s1_exposed_shoot_semi1];
|
||||
var_00["burst2"] = %s1_exposed_shoot_burst3;
|
||||
var_00["burst3"] = %s1_exposed_shoot_burst3;
|
||||
var_00["burst4"] = %s1_exposed_shoot_burst4;
|
||||
var_00["burst5"] = %s1_exposed_shoot_burst5;
|
||||
var_00["burst6"] = %s1_exposed_shoot_burst6;
|
||||
var_00["blind_fire"] = animscripts\utility::array(%s1_covercrouch_blindfire_1,%s1_covercrouch_blindfire_2,%s1_covercrouch_blindfire_3,%s1_covercrouch_blindfire_4);
|
||||
var_00["reload"] = %s1_covercrouch_reload_hide;
|
||||
var_00["grenade_safe"] = animscripts\utility::array(%s1_covercrouch_grenadea);
|
||||
var_00["grenade_exposed"] = animscripts\utility::array(%s1_covercrouch_grenadea);
|
||||
var_00["exposed_idle"] = animscripts\utility::array(%s1_exposed_idle_alert_v1,%s1_exposed_idle_alert_v2,%s1_exposed_idle_alert_v3);
|
||||
var_00["look"] = animscripts\utility::array(%s1_covercrouch_hide_look);
|
||||
level.archetypes["s1_soldier"]["cover_crouch"] = var_00;
|
||||
var_00 = [];
|
||||
var_00["add_aim_up"] = %s1_coverstandaim_aim8_add;
|
||||
var_00["add_aim_down"] = %s1_coverstandaim_aim2_add;
|
||||
var_00["add_aim_left"] = %s1_coverstandaim_aim4_add;
|
||||
var_00["add_aim_right"] = %s1_coverstandaim_aim6_add;
|
||||
var_00["straight_level"] = %s1_coverstand_aim_5;
|
||||
var_00["hide_idle"] = %s1_coverstand_hide_idle;
|
||||
var_00["hide_idle_twitch"] = animscripts\utility::array(%s1_coverstand_hide_idle_twitch01,%s1_coverstand_hide_idle_twitch02,%s1_coverstand_hide_idle_twitch03,%s1_coverstand_hide_idle_twitch04,%s1_coverstand_hide_idle_twitch05);
|
||||
var_00["hide_idle_flinch"] = animscripts\utility::array(%s1_coverstand_react01,%s1_coverstand_react02,%s1_coverstand_react03,%s1_coverstand_react04);
|
||||
var_00["hide_2_stand"] = %s1_coverstand_hide_2_aim;
|
||||
var_00["stand_2_hide"] = %s1_coverstand_aim_2_hide;
|
||||
var_00["hide_2_stand_tall"] = %coverstand_hide_2_aim;
|
||||
var_00["stand_tall_2_hide"] = %coverstand_aim_2_hide;
|
||||
var_00["smg_hide_2_stand"] = %smg_coverstand_hide_2_aim;
|
||||
var_00["smg_stand_2_hide"] = %smg_coverstand_aim_2_hide;
|
||||
var_00["hide_2_over"] = %s1_coverstand_2_coverstandaim;
|
||||
var_00["over_2_hide"] = %s1_coverstandaim_2_coverstand;
|
||||
var_00["over_aim"] = %s1_coverstand_aim_5;
|
||||
var_00["fire"] = %s1_coverstandaim_autofire;
|
||||
var_00["semi2"] = %s1_coverstandaim_fire;
|
||||
var_00["semi3"] = %s1_coverstandaim_fire;
|
||||
var_00["semi4"] = %s1_coverstandaim_fire;
|
||||
var_00["semi5"] = %s1_coverstandaim_fire;
|
||||
var_00["single"] = animscripts\utility::array(%s1_coverstandaim_fire);
|
||||
var_00["burst2"] = %s1_coverstandaim_autofire;
|
||||
var_00["burst3"] = %s1_coverstandaim_autofire;
|
||||
var_00["burst4"] = %s1_coverstandaim_autofire;
|
||||
var_00["burst5"] = %s1_coverstandaim_autofire;
|
||||
var_00["burst6"] = %s1_coverstandaim_autofire;
|
||||
var_00["blind_fire"] = animscripts\utility::array(%s1_coverstand_blindfire_1,%s1_coverstand_blindfire_2);
|
||||
var_00["reload"] = %s1_coverstand_reloada;
|
||||
var_00["look"] = animscripts\utility::array(%s1_coverstand_look_quick,%s1_coverstand_look_quick_v2);
|
||||
var_00["grenade_safe"] = animscripts\utility::array(%s1_coverstand_grenadea,%s1_coverstand_grenadeb);
|
||||
var_00["grenade_exposed"] = animscripts\utility::array(%s1_coverstand_grenadea,%s1_coverstand_grenadeb);
|
||||
var_00["exposed_idle"] = animscripts\utility::array(%s1_exposed_idle_alert_v1,%s1_exposed_idle_alert_v2,%s1_exposed_idle_alert_v3);
|
||||
var_00["hide_to_look"] = %s1_coverstand_look_moveup;
|
||||
var_00["look_idle"] = %s1_coverstand_look_idle;
|
||||
var_00["look_to_hide"] = %s1_coverstand_look_movedown;
|
||||
var_00["look_to_hide_fast"] = %s1_coverstand_look_movedown_fast;
|
||||
level.archetypes["s1_soldier"]["cover_stand"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
set_s1_animarray_burst_and_semi_fire_stand()
|
||||
{
|
||||
level.initanimset["burst2"] = %s1_exposed_shoot_burst3;
|
||||
level.initanimset["burst3"] = %s1_exposed_shoot_burst3;
|
||||
level.initanimset["burst4"] = %s1_exposed_shoot_burst4;
|
||||
level.initanimset["burst5"] = %s1_exposed_shoot_burst5;
|
||||
level.initanimset["burst6"] = %s1_exposed_shoot_burst6;
|
||||
level.initanimset["semi2"] = %s1_exposed_shoot_semi2;
|
||||
level.initanimset["semi3"] = %s1_exposed_shoot_semi3;
|
||||
level.initanimset["semi4"] = %s1_exposed_shoot_semi4;
|
||||
level.initanimset["semi5"] = %s1_exposed_shoot_semi5;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
init_s1_animset_melee()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["standard"] = %s1_melee_1;
|
||||
var_00["standard_stand_to_melee"] = %s1_stand_2_melee_1;
|
||||
var_00["standard_run_to_melee"] = %s1_run_2_melee_charge;
|
||||
var_00["aivai_exposed_attackerwins_attack"] = %s1_melee_f_awin_attack;
|
||||
var_00["aivai_exposed_attackerwins_defend"] = %s1_melee_f_awin_defend;
|
||||
var_00["aivai_exposed_attackerwins_defend_survive"] = %s1_melee_f_awin_defend_survive;
|
||||
var_00["aivai_exposed_defenderwins_attack"] = %s1_melee_f_dwin_attack;
|
||||
var_00["aivai_exposed_defenderwins_defend"] = %s1_melee_f_dwin_defend;
|
||||
var_00["aivai_wrestle_attackerwins_attack"] = %bog_melee_r_attack;
|
||||
var_00["aivai_wrestle_attackerwins_defend"] = %bog_melee_r_defend;
|
||||
var_00["aivai_wrestle_attackerwins_defend_survive"] = %bog_melee_r_backdeath2;
|
||||
var_00["aivai_behind_attackerwins_attack"] = %s1_melee_sync_attack;
|
||||
var_00["aivai_behind_attackerwins_defend"] = %s1_melee_sync_defend;
|
||||
var_00["aivai_coverleft_attackerwins_attack"] = %s1_cornersdl_melee_wina_attacker;
|
||||
var_00["aivai_coverleft_attackerwins_defend"] = %s1_cornersdl_melee_wina_defender;
|
||||
var_00["aivai_coverleft_attackerwins_defend_survive"] = %s1_cornersdl_melee_wina_defender_survive;
|
||||
var_00["aivai_coverleft_defenderwins_attack"] = %s1_cornersdl_melee_wind_attacker;
|
||||
var_00["aivai_coverleft_defenderwins_attack_survive"] = %s1_cornersdl_melee_wind_attacker_survive;
|
||||
var_00["aivai_coverleft_defenderwins_defend"] = %s1_cornersdl_melee_wind_defender;
|
||||
var_00["aivai_coverright_attackerwins_attack"] = %s1_cornersdr_melee_wina_attacker;
|
||||
var_00["aivai_coverright_attackerwins_defend"] = %s1_cornersdr_melee_wina_defender;
|
||||
var_00["aivai_coverright_defenderwins_attack"] = %s1_cornersdr_melee_wind_attacker;
|
||||
var_00["aivai_coverright_defenderwins_defend"] = %s1_cornersdr_melee_wind_defender;
|
||||
level.archetypes["s1_soldier"]["melee"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
set_s1_animarray_stance_change()
|
||||
{
|
||||
level.initanimset["crouch_2_stand"] = %s1_exposed_crouch_2_stand;
|
||||
level.initanimset["stand_2_crouch"] = %s1_exposed_stand_2_crouch;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
init_s1_animset_default_stand()
|
||||
{
|
||||
anim.initanimset = [];
|
||||
level.initanimset["add_aim_up"] = %s1_exposed_aim_8;
|
||||
level.initanimset["add_aim_down"] = %s1_exposed_aim_2;
|
||||
level.initanimset["add_aim_left"] = %s1_exposed_aim_4;
|
||||
level.initanimset["add_aim_right"] = %s1_exposed_aim_6;
|
||||
level.initanimset["straight_level"] = %s1_exposed_aim_5;
|
||||
level.initanimset["fire"] = %s1_exposed_shoot_auto_v3;
|
||||
level.initanimset["fire_corner"] = %s1_exposed_shoot_auto_v2;
|
||||
level.initanimset["single"] = animscripts\utility::array(%s1_exposed_shoot_semi1);
|
||||
set_s1_animarray_burst_and_semi_fire_stand();
|
||||
level.initanimset["exposed_idle"] = [%s1_exposed_idle_alert_v1,%s1_exposed_idle_alert_v2,%s1_exposed_idle_alert_v3,%s1_exposed_idle_alert_v4,%s1_exposed_idle_alert_v5];
|
||||
level.initanimset["exposed_grenade"] = [%s1_exposed_grenadethrowb,%s1_exposed_grenadethrowc];
|
||||
level.initanimset["reload"] = [%s1_exposed_reload,%s1_exposed_reloadc];
|
||||
level.initanimset["reload_crouchhide"] = animscripts\utility::array(%s1_exposed_reloadb);
|
||||
set_s1_animarray_stance_change();
|
||||
set_s1_animarray_standing_turns();
|
||||
set_s1_animarray_add_turn_aims_stand();
|
||||
level.archetypes["s1_soldier"]["default_stand"] = level.initanimset;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
init_s1_animset_cover_right()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["alert_idle"] = %s1_corner_standr_alert_idle;
|
||||
var_00["alert_idle_twitch"] = [%s1_corner_standr_alert_twitch01,%s1_corner_standr_alert_twitch02,%s1_corner_standr_alert_twitch04,%s1_corner_standr_alert_twitch05,%s1_corner_standr_alert_twitch06,%s1_corner_standr_alert_twitch07];
|
||||
var_00["alert_idle_flinch"] = [%s1_corner_standr_flinch,%s1_corner_standr_flinchb];
|
||||
var_00["alert_to_C"] = %s1_corner_standr_trans_alert_2_c;
|
||||
var_00["B_to_C"] = %s1_corner_standr_trans_b_2_c;
|
||||
var_00["C_to_alert"] = %s1_corner_standr_trans_c_2_alert;
|
||||
var_00["C_to_B"] = %s1_corner_standr_trans_c_2_b;
|
||||
var_00["alert_to_A"] = [%s1_corner_standr_trans_alert_2_a,%s1_corner_standr_trans_alert_2_a_v2];
|
||||
var_00["alert_to_B"] = [%s1_corner_standr_trans_alert_2_b,%s1_corner_standr_trans_alert_2_b_v2,%s1_corner_standr_trans_alert_2_b_v3];
|
||||
var_00["A_to_alert"] = [%s1_corner_standr_trans_a_2_alert_v2];
|
||||
var_00["A_to_alert_reload"] = [];
|
||||
var_00["A_to_B"] = [%s1_corner_standr_trans_a_2_b,%s1_corner_standr_trans_a_2_b_v2];
|
||||
var_00["B_to_alert"] = [%s1_corner_standr_trans_b_2_alert,%s1_corner_standr_trans_b_2_alert_v2,%s1_corner_standr_trans_b_2_alert_v3];
|
||||
var_00["B_to_alert_reload"] = [%s1_corner_standr_reload_b_2_alert];
|
||||
var_00["B_to_A"] = [%s1_corner_standr_trans_b_2_a,%s1_corner_standr_trans_b_2_a_v2];
|
||||
var_00["lean_to_alert"] = [%s1_cornerstndr_lean_2_alert];
|
||||
var_00["alert_to_lean"] = [%s1_cornerstndr_alert_2_lean];
|
||||
var_00["look"] = %s1_corner_standr_look;
|
||||
var_00["reload"] = [%s1_corner_standr_reload_v1];
|
||||
var_00["grenade_exposed"] = %s1_corner_standr_grenade_a;
|
||||
var_00["grenade_safe"] = %s1_corner_standr_grenade_b;
|
||||
var_00["blind_fire"] = [%s1_corner_standr_blindfire_v1,%s1_corner_standr_blindfire_v2];
|
||||
var_00["alert_to_look"] = %s1_corner_standr_alert_2_look;
|
||||
var_00["look_to_alert"] = %s1_corner_standr_look_2_alert;
|
||||
var_00["look_to_alert_fast"] = %s1_corner_standr_look_2_alert_fast;
|
||||
var_00["look_idle"] = %s1_corner_standr_look_idle;
|
||||
var_00["stance_change"] = %s1_cornercrr_stand_2_alert;
|
||||
var_00["lean_aim_down"] = %s1_cornerstndr_lean_aim_2;
|
||||
var_00["lean_aim_left"] = %s1_cornerstndr_lean_aim_4;
|
||||
var_00["lean_aim_straight"] = %s1_cornerstndr_lean_aim_5;
|
||||
var_00["lean_aim_right"] = %s1_cornerstndr_lean_aim_6;
|
||||
var_00["lean_aim_up"] = %s1_cornerstndr_lean_aim_8;
|
||||
var_00["lean_reload"] = %s1_cornerstndr_lean_reload;
|
||||
var_00["lean_idle"] = [%s1_cornerstndr_lean_idle];
|
||||
var_00["lean_single"] = %s1_cornerstndr_lean_fire;
|
||||
var_00["lean_burst"] = %s1_cornerstndr_lean_autoburst;
|
||||
var_00["lean_fire"] = %s1_cornerstndr_lean_auto;
|
||||
level.archetypes["s1_soldier"]["cover_right_stand"] = var_00;
|
||||
var_00 = [];
|
||||
var_00["alert_idle"] = %s1_cornercrr_alert_idle;
|
||||
var_00["alert_idle_twitch"] = [%s1_cornercrr_alert_twitch_v1,%s1_cornercrr_alert_twitch_v2,%s1_cornercrr_alert_twitch_v3];
|
||||
var_00["alert_idle_flinch"] = [];
|
||||
var_00["alert_to_A"] = [%s1_cornercrr_trans_alert_2_a];
|
||||
var_00["alert_to_B"] = [%s1_cornercrr_trans_alert_2_b];
|
||||
var_00["A_to_alert"] = [%s1_cornercrr_trans_a_2_alert];
|
||||
var_00["A_to_alert_reload"] = [];
|
||||
var_00["A_to_B"] = [%s1_cornercrr_trans_a_2_b];
|
||||
var_00["B_to_alert"] = [%s1_cornercrr_trans_b_2_alert];
|
||||
var_00["B_to_alert_reload"] = [];
|
||||
var_00["B_to_A"] = [%s1_cornercrr_trans_b_2_a];
|
||||
var_00["lean_to_alert"] = [%s1_cornercrr_lean_2_alert];
|
||||
var_00["alert_to_lean"] = [%s1_cornercrr_alert_2_lean];
|
||||
var_00["reload"] = [%s1_cornercrr_reloada,%s1_cornercrr_reloadb];
|
||||
var_00["grenade_exposed"] = %s1_cornercrr_grenadea;
|
||||
var_00["grenade_safe"] = %s1_cornercrr_grenadea;
|
||||
var_00["alert_to_over"] = [%s1_cornercrr_alert_2_over];
|
||||
var_00["over_to_alert"] = [%s1_cornercrr_over_2_alert];
|
||||
var_00["over_to_alert_reload"] = [];
|
||||
var_00["blind_fire"] = [];
|
||||
var_00["rambo90"] = [];
|
||||
var_00["rambo45"] = [];
|
||||
var_00["alert_to_look"] = %s1_cornercrr_alert_2_look;
|
||||
var_00["look_to_alert"] = %s1_cornercrr_look_2_alert;
|
||||
var_00["look_to_alert_fast"] = %s1_cornercrr_look_2_alert_fast;
|
||||
var_00["look_idle"] = %s1_cornercrr_look_idle;
|
||||
var_00["stance_change"] = %s1_cornercrr_alert_2_stand;
|
||||
var_00["lean_aim_down"] = %s1_cornercrr_lean_aim_2;
|
||||
var_00["lean_aim_left"] = %s1_cornercrr_lean_aim_4;
|
||||
var_00["lean_aim_straight"] = %s1_cornercrr_lean_aim_5;
|
||||
var_00["lean_aim_right"] = %s1_cornercrr_lean_aim_6;
|
||||
var_00["lean_aim_up"] = %s1_cornercrr_lean_aim_8;
|
||||
var_00["lean_reload"] = %s1_cornerstndr_lean_reload;
|
||||
var_00["lean_idle"] = [%s1_cornercrr_lean_idle];
|
||||
var_00["lean_single"] = %s1_cornercrr_lean_fire;
|
||||
var_00["lean_fire"] = %s1_cornercrr_lean_auto;
|
||||
level.archetypes["s1_soldier"]["cover_right_crouch"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
init_s1_animset_cover_left()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["alert_idle"] = %s1_corner_standl_alert_idle;
|
||||
var_00["alert_idle_twitch"] = [%s1_corner_standl_alert_twitch01,%s1_corner_standl_alert_twitch02,%s1_corner_standl_alert_twitch03,%s1_corner_standl_alert_twitch04,%s1_corner_standl_alert_twitch05,%s1_corner_standl_alert_twitch06,%s1_corner_standl_alert_twitch07];
|
||||
var_00["alert_idle_flinch"] = [%s1_corner_standl_flinch];
|
||||
var_00["alert_to_C"] = %s1_corner_standl_trans_alert_2_c;
|
||||
var_00["B_to_C"] = %s1_corner_standl_trans_b_2_c;
|
||||
var_00["C_to_alert"] = %s1_corner_standl_trans_c_2_alert;
|
||||
var_00["C_to_B"] = %s1_corner_standl_trans_c_2_b;
|
||||
var_00["alert_to_A"] = [%s1_corner_standl_trans_alert_2_a,%s1_corner_standl_trans_alert_2_a_v2];
|
||||
var_00["alert_to_B"] = [%s1_corner_standl_trans_alert_2_b_v2];
|
||||
var_00["A_to_alert"] = [%s1_corner_standl_trans_a_2_alert_v2];
|
||||
var_00["A_to_alert_reload"] = [];
|
||||
var_00["A_to_B"] = [%s1_corner_standl_trans_a_2_b_v2];
|
||||
var_00["B_to_alert"] = [%s1_corner_standl_trans_b_2_alert_v2];
|
||||
var_00["B_to_alert_reload"] = [%s1_corner_standl_reload_b_2_alert];
|
||||
var_00["B_to_A"] = [%s1_corner_standl_trans_b_2_a_v2];
|
||||
var_00["lean_to_alert"] = [%s1_cornerstndl_lean_2_alert];
|
||||
var_00["alert_to_lean"] = [%s1_cornerstndl_alert_2_lean];
|
||||
var_00["look"] = %s1_corner_standl_look;
|
||||
var_00["reload"] = [%s1_corner_standl_reload_v1];
|
||||
var_00["grenade_exposed"] = %s1_corner_standl_grenade_a;
|
||||
var_00["grenade_safe"] = %s1_corner_standl_grenade_b;
|
||||
var_00["blind_fire"] = [%s1_corner_standl_blindfire_v1,%s1_corner_standl_blindfire_v2];
|
||||
var_00["alert_to_look"] = %s1_corner_standl_alert_2_look;
|
||||
var_00["look_to_alert"] = %s1_corner_standl_look_2_alert;
|
||||
var_00["look_to_alert_fast"] = %s1_corner_standl_look_2_alert_fast_v1;
|
||||
var_00["look_idle"] = %s1_corner_standl_look_idle;
|
||||
var_00["stance_change"] = %s1_cornercrl_stand_2_alert;
|
||||
var_00["lean_aim_down"] = %s1_cornerstndl_lean_aim_2;
|
||||
var_00["lean_aim_left"] = %s1_cornerstndl_lean_aim_4;
|
||||
var_00["lean_aim_straight"] = %s1_cornerstndl_lean_aim_5;
|
||||
var_00["lean_aim_right"] = %s1_cornerstndl_lean_aim_6;
|
||||
var_00["lean_aim_up"] = %s1_cornerstndl_lean_aim_8;
|
||||
var_00["lean_reload"] = %s1_cornerstndl_lean_reload;
|
||||
var_00["lean_idle"] = [%s1_cornerstndl_lean_idle];
|
||||
var_00["lean_single"] = %s1_cornerstndl_lean_fire;
|
||||
var_00["lean_burst"] = %s1_cornerstndl_lean_autoburst;
|
||||
var_00["lean_fire"] = %s1_cornerstndl_lean_auto;
|
||||
level.archetypes["s1_soldier"]["cover_left_stand"] = var_00;
|
||||
var_00 = [];
|
||||
var_00["alert_idle"] = %s1_cornercrl_alert_idle;
|
||||
var_00["alert_idle_twitch"] = [];
|
||||
var_00["alert_idle_flinch"] = [];
|
||||
var_00["alert_to_A"] = [%s1_cornercrl_trans_alert_2_a];
|
||||
var_00["alert_to_B"] = [%s1_cornercrl_trans_alert_2_b];
|
||||
var_00["A_to_alert"] = [%s1_cornercrl_trans_a_2_alert];
|
||||
var_00["A_to_alert_reload"] = [];
|
||||
var_00["A_to_B"] = [%s1_cornercrl_trans_a_2_b];
|
||||
var_00["B_to_alert"] = [%s1_cornercrl_trans_b_2_alert];
|
||||
var_00["B_to_alert_reload"] = [];
|
||||
var_00["B_to_A"] = [%s1_cornercrl_trans_b_2_a];
|
||||
var_00["lean_to_alert"] = [%s1_cornercrl_lean_2_alert];
|
||||
var_00["alert_to_lean"] = [%s1_cornercrl_alert_2_lean];
|
||||
var_00["look"] = %s1_cornercrl_look_fast;
|
||||
var_00["reload"] = [%s1_cornercrl_reloada,%s1_cornercrl_reloadb];
|
||||
var_00["grenade_safe"] = %s1_cornercrl_grenadea;
|
||||
var_00["grenade_exposed"] = %s1_cornercrl_grenadeb;
|
||||
var_00["alert_to_over"] = [%s1_cornercrl_alert_2_over];
|
||||
var_00["over_to_alert"] = [%s1_cornercrl_over_2_alert];
|
||||
var_00["over_to_alert_reload"] = [];
|
||||
var_00["blind_fire"] = [];
|
||||
var_00["rambo90"] = [];
|
||||
var_00["rambo45"] = [];
|
||||
var_00["alert_to_look"] = %s1_cornercrl_alert_2_look;
|
||||
var_00["look_to_alert"] = %s1_cornercrl_look_2_alert;
|
||||
var_00["look_to_alert_fast"] = %s1_cornercrl_look_2_alert;
|
||||
var_00["look_idle"] = %s1_cornercrl_alert_idle;
|
||||
var_00["stance_change"] = %s1_cornercrl_alert_2_stand;
|
||||
var_00["lean_aim_down"] = %s1_cornercrl_lean_aim_2;
|
||||
var_00["lean_aim_left"] = %s1_cornercrl_lean_aim_4;
|
||||
var_00["lean_aim_straight"] = %s1_cornercrl_lean_aim_5;
|
||||
var_00["lean_aim_right"] = %s1_cornercrl_lean_aim_6;
|
||||
var_00["lean_aim_up"] = %s1_cornercrl_lean_aim_8;
|
||||
var_00["lean_idle"] = [%s1_cornercrl_lean_idle];
|
||||
var_00["lean_single"] = %s1_cornercrl_lean_fire;
|
||||
var_00["lean_fire"] = %s1_cornercrl_lean_auto;
|
||||
level.archetypes["s1_soldier"]["cover_left_crouch"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
init_s1_animset_run_n_gun()
|
||||
{
|
||||
anim.initanimset = [];
|
||||
level.initanimset["F"] = %s1_run_n_gun_f;
|
||||
level.initanimset["L"] = %s1_run_n_gun_l;
|
||||
level.initanimset["R"] = %s1_run_n_gun_r;
|
||||
level.initanimset["LB"] = %s1_run_n_gun_l_120;
|
||||
level.initanimset["RB"] = %s1_run_n_gun_r_120;
|
||||
level.initanimset["move_back"] = %s1_combatwalk_b;
|
||||
level.archetypes["s1_soldier"]["run_n_gun"] = level.initanimset;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
init_s1_animset_default_crouch()
|
||||
{
|
||||
anim.initanimset = [];
|
||||
set_s1_animarray_crouch_aim();
|
||||
level.initanimset["fire"] = %s1_exposed_crouch_shoot_auto_v2;
|
||||
level.initanimset["single"] = animscripts\utility::array(%s1_exposed_crouch_shoot_semi1);
|
||||
set_s1_animarray_burst_and_semi_fire_crouch();
|
||||
level.initanimset["reload"] = animscripts\utility::array(%s1_exposed_crouch_reload);
|
||||
level.initanimset["exposed_idle"] = animscripts\utility::array(%s1_exposed_crouch_idle_alert_v1,%s1_exposed_crouch_idle_alert_v2,%s1_exposed_crouch_idle_alert_v3);
|
||||
set_s1_animarray_stance_change();
|
||||
set_s1_animarray_crouching_turns();
|
||||
set_s1_animarray_add_turn_aims_crouch();
|
||||
level.archetypes["s1_soldier"]["default_crouch"] = level.initanimset;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
init_s1_animset_smg_crouch()
|
||||
{
|
||||
anim.initanimset = [];
|
||||
set_s1_animarray_crouch_aim();
|
||||
level.initanimset["fire"] = %s1_exposed_crouch_shoot_auto_v2;
|
||||
level.initanimset["single"] = animscripts\utility::array(%s1_exposed_crouch_shoot_semi1);
|
||||
set_s1_animarray_burst_and_semi_fire_crouch();
|
||||
level.initanimset["reload"] = animscripts\utility::array(%s1_exposed_crouch_reload);
|
||||
level.initanimset["exposed_idle"] = animscripts\utility::array(%s1_exposed_crouch_idle_alert_v1,%s1_exposed_crouch_idle_alert_v2,%s1_exposed_crouch_idle_alert_v3);
|
||||
set_s1_animarray_stance_change_smg();
|
||||
set_s1_animarray_crouching_turns();
|
||||
set_s1_animarray_add_turn_aims_crouch();
|
||||
level.archetypes["s1_soldier"]["smg_crouch"] = level.initanimset;
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
set_s1_animarray_stance_change_smg()
|
||||
{
|
||||
level.initanimset["crouch_2_stand"] = %smg_exposed_crouch_2_stand;
|
||||
level.initanimset["crouch_2_prone"] = %crouch_2_prone;
|
||||
level.initanimset["stand_2_crouch"] = %smg_exposed_stand_2_crouch;
|
||||
level.initanimset["stand_2_prone"] = %stand_2_prone;
|
||||
level.initanimset["prone_2_crouch"] = %prone_2_crouch;
|
||||
level.initanimset["prone_2_stand"] = %prone_2_stand;
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
set_s1_animarray_crouch_aim()
|
||||
{
|
||||
level.initanimset["add_aim_up"] = %s1_exposed_crouch_aim_8;
|
||||
level.initanimset["add_aim_down"] = %s1_exposed_crouch_aim_2;
|
||||
level.initanimset["add_aim_left"] = %s1_exposed_crouch_aim_4;
|
||||
level.initanimset["add_aim_right"] = %s1_exposed_crouch_aim_6;
|
||||
level.initanimset["straight_level"] = %s1_exposed_crouch_aim_5;
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
set_s1_animarray_burst_and_semi_fire_crouch()
|
||||
{
|
||||
level.initanimset["burst2"] = %s1_exposed_crouch_shoot_burst3;
|
||||
level.initanimset["burst3"] = %s1_exposed_crouch_shoot_burst3;
|
||||
level.initanimset["burst4"] = %s1_exposed_crouch_shoot_burst4;
|
||||
level.initanimset["burst5"] = %s1_exposed_crouch_shoot_burst5;
|
||||
level.initanimset["burst6"] = %s1_exposed_crouch_shoot_burst6;
|
||||
level.initanimset["semi2"] = %s1_exposed_crouch_shoot_semi2;
|
||||
level.initanimset["semi3"] = %s1_exposed_crouch_shoot_semi3;
|
||||
level.initanimset["semi4"] = %s1_exposed_crouch_shoot_semi4;
|
||||
level.initanimset["semi5"] = %s1_exposed_crouch_shoot_semi5;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
set_s1_animarray_crouching_turns()
|
||||
{
|
||||
level.initanimset["turn_left_45"] = %s1_exposed_crouch_turn_90_left;
|
||||
level.initanimset["turn_left_90"] = %s1_exposed_crouch_turn_90_left;
|
||||
level.initanimset["turn_left_135"] = %s1_exposed_crouch_turn_180_left;
|
||||
level.initanimset["turn_left_180"] = %s1_exposed_crouch_turn_180_left;
|
||||
level.initanimset["turn_right_45"] = %s1_exposed_crouch_turn_90_right;
|
||||
level.initanimset["turn_right_90"] = %s1_exposed_crouch_turn_90_right;
|
||||
level.initanimset["turn_right_135"] = %s1_exposed_crouch_turn_180_right;
|
||||
level.initanimset["turn_right_180"] = %s1_exposed_crouch_turn_180_right;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
set_s1_animarray_add_turn_aims_crouch()
|
||||
{
|
||||
level.initanimset["add_turn_aim_up"] = %s1_exposed_crouch_turn_aim_8;
|
||||
level.initanimset["add_turn_aim_down"] = %s1_exposed_crouch_turn_aim_2;
|
||||
level.initanimset["add_turn_aim_left"] = %s1_exposed_crouch_turn_aim_4;
|
||||
level.initanimset["add_turn_aim_right"] = %s1_exposed_crouch_turn_aim_6;
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
init_s1_animset_cqb_stand()
|
||||
{
|
||||
anim.initanimset = [];
|
||||
level.initanimset["add_aim_up"] = %s1_exposed_aim_8;
|
||||
level.initanimset["add_aim_down"] = %s1_exposed_aim_2;
|
||||
level.initanimset["add_aim_left"] = %s1_exposed_aim_4;
|
||||
level.initanimset["add_aim_right"] = %s1_exposed_aim_6;
|
||||
level.initanimset["straight_level"] = %s1_exposed_aim_5;
|
||||
level.initanimset["fire"] = %s1_exposed_shoot_auto_v2;
|
||||
level.initanimset["single"] = animscripts\utility::array(%s1_exposed_shoot_semi1);
|
||||
set_s1_animarray_burst_and_semi_fire_stand();
|
||||
level.initanimset["exposed_idle"] = [%s1_exposed_idle_alert_v5,%s1_exposed_idle_alert_v4,%s1_exposed_idle_alert_v1,%s1_exposed_idle_alert_v2,%s1_exposed_idle_alert_v3];
|
||||
level.initanimset["reload"] = [%s1_exposed_reload,%s1_exposed_reloadc];
|
||||
level.initanimset["reload_crouchhide"] = animscripts\utility::array(%s1_exposed_reloadb);
|
||||
set_s1_animarray_stance_change();
|
||||
set_s1_animarray_standing_turns();
|
||||
set_s1_animarray_add_turn_aims_stand();
|
||||
level.archetypes["s1_soldier"]["cqb_stand"] = level.initanimset;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
init_s1_animset_run_move()
|
||||
{
|
||||
anim.initanimset = [];
|
||||
level.initanimset["sprint"] = %s1_sprint1_loop;
|
||||
level.initanimset["sprint_short"] = %s1_sprint1_loop;
|
||||
level.initanimset["straight"] = %s1_run_lowready_f;
|
||||
level.initanimset["move_f"] = %s1_combatwalk_f;
|
||||
level.initanimset["move_l"] = %s1_combatwalk_l;
|
||||
level.initanimset["move_r"] = %s1_combatwalk_r;
|
||||
level.initanimset["move_b"] = %s1_combatwalk_b;
|
||||
level.archetypes["s1_soldier"]["run"] = level.initanimset;
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
init_s1_animset_walk_move()
|
||||
{
|
||||
anim.initanimset = [];
|
||||
level.initanimset["sprint"] = %s1_sprint1_loop;
|
||||
level.initanimset["sprint_short"] = %s1_run_lowready_f;
|
||||
level.initanimset["straight"] = %s1_combatwalk_f;
|
||||
level.initanimset["move_f"] = %s1_combatwalk_f;
|
||||
level.initanimset["move_l"] = %s1_combatwalk_l;
|
||||
level.initanimset["move_r"] = %s1_combatwalk_r;
|
||||
level.initanimset["move_b"] = %s1_combatwalk_b;
|
||||
level.initanimset["aim_2"] = %s1_combatwalk_f_aim2;
|
||||
level.initanimset["aim_4"] = %s1_combatwalk_f_aim4;
|
||||
level.initanimset["aim_6"] = %s1_combatwalk_f_aim6;
|
||||
level.initanimset["aim_8"] = %s1_combatwalk_f_aim8;
|
||||
level.archetypes["s1_soldier"]["walk"] = level.initanimset;
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
set_s1_animarray_add_turn_aims_stand()
|
||||
{
|
||||
level.initanimset["add_turn_aim_up"] = %exposed_turn_aim_8;
|
||||
level.initanimset["add_turn_aim_down"] = %exposed_turn_aim_2;
|
||||
level.initanimset["add_turn_aim_left"] = %exposed_turn_aim_4;
|
||||
level.initanimset["add_turn_aim_right"] = %exposed_turn_aim_6;
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
init_s1_animset_death()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["running_forward"] = [%s1_run_death_facedown,%s1_run_death_roll,%s1_run_death_fallonback,%run_death_flop];
|
||||
var_00["running_forward_f"] = [%s1_run_death_fallonback];
|
||||
var_00["cover_stand"] = [%s1_coverstand_death_left,%s1_coverstand_death_right];
|
||||
var_00["dying_crawl_crouch"] = [%s1_dying_back_death_v2,%s1_dying_back_death_v3,%s1_dying_back_death_v4];
|
||||
var_00["stand_lower_body"] = [%s1_exposed_death_groin,%s1_stand_death_leg];
|
||||
var_00["stand_lower_body_extended"] = [%s1_exposed_death_groin,%stand_death_guts];
|
||||
var_00["stand_head"] = [%s1_exposed_death_headtwist,%s1_exposed_death_flop];
|
||||
var_00["stand_neck"] = [%s1_exposed_death_neckgrab];
|
||||
var_00["stand_back"] = [%s1_exposed_death_falltoknees_02];
|
||||
var_00["stand_default"] = [%s1_exposed_death_02,%s1_exposed_death_nerve];
|
||||
var_00["stand_default_firing"] = [%s1_exposed_death_firing_02,%s1_exposed_death_firing];
|
||||
var_00["stand_backup_default"] = %s1_exposed_death;
|
||||
level.archetypes["s1_soldier"]["death"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
init_s1_animset_combat()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["surprise_stop"] = %s1_surprise_stop_v1;
|
||||
var_00["trans_to_combat"] = %s1_casual_stand_idle_trans_out;
|
||||
var_00["trans_from_crouch_r"] = %s1_cornercrr_2_exposed_crouch;
|
||||
var_00["trans_from_crouch_l"] = %s1_cornercrl_2_exposed_crouch;
|
||||
var_00["trans_to_crouch_l"] = %s1_exposed_crouch_2_cornercrl;
|
||||
var_00["trans_to_crouch_r"] = %s1_exposed_crouch_2_cornercrr;
|
||||
level.archetypes["s1_soldier"]["combat"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
init_s1_animset_pain()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["run_long"] = [%s1_run_pain_leg,%s1_run_pain_shoulder,%s1_run_pain_stomach_stumble,%s1_run_pain_head,%s1_run_pain_fallonknee_02,%s1_run_pain_stomach,%s1_run_pain_stumble,%s1_run_pain_stomach_fast,%s1_run_pain_leg_fast,%s1_run_pain_fall];
|
||||
var_00["run_medium"] = [%s1_run_pain_fallonknee_02,%s1_run_pain_stomach,%s1_run_pain_stumble,%s1_run_pain_stomach_fast,%s1_run_pain_leg_fast,%s1_run_pain_fall];
|
||||
var_00["run_short"] = [%s1_run_pain_fallonknee,%s1_run_pain_fallonknee_03];
|
||||
var_00["cover_left_stand"] = [%s1_corner_standl_painb,%s1_corner_standl_painc,%s1_corner_standl_paind,%s1_corner_standl_paine];
|
||||
var_00["cover_right_crouch"] = [%s1_cornercrr_alert_paina,%s1_cornercrr_alert_painb,%s1_cornercrr_alert_painc];
|
||||
var_00["cover_right_stand_B"] = %s1_corner_standr_pain_b_2_alert;
|
||||
var_00["cover_left_stand_A"] = %s1_corner_standl_pain_a_2_alert;
|
||||
var_00["cover_left_stand_B"] = %s1_corner_standl_pain_b_2_alert;
|
||||
level.archetypes["s1_soldier"]["pain"] = var_00;
|
||||
var_00 = [];
|
||||
var_00["prone_transition"] = [%s1_dying_crawl_2_back];
|
||||
var_00["stand_transition"] = [%s1_dying_stand_2_back_v1,%s1_dying_stand_2_back_v2];
|
||||
var_00["crouch_transition"] = [%s1_dying_crouch_2_back];
|
||||
var_00["default_transition"] = %s1_dying_crawl_2_back;
|
||||
var_00["stand_2_crawl"] = [%s1_dying_stand_2_crawl_v1,%s1_dying_stand_2_crawl_v2,%s1_dying_stand_2_crawl_v3];
|
||||
var_00["crouch_2_crawl"] = [%s1_dying_crouch_2_crawl];
|
||||
var_00["crawl"] = %s1_dying_crawl;
|
||||
var_00["death"] = [%s1_dying_crawl_death_v1,%s1_dying_crawl_death_v2];
|
||||
var_00["back_idle"] = %s1_dying_back_idle;
|
||||
var_00["back_crawl"] = %s1_dying_crawl_back;
|
||||
var_00["back_fire"] = %s1_dying_back_fire;
|
||||
var_00["back_death"] = [%s1_dying_back_death_v1];
|
||||
var_00["aim_4"] = %s1_dying_back_aim_4;
|
||||
var_00["aim_6"] = %s1_dying_back_aim_6;
|
||||
level.archetypes["s1_soldier"]["crawl_death"] = var_00;
|
||||
var_00 = [];
|
||||
var_00["premature_death"] = [%s1_dying_back_death_v1,%s1_dying_back_death_v2,%s1_dying_back_death_v3,%s1_dying_back_death_v4];
|
||||
level.archetypes["s1_soldier"]["corner_grenade_death"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
init_s1_animset_default_move()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["fire"] = %s1_exposed_shoot_auto_v3;
|
||||
var_00["single"] = [%s1_exposed_shoot_semi1];
|
||||
var_00["single_shotgun"] = [%shotgun_stand_fire_1a,%shotgun_stand_fire_1b];
|
||||
var_00["burst2"] = %s1_exposed_shoot_burst3;
|
||||
var_00["burst3"] = %s1_exposed_shoot_burst3;
|
||||
var_00["burst4"] = %s1_exposed_shoot_burst4;
|
||||
var_00["burst5"] = %s1_exposed_shoot_burst5;
|
||||
var_00["burst6"] = %s1_exposed_shoot_burst6;
|
||||
var_00["semi2"] = %s1_exposed_shoot_semi2;
|
||||
var_00["semi3"] = %s1_exposed_shoot_semi3;
|
||||
var_00["semi4"] = %s1_exposed_shoot_semi4;
|
||||
var_00["semi5"] = %s1_exposed_shoot_semi5;
|
||||
level.archetypes["s1_soldier"]["shoot_while_moving"] = var_00;
|
||||
var_00 = [];
|
||||
var_00["shuffle_start_from_cover_left"] = %s1_cornercrl_alert_2_shuffle;
|
||||
var_00["shuffle_start_from_cover_right"] = %s1_cornercrr_alert_2_shuffle;
|
||||
var_00["shuffle_start_left"] = %s1_covercrouch_hide_2_shufflel;
|
||||
var_00["shuffle_start_right"] = %s1_covercrouch_hide_2_shuffler;
|
||||
var_00["shuffle_to_cover_left"] = %s1_covercrouch_shufflel;
|
||||
var_00["shuffle_end_to_cover_left"] = %s1_cornercrl_shuffle_2_alert;
|
||||
var_00["shuffle_to_cover_right"] = %s1_covercrouch_shuffler;
|
||||
var_00["shuffle_end_to_cover_right"] = %s1_cornercrr_shuffle_2_alert;
|
||||
var_00["shuffle_start_left_stand_to_stand"] = %s1_coverstand_hide_2_shufflel;
|
||||
var_00["shuffle_left_stand_to_stand"] = %s1_coverstand_shufflel;
|
||||
var_00["shuffle_end_left_stand_to_stand"] = %s1_coverstand_shufflel_2_hide;
|
||||
var_00["shuffle_start_right_stand_to_stand"] = %s1_coverstand_hide_2_shuffler;
|
||||
var_00["shuffle_right_stand_to_stand"] = %s1_coverstand_shuffler;
|
||||
var_00["shuffle_end_right_stand_to_stand"] = %s1_coverstand_shuffler_2_hide;
|
||||
var_00["shuffle_to_left_crouch"] = %s1_covercrouch_shufflel;
|
||||
var_00["shuffle_end_to_left_stand"] = %s1_coverstand_shufflel_2_hide;
|
||||
var_00["shuffle_end_to_left_crouch"] = %s1_covercrouch_shufflel_2_hide;
|
||||
var_00["shuffle_to_right_crouch"] = %s1_covercrouch_shuffler;
|
||||
var_00["shuffle_end_to_right_stand"] = %s1_coverstand_shuffler_2_hide;
|
||||
var_00["shuffle_end_to_right_crouch"] = %s1_covercrouch_shuffler_2_hide;
|
||||
level.archetypes["s1_soldier"]["shuffle"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
init_s1_animset_idle()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["stand"][0] = [%s1_casual_stand_idle,%s1_casual_stand_idle_twitch,%s1_casual_stand_idle_twitchb];
|
||||
var_00["stand"][1] = [%s1_casual_stand_idle_twitch,%s1_casual_stand_idle_twitch,%s1_casual_stand_v2_twitch_talk,%s1_casual_stand_v2_twitch_talk];
|
||||
var_00["stand_cqb"][0] = [%cqb_stand_idle,%cqb_stand_twitch];
|
||||
var_00["crouch"][0] = [%casual_crouch_idle];
|
||||
level.archetypes["s1_soldier"]["idle"] = var_00;
|
||||
var_00 = [];
|
||||
var_00["stand"][0] = [2,1,1];
|
||||
var_00["stand"][1] = [10,0,0,4];
|
||||
var_00["stand_cqb"][0] = [2,1];
|
||||
var_00["crouch"][0] = [6];
|
||||
level.archetypes["s1_soldier"]["idle_weights"] = var_00;
|
||||
var_00 = [];
|
||||
var_00["stand"] = %s1_casual_stand_idle_trans_in;
|
||||
var_00["crouch"] = %s1_casual_crouch_idle_in;
|
||||
var_00["stand_smg"] = %smg_casual_stand_idle_trans_in;
|
||||
level.archetypes["s1_soldier"]["idle_transitions"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
init_s1_moving_turn_animations()
|
||||
{
|
||||
anim.initanimset = [];
|
||||
level.initanimset[0] = %s1_run_turn_180;
|
||||
level.initanimset[1] = %s1_run_turn_l135;
|
||||
level.initanimset[2] = %s1_run_turn_l90;
|
||||
level.initanimset[3] = %s1_run_turn_l45;
|
||||
level.initanimset[5] = %s1_run_turn_r45;
|
||||
level.initanimset[6] = %s1_run_turn_r90;
|
||||
level.initanimset[7] = %s1_run_turn_r135;
|
||||
level.initanimset[8] = %s1_run_turn_180;
|
||||
level.archetypes["s1_soldier"]["run_turn"] = level.initanimset;
|
||||
anim.initanimset = [];
|
||||
level.initanimset[0] = %s1_run_turn_180;
|
||||
level.initanimset[1] = %s1_run_turn_l135;
|
||||
level.initanimset[2] = %s1_run_turn_l90;
|
||||
level.initanimset[3] = %s1_run_turn_l45;
|
||||
level.initanimset[5] = %s1_run_turn_r45;
|
||||
level.initanimset[6] = %s1_run_turn_r90;
|
||||
level.initanimset[7] = %s1_run_turn_r135;
|
||||
level.initanimset[8] = %s1_run_turn_180;
|
||||
level.archetypes["s1_soldier"]["walk_turn"] = level.initanimset;
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
set_s1_animarray_standing_turns()
|
||||
{
|
||||
level.initanimset["turn_left_45"] = %s1_exposed_tracking_turn45l;
|
||||
level.initanimset["turn_left_90"] = %s1_exposed_tracking_turn90l;
|
||||
level.initanimset["turn_left_135"] = %s1_exposed_tracking_turn135l;
|
||||
level.initanimset["turn_left_180"] = %s1_exposed_tracking_turn180l;
|
||||
level.initanimset["turn_right_45"] = %s1_exposed_tracking_turn45r;
|
||||
level.initanimset["turn_right_90"] = %s1_exposed_tracking_turn90r;
|
||||
level.initanimset["turn_right_135"] = %s1_exposed_tracking_turn135r;
|
||||
level.initanimset["turn_right_180"] = %s1_exposed_tracking_turn180r;
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
init_s1_coverstand_turn_animations()
|
||||
{
|
||||
anim.initanimset = [];
|
||||
level.initanimset["turn_left_45"] = %s1_coverstand_tracking_turn45l;
|
||||
level.initanimset["turn_left_90"] = %s1_coverstand_tracking_turn90l;
|
||||
level.initanimset["turn_left_135"] = %s1_coverstand_tracking_turn135l;
|
||||
level.initanimset["turn_left_180"] = %s1_coverstand_tracking_turn180l;
|
||||
level.initanimset["turn_right_45"] = %s1_coverstand_tracking_turn45r;
|
||||
level.initanimset["turn_right_90"] = %s1_coverstand_tracking_turn90r;
|
||||
level.initanimset["turn_right_135"] = %s1_coverstand_tracking_turn135r;
|
||||
level.initanimset["turn_right_180"] = %s1_coverstand_tracking_turn180r;
|
||||
level.archetypes["s1_soldier"]["coverstand_turn"] = level.initanimset;
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
init_s1_exposed_turn_animations()
|
||||
{
|
||||
anim.initanimset = [];
|
||||
level.initanimset["turn_left_45"] = %s1_exposed_tracking_turn45l;
|
||||
level.initanimset["turn_left_90"] = %s1_exposed_tracking_turn90l;
|
||||
level.initanimset["turn_left_135"] = %s1_exposed_tracking_turn135l;
|
||||
level.initanimset["turn_left_180"] = %s1_exposed_tracking_turn180l;
|
||||
level.initanimset["turn_right_45"] = %s1_exposed_tracking_turn45r;
|
||||
level.initanimset["turn_right_90"] = %s1_exposed_tracking_turn90r;
|
||||
level.initanimset["turn_right_135"] = %s1_exposed_tracking_turn135r;
|
||||
level.initanimset["turn_right_180"] = %s1_exposed_tracking_turn180r;
|
||||
level.archetypes["s1_soldier"]["exposed_turn"] = level.initanimset;
|
||||
anim.initanimset = [];
|
||||
level.initanimset["turn_left_45"] = %s1_exposed_crouch_turn_90_left;
|
||||
level.initanimset["turn_left_90"] = %s1_exposed_crouch_turn_90_left;
|
||||
level.initanimset["turn_left_135"] = %s1_exposed_crouch_turn_180_left;
|
||||
level.initanimset["turn_left_180"] = %s1_exposed_crouch_turn_180_left;
|
||||
level.initanimset["turn_right_45"] = %s1_exposed_crouch_turn_90_right;
|
||||
level.initanimset["turn_right_90"] = %s1_exposed_crouch_turn_90_right;
|
||||
level.initanimset["turn_right_135"] = %s1_exposed_crouch_turn_180_right;
|
||||
level.initanimset["turn_right_180"] = %s1_exposed_crouch_turn_180_right;
|
||||
level.archetypes["s1_soldier"]["exposed_turn_crouch"] = level.initanimset;
|
||||
}
|
277
AW/PC/animscripts/saw/common.gsc
Normal file
277
AW/PC/animscripts/saw/common.gsc
Normal file
@ -0,0 +1,277 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: saw\common.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 13
|
||||
* Decompile Time: 165 ms
|
||||
* Timestamp: 4/22/2024 1:58:54 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("saw");
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.a.special = "saw";
|
||||
if(isdefined(param_00.script_delay_min))
|
||||
{
|
||||
var_01 = param_00.script_delay_min;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = maps\_mgturret::burst_fire_settings("delay");
|
||||
}
|
||||
|
||||
if(isdefined(param_00.script_delay_max))
|
||||
{
|
||||
var_02 = param_00.script_delay_max - var_01;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = maps\_mgturret::burst_fire_settings("delay_range");
|
||||
}
|
||||
|
||||
if(isdefined(param_00.script_burst_min))
|
||||
{
|
||||
var_03 = param_00.script_burst_min;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = maps\_mgturret::burst_fire_settings("burst");
|
||||
}
|
||||
|
||||
if(isdefined(param_00.script_burst_max))
|
||||
{
|
||||
var_04 = param_00.script_burst_max - var_03;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = maps\_mgturret::burst_fire_settings("burst_range");
|
||||
}
|
||||
|
||||
var_05 = gettime();
|
||||
var_06 = "start";
|
||||
animscripts\shared::placeweaponon(self.weapon,"none");
|
||||
param_00 show();
|
||||
if(isdefined(param_00.aiowner))
|
||||
{
|
||||
self.a.postscriptfunc = ::postscriptfunc;
|
||||
self.a.usingturret = param_00;
|
||||
param_00 notify("being_used");
|
||||
thread stopusingturretwhennodelost();
|
||||
}
|
||||
else
|
||||
{
|
||||
self.a.postscriptfunc = ::preplacedpostscriptfunc;
|
||||
}
|
||||
|
||||
param_00.dofiring = 0;
|
||||
thread firecontroller(param_00);
|
||||
self setturretanim(self.primaryturretanim);
|
||||
self setanimknobrestart(self.primaryturretanim,1,0.2,1);
|
||||
self setanimknoblimitedrestart(self.additiveturretidle);
|
||||
self setanimknoblimitedrestart(self.additiveturretfire);
|
||||
param_00 setanimknoblimitedrestart(param_00.additiveturretidle);
|
||||
param_00 setanimknoblimitedrestart(param_00.additiveturretfire);
|
||||
param_00 endon("death");
|
||||
for(;;)
|
||||
{
|
||||
if(param_00.dofiring)
|
||||
{
|
||||
thread doshoot(param_00);
|
||||
waittimeoruntilturretstatechange(randomfloatrange(var_03,var_03 + var_04),param_00);
|
||||
param_00 notify("turretstatechange");
|
||||
if(param_00.dofiring)
|
||||
{
|
||||
thread doaim(param_00);
|
||||
wait(randomfloatrange(var_01,var_01 + var_02));
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
thread doaim(param_00);
|
||||
param_00 waittill("turretstatechange");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
waittimeoruntilturretstatechange(param_00,param_01)
|
||||
{
|
||||
param_01 endon("turretstatechange");
|
||||
wait(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
firecontroller(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
var_01 = cos(15);
|
||||
for(;;)
|
||||
{
|
||||
while(isdefined(self.enemy))
|
||||
{
|
||||
var_02 = self.enemy.origin;
|
||||
var_03 = param_00 gettagangles("tag_aim");
|
||||
if(common_scripts\utility::within_fov(param_00.origin,var_03,var_02,var_01) || distancesquared(param_00.origin,var_02) < 40000)
|
||||
{
|
||||
if(!param_00.dofiring)
|
||||
{
|
||||
param_00.dofiring = 1;
|
||||
param_00 notify("turretstatechange");
|
||||
}
|
||||
}
|
||||
else if(param_00.dofiring)
|
||||
{
|
||||
param_00.dofiring = 0;
|
||||
param_00 notify("turretstatechange");
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
|
||||
if(param_00.dofiring)
|
||||
{
|
||||
param_00.dofiring = 0;
|
||||
param_00 notify("turretstatechange");
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
turrettimer(param_00,param_01)
|
||||
{
|
||||
if(param_00 <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self endon("killanimscript");
|
||||
param_01 endon("turretstatechange");
|
||||
wait(param_00);
|
||||
param_01 notify("turretstatechange");
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
stopusingturretwhennodelost()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
for(;;)
|
||||
{
|
||||
if(!isdefined(self.node) || distancesquared(self.origin,self.node.origin) > 4096)
|
||||
{
|
||||
self stopuseturret();
|
||||
}
|
||||
|
||||
wait(0.25);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
postscriptfunc(param_00)
|
||||
{
|
||||
if(param_00 == "pain")
|
||||
{
|
||||
if(isdefined(self.node) && distancesquared(self.origin,self.node.origin) < 4096)
|
||||
{
|
||||
self.a.usingturret hide();
|
||||
animscripts\shared::placeweaponon(self.weapon,"right");
|
||||
self.a.postscriptfunc = ::postpainfunc;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
self stopuseturret();
|
||||
}
|
||||
}
|
||||
|
||||
if(param_00 == "saw")
|
||||
{
|
||||
var_01 = self getturret();
|
||||
return;
|
||||
}
|
||||
|
||||
self.a.usingturret delete();
|
||||
self.a.usingturret = undefined;
|
||||
animscripts\shared::placeweaponon(self.weapon,"right");
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
postpainfunc(param_00)
|
||||
{
|
||||
if(!isdefined(self.node) || distancesquared(self.origin,self.node.origin) > 4096)
|
||||
{
|
||||
self stopuseturret();
|
||||
self.a.usingturret delete();
|
||||
self.a.usingturret = undefined;
|
||||
if(isdefined(self.weapon) && self.weapon != "none")
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.weapon,"right");
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00 != "saw")
|
||||
{
|
||||
self.a.usingturret delete();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
preplacedpostscriptfunc(param_00)
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.weapon,"right");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
doshoot(param_00)
|
||||
{
|
||||
self setanim(%additive_saw_idle,0,0.1);
|
||||
self setanim(%additive_saw_fire,1,0.1);
|
||||
param_00 turretdoshootanims();
|
||||
turretdoshoot(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
doaim(param_00)
|
||||
{
|
||||
self setanim(%additive_saw_idle,1,0.1);
|
||||
self setanim(%additive_saw_fire,0,0.1);
|
||||
param_00 turretdoaimanims();
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
turretdoshoot(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
param_00 endon("turretstatechange");
|
||||
for(;;)
|
||||
{
|
||||
param_00 shootturret();
|
||||
wait(0.1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
turretdoshootanims()
|
||||
{
|
||||
self setanim(%additive_saw_idle,0,0.1);
|
||||
self setanim(%additive_saw_fire,1,0.1);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
turretdoaimanims()
|
||||
{
|
||||
self setanim(%additive_saw_idle,1,0.1);
|
||||
self setanim(%additive_saw_fire,0,0.1);
|
||||
}
|
34
AW/PC/animscripts/saw/stand.gsc
Normal file
34
AW/PC/animscripts/saw/stand.gsc
Normal file
@ -0,0 +1,34 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: saw\stand.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 32 ms
|
||||
* Timestamp: 4/22/2024 1:58:55 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self.desired_anim_pose = "stand";
|
||||
animscripts\utility::updateanimpose();
|
||||
self.a.movement = "stop";
|
||||
var_00 = self getturret();
|
||||
var_00 thread turretinit(self);
|
||||
self.primaryturretanim = %standsawgunner_aim;
|
||||
self.additiveturretidle = %saw_gunner_idle;
|
||||
self.additiveturretfire = %saw_gunner_firing_add;
|
||||
thread animscripts\saw\common::main(var_00);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
turretinit(param_00)
|
||||
{
|
||||
self useanimtree(#animtree);
|
||||
self.additiveturretidle = %saw_gunner_idle_mg;
|
||||
self.additiveturretfire = %saw_gunner_firing_mg_add;
|
||||
self endon("death");
|
||||
param_00 waittill("killanimscript");
|
||||
self stopuseanimtree();
|
||||
}
|
63
AW/PC/animscripts/scripted.gsc
Normal file
63
AW/PC/animscripts/scripted.gsc
Normal file
@ -0,0 +1,63 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: scripted.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 42 ms
|
||||
* Timestamp: 4/22/2024 2:00:50 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self endon("death");
|
||||
self notify("killanimscript");
|
||||
self notify("clearSuppressionAttack");
|
||||
self.a.suppressingenemy = 0;
|
||||
self.codescripted["root"] = %body;
|
||||
self endon("end_sequence");
|
||||
self startscriptedanim(self.codescripted["notifyName"],self.codescripted["origin"],self.codescripted["angles"],self.codescripted["anim"],self.codescripted["animMode"],self.codescripted["root"],self.codescripted["goalTime"]);
|
||||
self.codescripted = undefined;
|
||||
if(isdefined(self.scripted_dialogue) || isdefined(self.facial_animation))
|
||||
{
|
||||
animscripts\face::sayspecificdialogue(self.facial_animation,self.scripted_dialogue,0.9,"scripted_anim_facedone");
|
||||
self.facial_animation = undefined;
|
||||
self.scripted_dialogue = undefined;
|
||||
}
|
||||
|
||||
if(isdefined(self.deathstring_passed))
|
||||
{
|
||||
self.deathstring = self.deathstring_passed;
|
||||
}
|
||||
|
||||
self waittill("killanimscript");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
init(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
||||
{
|
||||
self.codescripted["notifyName"] = param_00;
|
||||
self.codescripted["origin"] = param_01;
|
||||
self.codescripted["angles"] = param_02;
|
||||
self.codescripted["anim"] = param_03;
|
||||
if(isdefined(param_04))
|
||||
{
|
||||
self.codescripted["animMode"] = param_04;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.codescripted["animMode"] = "normal";
|
||||
}
|
||||
|
||||
if(isdefined(param_05))
|
||||
{
|
||||
self.codescripted["root"] = param_05;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.codescripted["root"] = %body;
|
||||
}
|
||||
|
||||
self.codescripted["goalTime"] = param_06;
|
||||
}
|
977
AW/PC/animscripts/setposemovement.gsc
Normal file
977
AW/PC/animscripts/setposemovement.gsc
Normal file
@ -0,0 +1,977 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: setposemovement.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 55
|
||||
* Decompile Time: 786 ms
|
||||
* Timestamp: 4/22/2024 2:00:53 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
setposemovement(param_00,param_01)
|
||||
{
|
||||
if(param_00 == "")
|
||||
{
|
||||
if(self.a.pose == "prone" && param_01 == "walk" || param_01 == "run")
|
||||
{
|
||||
param_00 = "crouch";
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 = self.a.pose;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(param_01) || param_01 == "")
|
||||
{
|
||||
param_01 = self.a.movement;
|
||||
}
|
||||
|
||||
[[ level.setposemovementfnarray[param_00][param_01] ]]();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
initposemovementfunctions()
|
||||
{
|
||||
level.setposemovementfnarray["stand"]["stop"] = ::standstop_begin;
|
||||
level.setposemovementfnarray["stand"]["walk"] = ::standwalk_begin;
|
||||
level.setposemovementfnarray["stand"]["run"] = ::standrun_begin;
|
||||
level.setposemovementfnarray["crouch"]["stop"] = ::crouchstop_begin;
|
||||
level.setposemovementfnarray["crouch"]["walk"] = ::crouchwalk_begin;
|
||||
level.setposemovementfnarray["crouch"]["run"] = ::crouchrun_begin;
|
||||
level.setposemovementfnarray["prone"]["stop"] = ::pronestop_begin;
|
||||
level.setposemovementfnarray["prone"]["walk"] = ::pronewalk_begin;
|
||||
level.setposemovementfnarray["prone"]["run"] = ::pronerun_begin;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
standstop_begin()
|
||||
{
|
||||
switch(self.a.pose)
|
||||
{
|
||||
case "stand":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
return 0;
|
||||
|
||||
case "walk":
|
||||
standwalktostand();
|
||||
break;
|
||||
|
||||
default:
|
||||
standruntostand();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case "crouch":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
crouchtostand();
|
||||
break;
|
||||
|
||||
case "walk":
|
||||
crouchwalktostand();
|
||||
break;
|
||||
|
||||
default:
|
||||
crouchruntostand();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
pronetostand();
|
||||
break;
|
||||
|
||||
default:
|
||||
pronetostand();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
standwalk_begin()
|
||||
{
|
||||
switch(self.a.pose)
|
||||
{
|
||||
case "stand":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
blendintostandwalk();
|
||||
break;
|
||||
|
||||
case "walk":
|
||||
return 0;
|
||||
|
||||
default:
|
||||
blendintostandwalk();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case "crouch":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
crouchtostandwalk();
|
||||
break;
|
||||
|
||||
case "walk":
|
||||
blendintostandwalk();
|
||||
break;
|
||||
|
||||
default:
|
||||
blendintostandwalk();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
pronetostandwalk();
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
standrun_begin()
|
||||
{
|
||||
switch(self.a.pose)
|
||||
{
|
||||
case "stand":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "walk":
|
||||
case "stop":
|
||||
return blendintostandrun();
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case "crouch":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
return crouchtostandrun();
|
||||
|
||||
default:
|
||||
return blendintostandrun();
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
pronetostandrun();
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
crouchstop_begin()
|
||||
{
|
||||
switch(self.a.pose)
|
||||
{
|
||||
case "stand":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
standtocrouch();
|
||||
break;
|
||||
|
||||
case "walk":
|
||||
standwalktocrouch();
|
||||
break;
|
||||
|
||||
case "run":
|
||||
standruntocrouch();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case "crouch":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
break;
|
||||
|
||||
case "walk":
|
||||
crouchwalktocrouch();
|
||||
break;
|
||||
|
||||
case "run":
|
||||
crouchruntocrouch();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case "prone":
|
||||
pronetocrouch();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
crouchwalk_begin()
|
||||
{
|
||||
switch(self.a.pose)
|
||||
{
|
||||
case "stand":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
blendintocrouchwalk();
|
||||
break;
|
||||
|
||||
case "walk":
|
||||
blendintocrouchwalk();
|
||||
break;
|
||||
|
||||
default:
|
||||
blendintocrouchwalk();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case "crouch":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
crouchtocrouchwalk();
|
||||
break;
|
||||
|
||||
case "walk":
|
||||
return 0;
|
||||
|
||||
default:
|
||||
blendintocrouchwalk();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
pronetocrouchwalk();
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
crouchrun_begin()
|
||||
{
|
||||
switch(self.a.pose)
|
||||
{
|
||||
case "stand":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
blendintocrouchrun();
|
||||
break;
|
||||
|
||||
default:
|
||||
blendintocrouchrun();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case "crouch":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
crouchtocrouchrun();
|
||||
break;
|
||||
|
||||
case "walk":
|
||||
blendintocrouchrun();
|
||||
break;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
pronetocrouchrun();
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
pronestop_begin()
|
||||
{
|
||||
switch(self.a.pose)
|
||||
{
|
||||
case "stand":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
standtoprone();
|
||||
break;
|
||||
|
||||
case "walk":
|
||||
standtoprone();
|
||||
break;
|
||||
|
||||
case "run":
|
||||
crouchruntoprone();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case "crouch":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
crouchtoprone();
|
||||
break;
|
||||
|
||||
case "walk":
|
||||
crouchtoprone();
|
||||
break;
|
||||
|
||||
case "run":
|
||||
crouchruntoprone();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case "prone":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
break;
|
||||
|
||||
case "walk":
|
||||
case "run":
|
||||
pronecrawltoprone();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
pronewalk_begin()
|
||||
{
|
||||
switch(self.a.pose)
|
||||
{
|
||||
case "stand":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
standtopronewalk();
|
||||
break;
|
||||
|
||||
default:
|
||||
crouchruntopronewalk();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case "crouch":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
crouchtopronewalk();
|
||||
break;
|
||||
|
||||
default:
|
||||
crouchruntopronewalk();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
pronetopronerun();
|
||||
break;
|
||||
|
||||
default:
|
||||
self.a.movement = "walk";
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
pronerun_begin()
|
||||
{
|
||||
switch(self.a.pose)
|
||||
{
|
||||
case "stand":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
standtopronerun();
|
||||
break;
|
||||
|
||||
default:
|
||||
crouchruntopronerun();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case "crouch":
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
crouchtopronerun();
|
||||
break;
|
||||
|
||||
default:
|
||||
crouchruntopronerun();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
switch(self.a.movement)
|
||||
{
|
||||
case "stop":
|
||||
pronetopronerun();
|
||||
break;
|
||||
|
||||
default:
|
||||
self.a.movement = "run";
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
playblendtransition(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
var_04 = gettime() + param_01 * 1000;
|
||||
if(isarray(param_00))
|
||||
{
|
||||
param_00 = param_00[randomint(param_00.size)];
|
||||
}
|
||||
|
||||
self setflaggedanimknoball("blendTransition",param_00,%body,1,param_01,1);
|
||||
animscripts\notetracks::donotetracksfortime(param_01 / 2,"blendTransition");
|
||||
self.a.pose = param_02;
|
||||
self.a.movement = param_03;
|
||||
var_05 = var_04 - gettime() / 1000;
|
||||
if(var_05 < 0.05)
|
||||
{
|
||||
var_05 = 0.05;
|
||||
}
|
||||
|
||||
animscripts\notetracks::donotetracksfortime(var_05,"blendTransition");
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
playtransitionstandwalk(param_00,param_01)
|
||||
{
|
||||
playtransitionanimation(param_00,"stand","walk",param_01);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
standwalktostand()
|
||||
{
|
||||
self.a.movement = "stop";
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
standwalktocrouch()
|
||||
{
|
||||
standwalktostand();
|
||||
standtocrouch();
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
standruntostand()
|
||||
{
|
||||
self.a.movement = "stop";
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
standruntocrouch()
|
||||
{
|
||||
self.a.movement = "stop";
|
||||
self.a.pose = "crouch";
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
playblendtransitionstandrun(param_00)
|
||||
{
|
||||
var_01 = 0.3;
|
||||
if(self.a.movement != "stop")
|
||||
{
|
||||
self endon("movemode");
|
||||
var_01 = 1;
|
||||
}
|
||||
|
||||
playblendtransition(param_00,var_01,"stand","run");
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
blendintostandrun()
|
||||
{
|
||||
if(!self.facemotion)
|
||||
{
|
||||
self.a.movement = "run";
|
||||
self.a.pose = "stand";
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(isdefined(self.run_overrideanim))
|
||||
{
|
||||
playblendtransitionstandrun(self.run_overrideanim);
|
||||
return 1;
|
||||
}
|
||||
|
||||
var_00 = 0.1;
|
||||
if(self.a.movement != "stop" && self.stairsstate == "none")
|
||||
{
|
||||
var_00 = 0.5;
|
||||
}
|
||||
|
||||
if(isdefined(self.sprint))
|
||||
{
|
||||
self setanimknoblimited(animscripts\utility::getmoveanim("sprint"),1,var_00,1);
|
||||
}
|
||||
else
|
||||
{
|
||||
self setanimknoblimited(animscripts\run::getrunanim(),1,var_00,1);
|
||||
}
|
||||
|
||||
animscripts\run::setmovenonforwardanims(animscripts\utility::getmoveanim("move_b"),animscripts\utility::getmoveanim("move_l"),animscripts\utility::getmoveanim("move_r"),self.sidesteprate);
|
||||
thread animscripts\run::setcombatstandmoveanimweights("run");
|
||||
wait(0.05);
|
||||
playblendtransitionstandrun(%combatrun);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
blendintostandwalk()
|
||||
{
|
||||
if(self.a.movement != "stop")
|
||||
{
|
||||
self endon("movemode");
|
||||
}
|
||||
|
||||
if(!isdefined(self.alwaysrunforward) && self.a.pose != "prone")
|
||||
{
|
||||
animscripts\run::setmovenonforwardanims(animscripts\utility::getmoveanim("move_b"),animscripts\utility::getmoveanim("move_l"),animscripts\utility::getmoveanim("move_r"));
|
||||
}
|
||||
|
||||
self.a.pose = "stand";
|
||||
self.a.movement = "walk";
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
crouchtostand()
|
||||
{
|
||||
var_00 = 1;
|
||||
if(isdefined(self.faststand))
|
||||
{
|
||||
var_00 = 1.8;
|
||||
self.faststand = undefined;
|
||||
}
|
||||
|
||||
if(animscripts\utility::usingsidearm())
|
||||
{
|
||||
playtransitionanimation(%pistol_crouchaimstraight2stand,"stand","stop",undefined,var_00);
|
||||
return;
|
||||
}
|
||||
|
||||
animscripts\utility::randomizeidleset();
|
||||
playtransitionanimation(%crouch2stand,"stand","stop",undefined,var_00);
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
crouchtocrouchwalk()
|
||||
{
|
||||
blendintocrouchwalk();
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
crouchtostandwalk()
|
||||
{
|
||||
crouchtocrouchwalk();
|
||||
blendintostandwalk();
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
crouchwalktocrouch()
|
||||
{
|
||||
self.a.movement = "stop";
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
crouchwalktostand()
|
||||
{
|
||||
crouchwalktocrouch();
|
||||
crouchtostand();
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
crouchruntocrouch()
|
||||
{
|
||||
self.a.movement = "stop";
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
crouchruntostand()
|
||||
{
|
||||
crouchruntocrouch();
|
||||
crouchtostand();
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
crouchtocrouchrun()
|
||||
{
|
||||
blendintocrouchrun();
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
crouchtostandrun()
|
||||
{
|
||||
return blendintostandrun();
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
blendintocrouchrun()
|
||||
{
|
||||
if(isdefined(self.crouchrun_combatanim))
|
||||
{
|
||||
playblendtransition(self.crouchrun_combatanim,0.6,"crouch","run");
|
||||
return;
|
||||
}
|
||||
|
||||
self setanimknob(%crouchrun,1,0.4,self.moveplaybackrate);
|
||||
if(animscripts\utility::usingsmg() && self.a.movement == "run" && !isdefined(self.custommoveanimset) && isdefined(self.custommoveanimset["run"]))
|
||||
{
|
||||
var_00 = "smg_crouch_run";
|
||||
thread animscripts\run::updatemoveanimweights("crouchrun",animscripts\utility::lookupanim(var_00,"crouch"),animscripts\utility::lookupanim(var_00,"crouch_b"),animscripts\utility::lookupanim(var_00,"crouch_l"),animscripts\utility::lookupanim(var_00,"crouch_r"));
|
||||
}
|
||||
else
|
||||
{
|
||||
thread animscripts\run::updatemoveanimweights("crouchrun",animscripts\utility::getmoveanim("crouch"),animscripts\utility::getmoveanim("crouch_b"),animscripts\utility::getmoveanim("crouch_l"),animscripts\utility::getmoveanim("crouch_r"));
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
playblendtransition(%crouchrun,0.4,"crouch","run");
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
pronetocrouchrun()
|
||||
{
|
||||
self orientmode("face current");
|
||||
animscripts\utility::exitpronewrapper(1);
|
||||
pronelegsstraighttree(0.2);
|
||||
animscripts\cover_prone::updatepronewrapper(0.1);
|
||||
playtransitionanimation(%prone_2_crouch,"crouch","run",animscripts\run::getcrouchrunanim());
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
pronetostandrun()
|
||||
{
|
||||
pronetocrouchrun();
|
||||
blendintostandrun();
|
||||
}
|
||||
|
||||
//Function Number: 33
|
||||
pronetocrouchwalk()
|
||||
{
|
||||
pronetocrouchrun();
|
||||
blendintocrouchwalk();
|
||||
}
|
||||
|
||||
//Function Number: 34
|
||||
blendintocrouchwalk()
|
||||
{
|
||||
if(isdefined(self.crouchrun_combatanim))
|
||||
{
|
||||
self setanimknoball(self.crouchrun_combatanim,%body,1,0.4);
|
||||
playblendtransition(self.crouchrun_combatanim,0.6,"crouch","walk");
|
||||
self notify("BlendIntoCrouchWalk");
|
||||
return;
|
||||
}
|
||||
|
||||
self setanimknob(%crouchrun,1,0.4,self.moveplaybackrate);
|
||||
thread animscripts\run::updatemoveanimweights("crouchrun",animscripts\utility::getmoveanim("crouch"),animscripts\utility::getmoveanim("crouch_b"),animscripts\utility::getmoveanim("crouch_l"),animscripts\utility::getmoveanim("crouch_r"));
|
||||
wait(0.05);
|
||||
playblendtransition(%crouchrun,0.4,"crouch","run");
|
||||
}
|
||||
|
||||
//Function Number: 35
|
||||
standtocrouch()
|
||||
{
|
||||
animscripts\utility::randomizeidleset();
|
||||
var_00 = 1;
|
||||
if(isdefined(self.fastcrouch))
|
||||
{
|
||||
var_00 = 1.8;
|
||||
self.fastcrouch = undefined;
|
||||
}
|
||||
|
||||
playtransitionanimation(%exposed_stand_2_crouch,"crouch","stop",undefined,var_00);
|
||||
}
|
||||
|
||||
//Function Number: 36
|
||||
pronetocrouch()
|
||||
{
|
||||
animscripts\utility::randomizeidleset();
|
||||
self orientmode("face current");
|
||||
animscripts\utility::exitpronewrapper(1);
|
||||
pronelegsstraighttree(0.1);
|
||||
animscripts\cover_prone::updatepronewrapper(0.1);
|
||||
playtransitionanimation(%prone_2_crouch,"crouch","stop");
|
||||
}
|
||||
|
||||
//Function Number: 37
|
||||
pronetostand()
|
||||
{
|
||||
self orientmode("face current");
|
||||
animscripts\utility::exitpronewrapper(1);
|
||||
pronelegsstraighttree(0.1);
|
||||
animscripts\cover_prone::updatepronewrapper(0.1);
|
||||
playtransitionanimation(%prone_2_stand,"stand","stop");
|
||||
}
|
||||
|
||||
//Function Number: 38
|
||||
pronetostandwalk()
|
||||
{
|
||||
pronetocrouch();
|
||||
crouchtocrouchwalk();
|
||||
blendintostandwalk();
|
||||
}
|
||||
|
||||
//Function Number: 39
|
||||
pronetopronemove(param_00)
|
||||
{
|
||||
pronelegsstraighttree(0.1);
|
||||
playtransitionanimation(%prone_2_prone_crawl,"prone",param_00,%prone_crawl);
|
||||
animscripts\cover_prone::updatepronewrapper(0.1);
|
||||
}
|
||||
|
||||
//Function Number: 40
|
||||
pronetopronerun()
|
||||
{
|
||||
pronetopronemove("run");
|
||||
}
|
||||
|
||||
//Function Number: 41
|
||||
pronecrawltoprone()
|
||||
{
|
||||
pronelegsstraighttree(0.1);
|
||||
animscripts\cover_prone::updatepronewrapper(0.1);
|
||||
playtransitionanimation(%prone_crawl_2_prone,"prone","stop");
|
||||
}
|
||||
|
||||
//Function Number: 42
|
||||
crouchtoprone()
|
||||
{
|
||||
self setproneanimnodes(-45,45,%prone_legs_down,%exposed_aiming,%prone_legs_up);
|
||||
animscripts\utility::enterpronewrapper(1);
|
||||
pronelegsstraighttree(0.3);
|
||||
animscripts\cover_prone::updatepronewrapper(0.1);
|
||||
playtransitionanimation(%crouch_2_prone,"prone","stop");
|
||||
}
|
||||
|
||||
//Function Number: 43
|
||||
crouchtopronewalk()
|
||||
{
|
||||
crouchtoprone();
|
||||
pronetopronerun();
|
||||
}
|
||||
|
||||
//Function Number: 44
|
||||
crouchtopronerun()
|
||||
{
|
||||
crouchtoprone();
|
||||
pronetopronerun();
|
||||
}
|
||||
|
||||
//Function Number: 45
|
||||
standtoprone()
|
||||
{
|
||||
self endon("entered_poseprone");
|
||||
var_00 = 0.5;
|
||||
thread playtransitionanimationthread_withoutwaitsetstates(%stand_2_prone,"prone","stop",undefined,var_00);
|
||||
self waittillmatch("anim_pose = \"crouch\","transAnimDone2");
|
||||
waittillframeend;
|
||||
self setproneanimnodes(-45,45,%prone_legs_down,%exposed_aiming,%prone_legs_up);
|
||||
animscripts\utility::enterpronewrapper(var_00);
|
||||
self.a.movement = "stop";
|
||||
animscripts\cover_prone::updatepronewrapper(0.1);
|
||||
self waittillmatch("end","transAnimDone2");
|
||||
pronelegsstraighttree(0.2);
|
||||
self setanim(%prone_aim_idle,1,0.1);
|
||||
}
|
||||
|
||||
//Function Number: 46
|
||||
standtopronewalk()
|
||||
{
|
||||
standtoprone();
|
||||
pronetopronerun();
|
||||
}
|
||||
|
||||
//Function Number: 47
|
||||
standtopronerun()
|
||||
{
|
||||
standtoprone();
|
||||
pronetopronerun();
|
||||
}
|
||||
|
||||
//Function Number: 48
|
||||
crouchruntoprone()
|
||||
{
|
||||
var_00 = 0.5;
|
||||
self setproneanimnodes(-45,45,%prone_legs_down,%exposed_aiming,%prone_legs_up);
|
||||
animscripts\utility::enterpronewrapper(var_00);
|
||||
pronelegsstraighttree(0.2);
|
||||
animscripts\cover_prone::updatepronewrapper(0.1);
|
||||
var_01 = animscripts\utility::getquadrant(self getmotionangle());
|
||||
var_02 = %crouch_2_prone;
|
||||
var_03 = getmovedelta(var_02,0,1);
|
||||
var_04 = self localtoworldcoords(var_03);
|
||||
if(self maymovetopoint(var_04))
|
||||
{
|
||||
playtransitionanimation(var_02,"prone","stop",undefined,var_00);
|
||||
return;
|
||||
}
|
||||
|
||||
playtransitionanimation(%crouch_2_prone_firing,"prone","stop",undefined,var_00);
|
||||
}
|
||||
|
||||
//Function Number: 49
|
||||
crouchruntopronewalk()
|
||||
{
|
||||
crouchruntoprone();
|
||||
pronetopronerun();
|
||||
}
|
||||
|
||||
//Function Number: 50
|
||||
crouchruntopronerun()
|
||||
{
|
||||
crouchruntoprone();
|
||||
pronetopronerun();
|
||||
}
|
||||
|
||||
//Function Number: 51
|
||||
playtransitionanimationthread_withoutwaitsetstates(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("entered_pose" + param_01);
|
||||
playtransitionanimationfunc(param_00,param_01,param_02,param_03,param_04,0);
|
||||
}
|
||||
|
||||
//Function Number: 52
|
||||
playtransitionanimation(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
playtransitionanimationfunc(param_00,param_01,param_02,param_03,param_04,1);
|
||||
}
|
||||
|
||||
//Function Number: 53
|
||||
playtransitionanimationfunc(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
if(!isdefined(param_04))
|
||||
{
|
||||
param_04 = 1;
|
||||
}
|
||||
|
||||
if(param_05)
|
||||
{
|
||||
thread waitsetstates(getanimlength(param_00) / 2,"killtimerscript",param_01);
|
||||
}
|
||||
|
||||
self setflaggedanimknoballrestart("transAnimDone2",param_00,%body,1,0.2,param_04);
|
||||
if(!isdefined(self.a.pose))
|
||||
{
|
||||
self.pose = "undefined";
|
||||
}
|
||||
|
||||
if(!isdefined(self.a.movement))
|
||||
{
|
||||
self.movement = "undefined";
|
||||
}
|
||||
|
||||
var_06 = "";
|
||||
animscripts\shared::donotetracks("transAnimDone2",undefined,var_06);
|
||||
self notify("killtimerscript");
|
||||
self.a.pose = param_01;
|
||||
self notify("entered_pose" + param_01);
|
||||
self.a.movement = param_02;
|
||||
if(isdefined(param_03))
|
||||
{
|
||||
self setanimknoball(param_03,%body,1,0.3,param_04);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 54
|
||||
waitsetstates(param_00,param_01,param_02)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("death");
|
||||
self endon(param_01);
|
||||
var_03 = self.a.pose;
|
||||
wait(param_00);
|
||||
if(var_03 != "prone" && param_02 == "prone")
|
||||
{
|
||||
animscripts\cover_prone::updatepronewrapper(0.1);
|
||||
animscripts\utility::enterpronewrapper(1);
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_03 == "prone" && param_02 != "prone")
|
||||
{
|
||||
animscripts\utility::exitpronewrapper(1);
|
||||
self orientmode("face default");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 55
|
||||
pronelegsstraighttree(param_00)
|
||||
{
|
||||
self setanimknoball(%prone_legsstraight,%body,1,param_00,1);
|
||||
}
|
851
AW/PC/animscripts/shared.gsc
Normal file
851
AW/PC/animscripts/shared.gsc
Normal file
@ -0,0 +1,851 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: shared.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 33
|
||||
* Decompile Time: 471 ms
|
||||
* Timestamp: 4/22/2024 2:00:54 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
placeweaponon(param_00,param_01,param_02)
|
||||
{
|
||||
self notify("weapon_position_change");
|
||||
var_03 = self.weaponinfo[param_00].position;
|
||||
if(param_01 != "none" && self.a.weaponpos[param_01] == param_00)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
detachallweaponmodels();
|
||||
if(var_03 != "none")
|
||||
{
|
||||
detachweapon(param_00);
|
||||
}
|
||||
|
||||
if(param_01 == "none")
|
||||
{
|
||||
updateattachedweaponmodels();
|
||||
return;
|
||||
}
|
||||
|
||||
if(self.a.weaponpos[param_01] != "none")
|
||||
{
|
||||
detachweapon(self.a.weaponpos[param_01]);
|
||||
}
|
||||
else if(isdefined(self.weaponinfo["none"]))
|
||||
{
|
||||
self.weaponinfo["none"].position = "none";
|
||||
}
|
||||
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = 1;
|
||||
}
|
||||
|
||||
if(param_02 && param_01 == "left" || param_01 == "right")
|
||||
{
|
||||
attachweapon(param_00,param_01);
|
||||
self.weapon = param_00;
|
||||
}
|
||||
else
|
||||
{
|
||||
attachweapon(param_00,param_01);
|
||||
}
|
||||
|
||||
updateattachedweaponmodels();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
detachweapon(param_00)
|
||||
{
|
||||
self.a.weaponpos[self.weaponinfo[param_00].position] = "none";
|
||||
self.weaponinfo[param_00].position = "none";
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
attachweapon(param_00,param_01)
|
||||
{
|
||||
self.weaponinfo[param_00].position = param_01;
|
||||
self.a.weaponpos[param_01] = param_00;
|
||||
if(self.a.weaponposdropping[param_01] != "none")
|
||||
{
|
||||
self notify("end_weapon_drop_" + param_01);
|
||||
self.a.weaponposdropping[param_01] = "none";
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
getweaponforpos(param_00)
|
||||
{
|
||||
var_01 = self.a.weaponpos[param_00];
|
||||
if(var_01 == "none")
|
||||
{
|
||||
return self.a.weaponposdropping[param_00];
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
detachallweaponmodels()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00[var_00.size] = "right";
|
||||
var_00[var_00.size] = "left";
|
||||
var_00[var_00.size] = "chest";
|
||||
var_00[var_00.size] = "back";
|
||||
self laseroff();
|
||||
foreach(var_02 in var_00)
|
||||
{
|
||||
var_03 = getweaponforpos(var_02);
|
||||
if(var_03 == "none")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(weapontype(var_03) == "riotshield" && isdefined(self.shieldmodelvariant))
|
||||
{
|
||||
if(isdefined(self.shieldbroken) && self.shieldbroken)
|
||||
{
|
||||
playfxontag(common_scripts\utility::getfx("riot_shield_dmg"),self,"TAG_BRASS");
|
||||
self.shieldbroken = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self updateentitywithweapons();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
updateattachedweaponmodels()
|
||||
{
|
||||
var_00 = [];
|
||||
var_01 = [];
|
||||
var_02 = [];
|
||||
var_00[var_00.size] = "right";
|
||||
var_00[var_00.size] = "left";
|
||||
var_00[var_00.size] = "chest";
|
||||
var_00[var_00.size] = "back";
|
||||
foreach(var_04 in var_00)
|
||||
{
|
||||
var_01[var_01.size] = getweaponforpos(var_04);
|
||||
var_02[var_02.size] = gettagforpos(var_04);
|
||||
}
|
||||
|
||||
self updateentitywithweapons(var_01[0],var_02[0],var_01[1],var_02[1],var_01[2],var_02[2],var_01[3],var_02[3]);
|
||||
foreach(var_04 in var_00)
|
||||
{
|
||||
var_07 = getweaponforpos(var_04);
|
||||
if(var_07 == "none")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self.weaponinfo[var_07].useclip && !self.weaponinfo[var_07].hasclip)
|
||||
{
|
||||
self hidepart("tag_clip");
|
||||
}
|
||||
}
|
||||
|
||||
updatelaserstatus();
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
updatelaserstatus()
|
||||
{
|
||||
if(isdefined(self.custom_laser_function))
|
||||
{
|
||||
[[ self.custom_laser_function ]]();
|
||||
return;
|
||||
}
|
||||
|
||||
if(self.a.weaponpos["right"] == "none")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(canuselaser())
|
||||
{
|
||||
self laseron("nvg_laser");
|
||||
return;
|
||||
}
|
||||
|
||||
self laseroff();
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
canuselaser()
|
||||
{
|
||||
if(!self.a.laseron)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(animscripts\utility::isshotgun(self.weapon))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return isalive(self);
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
gettagforpos(param_00)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "chest":
|
||||
return "tag_weapon_chest";
|
||||
|
||||
case "back":
|
||||
return "tag_stowed_back";
|
||||
|
||||
case "left":
|
||||
return "tag_weapon_left";
|
||||
|
||||
case "right":
|
||||
return "tag_weapon_right";
|
||||
|
||||
case "hand":
|
||||
return "tag_inhand";
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
dropaiweapon(param_00)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
param_00 = self.weapon;
|
||||
}
|
||||
|
||||
if(param_00 == "none")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.nodrop))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
detachallweaponmodels();
|
||||
var_01 = self.weaponinfo[param_00].position;
|
||||
if(self.dropweapon && var_01 != "none")
|
||||
{
|
||||
thread dropweaponwrapper(param_00,var_01);
|
||||
}
|
||||
|
||||
detachweapon(param_00);
|
||||
if(param_00 == self.weapon)
|
||||
{
|
||||
self.weapon = "none";
|
||||
}
|
||||
|
||||
updateattachedweaponmodels();
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
dropallaiweapons()
|
||||
{
|
||||
if(isdefined(self.nodrop))
|
||||
{
|
||||
return "none";
|
||||
}
|
||||
|
||||
var_00 = [];
|
||||
var_00[var_00.size] = "left";
|
||||
var_00[var_00.size] = "right";
|
||||
var_00[var_00.size] = "chest";
|
||||
var_00[var_00.size] = "back";
|
||||
detachallweaponmodels();
|
||||
foreach(var_02 in var_00)
|
||||
{
|
||||
var_03 = self.a.weaponpos[var_02];
|
||||
if(var_03 == "none")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
self.weaponinfo[var_03].position = "none";
|
||||
self.a.weaponpos[var_02] = "none";
|
||||
if(self.dropweapon)
|
||||
{
|
||||
thread dropweaponwrapper(var_03,var_02);
|
||||
}
|
||||
}
|
||||
|
||||
self.weapon = "none";
|
||||
updateattachedweaponmodels();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
dropweaponwrapper(param_00,param_01)
|
||||
{
|
||||
if(self isragdoll())
|
||||
{
|
||||
return "none";
|
||||
}
|
||||
|
||||
self.a.weaponposdropping[param_01] = param_00;
|
||||
var_02 = param_00;
|
||||
if(issubstr(tolower(var_02),"rpg"))
|
||||
{
|
||||
var_02 = "rpg_player";
|
||||
}
|
||||
|
||||
if(issubstr(tolower(var_02),"mahem"))
|
||||
{
|
||||
var_02 = "iw5_mahemplayer_sp_mahemscopebase";
|
||||
}
|
||||
|
||||
self dropweapon(var_02,param_01,0);
|
||||
self endon("end_weapon_drop_" + param_01);
|
||||
wait(0.05);
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
detachallweaponmodels();
|
||||
self.a.weaponposdropping[param_01] = "none";
|
||||
updateattachedweaponmodels();
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
donotetracks(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
self waittill(param_00,var_04);
|
||||
if(!isdefined(var_04))
|
||||
{
|
||||
var_04 = "undefined";
|
||||
}
|
||||
|
||||
var_05 = animscripts\notetracks::handlenotetrack(var_04,param_00,param_01,param_03);
|
||||
if(isdefined(var_05))
|
||||
{
|
||||
return var_05;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
getpredictedaimyawtoshootentorpos(param_00)
|
||||
{
|
||||
if(!isdefined(self.shootent))
|
||||
{
|
||||
if(!isdefined(self.shootpos))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return getaimyawtopoint(self.shootpos);
|
||||
}
|
||||
|
||||
var_01 = self.shootent.origin + self.shootentvelocity * param_00;
|
||||
return getaimyawtopoint(var_01);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
getaimyawtoshootentorpos()
|
||||
{
|
||||
if(!isdefined(self.shootent))
|
||||
{
|
||||
if(!isdefined(self.shootpos))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return getaimyawtopoint(self.shootpos);
|
||||
}
|
||||
|
||||
if(common_scripts\utility::flag("_cloaked_stealth_enabled"))
|
||||
{
|
||||
return getaimyawtopoint(animscripts\combat_utility::get_last_known_shoot_pos(self.shootent));
|
||||
}
|
||||
|
||||
return getaimyawtopoint(self.shootent getshootatpos());
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
getaimpitchtoshootentorpos()
|
||||
{
|
||||
var_00 = getpitchtoshootentorpos();
|
||||
if(self.script == "cover_crouch" && isdefined(self.a.covermode) && self.a.covermode == "lean")
|
||||
{
|
||||
var_00 = var_00 - level.covercrouchleanpitch;
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
getpitchtoshootentorpos()
|
||||
{
|
||||
if(!isdefined(self.shootent))
|
||||
{
|
||||
if(!isdefined(self.shootpos))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return animscripts\combat_utility::getpitchtospot(self.shootpos);
|
||||
}
|
||||
|
||||
if(common_scripts\utility::flag("_cloaked_stealth_enabled"))
|
||||
{
|
||||
return animscripts\combat_utility::getpitchtospot(animscripts\combat_utility::get_last_known_shoot_pos(self.shootent));
|
||||
}
|
||||
|
||||
return animscripts\combat_utility::getpitchtospot(self.shootent getshootatpos());
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
getshootfrompos()
|
||||
{
|
||||
if(isdefined(self.usemuzzlesideoffset))
|
||||
{
|
||||
var_00 = self getmuzzlesideoffsetpos();
|
||||
return (var_00[0],var_00[1],self geteye()[2]);
|
||||
}
|
||||
|
||||
if(isdefined(self.usemuzzleforaim) && self.usemuzzleforaim)
|
||||
{
|
||||
if(self gettagindex("tag_flash") != -1)
|
||||
{
|
||||
var_01 = self gettagorigin("tag_flash");
|
||||
if(isdefined(var_01))
|
||||
{
|
||||
return var_01;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (self.origin[0],self.origin[1],self geteye()[2]);
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
getaimyawtopoint(param_00)
|
||||
{
|
||||
var_01 = animscripts\utility::getyawtospot(param_00);
|
||||
var_02 = distance(self.origin,param_00);
|
||||
if(var_02 > 3)
|
||||
{
|
||||
var_03 = asin(-3 / var_02);
|
||||
var_01 = var_01 + var_03;
|
||||
}
|
||||
|
||||
var_01 = angleclamp180(var_01);
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
ramboaim(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
ramboaiminternal(param_00);
|
||||
self clearanim(%generic_aim_left,0.5);
|
||||
self clearanim(%generic_aim_right,0.5);
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
ramboaiminternal(param_00)
|
||||
{
|
||||
self endon("rambo_aim_end");
|
||||
waittillframeend;
|
||||
self clearanim(%generic_aim_left,0.2);
|
||||
self clearanim(%generic_aim_right,0.2);
|
||||
self setanimlimited(%generic_aim_45l,1,0.2);
|
||||
self setanimlimited(%generic_aim_45r,1,0.2);
|
||||
var_01 = 0.2;
|
||||
var_02 = 0;
|
||||
for(;;)
|
||||
{
|
||||
if(isdefined(self.shootpos))
|
||||
{
|
||||
var_03 = animscripts\utility::getyaw(self.shootpos) - self.covernode.angles[1];
|
||||
var_03 = angleclamp180(var_03 - param_00);
|
||||
if(abs(var_03 - var_02) > 10)
|
||||
{
|
||||
if(var_03 > var_02)
|
||||
{
|
||||
var_03 = var_02 + 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = var_02 - 10;
|
||||
}
|
||||
}
|
||||
|
||||
var_02 = var_03;
|
||||
}
|
||||
|
||||
if(var_02 < 0)
|
||||
{
|
||||
var_04 = var_02 / -45;
|
||||
if(var_04 > 1)
|
||||
{
|
||||
var_04 = 1;
|
||||
}
|
||||
|
||||
self setanimlimited(%generic_aim_right,var_04,var_01);
|
||||
self setanimlimited(%generic_aim_left,0,var_01);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = var_02 / 45;
|
||||
if(var_04 > 1)
|
||||
{
|
||||
var_04 = 1;
|
||||
}
|
||||
|
||||
self setanimlimited(%generic_aim_left,var_04,var_01);
|
||||
self setanimlimited(%generic_aim_right,0,var_01);
|
||||
}
|
||||
|
||||
wait(var_01);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
decidenumshotsforburst()
|
||||
{
|
||||
var_00 = 0;
|
||||
var_01 = weaponburstcount(self.weapon);
|
||||
if(var_01)
|
||||
{
|
||||
var_00 = var_01;
|
||||
}
|
||||
else if(animscripts\weaponlist::usingsemiautoweapon())
|
||||
{
|
||||
var_00 = level.semifirenumshots[randomint(level.semifirenumshots.size)];
|
||||
}
|
||||
else if(self.fastburst)
|
||||
{
|
||||
var_00 = level.fastburstfirenumshots[randomint(level.fastburstfirenumshots.size)];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = level.burstfirenumshots[randomint(level.burstfirenumshots.size)];
|
||||
}
|
||||
|
||||
if(var_00 <= self.bulletsinclip)
|
||||
{
|
||||
return var_00;
|
||||
}
|
||||
|
||||
if(self.bulletsinclip <= 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return self.bulletsinclip;
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
decidenumshotsforfull()
|
||||
{
|
||||
var_00 = self.bulletsinclip;
|
||||
if(weaponclass(self.weapon) == "mg")
|
||||
{
|
||||
var_01 = randomfloat(10);
|
||||
if(var_01 < 3)
|
||||
{
|
||||
var_00 = randomintrange(2,6);
|
||||
}
|
||||
else if(var_01 < 8)
|
||||
{
|
||||
var_00 = randomintrange(6,12);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = randomintrange(12,20);
|
||||
}
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
handledropclip(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("abort_reload");
|
||||
var_01 = undefined;
|
||||
if(self.weaponinfo[self.weapon].useclip)
|
||||
{
|
||||
var_01 = getweaponclipmodel(self.weapon);
|
||||
}
|
||||
|
||||
if(self.weaponinfo[self.weapon].hasclip)
|
||||
{
|
||||
if(animscripts\utility::usingsidearm())
|
||||
{
|
||||
self playsound("weap_reload_pistol_clipout_npc");
|
||||
}
|
||||
else
|
||||
{
|
||||
self playsound("weap_reload_smg_clipout_npc");
|
||||
}
|
||||
|
||||
if(isdefined(var_01))
|
||||
{
|
||||
self hidepart("tag_clip");
|
||||
thread dropclipmodel(var_01,"tag_clip");
|
||||
self.weaponinfo[self.weapon].hasclip = 0;
|
||||
thread resetcliponabort(var_01);
|
||||
}
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
self waittill(param_00,var_02);
|
||||
switch(var_02)
|
||||
{
|
||||
case "attach clip right":
|
||||
case "attach clip left":
|
||||
if(isdefined(var_01))
|
||||
{
|
||||
self attach(var_01,"tag_inhand");
|
||||
thread resetcliponabort(var_01,"tag_inhand");
|
||||
if(!self.weaponinfo[self.weapon].hasclip)
|
||||
{
|
||||
self hidepart("tag_clip");
|
||||
}
|
||||
}
|
||||
|
||||
animscripts\weaponlist::refillclip();
|
||||
break;
|
||||
|
||||
case "detach clip nohand":
|
||||
if(isdefined(var_01))
|
||||
{
|
||||
self detach(var_01,"tag_inhand");
|
||||
}
|
||||
break;
|
||||
|
||||
case "detach clip right":
|
||||
case "detach clip left":
|
||||
if(isdefined(var_01))
|
||||
{
|
||||
self detach(var_01,"tag_inhand");
|
||||
self showpart("tag_clip");
|
||||
self notify("clip_detached");
|
||||
self.weaponinfo[self.weapon].hasclip = 1;
|
||||
}
|
||||
|
||||
if(animscripts\utility::usingsidearm())
|
||||
{
|
||||
self playsound("weap_reload_pistol_clipin_npc");
|
||||
}
|
||||
else
|
||||
{
|
||||
self playsound("weap_reload_smg_clipin_npc");
|
||||
}
|
||||
self.a.needstorechamber = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
resetcliponabort(param_00,param_01)
|
||||
{
|
||||
self notify("clip_detached");
|
||||
self endon("clip_detached");
|
||||
common_scripts\utility::waittill_any("killanimscript","abort_reload");
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
self detach(param_00,param_01);
|
||||
}
|
||||
|
||||
if(isalive(self))
|
||||
{
|
||||
if(self.weapon != "none" && self.weaponinfo[self.weapon].position != "none")
|
||||
{
|
||||
self showpart("tag_clip");
|
||||
}
|
||||
|
||||
self.weaponinfo[self.weapon].hasclip = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
dropclipmodel(param_00,param_01);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
dropclipmodel(param_00,param_01)
|
||||
{
|
||||
var_02 = spawn("script_model",self gettagorigin(param_01));
|
||||
var_02 setmodel(param_00);
|
||||
var_02.angles = self gettagangles(param_01);
|
||||
var_02 physicslaunchclient(var_02.origin,(0,0,0));
|
||||
wait(10);
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
var_02 delete();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
movetonodeovertime(param_00,param_01)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
var_02 = param_00.origin;
|
||||
var_03 = distancesquared(self.origin,var_02);
|
||||
if(var_03 < 1)
|
||||
{
|
||||
self safeteleport(var_02);
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_03 > 256 && !self maymovetopoint(var_02,!self.swimmer))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.keepclaimednodeifvalid = 1;
|
||||
var_04 = distance(self.origin,var_02);
|
||||
var_05 = int(param_01 * 20);
|
||||
for(var_06 = 0;var_06 < var_05;var_06++)
|
||||
{
|
||||
var_02 = param_00.origin;
|
||||
var_07 = self.origin - var_02;
|
||||
var_07 = vectornormalize(var_07);
|
||||
var_08 = var_02 + var_07 * var_04;
|
||||
var_09 = var_08 + var_02 - var_08 * var_06 + 1 / var_05;
|
||||
self safeteleport(var_09);
|
||||
wait(0.05);
|
||||
}
|
||||
|
||||
self.keepclaimednodeifvalid = 0;
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
returntrue()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
playlookanimation(param_00,param_01,param_02)
|
||||
{
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = ::returntrue;
|
||||
}
|
||||
|
||||
for(var_03 = 0;var_03 < param_01 * 10;var_03++)
|
||||
{
|
||||
if(isalive(self.enemy))
|
||||
{
|
||||
if(animscripts\utility::canseeenemy() && [[ param_02 ]]())
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if(animscripts\utility::issuppressedwrapper() && [[ param_02 ]]())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self setanimknoball(param_00,%body,1,0.1);
|
||||
wait(0.1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
throwdownweapon(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
placeweaponon(self.secondaryweapon,"right");
|
||||
maps\_gameskill::didsomethingotherthanshooting();
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
rpgplayerrepulsor()
|
||||
{
|
||||
var_00 = rpgplayerrepulsor_getnummisses();
|
||||
if(var_00 == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
level waittill("an_enemy_shot",var_01);
|
||||
if(var_01 != self)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!isdefined(var_01.enemy))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_01.enemy != level.player)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(level.createrpgrepulsors) && level.createrpgrepulsors == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
thread rpgplayerrepulsor_create();
|
||||
var_00--;
|
||||
if(var_00 <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
rpgplayerrepulsor_getnummisses()
|
||||
{
|
||||
var_00 = maps\_utility::getdifficulty();
|
||||
switch(var_00)
|
||||
{
|
||||
case "gimp":
|
||||
case "easy":
|
||||
return 2;
|
||||
|
||||
case "difficult":
|
||||
case "hard":
|
||||
case "medium":
|
||||
return 1;
|
||||
|
||||
case "fu":
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
//Function Number: 33
|
||||
rpgplayerrepulsor_create()
|
||||
{
|
||||
var_00 = missile_createrepulsorent(level.player,5000,800);
|
||||
wait(4);
|
||||
missile_deleteattractor(var_00);
|
||||
}
|
747
AW/PC/animscripts/shoot_behavior.gsc
Normal file
747
AW/PC/animscripts/shoot_behavior.gsc
Normal file
@ -0,0 +1,747 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: shoot_behavior.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 27
|
||||
* Decompile Time: 393 ms
|
||||
* Timestamp: 4/22/2024 2:00:56 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
decidewhatandhowtoshoot(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self notify("stop_deciding_how_to_shoot");
|
||||
self endon("stop_deciding_how_to_shoot");
|
||||
self endon("death");
|
||||
maps\_gameskill::resetmisstime();
|
||||
self.shootobjective = param_00;
|
||||
self.shootent = undefined;
|
||||
self.shootpos = undefined;
|
||||
self.shootstyle = "none";
|
||||
self.fastburst = 0;
|
||||
self.shouldreturntocover = undefined;
|
||||
if(!isdefined(self.changingcoverpos))
|
||||
{
|
||||
self.changingcoverpos = 0;
|
||||
}
|
||||
|
||||
var_01 = isdefined(self.covernode) && self.covernode.type != "Cover Prone" && self.covernode.type != "Conceal Prone";
|
||||
if(var_01)
|
||||
{
|
||||
wait(0.05);
|
||||
}
|
||||
|
||||
var_02 = self.shootent;
|
||||
var_03 = self.shootpos;
|
||||
var_04 = self.shootstyle;
|
||||
if(!isdefined(self.has_no_ir))
|
||||
{
|
||||
self.a.laseron = 1;
|
||||
animscripts\shared::updatelaserstatus();
|
||||
}
|
||||
|
||||
if(animscripts\combat_utility::issniper())
|
||||
{
|
||||
resetsniperaim();
|
||||
}
|
||||
|
||||
if(var_01 && !self.a.atconcealmentnode || !animscripts\utility::canseeenemy())
|
||||
{
|
||||
thread watchforincomingfire();
|
||||
}
|
||||
|
||||
thread runonshootbehaviorend();
|
||||
self.ambushendtime = undefined;
|
||||
for(;;)
|
||||
{
|
||||
if(isdefined(self.shootposoverride))
|
||||
{
|
||||
if(!isdefined(self.enemy))
|
||||
{
|
||||
self.shootpos = self.shootposoverride;
|
||||
self.shootposoverride = undefined;
|
||||
waitabit();
|
||||
}
|
||||
else
|
||||
{
|
||||
self.shootposoverride = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
var_05 = undefined;
|
||||
if(self.weapon == "none")
|
||||
{
|
||||
nogunshoot();
|
||||
}
|
||||
else if(animscripts\utility::usingrocketlauncher())
|
||||
{
|
||||
var_05 = rpgshoot();
|
||||
}
|
||||
else if(animscripts\utility::usingsidearm() || isdefined(self.alwaysusepistol))
|
||||
{
|
||||
var_05 = pistolshoot();
|
||||
}
|
||||
else
|
||||
{
|
||||
var_05 = rifleshoot();
|
||||
}
|
||||
|
||||
if(isdefined(self.a.specialshootbehavior))
|
||||
{
|
||||
[[ self.a.specialshootbehavior ]]();
|
||||
}
|
||||
|
||||
if(checkchanged(var_02,self.shootent) || !isdefined(self.shootent) && checkchanged(var_03,self.shootpos) || checkchanged(var_04,self.shootstyle))
|
||||
{
|
||||
self notify("shoot_behavior_change");
|
||||
}
|
||||
|
||||
var_02 = self.shootent;
|
||||
var_03 = self.shootpos;
|
||||
var_04 = self.shootstyle;
|
||||
if(!isdefined(var_05))
|
||||
{
|
||||
waitabit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
waitabit()
|
||||
{
|
||||
self endon("enemy");
|
||||
self endon("done_changing_cover_pos");
|
||||
self endon("weapon_position_change");
|
||||
self endon("enemy_visible");
|
||||
if(isdefined(self.shootent))
|
||||
{
|
||||
self.shootent endon("death");
|
||||
self endon("do_slow_things");
|
||||
wait(0.05);
|
||||
while(isdefined(self.shootent))
|
||||
{
|
||||
if(common_scripts\utility::flag("_cloaked_stealth_enabled"))
|
||||
{
|
||||
self.shootpos = animscripts\combat_utility::get_last_known_shoot_pos(self.shootent);
|
||||
continue;
|
||||
}
|
||||
|
||||
self.shootpos = self.shootent getshootatpos();
|
||||
wait(0.05);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
self waittill("do_slow_things");
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
nogunshoot()
|
||||
{
|
||||
self.shootent = undefined;
|
||||
self.shootpos = undefined;
|
||||
self.shootstyle = "none";
|
||||
self.shootobjective = "normal";
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
shouldsuppress()
|
||||
{
|
||||
return !animscripts\combat_utility::issniper() && !animscripts\utility::isshotgun(self.weapon);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
shouldshootenemyent()
|
||||
{
|
||||
if(!animscripts\utility::canseeenemy())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!isdefined(self.covernode) && !self canshootenemy())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
rifleshootobjectivenormal()
|
||||
{
|
||||
if(!shouldshootenemyent())
|
||||
{
|
||||
if(animscripts\combat_utility::issniper())
|
||||
{
|
||||
resetsniperaim();
|
||||
}
|
||||
|
||||
if(self.doingambush)
|
||||
{
|
||||
self.shootobjective = "ambush";
|
||||
return "retry";
|
||||
}
|
||||
|
||||
if(!isdefined(self.enemy))
|
||||
{
|
||||
havenothingtoshoot();
|
||||
return;
|
||||
}
|
||||
|
||||
markenemyposinvisible();
|
||||
if((self.providecoveringfire || randomint(5) > 0) && shouldsuppress())
|
||||
{
|
||||
self.shootobjective = "suppress";
|
||||
}
|
||||
else
|
||||
{
|
||||
self.shootobjective = "ambush";
|
||||
}
|
||||
|
||||
return "retry";
|
||||
}
|
||||
|
||||
setshootenttoenemy();
|
||||
setshootstyleforvisibleenemy();
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
rifleshootobjectivesuppress(param_00)
|
||||
{
|
||||
if(!param_00)
|
||||
{
|
||||
havenothingtoshoot();
|
||||
return;
|
||||
}
|
||||
|
||||
self.shootent = undefined;
|
||||
self.shootpos = animscripts\utility::getenemysightpos();
|
||||
setshootstyleforsuppression();
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
rifleshootobjectiveambush(param_00)
|
||||
{
|
||||
self.shootstyle = "none";
|
||||
self.shootent = undefined;
|
||||
if(!param_00)
|
||||
{
|
||||
getambushshootpos();
|
||||
if(shouldstopambushing())
|
||||
{
|
||||
self.ambushendtime = undefined;
|
||||
self notify("return_to_cover");
|
||||
self.shouldreturntocover = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
self.shootpos = animscripts\utility::getenemysightpos();
|
||||
if(shouldstopambushing())
|
||||
{
|
||||
self.ambushendtime = undefined;
|
||||
if(shouldsuppress())
|
||||
{
|
||||
self.shootobjective = "suppress";
|
||||
}
|
||||
|
||||
if(randomint(3) == 0)
|
||||
{
|
||||
self notify("return_to_cover");
|
||||
self.shouldreturntocover = 1;
|
||||
}
|
||||
|
||||
return "retry";
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
getambushshootpos()
|
||||
{
|
||||
if(isdefined(self.enemy) && self cansee(self.enemy))
|
||||
{
|
||||
setshootenttoenemy();
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = self getanglestolikelyenemypath();
|
||||
if(!isdefined(var_00))
|
||||
{
|
||||
if(isdefined(self.covernode))
|
||||
{
|
||||
var_00 = self.covernode.angles;
|
||||
}
|
||||
else if(isdefined(self.ambushnode))
|
||||
{
|
||||
var_00 = self.ambushnode.angles;
|
||||
}
|
||||
else if(isdefined(self.enemy))
|
||||
{
|
||||
var_00 = vectortoangles(self lastknownpos(self.enemy) - self.origin);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = self.angles;
|
||||
}
|
||||
}
|
||||
|
||||
var_01 = 1024;
|
||||
if(isdefined(self.enemy))
|
||||
{
|
||||
var_01 = distance(self.origin,self.enemy.origin);
|
||||
}
|
||||
|
||||
var_02 = self geteye() + anglestoforward(var_00) * var_01;
|
||||
if(!isdefined(self.shootpos) || distancesquared(var_02,self.shootpos) > 25)
|
||||
{
|
||||
self.shootpos = var_02;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
rifleshoot()
|
||||
{
|
||||
if(self.shootobjective == "normal")
|
||||
{
|
||||
rifleshootobjectivenormal();
|
||||
return;
|
||||
}
|
||||
|
||||
if(shouldshootenemyent())
|
||||
{
|
||||
self.shootobjective = "normal";
|
||||
self.ambushendtime = undefined;
|
||||
return "retry";
|
||||
}
|
||||
|
||||
markenemyposinvisible();
|
||||
if(animscripts\combat_utility::issniper())
|
||||
{
|
||||
resetsniperaim();
|
||||
}
|
||||
|
||||
var_00 = animscripts\utility::cansuppressenemy();
|
||||
if(self.shootobjective == "suppress" || self.team == "allies" && !isdefined(self.enemy) && !var_00)
|
||||
{
|
||||
rifleshootobjectivesuppress(var_00);
|
||||
return;
|
||||
}
|
||||
|
||||
rifleshootobjectiveambush(var_00);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
shouldstopambushing()
|
||||
{
|
||||
if(!isdefined(self.ambushendtime))
|
||||
{
|
||||
if(self isbadguy())
|
||||
{
|
||||
self.ambushendtime = gettime() + randomintrange(10000,60000);
|
||||
}
|
||||
else
|
||||
{
|
||||
self.ambushendtime = gettime() + randomintrange(4000,10000);
|
||||
}
|
||||
}
|
||||
|
||||
return self.ambushendtime < gettime();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
rpgshoot()
|
||||
{
|
||||
if(!shouldshootenemyent())
|
||||
{
|
||||
markenemyposinvisible();
|
||||
havenothingtoshoot();
|
||||
return;
|
||||
}
|
||||
|
||||
setshootenttoenemy();
|
||||
setshootstyle("single",0);
|
||||
var_00 = lengthsquared(self.origin - self.shootpos);
|
||||
if(var_00 < squared(512))
|
||||
{
|
||||
self notify("return_to_cover");
|
||||
self.shouldreturntocover = 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
pistolshoot()
|
||||
{
|
||||
if(self.shootobjective == "normal")
|
||||
{
|
||||
if(!shouldshootenemyent())
|
||||
{
|
||||
if(!isdefined(self.enemy))
|
||||
{
|
||||
havenothingtoshoot();
|
||||
return;
|
||||
}
|
||||
|
||||
markenemyposinvisible();
|
||||
self.shootobjective = "ambush";
|
||||
return "retry";
|
||||
}
|
||||
|
||||
setshootenttoenemy();
|
||||
setshootstyle("single",0);
|
||||
return;
|
||||
}
|
||||
|
||||
if(shouldshootenemyent())
|
||||
{
|
||||
self.shootobjective = "normal";
|
||||
self.ambushendtime = undefined;
|
||||
return "retry";
|
||||
}
|
||||
|
||||
markenemyposinvisible();
|
||||
self.shootent = undefined;
|
||||
self.shootstyle = "none";
|
||||
self.shootpos = animscripts\utility::getenemysightpos();
|
||||
if(!isdefined(self.ambushendtime))
|
||||
{
|
||||
self.ambushendtime = gettime() + randomintrange(4000,8000);
|
||||
}
|
||||
|
||||
if(self.ambushendtime < gettime())
|
||||
{
|
||||
self.shootobjective = "normal";
|
||||
self.ambushendtime = undefined;
|
||||
return "retry";
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
markenemyposinvisible()
|
||||
{
|
||||
if(isdefined(self.enemy) && !self.changingcoverpos && self.script != "combat")
|
||||
{
|
||||
if(isai(self.enemy) && isdefined(self.enemy.script) && self.enemy.script == "cover_stand" || self.enemy.script == "cover_crouch")
|
||||
{
|
||||
if(isdefined(self.enemy.a.covermode) && self.enemy.a.covermode == "hide")
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self.couldntseeenemypos = self.enemy.origin;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
watchforincomingfire()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("stop_deciding_how_to_shoot");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("suppression");
|
||||
if(self.suppressionmeter > self.suppressionthreshold)
|
||||
{
|
||||
if(readytoreturntocover())
|
||||
{
|
||||
self notify("return_to_cover");
|
||||
self.shouldreturntocover = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
readytoreturntocover()
|
||||
{
|
||||
if(self.changingcoverpos)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!isdefined(self.enemy) || !self cansee(self.enemy))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(gettime() < self.coverposestablishedtime + 800)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(isplayer(self.enemy) && self.enemy.health < self.enemy.maxhealth * 0.5)
|
||||
{
|
||||
if(gettime() < self.coverposestablishedtime + 3000)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
runonshootbehaviorend()
|
||||
{
|
||||
self endon("death");
|
||||
common_scripts\utility::waittill_any("killanimscript","stop_deciding_how_to_shoot");
|
||||
self.a.laseron = 0;
|
||||
animscripts\shared::updatelaserstatus();
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
checkchanged(param_00,param_01)
|
||||
{
|
||||
if(isdefined(param_00) != isdefined(param_01))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return param_00 != param_01;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
setshootenttoenemy()
|
||||
{
|
||||
self.shootent = self.enemy;
|
||||
if(common_scripts\utility::flag("_cloaked_stealth_enabled"))
|
||||
{
|
||||
if(isdefined(self.enemy_who_surprised_me) && self.enemy_who_surprised_me == self.enemy)
|
||||
{
|
||||
self.shootpos = self.shootent getshootatpos();
|
||||
return;
|
||||
}
|
||||
|
||||
self.shootpos = animscripts\combat_utility::get_last_known_shoot_pos(self.shootent);
|
||||
return;
|
||||
}
|
||||
|
||||
self.shootpos = self.shootent getshootatpos();
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
havenothingtoshoot()
|
||||
{
|
||||
self.shootent = undefined;
|
||||
self.shootpos = undefined;
|
||||
self.shootstyle = "none";
|
||||
if(self.doingambush)
|
||||
{
|
||||
self.shootobjective = "ambush";
|
||||
}
|
||||
|
||||
if(!self.changingcoverpos)
|
||||
{
|
||||
self notify("return_to_cover");
|
||||
self.shouldreturntocover = 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
shouldbeajerk()
|
||||
{
|
||||
return level.gameskill == 3 && isplayer(self.enemy);
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
setshootstyleforvisibleenemy()
|
||||
{
|
||||
if(isdefined(self.shootent.enemy) && isdefined(self.shootent.enemy.syncedmeleetarget))
|
||||
{
|
||||
return setshootstyle("single",0);
|
||||
}
|
||||
|
||||
if(animscripts\combat_utility::issniper())
|
||||
{
|
||||
return setshootstyle("single",0);
|
||||
}
|
||||
|
||||
if(animscripts\utility::isshotgun(self.weapon))
|
||||
{
|
||||
if(animscripts\utility::weapon_pump_action_shotgun())
|
||||
{
|
||||
return setshootstyle("single",0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return setshootstyle("semi",0);
|
||||
}
|
||||
}
|
||||
|
||||
if(weaponclass(self.weapon) == "grenade")
|
||||
{
|
||||
return setshootstyle("single",0);
|
||||
}
|
||||
|
||||
if(weaponburstcount(self.weapon) > 0)
|
||||
{
|
||||
return setshootstyle("burst",0);
|
||||
}
|
||||
|
||||
if((isdefined(self.juggernaut) && self.juggernaut) || isdefined(self.mech) && self.mech)
|
||||
{
|
||||
return setshootstyle("full",1);
|
||||
}
|
||||
|
||||
var_00 = distancesquared(self getshootatpos(),self.shootpos);
|
||||
var_01 = weaponclass(self.weapon) == "mg";
|
||||
if(self.providecoveringfire && var_01)
|
||||
{
|
||||
return setshootstyle("full",0);
|
||||
}
|
||||
|
||||
if(var_00 < 62500)
|
||||
{
|
||||
if(isdefined(self.shootent) && isdefined(self.shootent.magic_bullet_shield))
|
||||
{
|
||||
return setshootstyle("single",0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return setshootstyle("full",0);
|
||||
}
|
||||
}
|
||||
else if(var_00 < 810000 || shouldbeajerk())
|
||||
{
|
||||
if(weaponissemiauto(self.weapon) || shoulddosemiforvariety())
|
||||
{
|
||||
return setshootstyle("semi",1);
|
||||
}
|
||||
else
|
||||
{
|
||||
return setshootstyle("burst",1);
|
||||
}
|
||||
}
|
||||
else if(self.providecoveringfire || var_01 || var_00 < 2560000)
|
||||
{
|
||||
if(shoulddosemiforvariety())
|
||||
{
|
||||
return setshootstyle("semi",0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return setshootstyle("burst",0);
|
||||
}
|
||||
}
|
||||
|
||||
return setshootstyle("single",0);
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
setshootstyleforsuppression()
|
||||
{
|
||||
var_00 = distancesquared(self getshootatpos(),self.shootpos);
|
||||
if(weaponissemiauto(self.weapon))
|
||||
{
|
||||
if(var_00 < 2560000)
|
||||
{
|
||||
return setshootstyle("semi",0);
|
||||
}
|
||||
|
||||
return setshootstyle("single",0);
|
||||
}
|
||||
|
||||
if(weaponclass(self.weapon) == "mg")
|
||||
{
|
||||
return setshootstyle("full",0);
|
||||
}
|
||||
|
||||
if(self.providecoveringfire || var_00 < 2560000)
|
||||
{
|
||||
if(shoulddosemiforvariety())
|
||||
{
|
||||
return setshootstyle("semi",0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return setshootstyle("burst",0);
|
||||
}
|
||||
}
|
||||
|
||||
return setshootstyle("single",0);
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
setshootstyle(param_00,param_01)
|
||||
{
|
||||
self.shootstyle = param_00;
|
||||
self.fastburst = param_01;
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
shoulddosemiforvariety()
|
||||
{
|
||||
if(weaponclass(self.weapon) != "rifle")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(self.team != "allies")
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_00 = animscripts\utility::safemod(int(self.origin[1]),10000) + 2000;
|
||||
var_01 = int(self.origin[0]) + gettime();
|
||||
return var_01 % 2 * var_00 > var_00;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
resetsniperaim()
|
||||
{
|
||||
self.snipershotcount = 0;
|
||||
self.sniperhitcount = 0;
|
||||
thread sniper_glint_behavior();
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
sniper_glint_behavior()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("enemy");
|
||||
self endon("return_to_cover");
|
||||
self notify("new_glint_thread");
|
||||
self endon("new_glint_thread");
|
||||
if(isdefined(self.disable_sniper_glint) && self.disable_sniper_glint)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(level._effect["sniper_glint"]))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isalive(self.enemy))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = common_scripts\utility::getfx("sniper_glint");
|
||||
wait(0.2);
|
||||
for(;;)
|
||||
{
|
||||
if(self.weapon == self.primaryweapon && animscripts\combat_utility::player_sees_my_scope())
|
||||
{
|
||||
if(distancesquared(self.origin,self.enemy.origin) > 65536)
|
||||
{
|
||||
playfxontag(var_00,self,"tag_flash");
|
||||
}
|
||||
|
||||
var_01 = randomfloatrange(3,5);
|
||||
wait(var_01);
|
||||
}
|
||||
|
||||
wait(0.2);
|
||||
}
|
||||
}
|
918
AW/PC/animscripts/snowmobile.gsc
Normal file
918
AW/PC/animscripts/snowmobile.gsc
Normal file
@ -0,0 +1,918 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: snowmobile.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 32
|
||||
* Decompile Time: 458 ms
|
||||
* Timestamp: 4/22/2024 2:00:57 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self.current_event = "none";
|
||||
self.shoot_while_driving_thread = undefined;
|
||||
snowmobile_geton();
|
||||
if(isdefined(self.drivingvehicle))
|
||||
{
|
||||
main_driver();
|
||||
return;
|
||||
}
|
||||
|
||||
main_passenger();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
snowmobile_geton()
|
||||
{
|
||||
self.grenadeawareness = 0;
|
||||
self.a.pose = "crouch";
|
||||
maps\_utility::disable_surprise();
|
||||
self.allowpain = 0;
|
||||
self.flashbangimmunity = 1;
|
||||
self.getoffvehiclefunc = ::snowmobile_getoff;
|
||||
self.specialdeathfunc = ::snowmobile_normal_death;
|
||||
self.disablebulletwhizbyreaction = 1;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
snowmobile_getoff()
|
||||
{
|
||||
self.allowpain = 1;
|
||||
self.flashbangimmunity = 0;
|
||||
maps\_utility::gun_recall();
|
||||
self.onsnowmobile = undefined;
|
||||
self.getoffvehiclefunc = undefined;
|
||||
self.specialdeathfunc = undefined;
|
||||
self.a.specialshootbehavior = undefined;
|
||||
self.disablebulletwhizbyreaction = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
main_driver()
|
||||
{
|
||||
var_00 = self.ridingvehicle.driver_shooting || self.ridingvehicle.riders.size == 1;
|
||||
snowmobile_setanim_driver(var_00);
|
||||
if(var_00)
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.primaryweapon,"left");
|
||||
self.rightaimlimit = 90;
|
||||
self.leftaimlimit = -90;
|
||||
animscripts\track::setanimaimweight(1,0.2);
|
||||
thread snowmobile_trackshootentorpos_driver();
|
||||
thread snowmobile_loop_driver_shooting();
|
||||
}
|
||||
else
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.primaryweapon,"none");
|
||||
thread snowmobile_loop_driver();
|
||||
}
|
||||
|
||||
snowmobile_handle_events("driver");
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
main_passenger()
|
||||
{
|
||||
snowmobile_setanim_passenger(self.ridingvehicle.passenger_shooting);
|
||||
if(self.ridingvehicle.passenger_shooting)
|
||||
{
|
||||
self.rightaimlimit = 180;
|
||||
self.leftaimlimit = -180;
|
||||
self.diraimlimit = 1;
|
||||
animscripts\track::setanimaimweight(1,0.2);
|
||||
thread snowmobile_trackshootentorpos_passenger();
|
||||
thread snowmobile_loop_passenger_shooting();
|
||||
}
|
||||
else
|
||||
{
|
||||
thread snowmobile_loop_passenger();
|
||||
}
|
||||
|
||||
snowmobile_handle_events("passenger");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
snowmobile_loop_driver()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
var_00 = "left2right";
|
||||
var_01 = [];
|
||||
var_01["left2right"] = getanimlength(animscripts\utility::animarray("left2right"));
|
||||
var_01["right2left"] = getanimlength(animscripts\utility::animarray("right2left"));
|
||||
self setanimknoball(%sm_turn,%body,1,0);
|
||||
self setanim(animscripts\utility::animarray("drive"),1,0);
|
||||
self setanimknob(animscripts\utility::animarray(var_00),1,0);
|
||||
self setanimtime(animscripts\utility::animarray(var_00),0.5);
|
||||
for(;;)
|
||||
{
|
||||
if(self.ridingvehicle.steering_enable)
|
||||
{
|
||||
var_02 = 0.5 * 1 + maps\_vehicle_code::update_steering(self.ridingvehicle);
|
||||
var_03 = self getanimtime(animscripts\utility::animarray(var_00));
|
||||
if(var_00 == "right2left")
|
||||
{
|
||||
var_03 = 1 - var_03;
|
||||
}
|
||||
|
||||
var_04 = 20 * abs(var_03 - var_02);
|
||||
if(var_03 < var_02)
|
||||
{
|
||||
var_00 = "left2right";
|
||||
var_04 = var_04 * var_01["left2right"];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = "right2left";
|
||||
var_04 = var_04 * var_01["right2left"];
|
||||
var_03 = 1 - var_03;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = "left2right";
|
||||
var_04 = 0;
|
||||
var_03 = 0.5;
|
||||
}
|
||||
|
||||
self setanimknoblimited(animscripts\utility::animarray(var_00),1,0.1,var_04);
|
||||
self setanimtime(animscripts\utility::animarray(var_00),var_03);
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
snowmobile_loop_passenger()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
self setanimknoball(animscripts\utility::animarray("hide"),%body,1,0);
|
||||
self setanimknob(animscripts\utility::animarray("drive"),1,0);
|
||||
for(;;)
|
||||
{
|
||||
var_00 = maps\_vehicle_code::update_steering(self.ridingvehicle);
|
||||
self setanimlimited(%sm_lean,abs(var_00),0.05);
|
||||
if(var_00 >= 0)
|
||||
{
|
||||
self setanimknoblimited(animscripts\utility::animarray("lean_right"),1,0.05);
|
||||
}
|
||||
else
|
||||
{
|
||||
self setanimknoblimited(animscripts\utility::animarray("lean_left"),1,0.05);
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
snowmobile_loop_driver_shooting()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
var_00 = 0.05;
|
||||
var_01 = 0;
|
||||
self setanimknoball(%sm_aiming,%body,1,0);
|
||||
self setanimknob(animscripts\utility::animarray("idle"),1,0);
|
||||
for(;;)
|
||||
{
|
||||
if(self.current_event != "none")
|
||||
{
|
||||
self waittill("snowmobile_event_finished");
|
||||
continue;
|
||||
}
|
||||
|
||||
var_02 = maps\_vehicle_code::update_steering(self.ridingvehicle);
|
||||
var_03 = 1 - abs(var_02);
|
||||
var_04 = max(0,0 - var_02);
|
||||
var_05 = max(0,var_02);
|
||||
self setanimlimited(animscripts\utility::animarray("straight_level_center"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("straight_level_left"),var_04,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("straight_level_right"),var_05,var_00);
|
||||
if(self.bulletsinclip <= 0)
|
||||
{
|
||||
animscripts\weaponlist::refillclip();
|
||||
var_01 = gettime() + 3000;
|
||||
}
|
||||
|
||||
if(var_01 <= gettime())
|
||||
{
|
||||
snowmobile_start_shooting();
|
||||
}
|
||||
|
||||
self setanimknoblimited(animscripts\utility::animarray("add_aim_left_center"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_left_left"),var_04,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_left_right"),var_05,var_00);
|
||||
self setanimknoblimited(animscripts\utility::animarray("add_aim_right_center"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_right_left"),var_04,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_right_right"),var_05,var_00);
|
||||
thread snowmobile_stop_shooting();
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
snowmobile_loop_passenger_shooting()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
var_00 = 0.05;
|
||||
self setanimknoball(%sm_aiming,%body,1,0);
|
||||
self setanimknob(animscripts\utility::animarray("idle"),1,0);
|
||||
for(;;)
|
||||
{
|
||||
if(self.current_event != "none")
|
||||
{
|
||||
self waittill("snowmobile_event_finished");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(snowmobile_reload())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01 = maps\_vehicle_code::update_steering(self.ridingvehicle);
|
||||
var_02 = 1 - abs(var_01);
|
||||
var_03 = max(0,0 - var_01);
|
||||
var_04 = max(0,var_01);
|
||||
self setanimlimited(animscripts\utility::animarray("straight_level_center"),var_02,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("straight_level_left"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("straight_level_right"),var_04,var_00);
|
||||
snowmobile_start_shooting();
|
||||
self setanimlimited(animscripts\utility::animarray("aim_left_center"),var_02,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("aim_left_left"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("aim_left_right"),var_04,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("aim_right_center"),var_02,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("aim_right_left"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("aim_right_right"),var_04,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_backleft_center"),var_02,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_backleft_left"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_backleft_right"),var_04,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_backright_center"),var_02,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_backright_left"),var_03,var_00);
|
||||
self setanimlimited(animscripts\utility::animarray("add_aim_backright_right"),var_04,var_00);
|
||||
if(isplayer(self.enemy))
|
||||
{
|
||||
self updateplayersightaccuracy();
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
thread snowmobile_stop_shooting();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
snowmobile_do_event(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self.ridingvehicle.steering_enable = 0;
|
||||
self setflaggedanimknoblimitedrestart("snowmobile_event",param_00,1,0.17);
|
||||
animscripts\shared::donotetracks("snowmobile_event",::snowmobile_waitfor_start_lean);
|
||||
self setanimknoblimited(animscripts\utility::animarray("event_restore"),1,0.1);
|
||||
self.ridingvehicle.steering_enable = 1;
|
||||
self.current_event = "none";
|
||||
self notify("snowmobile_event_finished");
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
snowmobile_handle_events(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("killanimscript");
|
||||
var_01 = self.ridingvehicle;
|
||||
for(;;)
|
||||
{
|
||||
if(var_01.event["jump"][param_00])
|
||||
{
|
||||
var_01.event["jump"][param_00] = 0;
|
||||
self notify("snowmobile_event_occurred");
|
||||
self.current_event = "jump";
|
||||
var_01.steering_enable = 0;
|
||||
self setflaggedanimknoblimitedrestart("jump",animscripts\utility::animarray("event_jump"),1,0.17);
|
||||
}
|
||||
|
||||
if(var_01.event["bump"][param_00])
|
||||
{
|
||||
var_01.event["bump"][param_00] = 0;
|
||||
self notify("snowmobile_event_occurred");
|
||||
if(self.current_event != "bump_big")
|
||||
{
|
||||
thread snowmobile_do_event(animscripts\utility::animarray("event_bump"));
|
||||
}
|
||||
}
|
||||
|
||||
if(var_01.event["bump_big"][param_00])
|
||||
{
|
||||
var_01.event["bump_big"][param_00] = 0;
|
||||
self notify("snowmobile_event_occurred");
|
||||
self.current_event = "bump_big";
|
||||
thread snowmobile_do_event(animscripts\utility::animarray("event_bump_big"));
|
||||
}
|
||||
|
||||
if(var_01.event["sway_left"][param_00])
|
||||
{
|
||||
var_01.event["sway_left"][param_00] = 0;
|
||||
self notify("snowmobile_event_occurred");
|
||||
if(self.current_event != "bump_big")
|
||||
{
|
||||
thread snowmobile_do_event(animscripts\utility::animarray("event_sway")["left"]);
|
||||
}
|
||||
}
|
||||
|
||||
if(var_01.event["sway_right"][param_00])
|
||||
{
|
||||
var_01.event["sway_right"][param_00] = 0;
|
||||
self notify("snowmobile_event_occurred");
|
||||
if(self.current_event != "bump_big")
|
||||
{
|
||||
thread snowmobile_do_event(animscripts\utility::animarray("event_sway")["right"]);
|
||||
}
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
snowmobile_start_shooting()
|
||||
{
|
||||
self notify("want_shoot_while_driving");
|
||||
self setanim(%sm_add_fire,1,0.2);
|
||||
if(isdefined(self.shoot_while_driving_thread))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.shoot_while_driving_thread = 1;
|
||||
thread snowmobile_decide_shoot();
|
||||
thread snowmobile_shoot();
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
snowmobile_stop_shooting()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("want_shoot_while_driving");
|
||||
wait(0.05);
|
||||
self notify("end_shoot_while_driving");
|
||||
self.shoot_while_driving_thread = undefined;
|
||||
self clearanim(%sm_add_fire,0.2);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
snowmobile_decide_shoot()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("end_shoot_while_driving");
|
||||
self.a.specialshootbehavior = ::snowmobileshootbehavior;
|
||||
snowmobile_decide_shoot_internal();
|
||||
self.shoot_while_driving_thread = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
snowmobile_decide_shoot_internal()
|
||||
{
|
||||
self endon("snowmobile_event_occurred");
|
||||
animscripts\shoot_behavior::decidewhatandhowtoshoot("normal");
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
snowmobileshootbehavior()
|
||||
{
|
||||
if(!isdefined(self.enemy))
|
||||
{
|
||||
self.shootent = undefined;
|
||||
self.shootpos = undefined;
|
||||
self.shootstyle = "none";
|
||||
return;
|
||||
}
|
||||
|
||||
self.shootent = self.enemy;
|
||||
self.shootpos = self.enemy getshootatpos();
|
||||
var_00 = distancesquared(self.origin,self.enemy.origin);
|
||||
if(var_00 < 1000000)
|
||||
{
|
||||
self.shootstyle = "full";
|
||||
}
|
||||
else if(var_00 < 4000000)
|
||||
{
|
||||
self.shootstyle = "burst";
|
||||
}
|
||||
else
|
||||
{
|
||||
self.shootstyle = "single";
|
||||
}
|
||||
|
||||
if(isdefined(self.enemy.vehicle))
|
||||
{
|
||||
var_01 = 0.5;
|
||||
var_02 = self.shootent.vehicle;
|
||||
var_03 = self.ridingvehicle;
|
||||
var_04 = var_03.origin - var_02.origin;
|
||||
var_05 = anglestoforward(var_02.angles);
|
||||
var_06 = anglestoright(var_02.angles);
|
||||
var_07 = vectordot(var_04,var_05);
|
||||
if(var_07 < 0)
|
||||
{
|
||||
var_08 = var_02 vehicle_getspeed() * var_01;
|
||||
var_08 = var_08 * 17.6;
|
||||
if(var_08 > 50)
|
||||
{
|
||||
var_09 = vectordot(var_04,var_06);
|
||||
var_09 = var_09 / 3;
|
||||
if(var_09 > 128)
|
||||
{
|
||||
var_09 = 128;
|
||||
}
|
||||
else if(var_09 < -128)
|
||||
{
|
||||
var_09 = -128;
|
||||
}
|
||||
|
||||
if(var_09 > 0)
|
||||
{
|
||||
var_09 = 128 - var_09;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_09 = -128 - var_09;
|
||||
}
|
||||
|
||||
self.shootent = undefined;
|
||||
self.shootpos = var_02.origin + var_08 * var_05 + var_09 * var_06;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
snowmobile_shoot()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("end_shoot_while_driving");
|
||||
self notify("doing_shootWhileDriving");
|
||||
self endon("doing_shootWhileDriving");
|
||||
for(;;)
|
||||
{
|
||||
if(!self.bulletsinclip)
|
||||
{
|
||||
wait(0.5);
|
||||
continue;
|
||||
}
|
||||
|
||||
animscripts\combat_utility::shootuntilshootbehaviorchange();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
snowmobile_reload()
|
||||
{
|
||||
if(!self.ridingvehicle.steering_enable)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!animscripts\combat_utility::needtoreload(0))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!animscripts\utility::usingriflelikeweapon())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
snowmobile_reload_internal();
|
||||
self notify("abort_reload");
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
snowmobile_reload_internal()
|
||||
{
|
||||
self endon("snowmobile_event_occurred");
|
||||
self.stop_aiming_for_reload = 1;
|
||||
self waittill("start_blending_reload");
|
||||
self setanim(%sm_aiming,0,0.25);
|
||||
self setflaggedanimrestart("gun_down",animscripts\utility::animarray("gun_down"),1,0.25);
|
||||
animscripts\shared::donotetracks("gun_down");
|
||||
self clearanim(animscripts\utility::animarray("gun_down"),0);
|
||||
self setflaggedanimknoballrestart("reload_anim",animscripts\utility::animarray("reload"),%body,1,0.25);
|
||||
animscripts\shared::donotetracks("reload_anim");
|
||||
self clearanim(%sm_reload,0.2);
|
||||
self setflaggedanimrestart("gun_up",animscripts\utility::animarray("gun_up"),1,0.25);
|
||||
self.gun_up_for_reload = 1;
|
||||
animscripts\shared::donotetracks("gun_up",::snowmobile_waitfor_start_aim);
|
||||
self.stop_aiming_for_reload = undefined;
|
||||
self clearanim(%sm_reload,0.1);
|
||||
self setanim(%sm_aiming,1,0.1);
|
||||
if(isdefined(self.gun_up_for_reload))
|
||||
{
|
||||
self.gun_up_for_reload = undefined;
|
||||
animscripts\shared::donotetracks("gun_up",::snowmobile_waitfor_end);
|
||||
self clearanim(animscripts\utility::animarray("gun_up"),0);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
snowmobile_waitfor_start_aim(param_00)
|
||||
{
|
||||
if(param_00 == "start_aim")
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
snowmobile_waitfor_end(param_00)
|
||||
{
|
||||
if(param_00 == "end")
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
snowmobile_waitfor_start_lean(param_00)
|
||||
{
|
||||
if(param_00 == "start_lean")
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
snowmobile_trackshootentorpos_driver()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("stop tracking");
|
||||
var_00 = 0.05;
|
||||
var_01 = 8;
|
||||
var_02 = 0;
|
||||
var_03 = 0;
|
||||
var_04 = 1;
|
||||
for(;;)
|
||||
{
|
||||
animscripts\track::incranimaimweight();
|
||||
var_05 = (self.origin[0],self.origin[1],self geteye()[2]);
|
||||
var_06 = self.shootpos;
|
||||
if(isdefined(self.shootent))
|
||||
{
|
||||
var_06 = self.shootent getshootatpos();
|
||||
}
|
||||
|
||||
if(!isdefined(var_06))
|
||||
{
|
||||
var_03 = 0;
|
||||
var_07 = self getanglestolikelyenemypath();
|
||||
if(isdefined(var_07))
|
||||
{
|
||||
var_03 = angleclamp180(self.angles[1] - var_07[1]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_08 = var_06 - var_05;
|
||||
var_09 = vectortoangles(var_08);
|
||||
var_03 = self.angles[1] - var_09[1];
|
||||
var_03 = angleclamp180(var_03);
|
||||
}
|
||||
|
||||
if(var_03 > self.rightaimlimit || var_03 < self.leftaimlimit)
|
||||
{
|
||||
var_03 = 0;
|
||||
}
|
||||
|
||||
if(var_04)
|
||||
{
|
||||
var_04 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0A = var_03 - var_02;
|
||||
if(abs(var_0A) > var_01)
|
||||
{
|
||||
var_03 = var_02 + var_01 * common_scripts\utility::sign(var_0A);
|
||||
}
|
||||
}
|
||||
|
||||
var_02 = var_03;
|
||||
var_0B = min(max(0 - var_03,0),90) / 90 * self.a.aimweight;
|
||||
var_0C = min(max(var_03,0),90) / 90 * self.a.aimweight;
|
||||
self setanimlimited(%sm_aim_4,var_0B,var_00);
|
||||
self setanimlimited(%sm_aim_6,var_0C,var_00);
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
snowmobile_trackshootentorpos_passenger()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("stop tracking");
|
||||
var_00 = 0.05;
|
||||
var_01 = 5;
|
||||
var_02 = 20;
|
||||
var_03 = 15;
|
||||
var_04 = 40;
|
||||
var_05 = 30;
|
||||
var_06 = 0;
|
||||
var_07 = 0;
|
||||
var_08 = 1;
|
||||
for(;;)
|
||||
{
|
||||
animscripts\track::incranimaimweight();
|
||||
var_09 = (self.origin[0],self.origin[1],self geteye()[2]);
|
||||
var_0A = self.shootpos;
|
||||
if(isdefined(self.shootent))
|
||||
{
|
||||
var_0A = self.shootent getshootatpos();
|
||||
}
|
||||
|
||||
if(!isdefined(var_0A))
|
||||
{
|
||||
var_07 = 0;
|
||||
var_0B = self getanglestolikelyenemypath();
|
||||
if(isdefined(var_0B))
|
||||
{
|
||||
var_07 = angleclamp180(self.angles[1] - var_0B[1]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0C = var_0A - var_09;
|
||||
var_0D = vectortoangles(var_0C);
|
||||
var_07 = self.angles[1] - var_0D[1];
|
||||
var_07 = angleclamp180(var_07);
|
||||
}
|
||||
|
||||
if(isdefined(self.stop_aiming_for_reload) || var_07 > 0 && var_07 - self.rightaimlimit * self.diraimlimit > 0 || var_07 < 0 && var_07 - self.leftaimlimit * self.diraimlimit < 0)
|
||||
{
|
||||
var_07 = 0;
|
||||
}
|
||||
|
||||
if(var_08)
|
||||
{
|
||||
var_08 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(var_06 < -180 + var_04 && var_07 > 180 - var_05)
|
||||
{
|
||||
var_07 = -179;
|
||||
}
|
||||
|
||||
if(var_06 > 180 - var_04 && var_07 < -180 + var_05)
|
||||
{
|
||||
var_07 = 179;
|
||||
}
|
||||
|
||||
var_0E = var_07 - var_06;
|
||||
var_0F = var_02 - var_01 * abs(var_0E) / 180 + var_01;
|
||||
if(isdefined(self.stop_aiming_for_reload))
|
||||
{
|
||||
var_0F = var_03;
|
||||
if(abs(var_06) < 45)
|
||||
{
|
||||
self notify("start_blending_reload");
|
||||
}
|
||||
}
|
||||
|
||||
if(abs(var_0E) > var_0F)
|
||||
{
|
||||
var_07 = var_06 + var_0F * common_scripts\utility::sign(var_0E);
|
||||
}
|
||||
}
|
||||
|
||||
var_06 = var_07;
|
||||
var_10 = max(-90 - var_07,0) / 90 * self.a.aimweight;
|
||||
var_11 = min(max(0 - var_07,0),90) / 90 * self.a.aimweight;
|
||||
var_12 = max(90 - abs(var_07),0) / 90 * self.a.aimweight;
|
||||
var_13 = min(max(var_07,0),90) / 90 * self.a.aimweight;
|
||||
var_14 = max(-90 + var_07,0) / 90 * self.a.aimweight;
|
||||
self setanimlimited(%sm_aim_1,var_10,var_00);
|
||||
self setanimlimited(%sm_aim_4_delta,var_11,var_00);
|
||||
self setanimlimited(%sm_aim_5_delta,var_12,var_00);
|
||||
self setanimlimited(%sm_aim_6_delta,var_13,var_00);
|
||||
self setanimlimited(%sm_aim_3,var_14,var_00);
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
snowmobile_get_death_anim(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = undefined;
|
||||
var_04 = undefined;
|
||||
var_05 = 0;
|
||||
for(var_06 = 0;var_06 < param_00.size;var_06++)
|
||||
{
|
||||
var_07 = animscripts\utility::absangleclamp180(param_02 - param_01[var_06]);
|
||||
if(!isdefined(var_03) || var_07 < var_05)
|
||||
{
|
||||
var_04 = var_03;
|
||||
var_03 = param_00[var_06];
|
||||
var_05 = var_07;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!isdefined(var_04))
|
||||
{
|
||||
var_04 = param_00[var_06];
|
||||
}
|
||||
}
|
||||
|
||||
var_08 = var_03;
|
||||
if(isdefined(level.prevsnowmobiledeath) && var_08 == level.prevsnowmobiledeath && gettime() - level.prevsnowmobiledeathtime < 500)
|
||||
{
|
||||
var_08 = var_04;
|
||||
}
|
||||
|
||||
anim.prevsnowmobiledeath = var_08;
|
||||
anim.prevsnowmobiledeathtime = gettime();
|
||||
return var_08;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
snowmobile_death_launchslide()
|
||||
{
|
||||
var_00 = self.ridingvehicle;
|
||||
var_01 = var_00.prevframevelocity;
|
||||
var_01 = (var_01[0],var_01[1],randomfloatrange(200,400)) * 0.75;
|
||||
if(lengthsquared(var_01) > 1000000)
|
||||
{
|
||||
var_01 = vectornormalize(var_01) * 1000;
|
||||
}
|
||||
|
||||
var_02 = spawn("script_origin",self.origin);
|
||||
var_02 moveslide((0,0,40),15,var_01);
|
||||
self linkto(var_02);
|
||||
var_02 thread deleteshortly();
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
snowmobile_normal_death()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00[0] = level.scr_anim["snowmobile"]["small"]["death"]["back"];
|
||||
var_00[1] = level.scr_anim["snowmobile"]["small"]["death"]["right"];
|
||||
var_00[2] = level.scr_anim["snowmobile"]["small"]["death"]["left"];
|
||||
var_01 = [];
|
||||
var_01[0] = -180;
|
||||
var_01[1] = -90;
|
||||
var_01[2] = 90;
|
||||
var_02 = snowmobile_get_death_anim(var_00,var_01,self.damageyaw);
|
||||
animscripts\death::playdeathanim(var_02);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
snowmobile_collide_death()
|
||||
{
|
||||
var_00 = self.ridingvehicle;
|
||||
if(!isdefined(var_00))
|
||||
{
|
||||
return snowmobile_normal_death();
|
||||
}
|
||||
|
||||
var_01 = var_00.prevframevelocity;
|
||||
snowmobile_death_launchslide();
|
||||
var_02 = vectortoangles(var_01);
|
||||
var_03 = angleclamp180(var_02[1] - self.angles[1]);
|
||||
var_04 = [];
|
||||
var_04[0] = level.scr_anim["snowmobile"]["big"]["death"]["back"];
|
||||
var_04[1] = level.scr_anim["snowmobile"]["big"]["death"]["left"];
|
||||
var_04[2] = level.scr_anim["snowmobile"]["big"]["death"]["front"];
|
||||
var_04[3] = level.scr_anim["snowmobile"]["big"]["death"]["right"];
|
||||
var_05 = [];
|
||||
var_05[0] = -180;
|
||||
var_05[1] = -90;
|
||||
var_05[2] = 0;
|
||||
var_05[3] = 90;
|
||||
var_06 = snowmobile_get_death_anim(var_04,var_05,var_03);
|
||||
animscripts\death::playdeathanim(var_06);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
deleteshortly()
|
||||
{
|
||||
var_00 = self.origin;
|
||||
for(var_01 = 0;var_01 < 60;var_01++)
|
||||
{
|
||||
wait(0.05);
|
||||
var_00 = self.origin;
|
||||
}
|
||||
|
||||
wait(3);
|
||||
if(isdefined(self))
|
||||
{
|
||||
self delete();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
snowmobile_setanim_common(param_00)
|
||||
{
|
||||
self.a.array["idle"] = level.scr_anim["snowmobile"][param_00]["idle"];
|
||||
self.a.array["drive"] = level.scr_anim["snowmobile"][param_00]["drive"];
|
||||
self.a.array["fire"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["single"] = animscripts\utility::array(level.scr_anim["snowmobile"][param_00]["single"]);
|
||||
self.a.array["burst2"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["burst3"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["burst4"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["burst5"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["burst6"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["semi2"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["semi3"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["semi4"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
self.a.array["semi5"] = level.scr_anim["snowmobile"][param_00]["fire"];
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
snowmobile_setanim_driver(param_00)
|
||||
{
|
||||
self.a.array = [];
|
||||
snowmobile_setanim_common("driver");
|
||||
self.a.array["left2right"] = level.scr_anim["snowmobile"]["driver"]["left2right"];
|
||||
self.a.array["right2left"] = level.scr_anim["snowmobile"]["driver"]["right2left"];
|
||||
self.a.array["straight_level_left"] = level.scr_anim["snowmobile"]["driver"]["straight_level"]["left"];
|
||||
self.a.array["straight_level_center"] = level.scr_anim["snowmobile"]["driver"]["straight_level"]["center"];
|
||||
self.a.array["straight_level_right"] = level.scr_anim["snowmobile"]["driver"]["straight_level"]["right"];
|
||||
self.a.array["add_aim_left_left"] = level.scr_anim["snowmobile"]["driver"]["add_aim_left"]["left"];
|
||||
self.a.array["add_aim_left_center"] = level.scr_anim["snowmobile"]["driver"]["add_aim_left"]["center"];
|
||||
self.a.array["add_aim_left_right"] = level.scr_anim["snowmobile"]["driver"]["add_aim_left"]["right"];
|
||||
self.a.array["add_aim_right_left"] = level.scr_anim["snowmobile"]["driver"]["add_aim_right"]["left"];
|
||||
self.a.array["add_aim_right_center"] = level.scr_anim["snowmobile"]["driver"]["add_aim_right"]["center"];
|
||||
self.a.array["add_aim_right_right"] = level.scr_anim["snowmobile"]["driver"]["add_aim_right"]["right"];
|
||||
if(param_00)
|
||||
{
|
||||
self.a.array["event_jump"] = level.scr_anim["snowmobile"]["driver"]["shoot_jump"];
|
||||
self.a.array["event_bump"] = level.scr_anim["snowmobile"]["driver"]["shoot_bump"];
|
||||
self.a.array["event_bump_big"] = level.scr_anim["snowmobile"]["driver"]["shoot_bump_big"];
|
||||
self.a.array["event_sway"] = [];
|
||||
self.a.array["event_sway"]["left"] = level.scr_anim["snowmobile"]["driver"]["shoot_sway_left"];
|
||||
self.a.array["event_sway"]["right"] = level.scr_anim["snowmobile"]["driver"]["shoot_sway_right"];
|
||||
self.a.array["event_restore"] = %sm_aiming;
|
||||
return;
|
||||
}
|
||||
|
||||
self.a.array["event_jump"] = level.scr_anim["snowmobile"]["driver"]["drive_jump"];
|
||||
self.a.array["event_bump"] = level.scr_anim["snowmobile"]["driver"]["drive_bump"];
|
||||
self.a.array["event_bump_big"] = level.scr_anim["snowmobile"]["driver"]["drive_bump_big"];
|
||||
self.a.array["event_sway"] = [];
|
||||
self.a.array["event_sway"]["left"] = level.scr_anim["snowmobile"]["driver"]["drive_sway_left"];
|
||||
self.a.array["event_sway"]["right"] = level.scr_anim["snowmobile"]["driver"]["drive_sway_right"];
|
||||
self.a.array["event_restore"] = %sm_turn;
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
snowmobile_setanim_passenger(param_00)
|
||||
{
|
||||
self.a.array = [];
|
||||
snowmobile_setanim_common("passenger");
|
||||
self.a.array["hide"] = level.scr_anim["snowmobile"]["passenger"]["hide"];
|
||||
self.a.array["lean_left"] = level.scr_anim["snowmobile"]["passenger"]["add_lean"]["left"];
|
||||
self.a.array["lean_right"] = level.scr_anim["snowmobile"]["passenger"]["add_lean"]["right"];
|
||||
self.a.array["reload"] = level.scr_anim["snowmobile"]["passenger"]["reload"];
|
||||
self.a.array["gun_up"] = level.scr_anim["snowmobile"]["passenger"]["gun_up"];
|
||||
self.a.array["gun_down"] = level.scr_anim["snowmobile"]["passenger"]["gun_down"];
|
||||
self.a.array["aim_left_left"] = level.scr_anim["snowmobile"]["passenger"]["aim_left"]["left"];
|
||||
self.a.array["aim_left_center"] = level.scr_anim["snowmobile"]["passenger"]["aim_left"]["center"];
|
||||
self.a.array["aim_left_right"] = level.scr_anim["snowmobile"]["passenger"]["aim_left"]["right"];
|
||||
self.a.array["aim_right_left"] = level.scr_anim["snowmobile"]["passenger"]["aim_right"]["left"];
|
||||
self.a.array["aim_right_center"] = level.scr_anim["snowmobile"]["passenger"]["aim_right"]["center"];
|
||||
self.a.array["aim_right_right"] = level.scr_anim["snowmobile"]["passenger"]["aim_right"]["right"];
|
||||
self.a.array["add_aim_backleft_left"] = level.scr_anim["snowmobile"]["passenger"]["add_aim_backleft"]["left"];
|
||||
self.a.array["add_aim_backleft_center"] = level.scr_anim["snowmobile"]["passenger"]["add_aim_backleft"]["center"];
|
||||
self.a.array["add_aim_backleft_right"] = level.scr_anim["snowmobile"]["passenger"]["add_aim_backleft"]["right"];
|
||||
self.a.array["add_aim_backright_left"] = level.scr_anim["snowmobile"]["passenger"]["add_aim_backright"]["left"];
|
||||
self.a.array["add_aim_backright_center"] = level.scr_anim["snowmobile"]["passenger"]["add_aim_backright"]["center"];
|
||||
self.a.array["add_aim_backright_right"] = level.scr_anim["snowmobile"]["passenger"]["add_aim_backright"]["right"];
|
||||
self.a.array["straight_level_left"] = level.scr_anim["snowmobile"]["passenger"]["straight_level"]["left"];
|
||||
self.a.array["straight_level_center"] = level.scr_anim["snowmobile"]["passenger"]["straight_level"]["center"];
|
||||
self.a.array["straight_level_right"] = level.scr_anim["snowmobile"]["passenger"]["straight_level"]["right"];
|
||||
if(param_00)
|
||||
{
|
||||
self.a.array["event_jump"] = level.scr_anim["snowmobile"]["passenger"]["drive_jump"];
|
||||
self.a.array["event_bump"] = level.scr_anim["snowmobile"]["passenger"]["drive_bump"];
|
||||
self.a.array["event_bump_big"] = level.scr_anim["snowmobile"]["passenger"]["drive_bump_big"];
|
||||
self.a.array["event_sway"] = [];
|
||||
self.a.array["event_sway"]["left"] = level.scr_anim["snowmobile"]["passenger"]["drive_sway_left"];
|
||||
self.a.array["event_sway"]["right"] = level.scr_anim["snowmobile"]["passenger"]["drive_sway_right"];
|
||||
self.a.array["event_restore"] = %sm_aiming;
|
||||
return;
|
||||
}
|
||||
|
||||
self.a.array["event_jump"] = level.scr_anim["snowmobile"]["passenger"]["hide_jump"];
|
||||
self.a.array["event_bump"] = level.scr_anim["snowmobile"]["passenger"]["hide_bump"];
|
||||
self.a.array["event_bump_big"] = level.scr_anim["snowmobile"]["passenger"]["hide_bump_big"];
|
||||
self.a.array["event_sway"] = [];
|
||||
self.a.array["event_sway"]["left"] = level.scr_anim["snowmobile"]["passenger"]["hide_sway_left"];
|
||||
self.a.array["event_sway"]["right"] = level.scr_anim["snowmobile"]["passenger"]["hide_sway_right"];
|
||||
self.a.array["event_restore"] = %sm_turn;
|
||||
}
|
845
AW/PC/animscripts/squadmanager.gsc
Normal file
845
AW/PC/animscripts/squadmanager.gsc
Normal file
@ -0,0 +1,845 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: squadmanager.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 32
|
||||
* Decompile Time: 456 ms
|
||||
* Timestamp: 4/22/2024 2:00:59 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init_squadmanager()
|
||||
{
|
||||
if(isdefined(level.squadinitialized) && level.squadinitialized)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
anim.squadcreatefuncs = [];
|
||||
anim.squadcreatestrings = [];
|
||||
anim.squads = [];
|
||||
anim.squadindex = [];
|
||||
anim.squadrand = 0;
|
||||
anim.squadinitialized = 1;
|
||||
maps\_utility::set_console_status();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
createsquad(param_00,param_01)
|
||||
{
|
||||
level.squads[param_00] = spawnstruct();
|
||||
var_02 = level.squads[param_00];
|
||||
var_02.squadname = param_00;
|
||||
var_02.team = getsquadteam(param_01);
|
||||
var_02.sighttime = 0;
|
||||
var_02.origin = undefined;
|
||||
var_02.forward = undefined;
|
||||
var_02.enemy = undefined;
|
||||
var_02.isincombat = 0;
|
||||
var_02.membercount = 0;
|
||||
var_02.members = [];
|
||||
var_02.officers = [];
|
||||
var_02.officercount = 0;
|
||||
var_02.squadlist = [];
|
||||
var_02.memberaddfuncs = [];
|
||||
var_02.memberaddstrings = [];
|
||||
var_02.memberremovefuncs = [];
|
||||
var_02.memberremovestrings = [];
|
||||
var_02.squadupdatefuncs = [];
|
||||
var_02.squadupdatestrings = [];
|
||||
var_02.squadid = level.squadindex.size;
|
||||
var_02 initstate("combat",0.75);
|
||||
var_02 initstate("cover",0.75);
|
||||
var_02 initstate("move",0.75);
|
||||
var_02 initstate("stop",0.75);
|
||||
var_02 initstate("death",0.75);
|
||||
var_02 initstate("suppressed",0.75);
|
||||
var_02 initstate("attacking",0.5);
|
||||
level.squadindex[level.squadindex.size] = var_02;
|
||||
var_02 updatesquadlist();
|
||||
level notify("squad created " + param_00);
|
||||
anim notify("squad created " + param_00);
|
||||
for(var_03 = 0;var_03 < level.squadcreatefuncs.size;var_03++)
|
||||
{
|
||||
var_04 = level.squadcreatefuncs[var_03];
|
||||
var_02 thread [[ var_04 ]]();
|
||||
}
|
||||
|
||||
for(var_03 = 0;var_03 < level.squadindex.size;var_03++)
|
||||
{
|
||||
level.squadindex[var_03] updatesquadlist();
|
||||
}
|
||||
|
||||
var_02 thread updatewaiter();
|
||||
var_02 thread squadtracker();
|
||||
var_02 thread officerwaiter();
|
||||
var_02 thread updatememberstates();
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
deletesquad(param_00)
|
||||
{
|
||||
if(param_00 == "axis" || param_00 == "team3" || param_00 == "allies")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = level.squads[param_00].squadid;
|
||||
var_02 = level.squads[param_00];
|
||||
var_02 notify("squad_deleting");
|
||||
while(var_02.members.size)
|
||||
{
|
||||
var_02.members[0] addtosquad(var_02.members[0].team);
|
||||
}
|
||||
|
||||
level.squadindex[var_01] = level.squadindex[level.squadindex.size - 1];
|
||||
level.squadindex[var_01].squadid = var_01;
|
||||
level.squadindex[level.squadindex.size - 1] = undefined;
|
||||
level.squads[param_00] = undefined;
|
||||
level notify("squad deleted " + param_00);
|
||||
anim notify("squad deleted " + param_00);
|
||||
for(var_03 = 0;var_03 < level.squadindex.size;var_03++)
|
||||
{
|
||||
level.squadindex[var_03] updatesquadlist();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
generatesquadname()
|
||||
{
|
||||
var_00 = "auto" + level.squadrand;
|
||||
level.squadrand++;
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
addplayertosquad(param_00)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
if(isdefined(self.script_squadname))
|
||||
{
|
||||
param_00 = self.script_squadname;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 = self.team;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(level.squads[param_00]))
|
||||
{
|
||||
anim createsquad(param_00,self);
|
||||
}
|
||||
|
||||
var_01 = level.squads[param_00];
|
||||
self.squad = var_01;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
squadchange()
|
||||
{
|
||||
self endon("death");
|
||||
wait(10);
|
||||
if(!isdefined(self.script_squadname))
|
||||
{
|
||||
var_00 = self.team + self.script_flanker;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = self.script_squadname + self.script_flanker;
|
||||
}
|
||||
|
||||
addtosquad(var_00);
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
getsquadteam(param_00)
|
||||
{
|
||||
var_01 = "allies";
|
||||
if(param_00.team == "axis" || param_00.team == "neutral" || param_00.team == "team3")
|
||||
{
|
||||
var_01 = param_00.team;
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
addtosquad(param_00)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
if(isdefined(self.script_flanker))
|
||||
{
|
||||
thread squadchange();
|
||||
}
|
||||
|
||||
if(isdefined(self.script_squadname))
|
||||
{
|
||||
param_00 = self.script_squadname;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 = self.team;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(level.squads[param_00]))
|
||||
{
|
||||
anim createsquad(param_00,self);
|
||||
}
|
||||
|
||||
var_01 = level.squads[param_00];
|
||||
if(isdefined(self.squad))
|
||||
{
|
||||
if(self.squad == var_01)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
removefromsquad();
|
||||
}
|
||||
}
|
||||
|
||||
self.lastenemysighttime = 0;
|
||||
self.combattime = 0;
|
||||
self.squad = var_01;
|
||||
self.memberid = var_01.members.size;
|
||||
var_01.members[self.memberid] = self;
|
||||
var_01.membercount = var_01.members.size;
|
||||
if(isdefined(level.loadoutcomplete))
|
||||
{
|
||||
if(self.team == "allies" && animscripts\battlechatter::isofficer())
|
||||
{
|
||||
addofficertosquad();
|
||||
}
|
||||
}
|
||||
|
||||
for(var_02 = 0;var_02 < self.squad.memberaddfuncs.size;var_02++)
|
||||
{
|
||||
var_03 = self.squad.memberaddfuncs[var_02];
|
||||
self thread [[ var_03 ]](self.squad.squadname);
|
||||
}
|
||||
|
||||
maps\_dds::dds_ai_init();
|
||||
thread membercombatwaiter();
|
||||
thread memberdeathwaiter();
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
removefromsquad()
|
||||
{
|
||||
var_00 = self.squad;
|
||||
var_01 = -1;
|
||||
if(isdefined(self))
|
||||
{
|
||||
var_01 = self.memberid;
|
||||
}
|
||||
else
|
||||
{
|
||||
for(var_02 = 0;var_02 < var_00.members.size;var_02++)
|
||||
{
|
||||
if(var_00.members[var_02] == self)
|
||||
{
|
||||
var_01 = var_02;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var_01 != var_00.members.size - 1)
|
||||
{
|
||||
var_03 = var_00.members[var_00.members.size - 1];
|
||||
var_00.members[var_01] = var_03;
|
||||
if(isdefined(var_03))
|
||||
{
|
||||
var_03.memberid = var_01;
|
||||
}
|
||||
}
|
||||
|
||||
var_00.members[var_00.members.size - 1] = undefined;
|
||||
var_00.membercount = var_00.members.size;
|
||||
if(isdefined(self.officerid))
|
||||
{
|
||||
removeofficerfromsquad();
|
||||
}
|
||||
|
||||
if(isdefined(self) && isdefined(self.team))
|
||||
{
|
||||
maps\_dds::dds_notify_casualty();
|
||||
}
|
||||
|
||||
for(var_02 = 0;var_02 < self.squad.memberremovefuncs.size;var_02++)
|
||||
{
|
||||
var_04 = self.squad.memberremovefuncs[var_02];
|
||||
self thread [[ var_04 ]](var_00.squadname);
|
||||
}
|
||||
|
||||
if(var_00.membercount == 0)
|
||||
{
|
||||
deletesquad(var_00.squadname);
|
||||
}
|
||||
|
||||
if(isdefined(self))
|
||||
{
|
||||
self.squad = undefined;
|
||||
self.memberid = undefined;
|
||||
}
|
||||
|
||||
self notify("removed from squad");
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
addofficertosquad()
|
||||
{
|
||||
var_00 = self.squad;
|
||||
if(isdefined(self.officerid))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.officerid = var_00.officers.size;
|
||||
var_00.officers[self.officerid] = self;
|
||||
var_00.officercount = var_00.officers.size;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
removeofficerfromsquad()
|
||||
{
|
||||
var_00 = self.squad;
|
||||
var_01 = -1;
|
||||
if(isdefined(self))
|
||||
{
|
||||
var_01 = self.officerid;
|
||||
}
|
||||
else
|
||||
{
|
||||
for(var_02 = 0;var_02 < var_00.officers.size;var_02++)
|
||||
{
|
||||
if(var_00.officers[var_02] == self)
|
||||
{
|
||||
var_01 = var_02;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var_01 != var_00.officers.size - 1)
|
||||
{
|
||||
var_03 = var_00.officers[var_00.officers.size - 1];
|
||||
var_00.officers[var_01] = var_03;
|
||||
if(isdefined(var_03))
|
||||
{
|
||||
var_03.officerid = var_01;
|
||||
}
|
||||
}
|
||||
|
||||
var_00.officers[var_00.officers.size - 1] = undefined;
|
||||
var_00.officercount = var_00.officers.size;
|
||||
if(isdefined(self))
|
||||
{
|
||||
self.officerid = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
officerwaiter()
|
||||
{
|
||||
if(!isdefined(level.loadoutcomplete))
|
||||
{
|
||||
anim waittill("loadout complete");
|
||||
}
|
||||
|
||||
for(var_00 = 0;var_00 < self.members.size;var_00++)
|
||||
{
|
||||
if(self.members[var_00] animscripts\battlechatter::isofficer())
|
||||
{
|
||||
self.members[var_00] addofficertosquad();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
updatewaiter()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
anim waittill("squadupdate",var_00);
|
||||
switch(var_00)
|
||||
{
|
||||
case "squadlist":
|
||||
updatesquadlist();
|
||||
break;
|
||||
|
||||
case "combat":
|
||||
updatecombat();
|
||||
break;
|
||||
|
||||
case "origin":
|
||||
updateorigin();
|
||||
break;
|
||||
|
||||
case "forward":
|
||||
updateheading();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
squadtracker()
|
||||
{
|
||||
anim endon("squad deleted " + self.squadname);
|
||||
var_00 = 0.1;
|
||||
if(level.currentgen)
|
||||
{
|
||||
var_00 = 0.5;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
updateall();
|
||||
wait(var_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
memberdeathwaiter()
|
||||
{
|
||||
self endon("removed from squad");
|
||||
self waittill("death",var_00);
|
||||
if(isdefined(self))
|
||||
{
|
||||
self.attacker = var_00;
|
||||
}
|
||||
|
||||
removefromsquad();
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
membercombatwaiter()
|
||||
{
|
||||
self endon("removed from squad");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("enemy");
|
||||
if(!isdefined(self.enemy))
|
||||
{
|
||||
self.squad notify("squadupdate","combat");
|
||||
}
|
||||
else
|
||||
{
|
||||
self.squad.isincombat = 1;
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
updateheading()
|
||||
{
|
||||
if(isdefined(self.enemy))
|
||||
{
|
||||
self.forward = vectornormalize(self.enemy.origin - self.origin);
|
||||
return;
|
||||
}
|
||||
|
||||
var_00 = (0,0,0);
|
||||
var_01 = 0;
|
||||
for(var_02 = 0;var_02 < self.members.size;var_02++)
|
||||
{
|
||||
if(!isalive(self.members[var_02]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_00 = var_00 + anglestoforward(self.members[var_02].angles);
|
||||
var_01++;
|
||||
}
|
||||
|
||||
if(var_01)
|
||||
{
|
||||
self.forward = (var_00[0] / var_01,var_00[1] / var_01,var_00[2] / var_01);
|
||||
return;
|
||||
}
|
||||
|
||||
self.forward = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
updateorigin()
|
||||
{
|
||||
var_00 = (0,0,0);
|
||||
var_01 = 0;
|
||||
for(var_02 = 0;var_02 < self.members.size;var_02++)
|
||||
{
|
||||
if(!isalive(self.members[var_02]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_00 = var_00 + self.members[var_02].origin;
|
||||
var_01++;
|
||||
}
|
||||
|
||||
if(var_01)
|
||||
{
|
||||
self.origin = (var_00[0] / var_01,var_00[1] / var_01,var_00[2] / var_01);
|
||||
return;
|
||||
}
|
||||
|
||||
self.origin = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
updatecombat()
|
||||
{
|
||||
self.isincombat = 0;
|
||||
for(var_00 = 0;var_00 < level.squadindex.size;var_00++)
|
||||
{
|
||||
self.squadlist[level.squadindex[var_00].squadname].isincontact = 0;
|
||||
}
|
||||
|
||||
for(var_00 = 0;var_00 < self.members.size;var_00++)
|
||||
{
|
||||
if(isdefined(self.members[var_00].enemy) && isdefined(self.members[var_00].enemy.squad) && self.members[var_00].combattime > 0)
|
||||
{
|
||||
self.squadlist[self.members[var_00].enemy.squad.squadname].isincontact = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
updateenemy()
|
||||
{
|
||||
var_00 = undefined;
|
||||
for(var_01 = 0;var_01 < self.members.size;var_01++)
|
||||
{
|
||||
if(isdefined(self.members[var_01].enemy) && isdefined(self.members[var_01].enemy.squad))
|
||||
{
|
||||
if(!isdefined(var_00))
|
||||
{
|
||||
var_00 = self.members[var_01].enemy.squad;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self.members[var_01].enemy.squad.membercount > var_00.membercount)
|
||||
{
|
||||
var_00 = self.members[var_01].enemy.squad;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.enemy = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
updateall()
|
||||
{
|
||||
var_00 = (0,0,0);
|
||||
var_01 = 0;
|
||||
var_02 = undefined;
|
||||
var_03 = 0;
|
||||
updatecombat();
|
||||
for(var_04 = 0;var_04 < self.members.size;var_04++)
|
||||
{
|
||||
if(!isalive(self.members[var_04]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_00 = var_00 + self.members[var_04].origin;
|
||||
var_01++;
|
||||
if(isdefined(self.members[var_04].enemy) && isdefined(self.members[var_04].enemy.squad))
|
||||
{
|
||||
if(!isdefined(var_02))
|
||||
{
|
||||
var_02 = self.members[var_04].enemy.squad;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self.members[var_04].enemy.squad.membercount > var_02.membercount)
|
||||
{
|
||||
var_02 = self.members[var_04].enemy.squad;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var_01)
|
||||
{
|
||||
self.origin = (var_00[0] / var_01,var_00[1] / var_01,var_00[2] / var_01);
|
||||
}
|
||||
else
|
||||
{
|
||||
self.origin = var_00;
|
||||
}
|
||||
|
||||
self.isincombat = var_03;
|
||||
self.enemy = var_02;
|
||||
updateheading();
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
updatesquadlist()
|
||||
{
|
||||
for(var_00 = 0;var_00 < level.squadindex.size;var_00++)
|
||||
{
|
||||
if(!isdefined(self.squadlist[level.squadindex[var_00].squadname]))
|
||||
{
|
||||
self.squadlist[level.squadindex[var_00].squadname] = spawnstruct();
|
||||
self.squadlist[level.squadindex[var_00].squadname].isincontact = 0;
|
||||
}
|
||||
|
||||
for(var_01 = 0;var_01 < self.squadupdatefuncs.size;var_01++)
|
||||
{
|
||||
var_02 = self.squadupdatefuncs[var_01];
|
||||
self thread [[ var_02 ]](level.squadindex[var_00].squadname);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
printabovehead(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
self endon("death");
|
||||
if(!isdefined(param_02))
|
||||
{
|
||||
param_02 = (0,0,0);
|
||||
}
|
||||
|
||||
if(!isdefined(param_03))
|
||||
{
|
||||
param_03 = (1,0,0);
|
||||
}
|
||||
|
||||
for(var_04 = 0;var_04 < param_01 * 2;var_04++)
|
||||
{
|
||||
if(!isalive(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_05 = self getshootatpos() + (0,0,10) + param_02;
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
aiupdateanimstate(param_00)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "combat":
|
||||
case "death":
|
||||
case "move":
|
||||
case "stop":
|
||||
self.a.state = param_00;
|
||||
break;
|
||||
|
||||
case "grenadecower":
|
||||
case "pain":
|
||||
break;
|
||||
|
||||
case "stalingrad_cover_crouch":
|
||||
case "cover_wide_right":
|
||||
case "cover_wide_left":
|
||||
case "concealment_stand":
|
||||
case "concealment_prone":
|
||||
case "concealment_crouch":
|
||||
case "cover_prone":
|
||||
case "cover_swim_right":
|
||||
case "cover_swim_left":
|
||||
case "cover_swim_up":
|
||||
case "cover_left":
|
||||
case "cover_multi":
|
||||
case "cover_right":
|
||||
case "cover_stand":
|
||||
case "cover_crouch":
|
||||
self.a.state = "cover";
|
||||
break;
|
||||
|
||||
case "l33t truckride combat":
|
||||
case "aim":
|
||||
self.a.state = "combat";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
updatestates()
|
||||
{
|
||||
resetstate("combat");
|
||||
resetstate("cover");
|
||||
resetstate("move");
|
||||
resetstate("stop");
|
||||
resetstate("death");
|
||||
resetstate("suppressed");
|
||||
resetstate("attacking");
|
||||
for(var_00 = 0;var_00 < self.members.size;var_00++)
|
||||
{
|
||||
if(!isalive(self.members[var_00]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
querymemberanimstate(self.members[var_00]);
|
||||
querymemberstate(self.members[var_00],"suppressed");
|
||||
querymemberstate(self.members[var_00],"combat");
|
||||
querymemberstate(self.members[var_00],"attacking");
|
||||
querymemberstate(self.members[var_00],"cover");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
updatememberstates()
|
||||
{
|
||||
anim endon("squad deleted " + self.squadname);
|
||||
var_00 = 0.05;
|
||||
if(level.currentgen)
|
||||
{
|
||||
var_00 = 0.25;
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
for(var_01 = 0;var_01 < self.members.size;var_01++)
|
||||
{
|
||||
if(!isalive(self.members[var_01]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
self.members[var_01] aiupdatecombat(var_00);
|
||||
self.members[var_01] aiupdatesuppressed(var_00);
|
||||
}
|
||||
|
||||
wait(var_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
aiupdatecombat(param_00)
|
||||
{
|
||||
if(isdefined(self.lastenemysightpos))
|
||||
{
|
||||
if(self.combattime < 0)
|
||||
{
|
||||
self.combattime = param_00;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.combattime = self.combattime + param_00;
|
||||
}
|
||||
|
||||
self.lastenemysighttime = gettime();
|
||||
return;
|
||||
}
|
||||
else if(self issuppressed())
|
||||
{
|
||||
self.combattime = self.combattime + param_00;
|
||||
return;
|
||||
}
|
||||
|
||||
if(self.combattime > 0)
|
||||
{
|
||||
self.combattime = 0 - param_00;
|
||||
return;
|
||||
}
|
||||
|
||||
self.combattime = self.combattime - param_00;
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
aiupdatesuppressed(param_00)
|
||||
{
|
||||
if(self.suppressed)
|
||||
{
|
||||
if(self.suppressedtime < 0)
|
||||
{
|
||||
self.suppressedtime = param_00;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.suppressedtime = self.suppressedtime + param_00;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(self.suppressedtime > 0)
|
||||
{
|
||||
self.suppressedtime = 0 - param_00;
|
||||
return;
|
||||
}
|
||||
|
||||
self.suppressedtime = self.suppressedtime - param_00;
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
initstate(param_00,param_01)
|
||||
{
|
||||
self.squadstates[param_00] = spawnstruct();
|
||||
self.squadstates[param_00].activateratio = param_01;
|
||||
self.squadstates[param_00].isactive = 0;
|
||||
self.squadstates[param_00].numactive = 0;
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
resetstate(param_00)
|
||||
{
|
||||
self.squadstates[param_00].isactive = 0;
|
||||
self.squadstates[param_00].numactive = 0;
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
querymemberanimstate(param_00)
|
||||
{
|
||||
self.squadstates[param_00.a.state].numactive++;
|
||||
if(self.squadstates[param_00.a.state].numactive > self.squadstates[param_00.a.state].activateratio * self.members.size)
|
||||
{
|
||||
self.squadstates[param_00.a.state].isactive = 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
querymemberstate(param_00,param_01)
|
||||
{
|
||||
switch(param_01)
|
||||
{
|
||||
case "suppressed":
|
||||
if(param_00.suppressedtime > 1)
|
||||
{
|
||||
self.squadstates[param_01].numactive++;
|
||||
}
|
||||
break;
|
||||
|
||||
case "combat":
|
||||
if(param_00.combattime > 0)
|
||||
{
|
||||
self.squadstates[param_01].numactive++;
|
||||
}
|
||||
break;
|
||||
|
||||
case "attacking":
|
||||
if(gettime() < param_00.a.lastshoottime + 2000)
|
||||
{
|
||||
self.squadstates[param_01].numactive++;
|
||||
}
|
||||
break;
|
||||
|
||||
case "cover":
|
||||
if(!param_00 animscripts\battlechatter::isexposed())
|
||||
{
|
||||
self.squadstates[param_01].numactive++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if(self.squadstates[param_01].numactive > self.squadstates[param_01].activateratio * self.members.size)
|
||||
{
|
||||
self.squadstates[param_01].isactive = 1;
|
||||
}
|
||||
}
|
379
AW/PC/animscripts/stop.gsc
Normal file
379
AW/PC/animscripts/stop.gsc
Normal file
@ -0,0 +1,379 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: stop.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 12
|
||||
* Decompile Time: 204 ms
|
||||
* Timestamp: 4/22/2024 2:01:00 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init_animset_idle()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["stand"][0] = [%casual_stand_idle,%casual_stand_idle_twitch,%casual_stand_idle_twitchb];
|
||||
var_00["stand"][1] = [%casual_stand_v2_idle,%casual_stand_v2_twitch_radio,%casual_stand_v2_twitch_shift,%casual_stand_v2_twitch_talk];
|
||||
var_00["stand_cqb"][0] = [%cqb_stand_idle,%cqb_stand_twitch];
|
||||
var_00["crouch"][0] = [%casual_crouch_idle];
|
||||
level.archetypes["soldier"]["idle"] = var_00;
|
||||
var_00 = [];
|
||||
var_00["stand"][0] = [2,1,1];
|
||||
var_00["stand"][1] = [10,4,7,4];
|
||||
var_00["stand_cqb"][0] = [2,1];
|
||||
var_00["crouch"][0] = [6];
|
||||
level.archetypes["soldier"]["idle_weights"] = var_00;
|
||||
var_00 = [];
|
||||
var_00["stand"] = %casual_stand_idle_trans_in;
|
||||
var_00["crouch"] = %casual_crouch_idle_in;
|
||||
var_00["stand_smg"] = %smg_casual_stand_idle_trans_in;
|
||||
level.archetypes["soldier"]["idle_transitions"] = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
main()
|
||||
{
|
||||
if(isdefined(self.no_ai))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.custom_animscript))
|
||||
{
|
||||
if(isdefined(self.custom_animscript["stop"]))
|
||||
{
|
||||
[[ self.custom_animscript["stop"] ]]();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
self notify("stopScript");
|
||||
self endon("killanimscript");
|
||||
[[ self.exception["stop_immediate"] ]]();
|
||||
thread delayedexception();
|
||||
animscripts\utility::initialize("stop");
|
||||
if(isdefined(self.specialidleanim))
|
||||
{
|
||||
specialidleloop();
|
||||
}
|
||||
|
||||
animscripts\utility::randomizeidleset();
|
||||
thread setlaststoppedtime();
|
||||
thread animscripts\reactions::reactionscheckloop();
|
||||
var_00 = isdefined(self.customidleanimset);
|
||||
if(!var_00)
|
||||
{
|
||||
if(self.a.weaponpos["right"] == "none" && self.a.weaponpos["left"] == "none")
|
||||
{
|
||||
var_00 = 1;
|
||||
}
|
||||
else if(angleclamp180(self getmuzzleangle()[0]) > 20)
|
||||
{
|
||||
var_00 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if(self.swimmer && !isdefined(self.enemy))
|
||||
{
|
||||
var_01 = animscripts\exit_node::getexitnode();
|
||||
if(isdefined(var_01))
|
||||
{
|
||||
self setflaggedanimknoballrestart("idle",self.customidleanimset["stand"],%body,1,0.5,self.animplaybackrate);
|
||||
turntoangle(var_01.angles[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
self orientmode("face angle",self.angles[1]);
|
||||
}
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
var_02 = getdesiredidlepose();
|
||||
if(var_02 == "prone")
|
||||
{
|
||||
var_00 = 1;
|
||||
pronestill();
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self.a.pose != var_02)
|
||||
{
|
||||
self clearanim(%animscript_root,0.3);
|
||||
var_00 = 0;
|
||||
}
|
||||
|
||||
animscripts\setposemovement::setposemovement(var_02,"stop");
|
||||
if(!var_00)
|
||||
{
|
||||
transitiontoidle(var_02,self.a.idleset);
|
||||
var_00 = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
playidle(var_02,self.a.idleset);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
turntoangle(param_00)
|
||||
{
|
||||
var_01 = self.angles[1];
|
||||
var_02 = angleclamp180(param_00 - var_01);
|
||||
if(-20 < var_02 && var_02 < 20)
|
||||
{
|
||||
rotatetoangle(param_00,2);
|
||||
return;
|
||||
}
|
||||
|
||||
var_03 = animscripts\swim::getswimanim("idle_turn");
|
||||
if(var_02 < -80)
|
||||
{
|
||||
var_04 = var_03[2];
|
||||
}
|
||||
else if(var_03 < -20)
|
||||
{
|
||||
var_04 = var_04[3];
|
||||
}
|
||||
else if(var_03 < 80)
|
||||
{
|
||||
var_04 = var_04[5];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = var_04[6];
|
||||
}
|
||||
|
||||
var_05 = getanimlength(var_04);
|
||||
var_06 = abs(var_02) / self.turnrate;
|
||||
var_06 = var_06 / 1000;
|
||||
var_07 = var_05 / var_06;
|
||||
self orientmode("face angle",param_00);
|
||||
self setflaggedanimrestart("swim_turn",var_04,1,0.2,var_07 * self.moveplaybackrate);
|
||||
animscripts\shared::donotetracks("swim_turn");
|
||||
self clearanim(var_04,0.2);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
rotatetoangle(param_00,param_01)
|
||||
{
|
||||
self orientmode("face angle",param_00);
|
||||
while(angleclamp(param_00 - self.angles[1]) > param_01)
|
||||
{
|
||||
wait(0.1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
setlaststoppedtime()
|
||||
{
|
||||
self endon("death");
|
||||
self waittill("killanimscript");
|
||||
self.laststoppedtime = gettime();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
specialidleloop()
|
||||
{
|
||||
self endon("stop_specialidle");
|
||||
self.a.movement = "stop";
|
||||
var_00 = self.specialidleanim;
|
||||
self animmode("gravity");
|
||||
self orientmode("face current");
|
||||
self clearanim(%animscript_root,0.2);
|
||||
if(var_00.size == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = [];
|
||||
var_02 = var_00[0];
|
||||
for(;;)
|
||||
{
|
||||
if(var_01.size == 0)
|
||||
{
|
||||
var_01 = common_scripts\utility::array_randomize(var_00);
|
||||
}
|
||||
|
||||
if(var_01[0] == var_02 && var_01.size > 1)
|
||||
{
|
||||
var_02 = var_01[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = var_01[0];
|
||||
}
|
||||
|
||||
var_01 = common_scripts\utility::array_remove(var_01,var_02);
|
||||
self setflaggedanimrestart("special_idle",var_02,1,0.2,self.animplaybackrate);
|
||||
childthread animscripts\shared::donotetracks("special_idle");
|
||||
self waittillmatch("end","special_idle");
|
||||
if(var_00.size > 1)
|
||||
{
|
||||
self clearanim(var_02,0.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
getdesiredidlepose()
|
||||
{
|
||||
var_00 = animscripts\utility::getclaimednode();
|
||||
if(isdefined(var_00))
|
||||
{
|
||||
var_01 = var_00.angles[1];
|
||||
var_02 = var_00.type;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = self.desiredangle;
|
||||
var_02 = "node was undefined";
|
||||
}
|
||||
|
||||
animscripts\face::setidleface(level.alertface);
|
||||
var_03 = animscripts\utility::choosepose();
|
||||
if(var_02 == "Cover Stand" || var_02 == "Conceal Stand")
|
||||
{
|
||||
var_03 = animscripts\utility::choosepose("stand");
|
||||
}
|
||||
else if(var_02 == "Cover Crouch" || var_02 == "Conceal Crouch")
|
||||
{
|
||||
var_03 = animscripts\utility::choosepose("crouch");
|
||||
}
|
||||
else if(var_02 == "Cover Prone" || var_02 == "Conceal Prone")
|
||||
{
|
||||
var_03 = animscripts\utility::choosepose("prone");
|
||||
}
|
||||
|
||||
return var_03;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
transitiontoidle(param_00,param_01)
|
||||
{
|
||||
if(animscripts\utility::iscqbwalking() && self.a.pose == "stand")
|
||||
{
|
||||
param_00 = "stand_cqb";
|
||||
}
|
||||
else if(animscripts\utility::usingsmg() && self.a.pose == "stand")
|
||||
{
|
||||
param_00 = "stand_smg";
|
||||
}
|
||||
|
||||
var_02 = animscripts\utility::lookupanimarray("idle_transitions");
|
||||
if(isdefined(var_02[param_00]))
|
||||
{
|
||||
var_03 = var_02[param_00];
|
||||
self setflaggedanimknoballrestart("idle_transition",var_03,%body,1,0.2,self.animplaybackrate);
|
||||
animscripts\shared::donotetracks("idle_transition");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
playidle(param_00,param_01)
|
||||
{
|
||||
if(animscripts\utility::iscqbwalking() && self.a.pose == "stand")
|
||||
{
|
||||
param_00 = "stand_cqb";
|
||||
}
|
||||
|
||||
var_02 = undefined;
|
||||
if(isdefined(self.customidleanimset) && isdefined(self.customidleanimset[param_00]))
|
||||
{
|
||||
if(isarray(self.customidleanimset[param_00]))
|
||||
{
|
||||
var_03 = animscripts\utility::anim_array(self.customidleanimset[param_00],self.customidleanimweights[param_00]);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = self.customidleanimset[param_01];
|
||||
var_04 = param_00 + "_add";
|
||||
if(isdefined(self.customidleanimset[var_04]))
|
||||
{
|
||||
var_02 = self.customidleanimset[var_04];
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(isdefined(level.readyanimarray) && param_01 == "stand" || param_01 == "stand_cqb" && isdefined(self.busereadyidle) && self.busereadyidle == 1)
|
||||
{
|
||||
var_03 = animscripts\utility::anim_array(level.readyanimarray["stand"][0],level.readyanimweights["stand"][0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_05 = animscripts\utility::lookupanimarray("idle");
|
||||
var_06 = animscripts\utility::lookupanimarray("idle_weights");
|
||||
param_01 = param_01 % var_05[param_00].size;
|
||||
var_03 = animscripts\utility::anim_array(var_05[param_00][param_01],var_06[param_00][param_01]);
|
||||
}
|
||||
|
||||
var_07 = 0.2;
|
||||
if(gettime() == self.a.scriptstarttime)
|
||||
{
|
||||
var_07 = 0.5;
|
||||
}
|
||||
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
self setanimknoball(var_03,%body,1,var_07,1);
|
||||
self setanim(%add_idle);
|
||||
self setflaggedanimknoballrestart("idle",var_02,%add_idle,1,var_07,self.animplaybackrate);
|
||||
}
|
||||
else
|
||||
{
|
||||
self setflaggedanimknoballrestart("idle",var_03,%body,1,var_07,self.animplaybackrate);
|
||||
}
|
||||
|
||||
animscripts\shared::donotetracks("idle");
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
pronestill()
|
||||
{
|
||||
if(self.a.pose != "prone")
|
||||
{
|
||||
var_00["stand_2_prone"] = %stand_2_prone;
|
||||
var_00["crouch_2_prone"] = %crouch_2_prone;
|
||||
var_01 = var_00[self.a.pose + "_2_prone"];
|
||||
self setflaggedanimknoballrestart("trans",var_01,%body,1,0.2,1);
|
||||
animscripts\shared::donotetracks("trans");
|
||||
self.a.movement = "stop";
|
||||
self setproneanimnodes(-45,45,%prone_legs_down,%exposed_modern,%prone_legs_up);
|
||||
return;
|
||||
}
|
||||
|
||||
thread updatepronethread();
|
||||
if(randomint(10) < 3)
|
||||
{
|
||||
var_02 = animscripts\utility::lookupanim("cover_prone","twitch");
|
||||
var_03 = var_02[randomint(var_02.size)];
|
||||
self setflaggedanimknoball("prone_idle",var_03,%exposed_modern,1,0.2);
|
||||
}
|
||||
else
|
||||
{
|
||||
self setanimknoball(animscripts\utility::lookupanim("cover_prone","straight_level"),%exposed_modern,1,0.2);
|
||||
self setflaggedanimknob("prone_idle",animscripts\utility::lookupanim("cover_prone","exposed_idle")[0],1,0.2);
|
||||
}
|
||||
|
||||
self waittillmatch("end","prone_idle");
|
||||
self notify("kill UpdateProneThread");
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
updatepronethread()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("kill UpdateProneThread");
|
||||
for(;;)
|
||||
{
|
||||
animscripts\cover_prone::updatepronewrapper(0.1);
|
||||
wait(0.1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
delayedexception()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
wait(0.05);
|
||||
[[ self.exception["stop"] ]]();
|
||||
}
|
1639
AW/PC/animscripts/swim.gsc
Normal file
1639
AW/PC/animscripts/swim.gsc
Normal file
File diff suppressed because it is too large
Load Diff
277
AW/PC/animscripts/technical_lagos/common.gsc
Normal file
277
AW/PC/animscripts/technical_lagos/common.gsc
Normal file
@ -0,0 +1,277 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: technical_lagos\common.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 13
|
||||
* Decompile Time: 162 ms
|
||||
* Timestamp: 4/22/2024 1:58:55 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
animscripts\utility::initialize("saw");
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.a.special = "saw";
|
||||
if(isdefined(param_00.script_delay_min))
|
||||
{
|
||||
var_01 = param_00.script_delay_min;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = maps\_mgturret::burst_fire_settings("delay");
|
||||
}
|
||||
|
||||
if(isdefined(param_00.script_delay_max))
|
||||
{
|
||||
var_02 = param_00.script_delay_max - var_01;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = maps\_mgturret::burst_fire_settings("delay_range");
|
||||
}
|
||||
|
||||
if(isdefined(param_00.script_burst_min))
|
||||
{
|
||||
var_03 = param_00.script_burst_min;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = maps\_mgturret::burst_fire_settings("burst");
|
||||
}
|
||||
|
||||
if(isdefined(param_00.script_burst_max))
|
||||
{
|
||||
var_04 = param_00.script_burst_max - var_03;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_04 = maps\_mgturret::burst_fire_settings("burst_range");
|
||||
}
|
||||
|
||||
var_05 = gettime();
|
||||
var_06 = "start";
|
||||
animscripts\shared::placeweaponon(self.weapon,"none");
|
||||
param_00 show();
|
||||
if(isdefined(param_00.aiowner))
|
||||
{
|
||||
self.a.postscriptfunc = ::postscriptfunc;
|
||||
self.a.usingturret = param_00;
|
||||
param_00 notify("being_used");
|
||||
thread stopusingturretwhennodelost();
|
||||
}
|
||||
else
|
||||
{
|
||||
self.a.postscriptfunc = ::preplacedpostscriptfunc;
|
||||
}
|
||||
|
||||
param_00.dofiring = 0;
|
||||
thread firecontroller(param_00);
|
||||
self setturretanim(self.primaryturretanim);
|
||||
self setanimknobrestart(self.primaryturretanim,1,0.2,1);
|
||||
self setanimknoblimitedrestart(self.additiveturretidle);
|
||||
self setanimknoblimitedrestart(self.additiveturretfire);
|
||||
param_00 setanimknoblimitedrestart(param_00.additiveturretidle);
|
||||
param_00 setanimknoblimitedrestart(param_00.additiveturretfire);
|
||||
param_00 endon("death");
|
||||
for(;;)
|
||||
{
|
||||
if(param_00.dofiring)
|
||||
{
|
||||
thread doshoot(param_00);
|
||||
waittimeoruntilturretstatechange(randomfloatrange(var_03,var_03 + var_04),param_00);
|
||||
param_00 notify("turretstatechange");
|
||||
if(param_00.dofiring)
|
||||
{
|
||||
thread doaim(param_00);
|
||||
wait(randomfloatrange(var_01,var_01 + var_02));
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
thread doaim(param_00);
|
||||
param_00 waittill("turretstatechange");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
waittimeoruntilturretstatechange(param_00,param_01)
|
||||
{
|
||||
param_01 endon("turretstatechange");
|
||||
wait(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
firecontroller(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
var_01 = cos(15);
|
||||
for(;;)
|
||||
{
|
||||
while(isdefined(self.enemy))
|
||||
{
|
||||
var_02 = self.enemy.origin;
|
||||
var_03 = param_00 gettagangles("tag_aim");
|
||||
if(common_scripts\utility::within_fov(param_00.origin,var_03,var_02,var_01) || distancesquared(param_00.origin,var_02) < 40000)
|
||||
{
|
||||
if(!param_00.dofiring)
|
||||
{
|
||||
param_00.dofiring = 1;
|
||||
param_00 notify("turretstatechange");
|
||||
}
|
||||
}
|
||||
else if(param_00.dofiring)
|
||||
{
|
||||
param_00.dofiring = 0;
|
||||
param_00 notify("turretstatechange");
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
|
||||
if(param_00.dofiring)
|
||||
{
|
||||
param_00.dofiring = 0;
|
||||
param_00 notify("turretstatechange");
|
||||
}
|
||||
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
turrettimer(param_00,param_01)
|
||||
{
|
||||
if(param_00 <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self endon("killanimscript");
|
||||
param_01 endon("turretstatechange");
|
||||
wait(param_00);
|
||||
param_01 notify("turretstatechange");
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
stopusingturretwhennodelost()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
for(;;)
|
||||
{
|
||||
if(!isdefined(self.node) || distancesquared(self.origin,self.node.origin) > 4096)
|
||||
{
|
||||
self stopuseturret();
|
||||
}
|
||||
|
||||
wait(0.25);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
postscriptfunc(param_00)
|
||||
{
|
||||
if(param_00 == "pain")
|
||||
{
|
||||
if(isdefined(self.node) && distancesquared(self.origin,self.node.origin) < 4096)
|
||||
{
|
||||
self.a.usingturret hide();
|
||||
animscripts\shared::placeweaponon(self.weapon,"right");
|
||||
self.a.postscriptfunc = ::postpainfunc;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
self stopuseturret();
|
||||
}
|
||||
}
|
||||
|
||||
if(param_00 == "saw")
|
||||
{
|
||||
var_01 = self getturret();
|
||||
return;
|
||||
}
|
||||
|
||||
self.a.usingturret delete();
|
||||
self.a.usingturret = undefined;
|
||||
animscripts\shared::placeweaponon(self.weapon,"right");
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
postpainfunc(param_00)
|
||||
{
|
||||
if(!isdefined(self.node) || distancesquared(self.origin,self.node.origin) > 4096)
|
||||
{
|
||||
self stopuseturret();
|
||||
self.a.usingturret delete();
|
||||
self.a.usingturret = undefined;
|
||||
if(isdefined(self.weapon) && self.weapon != "none")
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.weapon,"right");
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00 != "saw")
|
||||
{
|
||||
self.a.usingturret delete();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
preplacedpostscriptfunc(param_00)
|
||||
{
|
||||
animscripts\shared::placeweaponon(self.weapon,"right");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
doshoot(param_00)
|
||||
{
|
||||
self setanim(%additive_saw_idle,0,0.1);
|
||||
self setanim(%additive_saw_fire,1,0.1);
|
||||
param_00 turretdoshootanims();
|
||||
turretdoshoot(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
doaim(param_00)
|
||||
{
|
||||
self setanim(%additive_saw_idle,1,0.1);
|
||||
self setanim(%additive_saw_fire,0,0.1);
|
||||
param_00 turretdoaimanims();
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
turretdoshoot(param_00)
|
||||
{
|
||||
self endon("killanimscript");
|
||||
param_00 endon("turretstatechange");
|
||||
for(;;)
|
||||
{
|
||||
param_00 shootturret();
|
||||
wait(0.1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
turretdoshootanims()
|
||||
{
|
||||
self setanim(%additive_saw_idle,0,0.1);
|
||||
self setanim(%additive_saw_fire,1,0.1);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
turretdoaimanims()
|
||||
{
|
||||
self setanim(%additive_saw_idle,1,0.1);
|
||||
self setanim(%additive_saw_fire,0,0.1);
|
||||
}
|
45
AW/PC/animscripts/technical_lagos/stand.gsc
Normal file
45
AW/PC/animscripts/technical_lagos/stand.gsc
Normal file
@ -0,0 +1,45 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: technical_lagos\stand.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 50 ms
|
||||
* Timestamp: 4/22/2024 1:58:56 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
self.desired_anim_pose = "stand";
|
||||
animscripts\utility::updateanimpose();
|
||||
self.a.movement = "stop";
|
||||
var_00 = self getturret();
|
||||
var_00 thread turretinit(self);
|
||||
self.primaryturretanim = %technicalgunner_aim;
|
||||
self.additiveturretidle = %technical_turret_driveidle;
|
||||
self.additiveturretfire = %technical_turret_firing;
|
||||
self.painfunction = ::technical_pain;
|
||||
self.deathanim = %technical_turret_death;
|
||||
thread animscripts\technical_lagos\common::main(var_00);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
technical_pain()
|
||||
{
|
||||
self setflaggedanimknoballrestart("painanim",%technical_turret_pain,%body,1,0.1,1);
|
||||
animscripts\shared::donotetracks("painanim");
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
turretinit(param_00)
|
||||
{
|
||||
self.leftarc = 115;
|
||||
self.rightarc = 115;
|
||||
self useanimtree(#animtree);
|
||||
self.additiveturretidle = %saw_gunner_idle_mg;
|
||||
self.additiveturretfire = %saw_gunner_firing_mg_add;
|
||||
self endon("death");
|
||||
param_00 waittill("killanimscript");
|
||||
self stopuseanimtree();
|
||||
}
|
406
AW/PC/animscripts/track.gsc
Normal file
406
AW/PC/animscripts/track.gsc
Normal file
@ -0,0 +1,406 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: track.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 9
|
||||
* Decompile Time: 156 ms
|
||||
* Timestamp: 4/22/2024 2:01:04 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
trackshootentorpos()
|
||||
{
|
||||
self endon("killanimscript");
|
||||
self endon("stop tracking");
|
||||
self endon("melee");
|
||||
trackloop(%aim_2,%aim_4,%aim_6,%aim_8);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
trackloop(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
var_05 = 0;
|
||||
var_06 = 0;
|
||||
var_07 = (0,0,0);
|
||||
var_08 = 1;
|
||||
var_09 = 0;
|
||||
var_0A = 0;
|
||||
var_0B = 10;
|
||||
var_0C = (0,0,0);
|
||||
var_0D = 0;
|
||||
var_0E = 0;
|
||||
var_0F = 0;
|
||||
var_10 = 0;
|
||||
var_11 = 0.1;
|
||||
var_12 = 0;
|
||||
if(self.type == "dog")
|
||||
{
|
||||
var_13 = 0;
|
||||
self.shootent = self.enemy;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_13 = 1;
|
||||
var_14 = 0;
|
||||
var_15 = 0;
|
||||
if(isdefined(self.covercrouchlean_aimmode))
|
||||
{
|
||||
var_14 = level.covercrouchleanpitch;
|
||||
}
|
||||
|
||||
var_16 = self.script;
|
||||
if(var_16 == "cover_multi")
|
||||
{
|
||||
if(self.cover.state == "right")
|
||||
{
|
||||
var_16 = "cover_right";
|
||||
}
|
||||
else if(self.cover.state == "left")
|
||||
{
|
||||
var_16 = "cover_left";
|
||||
}
|
||||
}
|
||||
|
||||
if((var_16 == "cover_left" || var_16 == "cover_right") && isdefined(self.a.cornermode) && self.a.cornermode == "lean")
|
||||
{
|
||||
var_15 = self.covernode.angles[1] - self.angles[1];
|
||||
}
|
||||
|
||||
var_0C = (var_14,var_15,0);
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
incranimaimweight();
|
||||
if(self gettagindex("tag_flash") == -1)
|
||||
{
|
||||
wait(0.05);
|
||||
continue;
|
||||
}
|
||||
|
||||
var_17 = animscripts\shared::getshootfrompos();
|
||||
var_18 = self.shootpos;
|
||||
if(isdefined(self.shootent))
|
||||
{
|
||||
if(common_scripts\utility::flag("_cloaked_stealth_enabled"))
|
||||
{
|
||||
var_18 = animscripts\combat_utility::get_last_known_shoot_pos(self.shootent);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_18 = self.shootent getshootatpos();
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(var_18) && animscripts\utility::shouldcqb())
|
||||
{
|
||||
var_18 = trackloop_cqbshootpos(var_17);
|
||||
}
|
||||
|
||||
var_19 = isdefined(self.onsnowmobile) || isdefined(self.onatv);
|
||||
var_1A = isdefined(var_18);
|
||||
var_1B = (0,0,0);
|
||||
if(var_1A)
|
||||
{
|
||||
var_1B = var_18;
|
||||
}
|
||||
|
||||
var_1C = 0;
|
||||
var_1D = isdefined(self.stepoutyaw);
|
||||
if(var_1D)
|
||||
{
|
||||
var_1C = self.stepoutyaw;
|
||||
}
|
||||
|
||||
var_07 = self getaimangle(var_17,var_1B,var_1A,var_0C,var_1C,var_1D,var_19);
|
||||
var_1E = var_07[0];
|
||||
var_1F = var_07[1];
|
||||
var_07 = undefined;
|
||||
if(animscripts\utility::isspaceai())
|
||||
{
|
||||
var_20 = self.angles[2] * -1;
|
||||
var_21 = var_1E * cos(var_20) - var_1F * sin(var_20);
|
||||
var_22 = var_1E * sin(var_20) + var_1F * cos(var_20);
|
||||
var_1E = var_21;
|
||||
var_1F = var_22;
|
||||
var_1E = clamp(var_1E,self.downaimlimit,self.upaimlimit);
|
||||
var_1F = clamp(var_1F,self.leftaimlimit,self.rightaimlimit);
|
||||
}
|
||||
|
||||
if(var_0A > 0)
|
||||
{
|
||||
var_0A = var_0A - 1;
|
||||
var_0B = max(10,var_0B - 5);
|
||||
}
|
||||
else if(self.relativedir && self.relativedir != var_09)
|
||||
{
|
||||
var_0A = 2;
|
||||
var_0B = 30;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0B = 10;
|
||||
}
|
||||
|
||||
var_23 = squared(var_0B);
|
||||
var_09 = self.relativedir;
|
||||
var_24 = self.movemode != "stop" || !var_08;
|
||||
if(var_24)
|
||||
{
|
||||
var_25 = var_1F - var_05;
|
||||
if(squared(var_25) > var_23)
|
||||
{
|
||||
var_1F = var_05 + clamp(var_25,-1 * var_0B,var_0B);
|
||||
var_1F = clamp(var_1F,self.leftaimlimit,self.rightaimlimit);
|
||||
}
|
||||
|
||||
var_26 = var_1E - var_06;
|
||||
if(squared(var_26) > var_23)
|
||||
{
|
||||
var_1E = var_06 + clamp(var_26,-1 * var_0B,var_0B);
|
||||
var_1E = clamp(var_1E,self.downaimlimit,self.upaimlimit);
|
||||
}
|
||||
}
|
||||
|
||||
var_08 = 0;
|
||||
var_05 = var_1F;
|
||||
var_06 = var_1E;
|
||||
trackloop_setanimweights(param_00,param_01,param_02,param_03,param_04,var_1E,var_1F);
|
||||
wait(0.05);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
trackloop_cqbshootpos(param_00)
|
||||
{
|
||||
var_01 = undefined;
|
||||
var_02 = anglestoforward(self.angles);
|
||||
if(isdefined(self.cqb_target))
|
||||
{
|
||||
if(common_scripts\utility::flag("_cloaked_stealth_enabled"))
|
||||
{
|
||||
var_01 = animscripts\combat_utility::get_last_known_shoot_pos(self.cqb_target);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = self.cqb_target getshootatpos();
|
||||
}
|
||||
|
||||
if(isdefined(self.cqb_wide_target_track))
|
||||
{
|
||||
if(vectordot(vectornormalize(var_01 - param_00),var_02) < 0.177)
|
||||
{
|
||||
var_01 = undefined;
|
||||
}
|
||||
}
|
||||
else if(vectordot(vectornormalize(var_01 - param_00),var_02) < 0.643)
|
||||
{
|
||||
var_01 = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(var_01) && isdefined(self.cqb_point_of_interest))
|
||||
{
|
||||
var_01 = self.cqb_point_of_interest;
|
||||
if(isdefined(self.cqb_wide_poi_track))
|
||||
{
|
||||
if(vectordot(vectornormalize(var_01 - param_00),var_02) < 0.177)
|
||||
{
|
||||
var_01 = undefined;
|
||||
}
|
||||
}
|
||||
else if(vectordot(vectornormalize(var_01 - param_00),var_02) < 0.643)
|
||||
{
|
||||
var_01 = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
trackloop_anglesfornoshootpos(param_00,param_01)
|
||||
{
|
||||
if(animscripts\utility::recentlysawenemy())
|
||||
{
|
||||
var_02 = self.enemy getshootatpos() - self.enemy.origin;
|
||||
var_03 = self lastknownpos(self.enemy) + var_02;
|
||||
return trackloop_getdesiredangles(var_03 - param_00,param_01);
|
||||
}
|
||||
|
||||
var_04 = 0;
|
||||
var_05 = 0;
|
||||
if(isdefined(self.node) && isdefined(level.iscombatscriptnode[self.node.type]) && distancesquared(self.origin,self.node.origin) < 16)
|
||||
{
|
||||
var_05 = angleclamp180(self.angles[1] - self.node.angles[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_06 = self getanglestolikelyenemypath();
|
||||
if(isdefined(var_06))
|
||||
{
|
||||
var_05 = angleclamp180(self.angles[1] - var_06[1]);
|
||||
var_04 = angleclamp180(360 - var_06[0]);
|
||||
}
|
||||
}
|
||||
|
||||
return (var_04,var_05,0);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
trackloop_getdesiredangles(param_00,param_01)
|
||||
{
|
||||
var_02 = vectortoangles(param_00);
|
||||
var_03 = 0;
|
||||
var_04 = 0;
|
||||
if(self.stairsstate == "up")
|
||||
{
|
||||
if(!isdefined(self.mech) || isdefined(self.mech) && !self.mech)
|
||||
{
|
||||
var_03 = -40;
|
||||
}
|
||||
}
|
||||
else if(self.stairsstate == "down")
|
||||
{
|
||||
if(!isdefined(self.mech) || isdefined(self.mech) && !self.mech)
|
||||
{
|
||||
var_03 = 40;
|
||||
var_04 = 12;
|
||||
}
|
||||
}
|
||||
|
||||
var_05 = 360 - var_02[0];
|
||||
var_05 = angleclamp180(var_05 + param_01[0] + var_03);
|
||||
if(isdefined(self.stepoutyaw))
|
||||
{
|
||||
var_06 = self.stepoutyaw - var_02[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
var_07 = angleclamp180(self.desiredangle - self.angles[1]) * 0.5;
|
||||
var_06 = var_07 + self.angles[1] - var_02[1];
|
||||
}
|
||||
|
||||
var_06 = angleclamp180(var_06 + param_01[1] + var_04);
|
||||
return (var_05,var_06,0);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
trackloop_clampangles(param_00,param_01,param_02)
|
||||
{
|
||||
if(isdefined(self.onsnowmobile) || isdefined(self.onatv))
|
||||
{
|
||||
if(param_01 > self.rightaimlimit || param_01 < self.leftaimlimit)
|
||||
{
|
||||
param_01 = 0;
|
||||
}
|
||||
|
||||
if(param_00 > self.upaimlimit || param_00 < self.downaimlimit)
|
||||
{
|
||||
param_00 = 0;
|
||||
}
|
||||
}
|
||||
else if(param_02 && abs(param_01) > level.maxanglecheckyawdelta || abs(param_00) > level.maxanglecheckpitchdelta)
|
||||
{
|
||||
param_01 = 0;
|
||||
param_00 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(self.gunblockedbywall)
|
||||
{
|
||||
param_01 = clamp(param_01,-10,10);
|
||||
}
|
||||
else
|
||||
{
|
||||
param_01 = clamp(param_01,self.leftaimlimit,self.rightaimlimit);
|
||||
}
|
||||
|
||||
param_00 = clamp(param_00,self.downaimlimit,self.upaimlimit);
|
||||
}
|
||||
|
||||
return (param_00,param_01,0);
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
trackloop_setanimweights(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
||||
{
|
||||
var_07 = 0;
|
||||
var_08 = 0;
|
||||
var_09 = 0;
|
||||
var_0A = 0;
|
||||
var_0B = 0;
|
||||
var_0C = 0.1;
|
||||
if(isdefined(self.aimblendtime))
|
||||
{
|
||||
var_0C = self.aimblendtime;
|
||||
}
|
||||
|
||||
if(param_06 > 0)
|
||||
{
|
||||
var_0A = param_06 / self.rightaimlimit * self.a.aimweight;
|
||||
var_09 = 1;
|
||||
}
|
||||
else if(param_06 < 0)
|
||||
{
|
||||
var_08 = param_06 / self.leftaimlimit * self.a.aimweight;
|
||||
var_09 = 1;
|
||||
}
|
||||
|
||||
if(param_05 > 0)
|
||||
{
|
||||
var_0B = param_05 / self.upaimlimit * self.a.aimweight;
|
||||
var_09 = 1;
|
||||
}
|
||||
else if(param_05 < 0)
|
||||
{
|
||||
var_07 = param_05 / self.downaimlimit * self.a.aimweight;
|
||||
var_09 = 1;
|
||||
}
|
||||
|
||||
self setanimlimited(param_00,var_07,var_0C,1,1);
|
||||
self setanimlimited(param_01,var_08,var_0C,1,1);
|
||||
self setanimlimited(param_02,var_0A,var_0C,1,1);
|
||||
self setanimlimited(param_03,var_0B,var_0C,1,1);
|
||||
if(isdefined(param_04))
|
||||
{
|
||||
self setanimlimited(param_04,var_09,var_0C,1,1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
setanimaimweight(param_00,param_01)
|
||||
{
|
||||
if(!isdefined(param_01) || param_01 <= 0)
|
||||
{
|
||||
self.a.aimweight = param_00;
|
||||
self.a.aimweight_start = param_00;
|
||||
self.a.aimweight_end = param_00;
|
||||
self.a.aimweight_transframes = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!isdefined(self.a.aimweight))
|
||||
{
|
||||
self.a.aimweight = 0;
|
||||
}
|
||||
|
||||
self.a.aimweight_start = self.a.aimweight;
|
||||
self.a.aimweight_end = param_00;
|
||||
self.a.aimweight_transframes = int(param_01 * 20);
|
||||
}
|
||||
|
||||
self.a.aimweight_t = 0;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
incranimaimweight()
|
||||
{
|
||||
if(self.a.aimweight_t < self.a.aimweight_transframes)
|
||||
{
|
||||
self.a.aimweight_t++;
|
||||
var_00 = 1 * self.a.aimweight_t / self.a.aimweight_transframes;
|
||||
self.a.aimweight = self.a.aimweight_start * 1 - var_00 + self.a.aimweight_end * var_00;
|
||||
}
|
||||
}
|
30
AW/PC/animscripts/traverse/berlin_column_jump.gsc
Normal file
30
AW/PC/animscripts/traverse/berlin_column_jump.gsc
Normal file
@ -0,0 +1,30 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\berlin_column_jump.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 31 ms
|
||||
* Timestamp: 4/22/2024 1:58:56 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.type == "dog")
|
||||
{
|
||||
animscripts\traverse\shared::dog_jump_up(38,5);
|
||||
return;
|
||||
}
|
||||
|
||||
low_wall_human();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
low_wall_human()
|
||||
{
|
||||
var_00 = [];
|
||||
var_00["traverseAnim"] = %berlin_jumping_column_sandman;
|
||||
var_00["traverseHeight"] = 38;
|
||||
animscripts\traverse\shared::dotraverse(var_00);
|
||||
}
|
171
AW/PC/animscripts/traverse/boost.gsc
Normal file
171
AW/PC/animscripts/traverse/boost.gsc
Normal file
@ -0,0 +1,171 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 10
|
||||
* Decompile Time: 137 ms
|
||||
* Timestamp: 4/22/2024 1:58:57 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
precache_boost_fx_npc()
|
||||
{
|
||||
level._effect["boost_dust_npc"] = loadfx("vfx/smoke/jetpack_exhaust_npc");
|
||||
level._effect["boost_dust_impact_ground"] = loadfx("vfx/smoke/jetpack_ground_impact_runner");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
rocket_jump_human(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = [];
|
||||
var_03["traverseAnim"] = param_00;
|
||||
var_03["traverseNotetrackFunc"] = ::newhandletraversenotetracks;
|
||||
if(isdefined(param_02) && param_02 == "landassist")
|
||||
{
|
||||
var_03["traverseNotetrackFunc"] = ::newhandletraversenotetracks_landassist;
|
||||
}
|
||||
|
||||
self.is_using_boost = 1;
|
||||
animscripts\traverse\shared::dotraverse(var_03);
|
||||
if(isdefined(self) && isalive(self) && isdefined(param_01) && param_01)
|
||||
{
|
||||
soundscripts\_snd::snd_message("boost_land_npc");
|
||||
self setflaggedanimknoballrestart("boostJumpLand",%boost_jump_land_2_run_b,%body,1,0.2,1);
|
||||
animscripts\shared::donotetracks("boostJumpLand",::newhandletraversenotetracks);
|
||||
}
|
||||
|
||||
self.is_using_boost = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
newhandletraversenotetracks_landassist(param_00)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "boost_begin":
|
||||
break;
|
||||
|
||||
case "land_assist":
|
||||
thread land_assist_thrusters(self);
|
||||
break;
|
||||
|
||||
case "assist_thrusters":
|
||||
thread land_assist_thrusters(self);
|
||||
break;
|
||||
|
||||
case "boost_end":
|
||||
break;
|
||||
|
||||
case "distort_begin":
|
||||
break;
|
||||
|
||||
default:
|
||||
animscripts\traverse\shared::handletraversenotetracks(param_00);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
newhandletraversenotetracks(param_00)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "boost_begin":
|
||||
thread newhandleboostbegin();
|
||||
break;
|
||||
|
||||
case "boost_end":
|
||||
thread newhandleboostend();
|
||||
break;
|
||||
|
||||
default:
|
||||
animscripts\traverse\shared::handletraversenotetracks(param_00);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
newhandleboostbegin()
|
||||
{
|
||||
soundscripts\_snd::snd_message("boost_jump_npc");
|
||||
if(!maps\_utility::ent_flag_exist("boost_end"))
|
||||
{
|
||||
maps\_utility::ent_flag_init("boost_end");
|
||||
}
|
||||
|
||||
thread newhandlespawngroundimpact();
|
||||
playfxontag(common_scripts\utility::getfx("boost_dust_npc"),self,"J_SpineLower");
|
||||
maps\_utility::ent_flag_wait("boost_end");
|
||||
stopfxontag(common_scripts\utility::getfx("boost_dust_npc"),self,"J_SpineLower");
|
||||
maps\_utility::ent_flag_clear("boost_end");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
newhandleboostend()
|
||||
{
|
||||
maps\_utility::ent_flag_set("boost_end");
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
newhandlespawngroundimpact()
|
||||
{
|
||||
var_00 = self.origin + (0,0,64);
|
||||
var_01 = self.origin - (0,0,150);
|
||||
var_02 = bullettrace(var_00,var_01,0,undefined);
|
||||
var_03 = common_scripts\utility::getfx("boost_dust_impact_ground");
|
||||
var_00 = var_02["position"];
|
||||
var_04 = vectortoangles(var_02["normal"]);
|
||||
var_04 = var_04 + (90,0,0);
|
||||
var_05 = anglestoforward(var_04);
|
||||
var_06 = anglestoup(var_04);
|
||||
playfx(var_03,var_00,var_06,var_05);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
land_assist_thrusters(param_00)
|
||||
{
|
||||
playfxontag(common_scripts\utility::getfx("landass_exhaust_smk_lf_npc"),param_00,"J_MainRoot");
|
||||
playfxontag(common_scripts\utility::getfx("landass_exhaust_smk_rt_npc"),param_00,"J_MainRoot");
|
||||
param_00 soundscripts\_snd::snd_message("boost_land_assist_npc");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
land_assist_thrusters_with_land(param_00)
|
||||
{
|
||||
playfxontag(common_scripts\utility::getfx("landass_exhaust_smk_lf_npc"),param_00,"J_MainRoot");
|
||||
playfxontag(common_scripts\utility::getfx("landass_exhaust_smk_rt_npc"),param_00,"J_MainRoot");
|
||||
param_00 soundscripts\_snd::snd_message("boost_land_assist_npc");
|
||||
wait(0.05);
|
||||
var_01 = physicstrace(param_00.origin,param_00.origin + (0,0,-5120));
|
||||
var_02 = anglestoforward(param_00.angles);
|
||||
playfx(common_scripts\utility::getfx("landass_impact_smk_rnr"),var_01,var_02);
|
||||
wait(0.35);
|
||||
var_01 = physicstrace(param_00.origin,param_00.origin + (0,0,-5120));
|
||||
playfx(common_scripts\utility::getfx("landass_impact_smk_rnr"),var_01,var_02);
|
||||
param_00 soundscripts\_snd::snd_message("boost_land_assist_npc_ground");
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
handletraversenotetrackslandassist(param_00)
|
||||
{
|
||||
if(param_00 == "assist_thrusters")
|
||||
{
|
||||
land_assist_thrusters(self);
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00 == "assist_thrusters_2")
|
||||
{
|
||||
land_assist_thrusters(self);
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00 == "fx_start")
|
||||
{
|
||||
land_assist_thrusters(self);
|
||||
return;
|
||||
}
|
||||
|
||||
animscripts\traverse\shared::handletraversenotetracks(param_00);
|
||||
}
|
18
AW/PC/animscripts/traverse/boost_jump_128_across.gsc
Normal file
18
AW/PC/animscripts/traverse/boost_jump_128_across.gsc
Normal file
@ -0,0 +1,18 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost_jump_128_across.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 23 ms
|
||||
* Timestamp: 4/22/2024 1:58:57 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.canjumppath)
|
||||
{
|
||||
animscripts\traverse\boost::rocket_jump_human(%boost_jump_128_across_variation,1);
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost_jump_128_across_128_down.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 22 ms
|
||||
* Timestamp: 4/22/2024 1:58:57 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.canjumppath)
|
||||
{
|
||||
animscripts\traverse\boost::rocket_jump_human(%boost_jump_128_across_128_down,1);
|
||||
}
|
||||
}
|
18
AW/PC/animscripts/traverse/boost_jump_128_across_128_up.gsc
Normal file
18
AW/PC/animscripts/traverse/boost_jump_128_across_128_up.gsc
Normal file
@ -0,0 +1,18 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost_jump_128_across_128_up.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 22 ms
|
||||
* Timestamp: 4/22/2024 1:58:57 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.canjumppath)
|
||||
{
|
||||
animscripts\traverse\boost::rocket_jump_human(%boost_jump_128_across_128_up,1);
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost_jump_128_across_140_down.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 22 ms
|
||||
* Timestamp: 4/22/2024 1:58:58 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.canjumppath)
|
||||
{
|
||||
animscripts\traverse\boost::rocket_jump_human(%boost_jump_128_across_140_down,1);
|
||||
}
|
||||
}
|
18
AW/PC/animscripts/traverse/boost_jump_128_across_140_up.gsc
Normal file
18
AW/PC/animscripts/traverse/boost_jump_128_across_140_up.gsc
Normal file
@ -0,0 +1,18 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost_jump_128_across_140_up.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 22 ms
|
||||
* Timestamp: 4/22/2024 1:58:58 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.canjumppath)
|
||||
{
|
||||
animscripts\traverse\boost::rocket_jump_human(%boost_jump_128_across_140_up,1);
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost_jump_128_across_196_down.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 58 ms
|
||||
* Timestamp: 4/22/2024 1:58:59 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.canjumppath)
|
||||
{
|
||||
animscripts\traverse\boost::rocket_jump_human(%boost_jump_128_across_196_down,1);
|
||||
}
|
||||
}
|
18
AW/PC/animscripts/traverse/boost_jump_128_across_196_up.gsc
Normal file
18
AW/PC/animscripts/traverse/boost_jump_128_across_196_up.gsc
Normal file
@ -0,0 +1,18 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost_jump_128_across_196_up.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 27 ms
|
||||
* Timestamp: 4/22/2024 1:58:59 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.canjumppath)
|
||||
{
|
||||
animscripts\traverse\boost::rocket_jump_human(%boost_jump_128_across_196_up,1);
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost_jump_128_across_256_down.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 27 ms
|
||||
* Timestamp: 4/22/2024 1:58:59 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.canjumppath)
|
||||
{
|
||||
animscripts\traverse\boost::rocket_jump_human(%boost_jump_128_across_256_down,1);
|
||||
}
|
||||
}
|
18
AW/PC/animscripts/traverse/boost_jump_128_across_256_up.gsc
Normal file
18
AW/PC/animscripts/traverse/boost_jump_128_across_256_up.gsc
Normal file
@ -0,0 +1,18 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost_jump_128_across_256_up.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 30 ms
|
||||
* Timestamp: 4/22/2024 1:59:00 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.canjumppath)
|
||||
{
|
||||
animscripts\traverse\boost::rocket_jump_human(%boost_jump_128_across_256_up,1);
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost_jump_128_across_320_down.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 29 ms
|
||||
* Timestamp: 4/22/2024 1:59:00 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.canjumppath)
|
||||
{
|
||||
animscripts\traverse\boost::rocket_jump_human(%boost_jump_128_across_320_down_variation,1);
|
||||
}
|
||||
}
|
18
AW/PC/animscripts/traverse/boost_jump_128_across_320_up.gsc
Normal file
18
AW/PC/animscripts/traverse/boost_jump_128_across_320_up.gsc
Normal file
@ -0,0 +1,18 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost_jump_128_across_320_up.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 27 ms
|
||||
* Timestamp: 4/22/2024 1:59:00 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.canjumppath)
|
||||
{
|
||||
animscripts\traverse\boost::rocket_jump_human(%boost_jump_128_across_320_up_variation,1);
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: traverse\boost_jump_128_across_384_down.gsc
|
||||
* Game: Call of Duty: Advanced Warfare
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 27 ms
|
||||
* Timestamp: 4/22/2024 1:59:01 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(self.canjumppath)
|
||||
{
|
||||
animscripts\traverse\boost::rocket_jump_human(%boost_jump_128_across_384_down_variation,1);
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user