Full AW Dump

This commit is contained in:
InfinityLoader
2024-04-22 02:38:24 -04:00
parent b53c55f0c0
commit b2389dbcb9
2093 changed files with 657703 additions and 107923 deletions

View 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);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View 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)];
}

View 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();
}

View 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();
}

View 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();
}

View 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();
}

View 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();
}

View 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();
}

View 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();
}

View 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();
}

View 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);
}

View 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();
}

View 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);
}
}

View 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;
}

View 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();
}

View 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();
}

View 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();
}

View 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

File diff suppressed because it is too large Load Diff

View 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();
}

File diff suppressed because it is too large Load Diff

1741
AW/PC/animscripts/corner.gsc Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View 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");
}

View 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");
}

View 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;
}

View 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);
}

View 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");
}

View 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");
}

View 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];
}

View 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];
}

View 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;
}

File diff suppressed because it is too large Load Diff

263
AW/PC/animscripts/cqb.gsc Normal file
View 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);
}

View 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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View 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;
}

View 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;
}

View 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;
}

View 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();
}

View 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));
}

File diff suppressed because it is too large Load Diff

View 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;
}

View 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;
}
}
}

View 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;
}

View 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
View 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);
}
}

View 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
View 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);
}
}

View 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");
}

View 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;
}

View 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();
}
}

View 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;
}

View 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");
}

View 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);
}

View 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;
}

View 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);
}
}

View 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
View 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();
}
}
}

View 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

File diff suppressed because it is too large Load Diff

1427
AW/PC/animscripts/move.gsc Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1852
AW/PC/animscripts/pain.gsc Normal file

File diff suppressed because it is too large Load Diff

View 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;
}
}

View 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

File diff suppressed because it is too large Load Diff

View 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;
}

View 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);
}

View 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();
}

View 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;
}

View 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);
}

View 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);
}

View 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);
}
}

View 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;
}

View 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
View 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

File diff suppressed because it is too large Load Diff

View 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);
}

View 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
View 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;
}
}

View 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);
}

View 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);
}

View 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);
}
}

View File

@ -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);
}
}

View 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);
}
}

View File

@ -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);
}
}

View 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);
}
}

View File

@ -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);
}
}

View 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);
}
}

View File

@ -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);
}
}

View 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);
}
}

View File

@ -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);
}
}

View 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);
}
}

View File

@ -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