Added MW3 Scripts

This commit is contained in:
InfinityLoader
2023-10-27 03:47:01 -04:00
commit d559c1d414
981 changed files with 539970 additions and 0 deletions

View File

@ -0,0 +1,131 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\animmode.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 47 ms
* Timestamp: 10/27/2023 2:29:40 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)
{
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);
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_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);
}

View File

@ -0,0 +1,669 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\animset.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 37
* Decompile Time: 620 ms
* Timestamp: 10/27/2023 2:29:42 AM
*******************************************************************/
//Function Number: 1
func_084F()
{
anim.animsets = spawnstruct();
level.animsets.move = [];
init_animset_default_stand();
init_animset_cqb_stand();
init_animset_pistol_stand();
init_animset_rpg_stand();
init_animset_shotgun_stand();
init_animset_heat_stand();
init_animset_default_crouch();
init_animset_rpg_crouch();
init_animset_shotgun_crouch();
init_animset_default_prone();
init_animset_run_move();
init_animset_walk_move();
init_animset_cqb_move();
init_animset_heat_run_move();
init_moving_turn_animations();
}
//Function Number: 2
init_animset_run_move()
{
anim.initanimset = [];
level.initanimset["sprint"] = %sprint_loop_distant;
level.initanimset["sprint_short"] = %sprint1_loop;
level.initanimset["prone"] = %prone_crawl;
level.initanimset["straight"] = %run_lowready_f;
level.initanimset["move_f"] = %walk_forward;
level.initanimset["move_l"] = %walk_left;
level.initanimset["move_r"] = %walk_right;
level.initanimset["move_b"] = %walk_backward;
level.initanimset["crouch"] = %crouch_fastwalk_f;
level.initanimset["crouch_l"] = %crouch_fastwalk_l;
level.initanimset["crouch_r"] = %crouch_fastwalk_r;
level.initanimset["crouch_b"] = %crouch_fastwalk_b;
level.initanimset["stairs_up"] = %traverse_stair_run_01;
level.initanimset["stairs_down"] = %traverse_stair_run_down;
level.animsets.move["run"] = level.initanimset;
}
//Function Number: 3
init_animset_heat_run_move()
{
anim.initanimset = level.animsets.move["run"];
level.initanimset["straight"] = %heat_run_loop;
level.animsets.move["heat_run"] = level.initanimset;
}
//Function Number: 4
init_animset_walk_move()
{
anim.initanimset = [];
level.initanimset["sprint"] = %sprint_loop_distant;
level.initanimset["sprint_short"] = %sprint1_loop;
level.initanimset["prone"] = %prone_crawl;
level.initanimset["straight"] = %walk_cqb_f;
level.initanimset["move_f"] = %walk_cqb_f;
level.initanimset["move_l"] = %walk_left;
level.initanimset["move_r"] = %walk_right;
level.initanimset["move_b"] = %walk_backward;
level.initanimset["crouch"] = %crouch_fastwalk_f;
level.initanimset["crouch_l"] = %crouch_fastwalk_l;
level.initanimset["crouch_r"] = %crouch_fastwalk_r;
level.initanimset["crouch_b"] = %crouch_fastwalk_b;
level.initanimset["stairs_up"] = %traverse_stair_run;
level.initanimset["stairs_down"] = %traverse_stair_run_down_01;
level.animsets.move["walk"] = level.initanimset;
}
//Function Number: 5
init_animset_cqb_move()
{
anim.initanimset = [];
level.initanimset["sprint"] = %sprint_loop_distant;
level.initanimset["sprint_short"] = %sprint1_loop;
level.initanimset["straight"] = %run_cqb_f_search_v1;
level.initanimset["move_f"] = %walk_cqb_f;
level.initanimset["move_l"] = %walk_left;
level.initanimset["move_r"] = %walk_right;
level.initanimset["move_b"] = %walk_backward;
level.initanimset["stairs_up"] = %traverse_stair_run;
level.initanimset["stairs_down"] = %traverse_stair_run_down_01;
level.animsets.move["cqb"] = level.initanimset;
}
//Function Number: 6
init_animset_pistol_stand()
{
anim.initanimset = [];
level.initanimset["add_aim_up"] = %pistol_stand_aim_8_add;
level.initanimset["add_aim_down"] = %pistol_stand_aim_2_add;
level.initanimset["add_aim_left"] = %pistol_stand_aim_4_add;
level.initanimset["add_aim_right"] = %pistol_stand_aim_6_add;
level.initanimset["straight_level"] = %pistol_stand_aim_5;
level.initanimset["fire"] = %pistol_stand_fire_a;
level.initanimset["single"] = animscripts/utility::array(%pistol_stand_fire_a);
level.initanimset["reload"] = animscripts/utility::array(%pistol_stand_reload_a);
level.initanimset["reload_crouchhide"] = animscripts/utility::array();
level.initanimset["exposed_idle"] = animscripts/utility::array(%exposed_idle_alert_v1,%exposed_idle_alert_v2,%exposed_idle_alert_v3);
set_animarray_standing_turns_pistol();
level.initanimset["add_turn_aim_up"] = %pistol_stand_aim_8_alt;
level.initanimset["add_turn_aim_down"] = %pistol_stand_aim_2_alt;
level.initanimset["add_turn_aim_left"] = %pistol_stand_aim_4_alt;
level.initanimset["add_turn_aim_right"] = %pistol_stand_aim_6_alt;
level.animsets.pistolstand = level.initanimset;
}
//Function Number: 7
init_animset_rpg_stand()
{
anim.initanimset = [];
level.initanimset["add_aim_up"] = %rpg_stand_aim_8;
level.initanimset["add_aim_down"] = %rpg_stand_aim_2;
level.initanimset["add_aim_left"] = %rpg_stand_aim_4;
level.initanimset["add_aim_right"] = %rpg_stand_aim_6;
level.initanimset["straight_level"] = %rpg_stand_aim_5;
level.initanimset["fire"] = %rpg_stand_fire;
level.initanimset["single"] = animscripts/utility::array(%exposed_shoot_semi1);
level.initanimset["reload"] = animscripts/utility::array(%rpg_stand_reload);
level.initanimset["reload_crouchhide"] = animscripts/utility::array();
level.initanimset["exposed_idle"] = animscripts/utility::array(%rpg_stand_idle);
set_animarray_stance_change();
set_animarray_standing_turns();
set_animarray_add_turn_aims_stand();
level.animsets.rpgstand = level.initanimset;
}
//Function Number: 8
init_animset_shotgun_stand()
{
anim.initanimset = [];
level.initanimset["add_aim_up"] = %shotgun_aim_8;
level.initanimset["add_aim_down"] = %shotgun_aim_2;
level.initanimset["add_aim_left"] = %shotgun_aim_4;
level.initanimset["add_aim_right"] = %shotgun_aim_6;
level.initanimset["straight_level"] = %shotgun_aim_5;
level.initanimset["fire"] = %exposed_shoot_auto_v3;
level.initanimset["single"] = animscripts/utility::array(%shotgun_stand_fire_1a,%shotgun_stand_fire_1b);
set_animarray_burst_and_semi_fire_stand();
level.initanimset["exposed_idle"] = animscripts/utility::array(%exposed_idle_alert_v1,%exposed_idle_alert_v2,%exposed_idle_alert_v3);
level.initanimset["reload"] = animscripts/utility::array(%shotgun_stand_reload_a,%shotgun_stand_reload_b,%shotgun_stand_reload_c,%shotgun_stand_reload_c,%shotgun_stand_reload_c);
level.initanimset["reload_crouchhide"] = animscripts/utility::array(%shotgun_stand_reload_a,%shotgun_stand_reload_b);
set_animarray_stance_change();
set_animarray_standing_turns();
set_animarray_add_turn_aims_stand();
level.animsets.shotgunstand = level.initanimset;
}
//Function Number: 9
init_animset_cqb_stand()
{
anim.initanimset = [];
level.initanimset["add_aim_up"] = %cqb_stand_aim8;
level.initanimset["add_aim_down"] = %cqb_stand_aim2;
level.initanimset["add_aim_left"] = %cqb_stand_aim4;
level.initanimset["add_aim_right"] = %cqb_stand_aim6;
level.initanimset["straight_level"] = %cqb_stand_aim5;
level.initanimset["fire"] = %exposed_shoot_auto_v3;
level.initanimset["single"] = animscripts/utility::array(%exposed_shoot_semi1);
set_animarray_burst_and_semi_fire_stand();
level.initanimset["exposed_idle"] = animscripts/utility::array(%exposed_idle_alert_v1,%exposed_idle_alert_v2,%exposed_idle_alert_v3);
level.initanimset["reload"] = animscripts/utility::array(%cqb_stand_reload_steady);
level.initanimset["reload_crouchhide"] = animscripts/utility::array(%cqb_stand_reload_knee);
set_animarray_stance_change();
set_animarray_standing_turns();
set_animarray_add_turn_aims_stand();
level.animsets.cqbstand = level.initanimset;
}
//Function Number: 10
init_animset_heat_stand()
{
anim.initanimset = [];
level.initanimset["add_aim_up"] = %heat_stand_aim_8;
level.initanimset["add_aim_down"] = %heat_stand_aim_2;
level.initanimset["add_aim_left"] = %heat_stand_aim_4;
level.initanimset["add_aim_right"] = %heat_stand_aim_6;
level.initanimset["straight_level"] = %heat_stand_aim_5;
level.initanimset["fire"] = %heat_stand_fire_auto;
level.initanimset["single"] = animscripts/utility::array(%heat_stand_fire_single);
set_animarray_custom_burst_and_semi_fire_stand(%heat_stand_fire_burst);
level.initanimset["exposed_idle"] = animscripts/utility::array(%heat_stand_idle,%heat_stand_scana,%heat_stand_scanb);
level.initanimset["reload"] = animscripts/utility::array(%heat_exposed_reload);
level.initanimset["reload_crouchhide"] = animscripts/utility::array();
set_animarray_stance_change();
level.initanimset["turn_left_45"] = %heat_stand_turn_l;
level.initanimset["turn_left_90"] = %heat_stand_turn_l;
level.initanimset["turn_left_135"] = %heat_stand_turn_180;
level.initanimset["turn_left_180"] = %heat_stand_turn_180;
level.initanimset["turn_right_45"] = %heat_stand_turn_r;
level.initanimset["turn_right_90"] = %heat_stand_turn_r;
level.initanimset["turn_right_135"] = %heat_stand_turn_180;
level.initanimset["turn_right_180"] = %heat_stand_turn_180;
set_animarray_add_turn_aims_stand();
level.animsets.heatstand = level.initanimset;
}
//Function Number: 11
init_animset_default_stand()
{
anim.initanimset = [];
level.initanimset["add_aim_up"] = %exposed_aim_8;
level.initanimset["add_aim_down"] = %exposed_aim_2;
level.initanimset["add_aim_left"] = %exposed_aim_4;
level.initanimset["add_aim_right"] = %exposed_aim_6;
level.initanimset["straight_level"] = %exposed_aim_5;
level.initanimset["fire"] = %exposed_shoot_auto_v3;
level.initanimset["single"] = animscripts/utility::array(%exposed_shoot_semi1);
set_animarray_burst_and_semi_fire_stand();
level.initanimset["exposed_idle"] = animscripts/utility::array(%exposed_idle_alert_v1,%exposed_idle_alert_v2,%exposed_idle_alert_v3);
level.initanimset["exposed_grenade"] = animscripts/utility::array(%exposed_grenadethrowb,%exposed_grenadethrowc);
level.initanimset["reload"] = animscripts/utility::array(%exposed_reload);
level.initanimset["reload_crouchhide"] = animscripts/utility::array(%exposed_reloadb);
set_animarray_stance_change();
set_animarray_standing_turns();
set_animarray_add_turn_aims_stand();
level.animsets.defaultstand = level.initanimset;
}
//Function Number: 12
init_animset_default_crouch()
{
anim.initanimset = [];
level.initanimset["add_aim_up"] = %exposed_crouch_aim_8;
level.initanimset["add_aim_down"] = %exposed_crouch_aim_2;
level.initanimset["add_aim_left"] = %exposed_crouch_aim_4;
level.initanimset["add_aim_right"] = %exposed_crouch_aim_6;
level.initanimset["straight_level"] = %exposed_crouch_aim_5;
level.initanimset["fire"] = %exposed_crouch_shoot_auto_v2;
level.initanimset["single"] = animscripts/utility::array(%exposed_crouch_shoot_semi1);
set_animarray_burst_and_semi_fire_crouch();
level.initanimset["reload"] = animscripts/utility::array(%exposed_crouch_reload);
level.initanimset["exposed_idle"] = animscripts/utility::array(%exposed_crouch_idle_alert_v1,%exposed_crouch_idle_alert_v2,%exposed_crouch_idle_alert_v3);
set_animarray_stance_change();
set_animarray_crouching_turns();
set_animarray_add_turn_aims_crouch();
level.animsets.defaultcrouch = level.initanimset;
}
//Function Number: 13
init_animset_rpg_crouch()
{
anim.initanimset = [];
level.initanimset["add_aim_up"] = %rpg_crouch_aim_8;
level.initanimset["add_aim_down"] = %rpg_crouch_aim_2;
level.initanimset["add_aim_left"] = %rpg_crouch_aim_4;
level.initanimset["add_aim_right"] = %rpg_crouch_aim_6;
level.initanimset["straight_level"] = %rpg_crouch_aim_5;
level.initanimset["fire"] = %rpg_crouch_fire;
level.initanimset["single"] = animscripts/utility::array(%rpg_crouch_fire);
level.initanimset["reload"] = animscripts/utility::array(%rpg_crouch_reload);
level.initanimset["exposed_idle"] = animscripts/utility::array(%rpg_crouch_idle);
set_animarray_stance_change();
set_animarray_crouching_turns();
set_animarray_add_turn_aims_crouch();
level.animsets.rpgcrouch = level.initanimset;
}
//Function Number: 14
init_animset_shotgun_crouch()
{
anim.initanimset = [];
level.initanimset["add_aim_up"] = %exposed_crouch_aim_8;
level.initanimset["add_aim_down"] = %exposed_crouch_aim_2;
level.initanimset["add_aim_left"] = %exposed_crouch_aim_4;
level.initanimset["add_aim_right"] = %exposed_crouch_aim_6;
level.initanimset["straight_level"] = %exposed_crouch_aim_5;
level.initanimset["fire"] = %exposed_crouch_shoot_auto_v2;
level.initanimset["single"] = animscripts/utility::array(%shotgun_crouch_fire);
set_animarray_burst_and_semi_fire_crouch();
level.initanimset["reload"] = animscripts/utility::array(%shotgun_crouch_reload);
level.initanimset["exposed_idle"] = animscripts/utility::array(%exposed_crouch_idle_alert_v1,%exposed_crouch_idle_alert_v2,%exposed_crouch_idle_alert_v3);
set_animarray_stance_change();
set_animarray_crouching_turns();
set_animarray_add_turn_aims_crouch();
level.animsets.shotguncrouch = level.initanimset;
}
//Function Number: 15
init_animset_default_prone()
{
anim.initanimset = [];
level.initanimset["add_aim_up"] = %prone_aim_8_add;
level.initanimset["add_aim_down"] = %prone_aim_2_add;
level.initanimset["add_aim_left"] = %prone_aim_4_add;
level.initanimset["add_aim_right"] = %prone_aim_6_add;
level.initanimset["straight_level"] = %prone_aim_5;
level.initanimset["fire"] = %prone_fire_1;
level.initanimset["single"] = animscripts/utility::array(%prone_fire_1);
level.initanimset["reload"] = animscripts/utility::array(%prone_reload);
level.initanimset["burst2"] = %prone_fire_burst;
level.initanimset["burst3"] = %prone_fire_burst;
level.initanimset["burst4"] = %prone_fire_burst;
level.initanimset["burst5"] = %prone_fire_burst;
level.initanimset["burst6"] = %prone_fire_burst;
level.initanimset["semi2"] = %prone_fire_burst;
level.initanimset["semi3"] = %prone_fire_burst;
level.initanimset["semi4"] = %prone_fire_burst;
level.initanimset["semi5"] = %prone_fire_burst;
level.initanimset["exposed_idle"] = animscripts/utility::array(%exposed_crouch_idle_alert_v1,%exposed_crouch_idle_alert_v2,%exposed_crouch_idle_alert_v3);
set_animarray_stance_change();
level.animsets.defaultprone = level.initanimset;
}
//Function Number: 16
init_animset_complete_custom_stand(param_00)
{
self.combatstandanims = param_00;
}
//Function Number: 17
init_animset_custom_stand(param_00,param_01,param_02,param_03)
{
anim.initanimset = level.animsets.defaultstand;
if(isdefined(param_01))
{
level.initanimset["straight_level"] = param_01;
}
if(isdefined(param_00))
{
level.initanimset["fire"] = param_00;
level.initanimset["single"] = animscripts/utility::array(param_00);
set_animarray_custom_burst_and_semi_fire_stand(param_00);
}
if(isdefined(param_02))
{
level.initanimset["exposed_idle"] = animscripts/utility::array(param_02);
}
if(isdefined(param_03))
{
level.initanimset["reload"] = animscripts/utility::array(param_03);
level.initanimset["reload_crouchhide"] = animscripts/utility::array(param_03);
}
self.combatstandanims = level.initanimset;
}
//Function Number: 18
func_086F(param_00)
{
self.combatcrouchanims = param_00;
}
//Function Number: 19
func_0871(param_00,param_01,param_02)
{
anim.initanimset = level.animsets.defaultcrouch;
if(isdefined(param_00))
{
level.initanimset["fire"] = param_00;
level.initanimset["single"] = animscripts/utility::array(param_00);
set_animarray_custom_burst_and_semi_fire_crouch(param_00);
}
if(isdefined(param_01))
{
level.initanimset["exposed_idle"] = animscripts/utility::array(param_01);
}
if(isdefined(param_02))
{
level.initanimset["reload"] = animscripts/utility::array(param_02);
}
self.combatcrouchanims = level.initanimset;
}
//Function Number: 20
clear_custom_animset()
{
self.custommoveanimset = undefined;
self.customidleanimset = undefined;
self.combatstandanims = undefined;
self.combatcrouchanims = undefined;
}
//Function Number: 21
set_animarray_standing_turns_pistol(param_00)
{
level.initanimset["turn_left_45"] = %pistol_stand_turn45l;
level.initanimset["turn_left_90"] = %pistol_stand_turn90l;
level.initanimset["turn_left_135"] = %pistol_stand_turn90l;
level.initanimset["turn_left_180"] = %pistol_stand_turn180l;
level.initanimset["turn_right_45"] = %pistol_stand_turn45r;
level.initanimset["turn_right_90"] = %pistol_stand_turn90r;
level.initanimset["turn_right_135"] = %pistol_stand_turn90r;
level.initanimset["turn_right_180"] = %pistol_stand_turn180l;
}
//Function Number: 22
set_animarray_standing_turns()
{
level.initanimset["turn_left_45"] = %exposed_tracking_turn45l;
level.initanimset["turn_left_90"] = %exposed_tracking_turn90l;
level.initanimset["turn_left_135"] = %exposed_tracking_turn135l;
level.initanimset["turn_left_180"] = %exposed_tracking_turn180l;
level.initanimset["turn_right_45"] = %exposed_tracking_turn45r;
level.initanimset["turn_right_90"] = %exposed_tracking_turn90r;
level.initanimset["turn_right_135"] = %exposed_tracking_turn135r;
level.initanimset["turn_right_180"] = %exposed_tracking_turn180r;
}
//Function Number: 23
set_animarray_crouching_turns()
{
level.initanimset["turn_left_45"] = %exposed_crouch_turn_90_left;
level.initanimset["turn_left_90"] = %exposed_crouch_turn_90_left;
level.initanimset["turn_left_135"] = %exposed_crouch_turn_180_left;
level.initanimset["turn_left_180"] = %exposed_crouch_turn_180_left;
level.initanimset["turn_right_45"] = %exposed_crouch_turn_90_right;
level.initanimset["turn_right_90"] = %exposed_crouch_turn_90_right;
level.initanimset["turn_right_135"] = %exposed_crouch_turn_180_right;
level.initanimset["turn_right_180"] = %exposed_crouch_turn_180_right;
}
//Function Number: 24
set_animarray_stance_change()
{
level.initanimset["crouch_2_stand"] = %exposed_crouch_2_stand;
level.initanimset["crouch_2_prone"] = %crouch_2_prone;
level.initanimset["stand_2_crouch"] = %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: 25
set_animarray_burst_and_semi_fire_stand()
{
level.initanimset["burst2"] = %exposed_shoot_burst3;
level.initanimset["burst3"] = %exposed_shoot_burst3;
level.initanimset["burst4"] = %exposed_shoot_burst4;
level.initanimset["burst5"] = %exposed_shoot_burst5;
level.initanimset["burst6"] = %exposed_shoot_burst6;
level.initanimset["semi2"] = %exposed_shoot_semi2;
level.initanimset["semi3"] = %exposed_shoot_semi3;
level.initanimset["semi4"] = %exposed_shoot_semi4;
level.initanimset["semi5"] = %exposed_shoot_semi5;
}
//Function Number: 26
set_animarray_custom_burst_and_semi_fire_stand(param_00)
{
level.initanimset["burst2"] = param_00;
level.initanimset["burst3"] = param_00;
level.initanimset["burst4"] = param_00;
level.initanimset["burst5"] = param_00;
level.initanimset["burst6"] = param_00;
level.initanimset["semi2"] = param_00;
level.initanimset["semi3"] = param_00;
level.initanimset["semi4"] = param_00;
level.initanimset["semi5"] = param_00;
}
//Function Number: 27
set_animarray_burst_and_semi_fire_crouch()
{
level.initanimset["burst2"] = %exposed_crouch_shoot_burst3;
level.initanimset["burst3"] = %exposed_crouch_shoot_burst3;
level.initanimset["burst4"] = %exposed_crouch_shoot_burst4;
level.initanimset["burst5"] = %exposed_crouch_shoot_burst5;
level.initanimset["burst6"] = %exposed_crouch_shoot_burst6;
level.initanimset["semi2"] = %exposed_crouch_shoot_semi2;
level.initanimset["semi3"] = %exposed_crouch_shoot_semi3;
level.initanimset["semi4"] = %exposed_crouch_shoot_semi4;
level.initanimset["semi5"] = %exposed_crouch_shoot_semi5;
}
//Function Number: 28
set_animarray_custom_burst_and_semi_fire_crouch(param_00)
{
level.initanimset["burst2"] = param_00;
level.initanimset["burst3"] = param_00;
level.initanimset["burst4"] = param_00;
level.initanimset["burst5"] = param_00;
level.initanimset["burst6"] = param_00;
level.initanimset["semi2"] = param_00;
level.initanimset["semi3"] = param_00;
level.initanimset["semi4"] = param_00;
level.initanimset["semi5"] = param_00;
}
//Function Number: 29
set_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: 30
set_animarray_add_turn_aims_crouch()
{
level.initanimset["add_turn_aim_up"] = %exposed_crouch_turn_aim_8;
level.initanimset["add_turn_aim_down"] = %exposed_crouch_turn_aim_2;
level.initanimset["add_turn_aim_left"] = %exposed_crouch_turn_aim_4;
level.initanimset["add_turn_aim_right"] = %exposed_crouch_turn_aim_6;
}
//Function Number: 31
set_animarray_standing()
{
if(animscripts/utility::usingsidearm())
{
self.a.array = level.animsets.pistolstand;
return;
}
if(isdefined(self.combatstandanims))
{
self.a.array = self.combatstandanims;
return;
}
if(isdefined(self.heat))
{
self.a.array = level.animsets.heatstand;
return;
}
if(animscripts/utility::usingrocketlauncher())
{
self.a.array = level.animsets.rpgstand;
return;
}
if(isdefined(self.weapon) && animscripts/utility::weapon_pump_action_shotgun())
{
self.a.array = level.animsets.shotgunstand;
return;
}
if(animscripts/utility::iscqbwalking())
{
self.a.array = level.animsets.cqbstand;
return;
}
self.a.array = level.animsets.defaultstand;
}
//Function Number: 32
set_animarray_crouching()
{
if(animscripts/utility::usingsidearm())
{
animscripts/shared::placeweaponon(self.primaryweapon,"right");
}
if(isdefined(self.combatcrouchanims))
{
self.a.array = self.combatcrouchanims;
return;
}
if(animscripts/utility::usingrocketlauncher())
{
self.a.array = level.animsets.rpgcrouch;
return;
}
if(isdefined(self.weapon) && animscripts/utility::weapon_pump_action_shotgun())
{
self.a.array = level.animsets.shotguncrouch;
return;
}
self.a.array = level.animsets.defaultcrouch;
}
//Function Number: 33
set_animarray_prone()
{
if(animscripts/utility::usingsidearm())
{
animscripts/shared::placeweaponon(self.primaryweapon,"right");
}
self.a.array = level.animsets.defaultprone;
}
//Function Number: 34
init_moving_turn_animations()
{
level.runturnanims["L90"] = %run_turn_l90;
level.runturnanims["R90"] = %run_turn_r90;
level.runturnanims["L45"] = %run_turn_l45;
level.runturnanims["R45"] = %run_turn_r45;
level.runturnanims["L135"] = %run_turn_l135;
level.runturnanims["R135"] = %run_turn_r135;
level.runturnanims["180"] = %run_turn_180;
level.cqbturnanims["L90"] = %cqb_walk_turn_4;
level.cqbturnanims["R90"] = %cqb_walk_turn_6;
level.cqbturnanims["L45"] = %cqb_walk_turn_7;
level.cqbturnanims["R45"] = %cqb_walk_turn_9;
level.cqbturnanims["L135"] = %cqb_walk_turn_1;
level.cqbturnanims["R135"] = %cqb_walk_turn_3;
level.cqbturnanims["180"] = %cqb_walk_turn_2;
}
//Function Number: 35
func_088B()
{
self.maxrunngunangle = 130;
self.runnguntransitionpoint = 0.4615385;
self.runngunincrement = 0.3;
self.runngunanims["F"] = %run_n_gun_f;
self.runngunanims["L"] = %run_n_gun_l;
self.runngunanims["R"] = %run_n_gun_r;
self.runngunanims["LB"] = %run_n_gun_l_120;
self.runngunanims["RB"] = %run_n_gun_r_120;
}
//Function Number: 36
set_ambush_sidestep_anims()
{
self.a.moveanimset["move_l"] = %combatwalk_l;
self.a.moveanimset["move_r"] = %combatwalk_r;
self.a.moveanimset["move_b"] = %combatwalk_b;
}
//Function Number: 37
heat_reload_anim()
{
if(self.weapon != self.primaryweapon)
{
return animscripts/utility::animarraypickrandom("reload");
}
if(isdefined(self.node))
{
if(self nearclaimnodeandangle())
{
var_00 = undefined;
if(self.node.type == "Cover Left")
{
var_00 = %heat_cover_reload_r;
}
else if(self.node.type == "Cover Right")
{
var_00 = %heat_cover_reload_l;
}
if(isdefined(var_00))
{
return var_00;
}
}
}
return %heat_exposed_reload;
}

View File

@ -0,0 +1,655 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\atv.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 27
* Decompile Time: 465 ms
* Timestamp: 10/27/2023 2:29:44 AM
*******************************************************************/
//Function Number: 1
main()
{
self.current_event = "none";
self.shoot_while_driving_thread = undefined;
atv_geton();
main_driver();
}
//Function Number: 2
atv_geton()
{
self.grenadeawareness = 0;
self.a.var_911 = "crouch";
maps\_utility::disable_surprise();
self.allowpain = 0;
self.getoffvehiclefunc = ::func_204E;
self.specialdeathfunc = ::atv_normal_death;
self.disablebulletwhizbyreaction = 1;
}
//Function Number: 3
func_204E()
{
self.allowpain = 1;
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;
atv_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 atv_trackshootentorpos_driver();
thread func_2050();
}
else
{
animscripts/shared::placeweaponon(self.primaryweapon,"none");
thread atv_loop_driver();
}
func_2052("driver");
}
//Function Number: 5
atv_loop_driver()
{
self endon("death");
self endon("killanimscript");
var_00 = "left2right";
var_01 = [];
self setanimknoball(%atv_turn,%body,1,0);
self setanim(animscripts/utility::animarray("drive"),1,0);
self setanimknob(animscripts/utility::animarray(var_01),1,0);
self setanimtime(animscripts/utility::animarray(var_01),0.5);
for(;;)
{
if(self.ridingvehicle.steering_enable)
{
var_02 = 0.5 * 1 + maps\_vehicle::update_steering(self.ridingvehicle);
var_03 = self getanimtime(animscripts/utility::animarray(var_01));
if(var_01 == "right2left")
{
var_03 = 1 - var_03;
}
var_04 = 20 * abs(var_03 - var_02);
if(var_03 < var_02)
{
var_01 = "left2right";
var_04 = var_04 * var_41["left2right"];
}
else
{
var_01 = "right2left";
var_04 = var_04 * var_41["right2left"];
var_03 = 1 - var_03;
}
}
else
{
var_01 = "left2right";
var_04 = 0;
var_03 = 0.5;
}
self setanimknoblimited(animscripts/utility::animarray(var_01),1,0.1,var_04);
self setanimtime(animscripts/utility::animarray(var_01),var_03);
wait 0.05;
}
}
//Function Number: 6
func_2050()
{
self endon("death");
self endon("killanimscript");
var_00 = 0.05;
var_01 = 0;
self setanimknoball(%atv_aiming,%body,1,0);
self setanimknob(animscripts/utility::animarray("idle"),1,0);
for(;;)
{
if(self.current_event != "none")
{
self waittill("atv_event_finished");
continue;
}
var_02 = maps\_vehicle::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())
{
func_2053();
}
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 atv_stop_shooting();
wait 0.05;
}
}
//Function Number: 7
func_2051(param_00)
{
self endon("death");
self.ridingvehicle.steering_enable = 0;
self setflaggedanimknoblimitedrestart("atv_event",param_00,1,0.17);
animscripts/shared::donotetracks("atv_event",::atv_waitfor_start_lean);
self setanimknoblimited(animscripts/utility::animarray("event_restore"),1,0.1);
self.ridingvehicle.steering_enable = 1;
self.current_event = "none";
self notify("atv_event_finished");
}
//Function Number: 8
func_2052(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("atv_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("atv_event_occurred");
if(self.current_event != "bump_big")
{
thread func_2051(animscripts/utility::animarray("event_bump"));
}
}
if(var_01.event["bump_big"][param_00])
{
var_01.event["bump_big"][param_00] = 0;
self notify("atv_event_occurred");
self.current_event = "bump_big";
thread func_2051(animscripts/utility::animarray("event_bump_big"));
}
if(var_01.event["sway_left"][param_00])
{
var_01.event["sway_left"][param_00] = 0;
self notify("atv_event_occurred");
if(self.current_event != "bump_big")
{
thread func_2051(animscripts/utility::animarray("event_sway")["left"]);
}
}
if(var_01.event["sway_right"][param_00])
{
var_01.event["sway_right"][param_00] = 0;
self notify("atv_event_occurred");
if(self.current_event != "bump_big")
{
thread func_2051(animscripts/utility::animarray("event_sway")["right"]);
}
}
wait 0.05;
}
}
//Function Number: 9
func_2053()
{
self notify("want_shoot_while_driving");
self setanim(%atv_add_fire,1,0.2);
if(isdefined(self.shoot_while_driving_thread))
{
return;
}
self.shoot_while_driving_thread = 1;
thread atv_decide_shoot();
thread func_2058();
}
//Function Number: 10
atv_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(%atv_add_fire,0.2);
}
//Function Number: 11
atv_decide_shoot()
{
self endon("killanimscript");
self endon("end_shoot_while_driving");
self.a.specialshootbehavior = ::atvshootbehavior;
atv_decide_shoot_internal();
self.shoot_while_driving_thread = undefined;
}
//Function Number: 12
atv_decide_shoot_internal()
{
self endon("atv_event_occurred");
animscripts/shoot_behavior::decidewhatandhowtoshoot("normal");
}
//Function Number: 13
atvshootbehavior()
{
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: 14
func_2058()
{
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: 15
atv_reload()
{
if(!self.ridingvehicle.steering_enable)
{
return 0;
}
if(!animscripts/combat_utility::needtoreload(0))
{
return 0;
}
if(!animscripts/utility::usingriflelikeweapon())
{
return 0;
}
atv_reload_internal();
self notify("abort_reload");
return 1;
}
//Function Number: 16
atv_reload_internal()
{
self endon("atv_event_occurred");
self.stop_aiming_for_reload = 1;
self waittill("start_blending_reload");
self setanim(%atv_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(%atv_reload,0.2);
self setflaggedanimrestart("gun_up",animscripts/utility::animarray("gun_up"),1,0.25);
self.var_AF6 = 1;
animscripts/shared::donotetracks("gun_up",::atv_waitfor_start_aim);
self.stop_aiming_for_reload = undefined;
self clearanim(%atv_reload,0.1);
self setanim(%atv_aiming,1,0.1);
if(isdefined(self.var_AF6))
{
self.var_AF6 = undefined;
animscripts/shared::donotetracks("gun_up",::func_205C);
self clearanim(animscripts/utility::animarray("gun_up"),0);
}
}
//Function Number: 17
atv_waitfor_start_aim(param_00)
{
if(param_00 == "start_aim")
{
return 1;
}
}
//Function Number: 18
func_205C(param_00)
{
if(param_00 == "end")
{
return 1;
}
}
//Function Number: 19
atv_waitfor_start_lean(param_00)
{
if(param_00 == "start_lean")
{
return 1;
}
}
//Function Number: 20
atv_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.var_8AE;
var_0C = min(max(var_03,0),90) / 90 * self.a.var_8AE;
self setanimlimited(%atv_aim_4,var_0B,var_00);
self setanimlimited(%atv_aim_6,var_0C,var_00);
wait 0.05;
}
}
//Function Number: 21
func_205F(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.var_2060) && var_08 == level.var_2060 && gettime() - level.prevatvdeathtime < 500)
{
var_08 = var_04;
}
anim.var_2060 = var_08;
anim.prevatvdeathtime = gettime();
return var_08;
}
//Function Number: 22
atv_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 func_0B03();
}
//Function Number: 23
atv_normal_death()
{
var_00 = [];
var_01 = [];
var_02 = func_205F(var_41,var_01,self.damageyaw);
animscripts/death::func_941(var_02);
return 1;
}
//Function Number: 24
atv_collide_death()
{
var_00 = self.ridingvehicle;
if(!isdefined(var_00))
{
return atv_normal_death();
}
var_01 = var_00.prevframevelocity;
atv_death_launchslide();
var_02 = vectortoangles(var_01);
var_03 = angleclamp180(var_02[1] - self.angles[1]);
var_04 = [];
var_05 = [];
var_06 = func_205F(var_41,var_05,var_04);
animscripts/death::func_941(var_06);
return 1;
}
//Function Number: 25
func_0B03()
{
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: 26
func_2065(param_00)
{
self.a.array["idle"] = level.scr_anim["atv"][param_00]["idle"];
self.a.array["drive"] = level.scr_anim["atv"][param_00]["drive"];
self.a.array["fire"] = level.scr_anim["atv"][param_00]["fire"];
self.a.array["single"] = animscripts/utility::array(level.scr_anim["atv"][param_00]["single"]);
self.a.array["burst2"] = level.scr_anim["atv"][param_00]["fire"];
self.a.array["burst3"] = level.scr_anim["atv"][param_00]["fire"];
self.a.array["burst4"] = level.scr_anim["atv"][param_00]["fire"];
self.a.array["burst5"] = level.scr_anim["atv"][param_00]["fire"];
self.a.array["burst6"] = level.scr_anim["atv"][param_00]["fire"];
self.a.array["semi2"] = level.scr_anim["atv"][param_00]["fire"];
self.a.array["semi3"] = level.scr_anim["atv"][param_00]["fire"];
self.a.array["semi4"] = level.scr_anim["atv"][param_00]["fire"];
self.a.array["semi5"] = level.scr_anim["atv"][param_00]["fire"];
}
//Function Number: 27
atv_setanim_driver(param_00)
{
self.a.array = [];
func_2065("driver");
self.a.array["left2right"] = level.scr_anim["atv"]["driver"]["left2right"];
self.a.array["right2left"] = level.scr_anim["atv"]["driver"]["right2left"];
self.a.array["straight_level_left"] = level.scr_anim["atv"]["driver"]["straight_level"]["left"];
self.a.array["straight_level_center"] = level.scr_anim["atv"]["driver"]["straight_level"]["center"];
self.a.array["straight_level_right"] = level.scr_anim["atv"]["driver"]["straight_level"]["right"];
self.a.array["add_aim_left_left"] = level.scr_anim["atv"]["driver"]["add_aim_left"]["left"];
self.a.array["add_aim_left_center"] = level.scr_anim["atv"]["driver"]["add_aim_left"]["center"];
self.a.array["add_aim_left_right"] = level.scr_anim["atv"]["driver"]["add_aim_left"]["right"];
self.a.array["add_aim_right_left"] = level.scr_anim["atv"]["driver"]["add_aim_right"]["left"];
self.a.array["add_aim_right_center"] = level.scr_anim["atv"]["driver"]["add_aim_right"]["center"];
self.a.array["add_aim_right_right"] = level.scr_anim["atv"]["driver"]["add_aim_right"]["right"];
if(param_00)
{
self.a.array["event_jump"] = level.scr_anim["atv"]["driver"]["shoot_jump"];
self.a.array["event_bump"] = level.scr_anim["atv"]["driver"]["shoot_bump"];
self.a.array["event_bump_big"] = level.scr_anim["atv"]["driver"]["shoot_bump_big"];
self.a.array["event_sway"] = [];
self.a.array["event_sway"]["left"] = level.scr_anim["atv"]["driver"]["shoot_sway_left"];
self.a.array["event_sway"]["right"] = level.scr_anim["atv"]["driver"]["shoot_sway_right"];
self.a.array["event_restore"] = %atv_aiming;
return;
}
self.a.array["event_jump"] = level.scr_anim["atv"]["driver"]["drive_jump"];
self.a.array["event_bump"] = level.scr_anim["atv"]["driver"]["drive_bump"];
self.a.array["event_bump_big"] = level.scr_anim["atv"]["driver"]["drive_bump_big"];
self.a.array["event_sway"] = [];
self.a.array["event_sway"]["left"] = level.scr_anim["atv"]["driver"]["drive_sway_left"];
self.a.array["event_sway"]["right"] = level.scr_anim["atv"]["driver"]["drive_sway_right"];
self.a.array["event_restore"] = %atv_turn;
}

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,69 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\civilian.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 4
* Decompile Time: 74 ms
* Timestamp: 10/27/2023 2:29:56 AM
*******************************************************************/
//Function Number: 1
func_3B0E()
{
self endon("killanimscript");
self clearanim(%root,0.2);
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 func_3B0F();
for(;;)
{
self setflaggedanimknoball("idle",common_scripts\utility::random(var_01),%root,1,0.2,1);
self waittillmatch("end","idle");
}
}
//Function Number: 2
func_3B0F()
{
self endon("killanimscript");
while(!isdefined(self.var_3B10))
{
wait 1;
}
}
//Function Number: 3
stop()
{
func_3B0E();
}
//Function Number: 4
func_3B12()
{
return level.civilianflashedarray[randomint(level.civilianflashedarray.size)];
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\combat_say.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 44 ms
* Timestamp: 10/27/2023 2:30:00 AM
*******************************************************************/
//Function Number: 1
func_3ADE()
{
animscripts/battlechatter::playbattlechatter();
}
//Function Number: 2
func_3ADF(param_00)
{
animscripts/battlechatter::playbattlechatter();
}

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,982 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\cover_behavior.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 37
* Decompile Time: 659 ms
* Timestamp: 10/27/2023 2:30:13 AM
*******************************************************************/
//Function Number: 1
main(param_00)
{
self.var_8E4 = self.origin;
var_01 = gettime();
var_02 = spawnstruct();
var_02.nextallowedlooktime = var_01 - 1;
var_02.nextallowedsuppresstime = var_01 - 1;
resetlookforbettercovertime();
resetrespondtodeathtime();
self.seekoutenemytime = gettime();
self.a.lastencountertime = var_01;
self.a.idlingatcover = 0;
self.a.movement = "stop";
self.meleecoverchargemintime = var_01 + 3000;
thread func_0B3B();
var_03 = gettime() > 2500;
var_04 = getcorrectcoverangles();
for(;;)
{
if(animscripts/combat_utility::shouldhelpadvancingteammate())
{
if(animscripts/combat_utility::tryrunningtoenemy(1))
{
wait 0.05;
continue;
}
}
if(isdefined(param_00.mainloopstart))
{
var_05 = gettime();
thread endidleatframeend();
[[ param_00.mainloopstart ]]();
if(gettime() == var_05)
{
self notify("dont_end_idle");
}
}
if(isdefined(param_00.var_B22))
{
if([[ param_00.var_B22 ]]())
{
continue;
}
}
self safeteleport(self.covernode.origin,var_04);
if(!var_03)
{
idle(param_00,0.05 + randomfloat(1.5));
var_03 = 1;
continue;
}
if(dononattackcoverbehavior(param_00))
{
continue;
}
if(isdefined(level.throwgrenadeatplayerasap) && isalive(level.player))
{
if(trythrowinggrenade(param_00,level.player))
{
continue;
}
}
if(respondtodeadteammate())
{
return;
}
var_06 = 0;
var_07 = 0;
if(isalive(self.enemy))
{
var_06 = isenemyvisiblefromexposed();
var_07 = animscripts/utility::cansuppressenemyfromexposed();
}
if(var_06)
{
if(self.a.var_B25 < gettime())
{
if(animscripts/combat_utility::func_B26())
{
return;
}
}
attackvisibleenemy(param_00);
continue;
}
if(isdefined(self.aggressivemode) || enemyishiding())
{
if(advanceonhidingenemy())
{
return;
}
}
if(var_07)
{
attacksuppressableenemy(param_00,var_02);
continue;
}
if(attacknothingtodo(param_00,var_02))
{
return;
}
}
}
//Function Number: 2
end_script(param_00)
{
self.turntomatchnode = undefined;
self.a.prevattack = undefined;
if(isdefined(self.meleecoverchargemintime) && self.meleecoverchargemintime <= gettime())
{
self.meleecoverchargegraceendtime = gettime() + 5000;
self.meleecoverchargemintime = undefined;
}
}
//Function Number: 3
getcorrectcoverangles()
{
var_00 = (self.covernode.angles[0],animscripts/utility::getnodeforwardyaw(self.covernode),self.covernode.angles[2]);
return var_00;
}
//Function Number: 4
respondtodeadteammate()
{
if(self atdangerousnode() && self.a.respondtodeathtime < gettime())
{
if(animscripts/combat_utility::func_B26())
{
return 1;
}
self.a.respondtodeathtime = gettime() + 30000;
}
return 0;
}
//Function Number: 5
dononattackcoverbehavior(param_00)
{
if(suppressedbehavior(param_00))
{
if(isenemyvisiblefromexposed())
{
resetseekoutenemytime();
}
self.a.lastencountertime = gettime();
return 1;
}
if(coverreload(param_00,0))
{
return 1;
}
return 0;
}
//Function Number: 6
attackvisibleenemy(param_00)
{
if(distancesquared(self.origin,self.enemy.origin) > 562500)
{
if(trythrowinggrenade(param_00,self.enemy))
{
return;
}
}
if(leavecoverandshoot(param_00,"normal"))
{
resetseekoutenemytime();
self.a.lastencountertime = gettime();
return;
}
idle(param_00);
}
//Function Number: 7
attacksuppressableenemy(param_00,param_01)
{
if(self.doingambush)
{
if(leavecoverandshoot(param_00,"ambush"))
{
return;
}
}
else if(self.providecoveringfire || gettime() >= param_01.nextallowedsuppresstime)
{
var_02 = "suppress";
if(!self.providecoveringfire && gettime() - self.var_B32 > 5000 && randomint(3) < 2)
{
var_02 = "ambush";
}
else if(!animscripts/shoot_behavior::shouldsuppress())
{
var_02 = "ambush";
}
if(leavecoverandshoot(param_00,var_02))
{
param_01.nextallowedsuppresstime = gettime() + randomintrange(3000,20000);
if(isenemyvisiblefromexposed())
{
self.a.lastencountertime = gettime();
}
return;
}
}
if(trythrowinggrenade(param_00,self.enemy))
{
return;
}
idle(param_00);
}
//Function Number: 8
attacknothingtodo(param_00,param_01)
{
if(coverreload(param_00,0.1))
{
return 0;
}
if(isdefined(self.enemy))
{
if(trythrowinggrenade(param_00,self.enemy))
{
return 0;
}
}
if(!self.doingambush && gettime() >= param_01.nextallowedlooktime)
{
if(lookforenemy(param_00))
{
param_01.nextallowedlooktime = gettime() + randomintrange(4000,15000);
return 0;
}
}
if(gettime() > self.a.var_B25)
{
if(cantfindanythingtodo())
{
return 1;
}
}
if(self.doingambush || gettime() >= param_01.nextallowedsuppresstime && isdefined(self.enemy))
{
if(leavecoverandshoot(param_00,"ambush"))
{
if(isenemyvisiblefromexposed())
{
resetseekoutenemytime();
}
self.a.lastencountertime = gettime();
param_01.nextallowedsuppresstime = gettime() + randomintrange(6000,20000);
return 0;
}
}
idle(param_00);
return 0;
}
//Function Number: 9
isenemyvisiblefromexposed()
{
if(!isdefined(self.enemy))
{
return 0;
}
if(distancesquared(self.enemy.origin,self.var_8E4) < 256)
{
return 0;
}
return animscripts/utility::func_B35();
}
//Function Number: 10
suppressedbehavior(param_00)
{
if(!animscripts/utility::issuppressedwrapper())
{
return 0;
}
var_01 = gettime();
var_02 = 1;
while(animscripts/utility::issuppressedwrapper())
{
var_02 = 0;
self safeteleport(self.covernode.origin);
var_03 = 1;
if(isdefined(self.favor_blindfire))
{
var_03 = common_scripts\utility::cointoss();
}
if(var_03)
{
if(trytogetoutofdangeroussituation(param_00))
{
self notify("killanimscript");
return 1;
}
}
if(self.a.atconcealmentnode && animscripts/utility::canseeenemy())
{
return 0;
}
if(isenemyvisiblefromexposed() || animscripts/utility::cansuppressenemyfromexposed())
{
if(isdefined(level.throwgrenadeatplayerasap) && isalive(level.player))
{
if(trythrowinggrenade(param_00,level.player))
{
continue;
}
}
if(coverreload(param_00,0))
{
continue;
}
if(self.team != "allies" && gettime() >= var_01)
{
if(blindfire(param_00))
{
var_01 = gettime();
if(!isdefined(self.favor_blindfire))
{
var_01 = var_01 + randomintrange(3000,12000);
}
continue;
}
}
if(trythrowinggrenade(param_00,self.enemy))
{
var_02 = 1;
continue;
}
}
if(coverreload(param_00,0.1))
{
continue;
}
idle(param_00);
}
if(!var_02 && randomint(2) == 0)
{
lookfast(param_00);
}
return 1;
}
//Function Number: 11
getpermutation(param_00)
{
var_01 = [];
if(param_00 == 1)
{
}
else if(var_01 == 2)
{
}
else
{
for(var_02 = 0;var_02 < var_01;var_02++ = var_41[1])
{
var_41[var_02] = var_02;
}
for(var_02 = 0;var_02 < var_01;var_02++ = 1 - var_41[0])
{
var_03 = var_02 + randomint(var_01 - var_02);
var_04 = var_41[var_03];
var_41[var_03] = var_41[var_02];
var_41[var_02] = var_04;
}
}
return var_41;
}
//Function Number: 12
calloptionalbehaviorcallback(param_00,param_01,param_02,param_03)
{
if(!isdefined(param_00))
{
return 0;
}
thread endidleatframeend();
var_04 = gettime();
var_05 = undefined;
if(isdefined(param_03))
{
var_05 = [[ param_00 ]](param_01,param_02,param_03);
}
else if(isdefined(param_02))
{
var_05 = [[ param_00 ]](param_01,param_02);
}
else if(isdefined(param_01))
{
var_05 = [[ param_00 ]](param_01);
}
else
{
var_05 = [[ param_00 ]]();
}
if(!var_05)
{
self notify("dont_end_idle");
}
return var_05;
}
//Function Number: 13
func_0B3B()
{
self endon("killanimscript");
self.var_B32 = gettime() - 100000;
self.suppressionstart = self.var_B32;
for(;;)
{
self waittill("suppression");
var_00 = gettime();
if(self.var_B32 < var_00 - 700)
{
self.suppressionstart = var_00;
}
self.var_B32 = var_00;
}
}
//Function Number: 14
coverreload(param_00,param_01)
{
if(self.bulletsinclip > weaponclipsize(self.weapon) * param_01)
{
return 0;
}
self.isreloading = 1;
var_02 = calloptionalbehaviorcallback(param_00.reload);
self.isreloading = 0;
return var_02;
}
//Function Number: 15
leavecoverandshoot(param_00,param_01)
{
thread animscripts/shoot_behavior::decidewhatandhowtoshoot(param_01);
if(!self.fixednode && !self.doingambush)
{
thread breakoutofshootingifwanttomoveup();
}
var_02 = calloptionalbehaviorcallback(param_00.leavecoverandshoot);
self notify("stop_deciding_how_to_shoot");
return var_02;
}
//Function Number: 16
lookforenemy(param_00)
{
if(self.a.atconcealmentnode && animscripts/utility::canseeenemy())
{
return 0;
}
if(self.a.lastencountertime + 6000 > gettime())
{
return lookfast(param_00);
}
var_01 = calloptionalbehaviorcallback(param_00.look,2 + randomfloat(2));
if(var_01)
{
return 1;
}
return calloptionalbehaviorcallback(param_00.fastlook);
}
//Function Number: 17
lookfast(param_00)
{
var_01 = calloptionalbehaviorcallback(param_00.fastlook);
if(var_01)
{
return 1;
}
return calloptionalbehaviorcallback(param_00.look,0);
}
//Function Number: 18
idle(param_00,param_01)
{
self.flinching = 0;
if(isdefined(param_00.flinch))
{
if(!self.a.idlingatcover && gettime() - self.suppressionstart < 600)
{
if([[ param_00.flinch ]]())
{
return 1;
}
}
else
{
thread func_0B4A(param_00);
}
}
if(!self.a.idlingatcover)
{
thread func_0B49(param_00.idle);
self.a.idlingatcover = 1;
}
if(isdefined(param_01))
{
idlewait(param_01);
}
else
{
func_0B48();
}
if(self.flinching)
{
self waittill("flinch_done");
}
self notify("stop_waiting_to_flinch");
}
//Function Number: 19
idlewait(param_00)
{
self endon("end_idle");
wait param_00;
}
//Function Number: 20
func_0B48()
{
self endon("end_idle");
wait 0.3 + randomfloat(0.1);
self waittill("do_slow_things");
}
//Function Number: 21
func_0B49(param_00)
{
self endon("killanimscript");
self [[ param_00 ]]();
}
//Function Number: 22
func_0B4A(param_00)
{
self endon("killanimscript");
self endon("stop_waiting_to_flinch");
var_01 = self.var_B32;
for(;;)
{
self waittill("suppression");
var_02 = gettime();
if(var_01 < var_02 - 2000)
{
break;
}
var_01 = var_02;
}
self.flinching = 1;
thread endidleatframeend();
var_03 = [[ param_00.flinch ]]();
if(!var_03)
{
self notify("dont_end_idle");
}
self.flinching = 0;
self notify("flinch_done");
}
//Function Number: 23
endidleatframeend()
{
self endon("killanimscript");
self endon("dont_end_idle");
waittillframeend;
if(!isdefined(self))
{
return;
}
self notify("end_idle");
self.a.idlingatcover = 0;
}
//Function Number: 24
trythrowinggrenade(param_00,param_01)
{
var_02 = anglestoforward(self.angles);
var_03 = vectornormalize(param_01.origin - self.origin);
if(vectordot(var_02,var_03) < 0)
{
return 0;
}
if(self.doingambush && !animscripts/utility::recentlysawenemy())
{
return 0;
}
if(animscripts/utility::ispartiallysuppressedwrapper())
{
return calloptionalbehaviorcallback(param_00.grenadehidden,param_01);
}
return calloptionalbehaviorcallback(param_00.grenade,param_01);
}
//Function Number: 25
blindfire(param_00)
{
if(!animscripts/utility::canblindfire())
{
return 0;
}
return calloptionalbehaviorcallback(param_00.blindfire);
}
//Function Number: 26
breakoutofshootingifwanttomoveup()
{
self endon("killanimscript");
self endon("stop_deciding_how_to_shoot");
for(;;)
{
if(self.fixednode || self.doingambush)
{
return;
}
wait 0.5 + randomfloat(0.75);
if(!isdefined(self.enemy))
{
continue;
}
if(enemyishiding())
{
if(advanceonhidingenemy())
{
return;
}
}
if(!animscripts/utility::recentlysawenemy() && !animscripts/utility::cansuppressenemy())
{
if(gettime() > self.a.var_B25)
{
if(cantfindanythingtodo())
{
return;
}
}
}
}
}
//Function Number: 27
enemyishiding()
{
if(!isdefined(self.enemy))
{
return 0;
}
if(self.enemy common_scripts\utility::isflashed())
{
return 1;
}
if(isplayer(self.enemy))
{
if(isdefined(self.enemy.health) && self.enemy.health < self.enemy.maxhealth)
{
return 1;
}
}
else if(isai(self.enemy) && self.enemy animscripts/utility::issuppressedwrapper())
{
return 1;
}
if(isdefined(self.enemy.isreloading) && self.enemy.isreloading)
{
return 1;
}
return 0;
}
//Function Number: 28
resetrespondtodeathtime()
{
self.a.respondtodeathtime = 0;
}
//Function Number: 29
resetlookforbettercovertime()
{
var_00 = gettime();
if(isdefined(self.var_B55) && var_00 > self.a.var_B25)
{
self.a.var_B25 = var_00 + randomintrange(2000,5000);
return;
}
if(isdefined(self.enemy))
{
var_01 = distance2d(self.origin,self.enemy.origin);
if(var_01 < self.engagemindist)
{
self.a.var_B25 = var_00 + randomintrange(5000,10000);
return;
}
if(var_01 > self.engagemaxdist && var_01 < self.goalradius)
{
self.a.var_B25 = var_00 + randomintrange(2000,5000);
return;
}
self.a.var_B25 = var_00 + randomintrange(10000,15000);
return;
}
self.a.var_B25 = var_00 + randomintrange(5000,15000);
}
//Function Number: 30
resetseekoutenemytime()
{
if(isdefined(self.aggressivemode))
{
self.seekoutenemytime = gettime() + randomintrange(500,1000);
return;
}
self.seekoutenemytime = gettime() + randomintrange(3000,5000);
}
//Function Number: 31
cantfindanythingtodo()
{
return advanceonhidingenemy();
}
//Function Number: 32
advanceonhidingenemy()
{
if(self.fixednode || self.doingambush)
{
return 0;
}
if(isdefined(self.aggressivemode) && gettime() >= self.seekoutenemytime)
{
return animscripts/combat_utility::tryrunningtoenemy(0);
}
var_00 = 0;
if(!isdefined(self.enemy) || !self.enemy common_scripts\utility::isflashed())
{
var_00 = animscripts/combat_utility::func_B26();
}
if(!var_00 && isdefined(self.enemy) && !animscripts/utility::func_B35())
{
if(gettime() >= self.seekoutenemytime)
{
return animscripts/combat_utility::tryrunningtoenemy(0);
}
}
return var_00;
}
//Function Number: 33
trytogetoutofdangeroussituation(param_00)
{
if(isdefined(param_00.var_B22))
{
if([[ param_00.var_B22 ]]())
{
return 1;
}
}
return animscripts/combat_utility::func_B26();
}
//Function Number: 34
set_standing_turns()
{
self.a.array["turn_left_45"] = %exposed_tracking_turn45l;
self.a.array["turn_left_90"] = %exposed_tracking_turn90l;
self.a.array["turn_left_135"] = %exposed_tracking_turn135l;
self.a.array["turn_left_180"] = %exposed_tracking_turn180l;
self.a.array["turn_right_45"] = %exposed_tracking_turn45r;
self.a.array["turn_right_90"] = %exposed_tracking_turn90r;
self.a.array["turn_right_135"] = %exposed_tracking_turn135r;
self.a.array["turn_right_180"] = %exposed_tracking_turn180r;
}
//Function Number: 35
set_crouching_turns()
{
self.a.array["turn_left_45"] = %exposed_crouch_turn_90_left;
self.a.array["turn_left_90"] = %exposed_crouch_turn_90_left;
self.a.array["turn_left_135"] = %exposed_crouch_turn_180_left;
self.a.array["turn_left_180"] = %exposed_crouch_turn_180_left;
self.a.array["turn_right_45"] = %exposed_crouch_turn_90_right;
self.a.array["turn_right_90"] = %exposed_crouch_turn_90_right;
self.a.array["turn_right_135"] = %exposed_crouch_turn_180_right;
self.a.array["turn_right_180"] = %exposed_crouch_turn_180_right;
}
//Function Number: 36
func_0B5C(param_00)
{
if(isdefined(self.node))
{
var_01 = self.node;
var_02 = abs(angleclamp180(self.angles[1] - var_01.angles[1] + param_00));
if(self.a.var_911 == "stand" && var_01 gethighestnodestance() != "stand")
{
if(var_02 > 45 && var_02 < 90)
{
self orientmode("face angle",self.angles[1]);
}
else
{
self orientmode("face current");
}
var_03 = 1.5;
var_04 = getnotetracktimes(%exposed_stand_2_crouch,"anim_pose = \"crouch\")[0];
var_04 = min(1,var_04 * 1.1);
var_05 = var_04 * getanimlength(%exposed_stand_2_crouch) / var_03;
self setflaggedanimknoballrestart("crouchanim",%exposed_stand_2_crouch,%body,1,0.2,var_03);
animscripts/notetracks::donotetracksfortime(var_05,"crouchanim");
self clearanim(%body,0.2);
}
self orientmode("face angle",self.angles[1]);
var_06 = angleclamp180(self.angles[1] - var_01.angles[1] + param_00);
if(abs(var_06) > 45)
{
if(self.a.var_911 == "stand")
{
set_standing_turns();
}
else
{
set_crouching_turns();
}
self.turnthreshold = 45;
self.turntomatchnode = 1;
animscripts/combat::turntofacerelativeyaw(var_06);
self.turntomatchnode = undefined;
}
}
}
//Function Number: 37
func_0B22()
{
if(!isdefined(self.enemy))
{
return 0;
}
if(isdefined(self.var_B55))
{
self.var_B55 = undefined;
return 0;
}
if(!isdefined(self.node))
{
return 0;
}
if(randomint(3) == 0)
{
return 0;
}
if(self.fixednode || self.doingambush || self.keepclaimednode || self.keepclaimednodeifvalid)
{
return 0;
}
if(distancesquared(self.origin,self.node.origin) > 256)
{
return 0;
}
var_00 = self findshufflecovernode();
if(isdefined(var_00) && var_00 != self.node && self usecovernode(var_00))
{
self.shufflemove = 1;
self.shufflenode = var_00;
self.var_B55 = 1;
wait 0.5;
return 1;
}
return 0;
}

View File

@ -0,0 +1,24 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\cover_crouch.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 43 ms
* Timestamp: 10/27/2023 2:30:13 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.var_897 = undefined;
animscripts/cover_behavior::end_script("crouch");
}

View File

@ -0,0 +1,47 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\cover_left.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 4
* Decompile Time: 82 ms
* Timestamp: 10/27/2023 2:30:14 AM
*******************************************************************/
//Function Number: 1
main()
{
self.animarrayfuncs = [];
self.animarrayfuncs["hiding"]["stand"] = ::func_3AE0;
self.animarrayfuncs["hiding"]["crouch"] = ::func_3AE1;
self endon("killanimscript");
animscripts/utility::initialize("cover_left");
animscripts/corner::corner_think("left",90);
}
//Function Number: 2
end_script()
{
animscripts/corner::func_1FCB();
animscripts/cover_behavior::end_script("left");
}
//Function Number: 3
func_3AE0()
{
var_00 = [];
if(isdefined(level.ramboanims))
{
}
self.hideyawoffset = 90;
self.a.array = var_41;
}
//Function Number: 4
func_3AE1()
{
var_00 = [];
self.hideyawoffset = 90;
self.a.array = var_41;
}

View File

@ -0,0 +1,313 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\cover_prone.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 14
* Decompile Time: 249 ms
* Timestamp: 10/27/2023 2:30:15 AM
*******************************************************************/
//Function Number: 1
main()
{
self endon("killanimscript");
animscripts/utility::initialize("cover_prone");
if(weaponclass(self.weapon) == "rocketlauncher")
{
animscripts/combat::main();
return;
}
if(isdefined(self.a.var_CCA) && self.a.var_CCA == "prone_saw")
{
animscripts/cover_wall::useselfplacedturret("saw_bipod_prone","weapon_saw_MG_Setup");
}
else if(isdefined(self.node.turret))
{
animscripts/cover_wall::func_B92();
}
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.var_911 != "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: 2
end_script()
{
self.a.goingtoproneaim = undefined;
}
//Function Number: 3
func_0B49()
{
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: 4
updatepronewrapper(param_00)
{
self updateprone(%prone_aim_feet_45up,%prone_aim_feet_45down,1,param_00,1);
self setanim(%exposed_aiming,1,0.2);
}
//Function Number: 5
pronecombatmainloop()
{
self endon("killanimscript");
thread animscripts/track::trackshootentorpos();
thread animscripts/shoot_behavior::decidewhatandhowtoshoot("normal");
var_00 = gettime() > 2500;
for(;;)
{
animscripts/utility::isincombat();
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.var_911 != "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::func_CCF())
{
animscripts/combat_utility::shootuntilshootbehaviorchange();
self clearanim(%add_fire,0.2);
continue;
}
wait 0.05;
}
}
//Function Number: 6
pronereload(param_00)
{
return animscripts/combat_utility::reload(param_00,animscripts/utility::animarray("reload"));
}
//Function Number: 7
setup_cover_prone()
{
self setdefaultaimlimits(self.node);
var_00 = [];
self.a.array = var_41;
}
//Function Number: 8
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: 9
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: 10
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: 11
prone_transitionto(param_00)
{
if(param_00 == self.a.var_911)
{
return;
}
self clearanim(%root,0.3);
animscripts/combat_utility::endfireandanimidlethread();
if(shouldfirewhilechangingpose())
{
var_01 = animscripts/utility::animarray(self.a.var_911 + "_2_" + param_00 + "_firing");
}
else
{
var_01 = animscripts/utility::animarray(self.a.var_911 + "_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: 12
func_0CD6(param_00)
{
self endon("killanimscript");
animscripts/shared::donotetracks(param_00);
}
//Function Number: 13
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: 14
proneto(param_00,param_01)
{
self clearanim(%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,47 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\cover_right.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 4
* Decompile Time: 84 ms
* Timestamp: 10/27/2023 2:30:15 AM
*******************************************************************/
//Function Number: 1
main()
{
self.animarrayfuncs = [];
self.animarrayfuncs["hiding"]["stand"] = ::func_3AE2;
self.animarrayfuncs["hiding"]["crouch"] = ::set_animarray_crouching_right;
self endon("killanimscript");
animscripts/utility::initialize("cover_right");
animscripts/corner::corner_think("right",-90);
}
//Function Number: 2
end_script()
{
animscripts/corner::func_1FCB();
animscripts/cover_behavior::end_script("right");
}
//Function Number: 3
func_3AE2()
{
var_00 = [];
if(isdefined(level.ramboanims))
{
}
self.hideyawoffset = -90;
self.a.array = var_41;
}
//Function Number: 4
set_animarray_crouching_right()
{
var_00 = [];
self.hideyawoffset = -90;
self.a.array = var_41;
}

View File

@ -0,0 +1,23 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\cover_stand.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 47 ms
* Timestamp: 10/27/2023 2:30:16 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,856 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\cover_wall.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 35
* Decompile Time: 577 ms
* Timestamp: 10/27/2023 2:30:18 AM
*******************************************************************/
//Function Number: 1
cover_wall_think(param_00)
{
self endon("killanimscript");
self.covernode = self.node;
self.covertype = param_00;
if(!isdefined(self.node.turret))
{
animscripts/cover_behavior::func_B5C(0);
}
if(param_00 == "crouch")
{
setup_cover_crouch("unknown");
self.covernode func_0B6A();
}
else
{
setup_cover_stand("unknown");
}
self.a.aimidlethread = undefined;
self orientmode("face angle",self.covernode.angles[1]);
if(isdefined(self.weapon) && animscripts/utility::usingmg() && isdefined(self.node) && isdefined(self.node.turretinfo) && canspawnturret())
{
if(param_00 == "crouch")
{
if(isrpd(self.weapon))
{
var_01 = "rpd_bipod_crouch";
}
else
{
var_01 = "saw_bipod_crouch";
}
}
else if(isrpd(self.weapon))
{
var_01 = "rpd_bipod_stand";
}
else
{
var_01 = "saw_bipod_stand";
}
if(isrpd(self.weapon))
{
var_02 = "weapon_rpd_MG_Setup";
}
else
{
var_02 = "weapon_saw_MG_Setup";
}
useselfplacedturret(var_01,var_02);
}
else if(isdefined(self.node) && isdefined(self.node.turret))
{
func_0B92();
}
self animmode("normal");
if(param_00 == "crouch" && self.a.var_911 == "stand")
{
var_03 = animscripts/utility::animarray("stand_2_hide");
var_04 = getanimlength(var_03);
self setanimknoballrestart(var_03,%body,1,0.2,animscripts/combat_utility::fasteranimspeed());
thread animscripts/shared::movetooriginovertime(self.covernode.origin,var_04);
wait var_04;
self.a.var_8E3 = "hide";
}
else
{
loophide(0.4);
if(distancesquared(self.origin,self.covernode.origin) > 1)
{
thread animscripts/shared::movetooriginovertime(self.covernode.origin,0.4);
wait 0.2;
if(param_00 == "crouch")
{
self.a.var_911 = "crouch";
}
wait 0.2;
}
else
{
wait 0.1;
}
}
self animmode("zonly_physics");
if(param_00 == "crouch")
{
if(self.a.var_911 == "prone")
{
animscripts/utility::exitpronewrapper(1);
}
self.a.var_911 = "crouch";
}
if(self.covertype == "stand")
{
self.a.special = "cover_stand";
}
else
{
self.a.special = "cover_crouch";
}
var_05 = spawnstruct();
if(!self.fixednode)
{
var_05.var_B22 = ::animscripts/cover_behavior::func_B22;
}
var_05.reload = ::coverreload;
var_05.leavecoverandshoot = ::popupandshoot;
var_05.look = ::look;
var_05.fastlook = ::fastlook;
var_05.idle = ::idle;
var_05.flinch = ::flinch;
var_05.grenade = ::trythrowinggrenade;
var_05.grenadehidden = ::trythrowinggrenadestayhidden;
var_05.blindfire = ::blindfire;
animscripts/cover_behavior::main(var_05);
}
//Function Number: 2
isrpd(param_00)
{
return getsubstr(param_00,0,3) == "rpd" && param_00.size == 3 || param_00[3] == "_";
}
//Function Number: 3
func_0B6A()
{
if(isdefined(self.crouchingisok))
{
return;
}
var_00 = (0,0,42);
var_01 = anglestoforward(self.angles);
self.crouchingisok = sighttracepassed(self.origin + var_00,self.origin + var_00 + var_01 * 64,0,undefined);
}
//Function Number: 4
setup_cover_crouch(param_00)
{
self setdefaultaimlimits(self.covernode);
func_0B94(param_00);
}
//Function Number: 5
setup_cover_stand(param_00)
{
self setdefaultaimlimits(self.covernode);
setup_standing_anim_array(param_00);
}
//Function Number: 6
coverreload()
{
animscripts/combat_utility::reload(2,animscripts/utility::animarray("reload"));
return 1;
}
//Function Number: 7
popupandshoot()
{
self.keepclaimednodeifvalid = 1;
if(isdefined(self.rambochance) && randomfloat(1) < self.rambochance)
{
if(func_0B76())
{
return 1;
}
}
if(!pop_up())
{
return 0;
}
func_0B73();
animscripts/combat_utility::endfireandanimidlethread();
if(isdefined(self.shootpos))
{
var_00 = lengthsquared(self.origin - self.shootpos);
if(animscripts/utility::usingrocketlauncher() && var_00 < squared(512) || self.a.rockets < 1)
{
if(self.a.var_911 == "stand")
{
animscripts/shared::throwdownweapon(%rpg_stand_throw);
}
else
{
animscripts/shared::throwdownweapon(%rpg_crouch_throw);
}
}
}
go_to_hide();
self.var_897 = undefined;
self.keepclaimednodeifvalid = 0;
return 1;
}
//Function Number: 8
func_0B73()
{
self endon("return_to_cover");
maps\_gameskill::didsomethingotherthanshooting();
for(;;)
{
if(isdefined(self.shouldreturntocover))
{
break;
}
if(!isdefined(self.shootpos))
{
self waittill("do_slow_things");
waittillframeend;
if(isdefined(self.shootpos))
{
continue;
}
break;
}
if(!self.bulletsinclip)
{
break;
}
if(self.covertype == "crouch" && needtochangecovermode())
{
break;
}
shootuntilshootbehaviorchange_coverwall();
self clearanim(%add_fire,0.2);
}
}
//Function Number: 9
shootuntilshootbehaviorchange_coverwall()
{
if(self.covertype == "crouch")
{
thread anglerangethread();
}
thread animscripts/combat_utility::aimidlethread();
animscripts/combat_utility::shootuntilshootbehaviorchange();
}
//Function Number: 10
func_0B76()
{
if(!animscripts/utility::hasenemysightpos())
{
return 0;
}
var_00 = "rambo";
if(randomint(10) < 2)
{
var_00 = "rambo_fail";
}
if(!animscripts/utility::animarrayanyexist(var_00))
{
return 0;
}
if(self.covertype == "crouch" && !self.covernode.crouchingisok)
{
return 0;
}
var_01 = getshootpospitch(self.covernode.origin + animscripts/utility::getnodeoffset(self.covernode));
if(var_01 > 15)
{
return 0;
}
var_02 = anglestoforward(self.angles);
var_03 = self.origin + var_02 * -16;
if(!self maymovetopoint(var_03))
{
return 0;
}
self.var_8E8 = gettime();
self animmode("zonly_physics");
self.keepclaimednodeifvalid = 1;
self.isrambo = 1;
self.a.prevattack = "rambo";
self.var_8C8 = 1;
thread animscripts/shared::ramboaim(0);
var_04 = animscripts/utility::animarraypickrandom(var_00);
self setflaggedanimknoballrestart("rambo",var_04,%body,1,0.2,1);
animscripts/shared::donotetracks("rambo");
self notify("rambo_aim_end");
self.var_8C8 = 0;
self.keepclaimednodeifvalid = 0;
self.var_B7C = gettime();
self.var_8C8 = 0;
self.isrambo = undefined;
return 1;
}
//Function Number: 11
idle()
{
self endon("end_idle");
for(;;)
{
var_00 = randomint(2) == 0 && animscripts/utility::animarrayanyexist("hide_idle_twitch");
if(var_00)
{
var_01 = animscripts/utility::animarraypickrandom("hide_idle_twitch");
}
else
{
var_01 = animscripts/utility::animarray("hide_idle");
}
playidleanimation(var_01,var_00);
}
}
//Function Number: 12
flinch()
{
if(!animscripts/utility::animarrayanyexist("hide_idle_flinch"))
{
return 0;
}
var_00 = anglestoforward(self.angles);
var_01 = self.origin + var_00 * -16;
if(!self maymovetopoint(var_01))
{
return 0;
}
self animmode("zonly_physics");
self.keepclaimednodeifvalid = 1;
var_02 = animscripts/utility::animarraypickrandom("hide_idle_flinch");
playidleanimation(var_02,1);
self.keepclaimednodeifvalid = 0;
return 1;
}
//Function Number: 13
playidleanimation(param_00,param_01)
{
if(param_01)
{
self setflaggedanimknoballrestart("idle",param_00,%body,1,0.25,1);
}
else
{
self setflaggedanimknoball("idle",param_00,%body,1,0.25,1);
}
self.a.var_8E3 = "hide";
animscripts/shared::donotetracks("idle");
}
//Function Number: 14
look(param_00)
{
if(!isdefined(self.a.array["hide_to_look"]))
{
return 0;
}
if(!peekout())
{
return 0;
}
animscripts/shared::func_B7E(animscripts/utility::animarray("look_idle"),param_00);
var_01 = undefined;
if(animscripts/utility::issuppressedwrapper())
{
var_01 = animscripts/utility::animarray("look_to_hide_fast");
}
else
{
var_01 = animscripts/utility::animarray("look_to_hide");
}
self setflaggedanimknoballrestart("looking_end",var_01,%body,1,0.1);
animscripts/shared::donotetracks("looking_end");
return 1;
}
//Function Number: 15
peekout()
{
if(isdefined(self.covernode.script_dontpeek))
{
return 0;
}
self setflaggedanimknoball("looking_start",animscripts/utility::animarray("hide_to_look"),%body,1,0.2);
animscripts/shared::donotetracks("looking_start");
return 1;
}
//Function Number: 16
fastlook()
{
self setflaggedanimknoballrestart("look",animscripts/utility::animarraypickrandom("look"),%body,1,0.1);
animscripts/shared::donotetracks("look");
return 1;
}
//Function Number: 17
pop_up_and_hide_speed()
{
if(self.a.var_8E3 == "left" || self.a.var_8E3 == "right" || self.a.var_8E3 == "over")
{
return 1;
}
return animscripts/combat_utility::randomfasteranimspeed();
}
//Function Number: 18
pop_up()
{
var_00 = getbestcovermode();
var_01 = 0.1;
var_02 = animscripts/utility::animarray("hide_2_" + var_00);
if(!self maymovetopoint(animscripts/utility::getanimendpos(var_02)))
{
return 0;
}
if(self.script == "cover_crouch" && var_00 == "lean")
{
self.var_897 = 1;
}
if(self.covertype == "crouch")
{
setup_cover_crouch(var_00);
}
else
{
setup_cover_stand(var_00);
}
self.a.special = "none";
self.specialdeathfunc = undefined;
if(self.covertype == "stand")
{
self.a.special = "cover_stand_aim";
}
else
{
self.a.special = "cover_crouch_aim";
}
self.var_8C8 = 1;
self notify("done_changing_cover_pos");
self animmode("zonly_physics");
var_03 = pop_up_and_hide_speed();
self setflaggedanimknoballrestart("pop_up",var_02,%body,1,0.1,var_03);
thread func_0B85("pop_up");
if(animhasnotetrack(var_02,"start_aim"))
{
self waittillmatch("start_aim","pop_up");
var_01 = getanimlength(var_02) / var_03 * 1 - self getanimtime(var_02);
}
else
{
self waittillmatch("end","pop_up");
var_01 = 0.1;
}
self clearanim(var_02,var_01 + 0.05);
self.a.var_8E3 = var_00;
self.a.prevattack = var_00;
setup_additive_aim(var_01);
thread animscripts/track::trackshootentorpos();
wait var_01;
if(animscripts/combat_utility::issniper())
{
thread animscripts/shoot_behavior::sniper_glint_behavior();
}
self.var_8C8 = 0;
self.var_8E8 = gettime();
self notify("stop_popup_donotetracks");
return 1;
}
//Function Number: 19
func_0B85(param_00)
{
self endon("killanimscript");
self endon("stop_popup_donotetracks");
animscripts/shared::donotetracks(param_00);
}
//Function Number: 20
setup_additive_aim(param_00)
{
if(self.a.var_8E3 == "left" || self.a.var_8E3 == "right")
{
var_01 = "crouch";
}
else
{
var_01 = self.a.var_8E3;
}
self setanimknoball(animscripts/utility::animarray(var_01 + "_aim"),%body,1,param_00);
if(var_01 == "crouch")
{
self setanimlimited(%covercrouch_aim2_add,1,0);
self setanimlimited(%covercrouch_aim4_add,1,0);
self setanimlimited(%covercrouch_aim6_add,1,0);
self setanimlimited(%covercrouch_aim8_add,1,0);
return;
}
if(var_01 == "stand")
{
self setanimlimited(%exposed_aim_2,1,0);
self setanimlimited(%exposed_aim_4,1,0);
self setanimlimited(%exposed_aim_6,1,0);
self setanimlimited(%exposed_aim_8,1,0);
return;
}
if(var_01 == "lean")
{
self setanimlimited(%exposed_aim_2,1,0);
self setanimlimited(%exposed_aim_4,1,0);
self setanimlimited(%exposed_aim_6,1,0);
self setanimlimited(%exposed_aim_8,1,0);
return;
}
if(var_01 == "over")
{
self setanimlimited(%coverstandaim_aim2_add,1,0);
self setanimlimited(%coverstandaim_aim4_add,1,0);
self setanimlimited(%coverstandaim_aim6_add,1,0);
self setanimlimited(%coverstandaim_aim8_add,1,0);
return;
}
}
//Function Number: 21
go_to_hide()
{
self notify("return_to_cover");
self.var_8C8 = 1;
self notify("done_changing_cover_pos");
animscripts/combat_utility::endaimidlethread();
var_00 = pop_up_and_hide_speed();
self setflaggedanimknoball("go_to_hide",animscripts/utility::animarray(self.a.var_8E3 + "_2_hide"),%body,1,0.2,var_00);
self clearanim(%exposed_modern,0.2);
animscripts/shared::donotetracks("go_to_hide");
self.a.var_8E3 = "hide";
if(self.covertype == "stand")
{
self.a.special = "cover_stand";
}
else
{
self.a.special = "cover_crouch";
}
self.var_8C8 = 0;
}
//Function Number: 22
trythrowinggrenadestayhidden(param_00)
{
return trythrowinggrenade(param_00,1);
}
//Function Number: 23
trythrowinggrenade(param_00,param_01)
{
if(isdefined(self.dontevershoot) || isdefined(param_00.dontattackme))
{
return 0;
}
var_02 = undefined;
if(isdefined(self.rambochance) && randomfloat(1) < self.rambochance)
{
var_02 = animscripts/utility::animarraypickrandom("grenade_rambo");
}
else 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 = animscripts/combat_utility::trygrenade(param_00,var_02);
self.keepclaimednodeifvalid = 0;
return var_03;
}
//Function Number: 24
blindfire()
{
if(!animscripts/utility::animarrayanyexist("blind_fire"))
{
return 0;
}
self animmode("zonly_physics");
self.keepclaimednodeifvalid = 1;
self setflaggedanimknoballrestart("blindfire",animscripts/utility::animarraypickrandom("blind_fire"),%body,1,0.2,1);
animscripts/shared::donotetracks("blindfire");
self.keepclaimednodeifvalid = 0;
return 1;
}
//Function Number: 25
createturret(param_00,param_01,param_02)
{
var_03 = spawnturret("misc_turret",param_00.origin,param_01);
var_03.angles = param_00.angles;
var_03.var_B8E = self;
var_03 setmodel(param_02);
var_03 makeusable();
var_03 setdefaultdroppitch(0);
if(isdefined(param_00.leftarc))
{
var_03.leftarc = param_00.leftarc;
}
if(isdefined(param_00.rightarc))
{
var_03.rightarc = param_00.rightarc;
}
if(isdefined(param_00.toparc))
{
var_03.toparc = param_00.toparc;
}
if(isdefined(param_00.bottomarc))
{
var_03.bottomarc = param_00.bottomarc;
}
return var_03;
}
//Function Number: 26
func_0B8F(param_00)
{
self endon("death");
self endon("being_used");
wait 0.1;
if(isdefined(param_00))
{
param_00 notify("turret_use_failed");
}
self delete();
}
//Function Number: 27
useselfplacedturret(param_00,param_01)
{
var_02 = createturret(self.node.turretinfo,param_00,param_01);
if(self useturret(var_02))
{
var_02 thread func_0B8F(self);
if(isdefined(self.turret_function))
{
thread [[ self.turret_function ]](var_02);
}
self waittill("turret_use_failed");
return;
}
var_02 delete();
}
//Function Number: 28
func_0B92()
{
var_00 = self.node.turret;
if(!var_00.issetup)
{
return;
}
thread maps\_mg_penetration::gunner_think(var_00);
self waittill("continue_cover_script");
}
//Function Number: 29
func_0B94(param_00)
{
var_01 = [];
if(animscripts/utility::weapon_pump_action_shotgun())
{
if(var_01 == "lean" || var_01 == "stand")
{
}
else
{
}
}
else
{
}
if(isdefined(level.ramboanims))
{
}
self.a.array = var_41;
}
//Function Number: 30
setup_standing_anim_array(param_00)
{
var_01 = [];
if(var_01 == "over")
{
}
else if(animscripts/utility::weapon_pump_action_shotgun())
{
}
else
{
}
if(isdefined(level.ramboanims))
{
}
self.a.array = var_41;
}
//Function Number: 31
loophide(param_00)
{
if(!isdefined(param_00))
{
param_00 = 0.1;
}
self setanimknoballrestart(animscripts/utility::animarray("hide_idle"),%body,1,param_00);
self.a.var_8E3 = "hide";
}
//Function Number: 32
anglerangethread()
{
self endon("killanimscript");
self notify("newAngleRangeCheck");
self endon("newAngleRangeCheck");
self endon("return_to_cover");
for(;;)
{
if(needtochangecovermode())
{
break;
}
wait 0.1;
}
self notify("stopShooting");
}
//Function Number: 33
needtochangecovermode()
{
if(self.covertype != "crouch")
{
return 0;
}
var_00 = getshootpospitch(self geteye());
if(self.a.var_8E3 == "lean")
{
return var_00 < 10;
}
return var_00 > 45;
}
//Function Number: 34
getbestcovermode()
{
var_00 = [];
if(self.covertype == "stand")
{
var_00 = self.covernode getvalidcoverpeekouts();
}
else
{
var_01 = getshootpospitch(self.covernode.origin + animscripts/utility::getnodeoffset(self.covernode));
if(var_01 > 30)
{
return "lean";
}
if(var_01 > 15 || !self.covernode.crouchingisok)
{
return "stand";
}
var_41 = self.covernode getvalidcoverpeekouts();
var_41[var_41.size] = "crouch";
}
return animscripts/combat_utility::getrandomcovermode(var_41);
}
//Function Number: 35
getshootpospitch(param_00)
{
var_01 = animscripts/utility::getenemyeyepos();
return angleclamp180(vectortoangles(var_01 - param_00)[0]);
}

View File

@ -0,0 +1,193 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\cqb.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 5
* Decompile Time: 92 ms
* Timestamp: 10/27/2023 2:30:18 AM
*******************************************************************/
//Function Number: 1
func_0C60()
{
animscripts/run::changeweaponstandrun();
if(self.a.var_911 != "stand")
{
self clearanim(%root,0.2);
if(self.a.var_911 == "prone")
{
animscripts/utility::exitpronewrapper(1);
}
self.a.var_911 = "stand";
}
self.a.movement = self.movemode;
thread cqbtracking();
var_00 = determinecqbanim();
var_01 = self.moveplaybackrate;
if(self.movemode == "walk")
{
var_01 = var_01 * 0.6;
}
if(self.stairsstate == "none")
{
var_02 = 0.3;
}
else
{
var_02 = 0.1;
}
self setflaggedanimknoball("runanim",var_00,%walk_and_run_loops,1,var_02,var_01,1);
animscripts/run::setmovenonforwardanims(%walk_backward,%walk_left,%walk_right);
thread animscripts/run::setcombatstandmoveanimweights("cqb");
animscripts/notetracks::donotetracksfortime(0.2,"runanim");
thread animscripts/run::stopshootwhilemovingthreads();
}
//Function Number: 2
determinecqbanim()
{
if(isdefined(self.custommoveanimset) && isdefined(self.custommoveanimset["cqb"]))
{
return animscripts/run::getrunanim();
}
if(self.stairsstate == "up")
{
return %traverse_stair_run;
}
if(self.stairsstate == "down")
{
return %traverse_stair_run_down_01;
}
if(self.movemode == "walk")
{
return %walk_cqb_f;
}
var_00 = animscripts/utility::getrandomintfromseed(self.a.runloopcount,2);
if(var_00 == 0)
{
return %run_cqb_f_search_v1;
}
return %run_cqb_f_search_v2;
}
//Function Number: 3
cqbtracking()
{
if(animscripts/move::mayshootwhilemoving())
{
animscripts/run::runshootwhilemovingthreads();
}
animscripts/run::faceenemyaimtracking();
}
//Function Number: 4
func_0C65()
{
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: 5
func_0C67()
{
if(isdefined(level.var_C68))
{
return;
}
anim.var_C68 = 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;
}
}
}

View File

@ -0,0 +1,933 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\death.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 31
* Decompile Time: 556 ms
* Timestamp: 10/27/2023 2:30:20 AM
*******************************************************************/
//Function Number: 1
main()
{
self endon("killanimscript");
self stopsoundchannel("voice");
var_00 = 0.3;
self clearanim(%scripted_talking,var_00);
if(self.a.nodeath == 1)
{
return;
}
if(isdefined(self.deathfunction))
{
var_01 = self [[ self.deathfunction ]]();
if(!isdefined(var_01))
{
var_01 = 1;
}
if(var_01)
{
return;
}
}
animscripts/utility::initialize("death");
removeselffrom_squadlastseenenemypos(self.origin);
level.numdeathsuntilcrawlingpain--;
level.numdeathsuntilcornergrenadedeath--;
if(isdefined(self.ragdoll_immediate) || self.forceragdollimmediate)
{
doimmediateragdolldeath();
}
if(isdefined(self.var_93B))
{
func_0941(self.var_93B);
if(isdefined(self.deathanimscript))
{
self [[ self.deathanimscript ]]();
}
return;
}
var_02 = animscripts/pain::wasdamagedbyexplosive();
if(self.damagelocation == "helmet" || self.damagelocation == "head")
{
helmetpop();
}
else if(var_02 && randomint(3) == 0)
{
helmetpop();
}
self clearanim(%root,0.3);
if(!animscripts/utility::damagelocationisany("head","helmet"))
{
if(self.diequietly)
{
}
else
{
playdeathsound();
}
}
if(var_02 && playexplodedeathanim())
{
return;
}
if(isdefined(self.specialdeathfunc))
{
if([[ self.specialdeathfunc ]]())
{
return;
}
}
if(specialdeath())
{
return;
}
var_03 = getdeathanim();
func_0941(var_03);
}
//Function Number: 2
doimmediateragdolldeath()
{
animscripts/shared::dropallaiweapons();
self.skipdeathanim = 1;
var_00 = 10;
var_01 = common_scripts\_destructible::getdamagetype(self.damagemod);
if(isdefined(self.attacker) && self.attacker == level.player && var_01 == "melee")
{
var_00 = 5;
}
var_02 = self.damagetaken;
if(var_01 == "bullet")
{
var_02 = max(var_02,300);
}
var_03 = var_00 * var_02;
var_04 = max(0.3,self.damagedir[2]);
var_05 = (self.damagedir[0],self.damagedir[1],var_04);
if(isdefined(self.ragdoll_directionscale))
{
var_05 = var_05 * self.ragdoll_directionscale;
}
else
{
var_05 = var_05 * var_03;
}
if(self.forceragdollimmediate)
{
var_05 = var_05 + self.prevanimdelta * 20 * 10;
}
if(isdefined(self.ragdoll_start_vel))
{
var_05 = var_05 + self.ragdoll_start_vel * 10;
}
self startragdollfromimpact(self.damagelocation,var_05);
wait 0.05;
}
//Function Number: 3
func_0941(param_00)
{
if(!animhasnotetrack(param_00,"dropgun") && !animhasnotetrack(param_00,"fire_spray"))
{
animscripts/shared::dropallaiweapons();
}
self setflaggedanimknoballrestart("deathanim",param_00,%body,1,0.1);
if(isdefined(self.skipdeathanim))
{
if(!isdefined(self.noragdoll))
{
self startragdoll();
}
wait 0.05;
self animmode("gravity");
}
else if(isdefined(self.ragdolltime))
{
thread waitforragdoll(self.ragdolltime);
}
else if(!animhasnotetrack(param_00,"start_ragdoll"))
{
thread waitforragdoll(getanimlength(param_00) * 0.35);
}
if(!isdefined(self.skipdeathanim))
{
thread playdeathfx();
}
animscripts/shared::donotetracks("deathanim");
animscripts/shared::dropallaiweapons();
}
//Function Number: 4
waitforragdoll(param_00)
{
wait param_00;
if(isdefined(self))
{
animscripts/shared::dropallaiweapons();
}
if(isdefined(self) && !isdefined(self.noragdoll))
{
self startragdoll();
}
}
//Function Number: 5
playdeathfx()
{
self endon("killanimscript");
if(self.stairsstate != "none")
{
return;
}
wait 2;
play_blood_pool();
}
//Function Number: 6
play_blood_pool(param_00,param_01)
{
if(!isdefined(self))
{
return;
}
if(isdefined(self.var_AB6))
{
return;
}
var_02 = self gettagorigin("j_SpineUpper");
var_03 = self gettagangles("j_SpineUpper");
var_04 = anglestoforward(var_03);
var_05 = anglestoup(var_03);
var_06 = anglestoright(var_03);
var_02 = var_02 + var_04 * -8.5 + var_05 * 5 + var_06 * 0;
var_07 = bullettrace(var_02 + (0,0,30),var_02 - (0,0,100),0,undefined);
if(var_07["normal"][2] > 0.9)
{
playfx(level._effect["deathfx_bloodpool_generic"],var_02);
}
}
//Function Number: 7
specialdeath()
{
if(self.a.special == "none")
{
return 0;
}
switch(self.a.special)
{
case "cover_right":
if(self.a.var_911 == "stand")
{
var_00 = [];
func_0AB8(var_41);
}
else
{
var_00 = [];
if(animscripts/utility::damagelocationisany("head","neck"))
{
}
else
{
}
func_0AB8(var_41);
}
return 1;
var_41[1]
%cornercrr_alert_death_back
var_41[0]
%cornercrr_alert_death_slideout
var_41[0]
%cornercrr_alert_death_slideout
var_41[1]
%corner_standr_deathb
var_41[0]
%corner_standr_deatha
break;
case "cover_left":
if(self.a.var_911 == "stand")
{
var_00 = [];
func_0AB8(var_41);
}
else
{
var_00 = [];
func_0AB8(var_41);
}
return 1;
var_41[1]
%cornercrl_death_back
var_41[0]
%cornercrl_death_side
var_41[1]
%corner_standl_deathb
var_41[0]
%corner_standl_deatha
break;
case "cover_stand":
var_00 = [];
func_0AB8(var_41);
return 1;
var_41[1]
%coverstand_death_right
var_41[0]
%coverstand_death_left
break;
case "cover_crouch":
var_00 = [];
if(animscripts/utility::damagelocationisany("head","neck") && self.damageyaw > 135 || self.damageyaw <= -45)
{
}
if(self.damageyaw > -45 && self.damageyaw <= 45)
{
}
func_0AB8(var_41);
return 1;
var_41[var_41.size]
%covercrouch_death_2
var_41[var_41.size]
%covercrouch_death_3
var_41[var_41.size]
%covercrouch_death_1
break;
case "saw":
if(self.a.var_911 == "stand")
{
func_0AB8(animscripts/utility::array(%saw_gunner_death));
}
else if(self.a.var_911 == "crouch")
{
func_0AB8(animscripts/utility::array(%saw_gunner_lowwall_death));
}
else
{
func_0AB8(animscripts/utility::array(%saw_gunner_prone_death));
}
return 1;
case "dying_crawl":
if(isdefined(self.a.onback) && self.a.var_911 == "crouch")
{
var_00 = animscripts/utility::array(%dying_back_death_v2,%dying_back_death_v3,%dying_back_death_v4);
func_0AB8(var_41);
}
else
{
var_00 = animscripts/utility::array(%dying_crawl_death_v1,%dying_crawl_death_v2);
func_0AB8(var_41);
}
return 1;
}
return 0;
}
//Function Number: 8
func_0AB8(param_00)
{
var_01 = param_00[randomint(param_00.size)];
func_0941(var_01);
if(isdefined(self.deathanimscript))
{
self [[ self.deathanimscript ]]();
}
}
//Function Number: 9
playdeathsound()
{
animscripts/face::saygenericdialogue("death");
}
//Function Number: 10
print3dfortime(param_00,param_01,param_02)
{
var_03 = param_02 * 20;
for(var_04 = 0;var_04 < var_03;var_04++)
{
wait 0.05;
}
}
//Function Number: 11
helmetpop()
{
if(!isdefined(self))
{
return;
}
if(!isdefined(self.var_ABA))
{
return;
}
var_00 = getpartname(self.var_ABA,0);
var_01 = spawn("script_model",self.origin + (0,0,64));
var_01 setmodel(self.var_ABA);
var_01.origin = self gettagorigin(var_00);
var_01.angles = self gettagangles(var_00);
var_01 thread helmetlaunch(self.damagedir);
var_02 = self.var_ABA;
self.var_ABA = undefined;
wait 0.05;
if(!isdefined(self))
{
return;
}
self detach(var_02,"");
}
//Function Number: 12
helmetlaunch(param_00)
{
var_01 = param_00;
var_01 = var_01 * randomfloatrange(2000,4000);
var_02 = var_01[0];
var_03 = var_01[1];
var_04 = randomfloatrange(1500,3000);
var_05 = self.origin + (randomfloatrange(-1,1),randomfloatrange(-1,1),randomfloatrange(-1,1)) * 5;
self physicslaunchclient(var_05,(var_02,var_03,var_04));
wait 60;
for(;;)
{
if(!isdefined(self))
{
return;
}
if(distancesquared(self.origin,level.player.origin) > 262144)
{
break;
}
wait 30;
}
self delete();
}
//Function Number: 13
removeselffrom_squadlastseenenemypos(param_00)
{
for(var_01 = 0;var_01 < level.squadindex.size;var_01++)
{
level.squadindex[var_01] clearsightposnear(param_00);
}
}
//Function Number: 14
clearsightposnear(param_00)
{
if(!isdefined(self.sightpos))
{
return;
}
if(distance(param_00,self.sightpos) < 80)
{
self.sightpos = undefined;
self.sighttime = gettime();
}
}
//Function Number: 15
shoulddorunningforwarddeath()
{
if(self.a.movement != "run")
{
return 0;
}
if(self getmotionangle() > 60 || self getmotionangle() < -60)
{
return 0;
}
return 1;
}
//Function Number: 16
shoulddostrongbulletdamage(param_00,param_01,param_02,param_03)
{
if(isdefined(self.a.doinglongdeath))
{
return 0;
}
if(self.a.var_911 == "prone" || isdefined(self.a.onback))
{
return 0;
}
if(param_00 == "none")
{
return 0;
}
if(param_02 > 500)
{
return 1;
}
if(param_01 == "MOD_MELEE")
{
return 0;
}
if(self.a.movement == "run" && !isattackerwithindist(param_03,275))
{
if(randomint(100) < 65)
{
return 0;
}
}
if(animscripts/utility::issniperrifle(param_00) && self.maxhealth < param_02)
{
return 1;
}
if(animscripts/utility::isshotgun(param_00) && isattackerwithindist(param_03,512))
{
return 1;
}
if(isdeserteagle(param_00) && isattackerwithindist(param_03,425))
{
return 1;
}
return 0;
}
//Function Number: 17
isdeserteagle(param_00)
{
if(param_00 == "deserteagle")
{
return 1;
}
return 0;
}
//Function Number: 18
isattackerwithindist(param_00,param_01)
{
if(!isdefined(param_00))
{
return 0;
}
if(distance(self.origin,param_00.origin) > param_01)
{
return 0;
}
return 1;
}
//Function Number: 19
getdeathanim()
{
if(shoulddostrongbulletdamage(self.damageweapon,self.damagemod,self.damagetaken,self.attacker))
{
var_00 = func_0AC4();
if(isdefined(var_00))
{
return var_00;
}
}
if(isdefined(self.a.onback))
{
if(self.a.var_911 == "crouch")
{
return getbackdeathanim();
}
else
{
animscripts/notetracks::stoponback();
}
}
if(self.a.var_911 == "stand")
{
if(shoulddorunningforwarddeath())
{
return getrunningforwarddeathanim();
}
return func_0AC8();
}
if(self.a.var_911 == "crouch")
{
return func_0AC9();
}
if(self.a.var_911 == "prone")
{
return getpronedeathanim();
}
}
//Function Number: 20
func_0AC4()
{
var_00 = abs(self.damageyaw);
if(var_00 < 45)
{
return;
}
if(var_00 > 150)
{
if(animscripts/utility::damagelocationisany("left_leg_upper","left_leg_lower","right_leg_upper","right_leg_lower","left_foot","right_foot"))
{
var_01 = animscripts/utility::array(%death_shotgun_legs,%death_stand_sniper_leg);
}
else
{
var_01 = [];
if(self.damagelocation == "torso_lower")
{
}
}
}
else if(self.damageyaw < 0)
{
var_01 = animscripts/utility::array(%death_shotgun_spinl,%death_stand_sniper_spin1,%death_stand_sniper_chest1,%death_stand_sniper_chest2);
}
else
{
var_01 = animscripts/utility::array(%death_shotgun_spinr,%death_stand_sniper_spin2,%death_stand_sniper_chest1,%death_stand_sniper_chest2);
}
return var_41[randomint(var_41.size)];
}
//Function Number: 21
getrunningforwarddeathanim()
{
var_00 = [];
var_41 = animscripts/pain::removeblockedanims(var_41);
if(!var_41.size)
{
return func_0AC8();
}
return var_41[randomint(var_41.size)];
}
//Function Number: 22
removeundefined(param_00)
{
var_01 = [];
for(var_02 = 0;var_02 < param_00.size;var_02++)
{
if(!isdefined(param_00[var_02]))
{
continue;
}
var_01[var_01.size] = param_00[var_02];
}
return var_01;
}
//Function Number: 23
getstandpistoldeathanim()
{
var_00 = [];
if(abs(self.damageyaw) < 50)
{
}
else
{
if(abs(self.damageyaw) < 110)
{
}
if(animscripts/utility::damagelocationisany("torso_lower","torso_upper","left_leg_upper","left_leg_lower","right_leg_upper","right_leg_lower"))
{
if(!animscripts/utility::damagelocationisany("torso_upper"))
{
}
}
if(!animscripts/utility::damagelocationisany("head","neck","helmet","left_foot","right_foot","left_hand","right_hand","gun") && randomint(2) == 0)
{
}
if(var_41.size == 0 || animscripts/utility::damagelocationisany("torso_lower","torso_upper","neck","head","helmet","right_arm_upper","left_arm_upper"))
{
}
}
return var_41;
}
//Function Number: 24
func_0AC8()
{
var_00 = [];
var_01 = [];
if(animscripts/utility::usingsidearm())
{
var_00 = getstandpistoldeathanim();
}
else
{
if(animscripts/utility::damagelocationisany("torso_lower","left_leg_upper","left_leg_lower","right_leg_lower","right_leg_lower"))
{
var_00[var_00.size] = tryadddeathanim(%exposed_death_groin);
var_00[var_00.size] = tryadddeathanim(%stand_death_leg);
}
if(animscripts/utility::damagelocationisany("head","helmet"))
{
var_01[var_01.size] = tryadddeathanim(%exposed_death_headshot);
var_01[var_01.size] = tryadddeathanim(%exposed_death_flop);
}
if(animscripts/utility::damagelocationisany("neck"))
{
var_01[var_01.size] = tryadddeathanim(%exposed_death_neckgrab);
}
if(animscripts/utility::damagelocationisany("torso_upper","left_arm_upper"))
{
var_01[var_01.size] = tryadddeathanim(%exposed_death_twist);
var_01[var_01.size] = tryadddeathanim(%stand_death_shoulder_spin);
var_01[var_01.size] = tryadddeathanim(%stand_death_shoulderback);
}
if(animscripts/utility::damagelocationisany("torso_upper"))
{
var_01[var_01.size] = tryadddeathanim(%stand_death_tumbleforward);
var_01[var_01.size] = tryadddeathanim(%stand_death_stumbleforward);
}
if(self.damageyaw > 135 || self.damageyaw <= -135)
{
if(animscripts/utility::damagelocationisany("neck","head","helmet"))
{
var_01[var_01.size] = tryadddeathanim(%stand_death_face);
var_01[var_01.size] = tryadddeathanim(%stand_death_headshot_slowfall);
}
if(animscripts/utility::damagelocationisany("torso_upper"))
{
var_01[var_01.size] = tryadddeathanim(%stand_death_tumbleback);
}
}
else if(self.damageyaw > -45 && self.damageyaw <= 45)
{
var_01[var_01.size] = tryadddeathanim(%exposed_death_falltoknees);
var_01[var_01.size] = tryadddeathanim(%exposed_death_falltoknees_02);
}
var_02 = var_01.size > 0;
if(!var_02 || randomint(100) < 15)
{
var_01[var_01.size] = tryadddeathanim(%exposed_death_02);
var_01[var_01.size] = tryadddeathanim(%exposed_death_nerve);
}
if(randomint(100) < 10 && firingdeathallowed())
{
var_01[var_01.size] = tryaddfiringdeathanim(%exposed_death_firing_02);
var_01[var_01.size] = tryaddfiringdeathanim(%exposed_death_firing);
var_01 = removeundefined(var_01);
}
}
if(var_01.size == 0)
{
var_01[var_01.size] = %exposed_death;
}
if(!self.a.disablelongdeath && self.stairsstate == "none" && !isdefined(self.a.painonstairs))
{
var_03 = randomint(var_01.size + var_41.size);
if(var_03 < var_01.size)
{
return var_01[var_03];
}
else
{
return var_41[var_03 - var_01.size];
}
}
return var_01[randomint(var_01.size)];
}
//Function Number: 25
func_0AC9()
{
var_00 = [];
if(animscripts/utility::damagelocationisany("head","neck"))
{
}
if(animscripts/utility::damagelocationisany("torso_upper","torso_lower","left_arm_upper","right_arm_upper","neck"))
{
}
if(var_41.size < 2)
{
}
if(var_41.size < 2)
{
}
return var_41[randomint(var_41.size)];
}
//Function Number: 26
getpronedeathanim()
{
if(isdefined(self.a.var_ACB))
{
return %prone_death_quickdeath;
}
return %dying_crawl_death_v1;
}
//Function Number: 27
getbackdeathanim()
{
var_00 = animscripts/utility::array(%dying_back_death_v1,%dying_back_death_v2,%dying_back_death_v3,%dying_back_death_v4);
return var_00[randomint(var_00.size)];
}
//Function Number: 28
firingdeathallowed()
{
if(!isdefined(self.weapon) || !animscripts/utility::usingriflelikeweapon() || !weaponisauto(self.weapon) || self.diequietly)
{
return 0;
}
if(self.a.weaponpos["right"] == "none")
{
return 0;
}
return 1;
}
//Function Number: 29
tryadddeathanim(param_00)
{
return param_00;
}
//Function Number: 30
tryaddfiringdeathanim(param_00)
{
return param_00;
}
//Function Number: 31
playexplodedeathanim()
{
if(isdefined(self.juggernaut))
{
return 0;
}
if(self.damagelocation != "none")
{
return 0;
}
var_00 = [];
if(self.a.movement != "run")
{
if(self.damageyaw > 135 || self.damageyaw <= -135)
{
}
else if(self.damageyaw > 45 && self.damageyaw <= 135)
{
}
else if(self.damageyaw > -45 && self.damageyaw <= 45)
{
}
else
{
}
}
else if(self.damageyaw > 135 || self.damageyaw <= -135)
{
}
else if(self.damageyaw > 45 && self.damageyaw <= 135)
{
}
else if(self.damageyaw > -45 && self.damageyaw <= 45)
{
}
else
{
}
var_01 = var_41[randomint(var_41.size)];
if(getdvar("scr_expDeathMayMoveCheck","on") == "on")
{
var_02 = getmovedelta(var_01,0,1);
var_03 = self localtoworldcoords(var_02);
if(!self maymovetopoint(var_03,0))
{
return 0;
}
}
self animmode("nogravity");
func_0941(var_01);
return 1;
}

View File

@ -0,0 +1,309 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\door.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 11
* Decompile Time: 191 ms
* Timestamp: 10/27/2023 2:30:21 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.var_C76 = 1;
wait 5;
self.var_C76 = 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::pathchangecheck();
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(func_0C8B(param_00,var_08))
{
return;
}
if(!self seerecently(self.enemy,0.2) && self.a.var_911 == "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.var_C84) && !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
func_0C8B(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,-28672,6400))
{
doorenter_enable_cqbwalk();
self.minindoortime = gettime() + 6000;
if(isdefined(self.var_C8E) && self.var_C8E == 0 || self.var_C8E < 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,349 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\face.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 13
* Decompile Time: 242 ms
* Timestamp: 10/27/2023 2:30:22 AM
*******************************************************************/
//Function Number: 1
initcharacterface()
{
if(!level.usefacialanims)
{
return;
}
if(!isdefined(self.a.currentdialogimportance))
{
self.a.currentdialogimportance = 0;
self.a.idleface = level.alertface;
self.var_82A = [];
self.facelastnotifynum = 0;
}
}
//Function Number: 2
saygenericdialogue(param_00)
{
var_01 = undefined;
switch(self.voice)
{
case "seal":
case "taskforce":
case "french":
case "pmc":
case "czech":
case "delta":
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 "meleeattack":
case "meleecharge":
var_05 = 0.5;
break;
case "flashbang":
var_05 = 0.7;
break;
case "pain":
var_05 = 0.9;
break;
case "death":
var_05 = 1;
break;
default:
var_05 = 0.3;
break;
}
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))
{
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.var_82A.size;
var_07 = self.facelastnotifynum + 1;
self.var_82A[var_06]["facialanim"] = param_00;
self.var_82A[var_06]["soundAlias"] = param_01;
self.var_82A[var_06]["importance"] = param_02;
self.var_82A[var_06]["notifyString"] = param_03;
self.var_82A[var_06]["waitOrNot"] = param_04;
self.var_82A[var_06]["timeToWait"] = param_05;
self.var_82A[var_06]["notifyNum"] = var_07;
thread playface_waitfornotify("animscript face stop waiting " + self.var_82A[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.var_82A.size;var_08++)
{
if(self.var_82A[var_08]["notifyNum"] == var_07)
{
var_06 = var_08;
break;
}
}
if(self.a.facewaitforresult == "notify")
{
playfacethread(self.var_82A[var_06]["facialanim"],self.var_82A[var_06]["soundAlias"],self.var_82A[var_06]["importance"],self.var_82A[var_06]["notifyString"]);
}
else if(isdefined(param_03))
{
self.faceresult = "failed";
self notify(param_03);
}
for(var_08 = var_06 + 1;var_08 < self.var_82A.size;var_08++)
{
self.var_82A[var_08 - 1]["facialanim"] = self.var_82A[var_08]["facialanim"];
self.var_82A[var_08 - 1]["soundAlias"] = self.var_82A[var_08]["soundAlias"];
self.var_82A[var_08 - 1]["importance"] = self.var_82A[var_08]["importance"];
self.var_82A[var_08 - 1]["notifyString"] = self.var_82A[var_08]["notifyString"];
self.var_82A[var_08 - 1]["waitOrNot"] = self.var_82A[var_08]["waitOrNot"];
self.var_82A[var_08 - 1]["timeToWait"] = self.var_82A[var_08]["timeToWait"];
self.var_82A[var_08 - 1]["notifyNum"] = self.var_82A[var_08]["notifyNum"];
}
self.var_82A[self.var_82A.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))
{
self setflaggedanimknobrestart("animscript faceanim",param_00,1,0.1,1);
self.a.facialanimdone = 0;
thread waitforfacialanim();
}
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.var_82A) && self.var_82A.size > 0)
{
var_09 = 0;
var_0A = 1;
for(var_08 = 0;var_08 < self.var_82A.size;var_08++)
{
if(self.var_82A[var_08]["importance"] > var_09)
{
var_09 = self.var_82A[var_08]["importance"];
var_0A = var_08;
}
}
self notify("animscript face stop waiting " + self.var_82A[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");
}
//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;
}

View File

@ -0,0 +1,23 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\first_frame.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 38 ms
* Timestamp: 10/27/2023 2:30:23 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,95 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\flashed.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 6
* Decompile Time: 106 ms
* Timestamp: 10/27/2023 2:30:23 AM
*******************************************************************/
//Function Number: 1
initflashed()
{
level.flashanimarray[0] = %exposed_flashbang_v1;
level.flashanimarray[1] = %exposed_flashbang_v2;
level.flashanimarray[2] = %exposed_flashbang_v3;
level.flashanimarray[3] = %exposed_flashbang_v4;
level.flashanimarray[4] = %exposed_flashbang_v5;
randomizeflashanimarray();
anim.flashanimindex = 0;
}
//Function Number: 2
randomizeflashanimarray()
{
for(var_00 = 0;var_00 < level.flashanimarray.size;var_00++)
{
var_01 = randomint(level.flashanimarray.size);
var_02 = level.flashanimarray[var_00];
level.flashanimarray[var_00] = level.flashanimarray[var_01];
level.flashanimarray[var_01] = var_02;
}
}
//Function Number: 3
getnextflashanim()
{
level.flashanimindex++;
if(level.flashanimindex >= level.flashanimarray.size)
{
anim.flashanimindex = 0;
randomizeflashanimarray();
}
return level.flashanimarray[level.flashanimindex];
}
//Function Number: 4
func_1C15(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: 5
main()
{
self endon("death");
self endon("killanimscript");
animscripts/utility::initialize("flashed");
var_00 = maps\_utility::func_1C16();
if(var_00 <= 0)
{
return;
}
animscripts/face::saygenericdialogue("flashbang");
if(isdefined(self.specialflashedfunc))
{
self [[ self.specialflashedfunc ]]();
return;
}
var_01 = getnextflashanim();
func_1C18(var_01,var_00);
}
//Function Number: 6
func_1C18(param_00,param_01)
{
self endon("death");
self endon("killanimscript");
if(self.a.var_911 == "prone")
{
animscripts/utility::exitpronewrapper(1);
}
self.a.var_911 = "stand";
self.allowdeath = 1;
thread func_1C15(param_00);
wait param_01;
self notify("stop_flashbang_effect");
self.var_1C19 = 0;
}

View File

@ -0,0 +1,99 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\grenade_cower.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 3
* Decompile Time: 58 ms
* Timestamp: 10/27/2023 2:30:24 AM
*******************************************************************/
//Function Number: 1
main()
{
self endon("killanimscript");
animscripts/utility::initialize("grenadecower");
if(isdefined(self.var_35F4))
{
self [[ self.var_35F4 ]]();
return;
}
if(self.a.var_911 == "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.var_911 == "stand")
{
if(isdefined(self.grenade) && func_3AE4(var_00))
{
return;
}
self setflaggedanimknoballrestart("cowerstart",%exposed_squat_down_grenade_f,%body,1,0.2);
animscripts/shared::donotetracks("cowerstart");
}
self.a.var_911 = "crouch";
self.a.movement = "stop";
self setflaggedanimknoballrestart("cower",%exposed_squat_idle_grenade_f,%body,1,0.2);
animscripts/shared::donotetracks("cower");
self waittill("never");
}
//Function Number: 2
end_script()
{
self.safetochangescript = 1;
}
//Function Number: 3
func_3AE4(param_00)
{
if(randomint(2) == 0)
{
return 0;
}
if(self.stairsstate != "none")
{
return 0;
}
var_01 = undefined;
if(abs(param_00) > 90)
{
var_01 = %exposed_dive_grenade_b;
}
else
{
var_01 = %exposed_dive_grenade_f;
}
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,98 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\grenade_return_throw.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 4
* Decompile Time: 79 ms
* Timestamp: 10/27/2023 2:30:24 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)
{
}
else
{
}
}
if(var_41.size == 0)
{
}
var_01 = var_41[randomint(var_41.size)];
self setflaggedanimknoballrestart("throwanim",var_01,%body,1,0.3);
var_04 = animhasnotetrack(var_01,"grenade_left") || animhasnotetrack(var_01,"grenade_right");
if(var_04)
{
animscripts/shared::placeweaponon(self.weapon,"left");
thread func_3AE6();
thread func_3AE7("throwanim","grenade_left");
thread func_3AE7("throwanim","grenade_right");
self waittill(%grenade_return_running_throw_forward,var_41[0],%grenade_return_standing_throw_forward_1,var_41[1],%grenade_return_running_throw_forward,var_41[0],%grenade_return_standing_throw_overhand_forward,var_41[1],%grenade_return_standing_throw_overhand_forward,var_41[0],"grenade_pickup");
self pickupgrenade();
animscripts/battlechatter_ai::evaluateattackevent("grenade");
self waittillmatch("grenade_throw","throwanim");
}
else
{
self waittillmatch("grenade_throw","throwanim");
self pickupgrenade();
animscripts/battlechatter_ai::evaluateattackevent("grenade");
}
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
func_3AE6()
{
self endon("death");
self endon("put_weapon_back_in_right_hand");
self waittill("killanimscript");
animscripts/shared::placeweaponon(self.weapon,"right");
}
//Function Number: 4
func_3AE7(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,629 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\init.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 25
* Decompile Time: 425 ms
* Timestamp: 10/27/2023 2:30:26 AM
*******************************************************************/
//Function Number: 1
func_1C1A(param_00)
{
self.weaponinfo[param_00] = spawnstruct();
self.weaponinfo[param_00].var_1C1B = "none";
self.weaponinfo[param_00].var_1C1C = 1;
if(getweaponclipmodel(param_00) != "")
{
self.weaponinfo[param_00].var_1C1D = 1;
return;
}
self.weaponinfo[param_00].var_1C1D = 0;
}
//Function Number: 2
isweaponinitialized(param_00)
{
return isdefined(self.weaponinfo[param_00]);
}
//Function Number: 3
setglobalaimsettings()
{
anim.var_898 = 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
func_1C24()
{
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(self.primaryweapon == "")
{
self.primaryweapon = "none";
}
if(self.secondaryweapon == "")
{
self.secondaryweapon = "none";
}
if(self.sidearm == "")
{
self.sidearm = "none";
}
func_1C1A(self.primaryweapon);
func_1C1A(self.secondaryweapon);
func_1C1A(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 = %root;
thread func_17A7();
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.var_911 = "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.var_1C2B = gettime();
self.a.lastenemytime = gettime();
self.a.var_1C2D = 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.var_1C2F = undefined;
self.a.stance = "stand";
self.chooseposefunc = ::animscripts/utility::choosepose;
self._animactive = 0;
self._lastanimtime = 0;
thread func_1C43();
self.baseaccuracy = 1;
self.a.var_1556 = 0;
self.a.nodeath = 0;
self.a.var_1556 = 0;
self.a.var_1C32 = 0;
self.a.disablepain = 0;
self.accuracystationarymod = 1;
self.chatinitialized = 0;
self.sightpostime = 0;
self.var_1C35 = 1;
self.var_1C36 = 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.var_1C38 = 0;
}
else
{
self.var_1C38 = 256;
}
self.ammocheatinterval = 8000;
self.ammocheattime = 0;
animscripts/animset::func_88B();
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;
thread animscripts/combat_utility::monitorflash();
thread ondeath();
}
//Function Number: 6
weapons_with_ir(param_00)
{
var_01[0] = "m4_grenadier";
if(!isdefined(var_01))
{
return 0;
}
for(var_02 = 0;var_02 < var_41.size;var_02++ = var_41[3])
{
if(issubstr(var_01,var_41[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))
{
func_1C40();
}
}
//Function Number: 10
func_1C40()
{
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
func_1C43()
{
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
func_1C45()
{
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::func_84F();
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.var_1C4B = 0;
animscripts/init_move_transitions::initmovestartstoptransitions();
animscripts/reactions::func_B07();
anim.var_1C4C = 10000;
anim.var_1C4D = 6000;
initgrenades();
func_1C6A();
animscripts/utility::func_1C4E("none");
if(!isdefined(level.optionalstepeffectfunction))
{
anim.optionalstepeffectsmallfunction = ::animscripts/notetracks::playfootstepeffectsmall;
anim.optionalstepeffectfunction = ::animscripts/notetracks::playfootstepeffect;
}
if(!isdefined(level.var_1C53))
{
anim.var_1C53 = [];
}
if(!isdefined(level.optionalstepeffectssmall))
{
anim.optionalstepeffectssmall = [];
}
anim.shootenemywrapper_func = ::animscripts/utility::shootenemywrapper_shootnotify;
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.var_1C5D = animscripts/utility::array(2,3,3,3,4,4,4,5,5);
anim.var_1C5E = animscripts/utility::array(1,2,2,3,3,4,4,4,4,5,5,5);
anim.badplaces = [];
anim.var_1C5F = 0;
anim.player = getentarray("player","classname")[0];
initbattlechatter();
func_1C45();
animscripts/flashed::initflashed();
animscripts/cqb::func_C65();
func_1C63();
setglobalaimsettings();
anim.lastcarexplosiontime = -100000;
func_1C77();
level.player thread animscripts/combat_utility::watchreloading();
thread aiturnnotifies();
}
//Function Number: 16
initdeveloperdvars()
{
}
//Function Number: 17
initbattlechatter()
{
animscripts/squadmanager::func_676();
level.player thread animscripts/squadmanager::addplayertosquad();
animscripts/battlechatter::init_battlechatter();
level.player thread animscripts/battlechatter_ai::addtosystem();
anim thread animscripts/battlechatter::bcsdebugwaiter();
}
//Function Number: 18
func_1C63()
{
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,-5536);
var_01.var_1C66 = 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);
animscripts/combat_utility::initgrenadethrowanims();
}
//Function Number: 20
func_1C6A()
{
level.var_1C6B = [];
level.var_1C6B["axis"] = 0;
level.var_1C6B["allies"] = 0;
level.var_1C6B["team3"] = 0;
level.var_1C6B["neutral"] = 0;
level.var_1C6C = [];
level.var_1C6C["axis"] = (0,0,0);
level.var_1C6C["allies"] = (0,0,0);
level.var_1C6C["team3"] = (0,0,0);
level.var_1C6C["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.var_1C6F = [];
level.var_1C6F["axis"] = 0;
level.var_1C6F["allies"] = 0;
level.var_1C6F["team3"] = 0;
level.var_1C6F["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.var_1C74.var_1C75))
{
var_00 = int(self.var_1C74.var_1C75 * 0.7);
if(var_00 < 1)
{
var_00 = 1;
}
self.grenadetimers["fraggrenade"] = randomintrange(0,var_00);
self.grenadetimers["flash_grenade"] = randomintrange(0,var_00);
}
if(isdefined(self.var_1C74.var_1C76))
{
var_00 = int(self.var_1C74.var_1C76);
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
func_17A7()
{
self endon("death");
for(;;)
{
self waittill("grenade_fire",var_00,var_01);
var_00 thread maps\_utility::grenade_earthquake();
}
}
//Function Number: 24
func_1C77()
{
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.var_1C7B))
{
return;
}
self waittill("death");
if(!isdefined(self))
{
if(isdefined(self.a.usingturret))
{
self.a.usingturret delete();
}
}
}

View File

@ -0,0 +1,613 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\init_move_transitions.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 5
* Decompile Time: 112 ms
* Timestamp: 10/27/2023 2:30:27 AM
*******************************************************************/
//Function Number: 1
init_move_transition_arrays()
{
if(isdefined(level.var_1C05))
{
return;
}
anim.var_1C05 = 1;
if(!isdefined(level.covertrans))
{
anim.covertrans = [];
}
if(!isdefined(level.coverexit))
{
anim.coverexit = [];
}
anim.maxdirections = [];
anim.excludedir = [];
anim.var_1C06 = [];
if(!isdefined(level.covertranslongestdist))
{
anim.covertranslongestdist = [];
}
if(!isdefined(level.covertransdist))
{
anim.covertransdist = [];
}
if(!isdefined(level.coverexitdist))
{
anim.coverexitdist = [];
}
anim.var_D98 = [];
anim.var_D9B = [];
if(!isdefined(level.var_D72))
{
anim.var_D72 = [];
}
if(!isdefined(level.coverexitangles))
{
anim.coverexitangles = [];
}
anim.var_1C07 = [];
anim.covertranssplit = [];
anim.arrivalendstance = [];
}
//Function Number: 2
initmovestartstoptransitions()
{
init_move_transition_arrays();
level.newarrivals = 1;
var_00 = [];
var_01 = 6;
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;
level.covertrans["right"][1] = %corner_standr_trans_in_1;
level.covertrans["right"][2] = %corner_standr_trans_in_2;
level.covertrans["right"][3] = %corner_standr_trans_in_3;
level.covertrans["right"][4] = %corner_standr_trans_in_4;
level.covertrans["right"][6] = %corner_standr_trans_in_6;
level.covertrans["right"][8] = %corner_standr_trans_in_8;
level.covertrans["right"][9] = %corner_standr_trans_in_9;
level.covertrans["right_crouch"][1] = %cornercrr_trans_in_ml;
level.covertrans["right_crouch"][2] = %cornercrr_trans_in_m;
level.covertrans["right_crouch"][3] = %cornercrr_trans_in_mr;
level.covertrans["right_crouch"][4] = %cornercrr_trans_in_l;
level.covertrans["right_crouch"][6] = %cornercrr_trans_in_r;
level.covertrans["right_crouch"][8] = %cornercrr_trans_in_f;
level.covertrans["right_crouch"][9] = %cornercrr_trans_in_mf;
level.covertrans["right_cqb"][1] = %corner_standr_trans_cqb_in_1;
level.covertrans["right_cqb"][2] = %corner_standr_trans_cqb_in_2;
level.covertrans["right_cqb"][3] = %corner_standr_trans_cqb_in_3;
level.covertrans["right_cqb"][4] = %corner_standr_trans_cqb_in_4;
level.covertrans["right_cqb"][6] = %corner_standr_trans_cqb_in_6;
level.covertrans["right_cqb"][8] = %corner_standr_trans_cqb_in_8;
level.covertrans["right_cqb"][9] = %corner_standr_trans_cqb_in_9;
level.covertrans["right_crouch_cqb"][1] = %cornercrr_cqb_trans_in_1;
level.covertrans["right_crouch_cqb"][2] = %cornercrr_cqb_trans_in_2;
level.covertrans["right_crouch_cqb"][3] = %cornercrr_cqb_trans_in_3;
level.covertrans["right_crouch_cqb"][4] = %cornercrr_cqb_trans_in_4;
level.covertrans["right_crouch_cqb"][6] = %cornercrr_cqb_trans_in_6;
level.covertrans["right_crouch_cqb"][8] = %cornercrr_cqb_trans_in_8;
level.covertrans["right_crouch_cqb"][9] = %cornercrr_cqb_trans_in_9;
level.covertrans["left"][1] = %corner_standl_trans_in_1;
level.covertrans["left"][2] = %corner_standl_trans_in_2;
level.covertrans["left"][3] = %corner_standl_trans_in_3;
level.covertrans["left"][4] = %corner_standl_trans_in_4;
level.covertrans["left"][6] = %corner_standl_trans_in_6;
level.covertrans["left"][7] = %corner_standl_trans_in_7;
level.covertrans["left"][8] = %corner_standl_trans_in_8;
level.covertrans["left_crouch"][1] = %cornercrl_trans_in_ml;
level.covertrans["left_crouch"][2] = %cornercrl_trans_in_m;
level.covertrans["left_crouch"][3] = %cornercrl_trans_in_mr;
level.covertrans["left_crouch"][4] = %cornercrl_trans_in_l;
level.covertrans["left_crouch"][6] = %cornercrl_trans_in_r;
level.covertrans["left_crouch"][7] = %cornercrl_trans_in_mf;
level.covertrans["left_crouch"][8] = %cornercrl_trans_in_f;
level.covertrans["left_cqb"][1] = %corner_standl_trans_cqb_in_1;
level.covertrans["left_cqb"][2] = %corner_standl_trans_cqb_in_2;
level.covertrans["left_cqb"][3] = %corner_standl_trans_cqb_in_3;
level.covertrans["left_cqb"][4] = %corner_standl_trans_cqb_in_4;
level.covertrans["left_cqb"][6] = %corner_standl_trans_cqb_in_6;
level.covertrans["left_cqb"][7] = %corner_standl_trans_cqb_in_7;
level.covertrans["left_cqb"][8] = %corner_standl_trans_cqb_in_8;
level.covertrans["left_crouch_cqb"][1] = %cornercrl_cqb_trans_in_1;
level.covertrans["left_crouch_cqb"][2] = %cornercrl_cqb_trans_in_2;
level.covertrans["left_crouch_cqb"][3] = %cornercrl_cqb_trans_in_3;
level.covertrans["left_crouch_cqb"][4] = %cornercrl_cqb_trans_in_4;
level.covertrans["left_crouch_cqb"][6] = %cornercrl_cqb_trans_in_6;
level.covertrans["left_crouch_cqb"][7] = %cornercrl_cqb_trans_in_7;
level.covertrans["left_crouch_cqb"][8] = %cornercrl_cqb_trans_in_8;
level.covertrans["crouch"][1] = %covercrouch_run_in_ml;
level.covertrans["crouch"][2] = %covercrouch_run_in_m;
level.covertrans["crouch"][3] = %covercrouch_run_in_mr;
level.covertrans["crouch"][4] = %covercrouch_run_in_l;
level.covertrans["crouch"][6] = %covercrouch_run_in_r;
level.covertrans["stand"][1] = %coverstand_trans_in_ml;
level.covertrans["stand"][2] = %coverstand_trans_in_m;
level.covertrans["stand"][3] = %coverstand_trans_in_mr;
level.covertrans["stand"][4] = %coverstand_trans_in_l;
level.covertrans["stand"][6] = %coverstand_trans_in_r;
level.covertrans["stand_saw"][1] = %saw_gunner_runin_ml;
level.covertrans["stand_saw"][2] = %saw_gunner_runin_m;
level.covertrans["stand_saw"][3] = %saw_gunner_runin_mr;
level.covertrans["stand_saw"][4] = %saw_gunner_runin_l;
level.covertrans["stand_saw"][6] = %saw_gunner_runin_r;
level.covertrans["crouch_saw"][1] = %saw_gunner_lowwall_runin_ml;
level.covertrans["crouch_saw"][2] = %saw_gunner_lowwall_runin_m;
level.covertrans["crouch_saw"][3] = %saw_gunner_lowwall_runin_mr;
level.covertrans["crouch_saw"][4] = %saw_gunner_lowwall_runin_l;
level.covertrans["crouch_saw"][6] = %saw_gunner_lowwall_runin_r;
level.covertrans["prone_saw"][1] = %saw_gunner_prone_runin_ml;
level.covertrans["prone_saw"][2] = %saw_gunner_prone_runin_m;
level.covertrans["prone_saw"][3] = %saw_gunner_prone_runin_mr;
level.covertrans["exposed"] = [];
level.covertrans["exposed"][1] = %cqb_stop_1;
level.covertrans["exposed"][2] = %run_2_stand_f_6;
level.covertrans["exposed"][3] = %cqb_stop_3;
level.covertrans["exposed"][4] = %run_2_stand_90l;
level.covertrans["exposed"][6] = %run_2_stand_90r;
level.covertrans["exposed"][7] = %cqb_stop_7;
level.covertrans["exposed"][8] = %run_2_stand_180l;
level.covertrans["exposed"][9] = %cqb_stop_9;
level.covertrans["exposed_crouch"] = [];
level.covertrans["exposed_crouch"][1] = %cqb_crouch_stop_1;
level.covertrans["exposed_crouch"][2] = %run_2_crouch_f;
level.covertrans["exposed_crouch"][3] = %cqb_crouch_stop_3;
level.covertrans["exposed_crouch"][4] = %run_2_crouch_90l;
level.covertrans["exposed_crouch"][6] = %run_2_crouch_90r;
level.covertrans["exposed_crouch"][7] = %cqb_crouch_stop_7;
level.covertrans["exposed_crouch"][8] = %run_2_crouch_180l;
level.covertrans["exposed_crouch"][9] = %cqb_crouch_stop_9;
level.covertrans["exposed_cqb"] = [];
level.covertrans["exposed_cqb"][1] = %cqb_stop_1;
level.covertrans["exposed_cqb"][2] = %cqb_stop_2;
level.covertrans["exposed_cqb"][3] = %cqb_stop_3;
level.covertrans["exposed_cqb"][4] = %cqb_stop_4;
level.covertrans["exposed_cqb"][6] = %cqb_stop_6;
level.covertrans["exposed_cqb"][7] = %cqb_stop_7;
level.covertrans["exposed_cqb"][8] = %cqb_stop_8;
level.covertrans["exposed_cqb"][9] = %cqb_stop_9;
level.covertrans["exposed_crouch_cqb"] = [];
level.covertrans["exposed_crouch_cqb"][1] = %cqb_crouch_stop_1;
level.covertrans["exposed_crouch_cqb"][2] = %cqb_crouch_stop_2;
level.covertrans["exposed_crouch_cqb"][3] = %cqb_crouch_stop_3;
level.covertrans["exposed_crouch_cqb"][4] = %cqb_crouch_stop_4;
level.covertrans["exposed_crouch_cqb"][6] = %cqb_crouch_stop_6;
level.covertrans["exposed_crouch_cqb"][7] = %cqb_crouch_stop_7;
level.covertrans["exposed_crouch_cqb"][8] = %cqb_crouch_stop_8;
level.covertrans["exposed_crouch_cqb"][9] = %cqb_crouch_stop_9;
level.covertrans["heat"] = [];
level.covertrans["heat"][1] = %heat_approach_1;
level.covertrans["heat"][2] = %heat_approach_2;
level.covertrans["heat"][3] = %heat_approach_3;
level.covertrans["heat"][4] = %heat_approach_4;
level.covertrans["heat"][6] = %heat_approach_6;
level.covertrans["heat"][8] = %heat_approach_8;
level.covertrans["heat_left"] = [];
level.covertrans["heat_right"] = [];
anim.coverstepinanim = [];
level.coverstepinanim["right"] = %corner_standr_trans_b_2_alert;
level.coverstepinanim["right_crouch"] = %cornercrr_trans_b_2_alert;
level.coverstepinanim["left"] = %corner_standl_trans_b_2_alert_v2;
level.coverstepinanim["left_crouch"] = %cornercrl_trans_b_2_alert;
level.coverstepinanim["crouch"] = %covercrouch_aim_2_hide;
level.coverstepinanim["stand"] = %coverstand_aim_2_hide;
anim.coverstepinoffsets = [];
anim.coverstepinangles = [];
for(var_02 = 0;var_02 < var_01;var_02++ = var_41[22])
{
var_03 = var_41[var_02];
level.coverstepinoffsets[var_03] = getmovedelta(level.coverstepinanim[var_03],0,1);
level.coverstepinangles[var_03] = getangledelta(level.coverstepinanim[var_03],0,1);
}
level.coverstepinangles["right"] = level.coverstepinangles["right"] + 90;
level.coverstepinangles["right_crouch"] = level.coverstepinangles["right_crouch"] + 90;
level.coverstepinangles["left"] = level.coverstepinangles["left"] - 90;
level.coverstepinangles["left_crouch"] = level.coverstepinangles["left_crouch"] - 90;
level.covertrans["wall_over_96"][1] = %traverse90_in_ml;
level.covertrans["wall_over_96"][2] = %traverse90_in_m;
level.covertrans["wall_over_96"][3] = %traverse90_in_mr;
level.var_1C06["wall_over_96"]["height"] = 96;
level.covertrans["wall_over_40"][1] = %traverse_window_m_2_run;
level.covertrans["wall_over_40"][2] = %traverse_window_m_2_run;
level.covertrans["wall_over_40"][3] = %traverse_window_m_2_run;
level.coverexit["right"][1] = %corner_standr_trans_out_1;
level.coverexit["right"][2] = %corner_standr_trans_out_2;
level.coverexit["right"][3] = %corner_standr_trans_out_3;
level.coverexit["right"][4] = %corner_standr_trans_out_4;
level.coverexit["right"][6] = %corner_standr_trans_out_6;
level.coverexit["right"][8] = %corner_standr_trans_out_8;
level.coverexit["right"][9] = %corner_standr_trans_out_9;
level.coverexit["right_crouch"][1] = %cornercrr_trans_out_ml;
level.coverexit["right_crouch"][2] = %cornercrr_trans_out_m;
level.coverexit["right_crouch"][3] = %cornercrr_trans_out_mr;
level.coverexit["right_crouch"][4] = %cornercrr_trans_out_l;
level.coverexit["right_crouch"][6] = %cornercrr_trans_out_r;
level.coverexit["right_crouch"][8] = %cornercrr_trans_out_f;
level.coverexit["right_crouch"][9] = %cornercrr_trans_out_mf;
level.coverexit["right_cqb"][1] = %corner_standr_trans_cqb_out_1;
level.coverexit["right_cqb"][2] = %corner_standr_trans_cqb_out_2;
level.coverexit["right_cqb"][3] = %corner_standr_trans_cqb_out_3;
level.coverexit["right_cqb"][4] = %corner_standr_trans_cqb_out_4;
level.coverexit["right_cqb"][6] = %corner_standr_trans_cqb_out_6;
level.coverexit["right_cqb"][8] = %corner_standr_trans_cqb_out_8;
level.coverexit["right_cqb"][9] = %corner_standr_trans_cqb_out_9;
level.coverexit["right_crouch_cqb"][1] = %cornercrr_cqb_trans_out_1;
level.coverexit["right_crouch_cqb"][2] = %cornercrr_cqb_trans_out_2;
level.coverexit["right_crouch_cqb"][3] = %cornercrr_cqb_trans_out_3;
level.coverexit["right_crouch_cqb"][4] = %cornercrr_cqb_trans_out_4;
level.coverexit["right_crouch_cqb"][6] = %cornercrr_cqb_trans_out_6;
level.coverexit["right_crouch_cqb"][8] = %cornercrr_cqb_trans_out_8;
level.coverexit["right_crouch_cqb"][9] = %cornercrr_cqb_trans_out_9;
level.coverexit["left"][1] = %corner_standl_trans_out_1;
level.coverexit["left"][2] = %corner_standl_trans_out_2;
level.coverexit["left"][3] = %corner_standl_trans_out_3;
level.coverexit["left"][4] = %corner_standl_trans_out_4;
level.coverexit["left"][6] = %corner_standl_trans_out_6;
level.coverexit["left"][7] = %corner_standl_trans_out_7;
level.coverexit["left"][8] = %corner_standl_trans_out_8;
level.coverexit["left_crouch"][1] = %cornercrl_trans_out_ml;
level.coverexit["left_crouch"][2] = %cornercrl_trans_out_m;
level.coverexit["left_crouch"][3] = %cornercrl_trans_out_mr;
level.coverexit["left_crouch"][4] = %cornercrl_trans_out_l;
level.coverexit["left_crouch"][6] = %cornercrl_trans_out_r;
level.coverexit["left_crouch"][7] = %cornercrl_trans_out_mf;
level.coverexit["left_crouch"][8] = %cornercrl_trans_out_f;
level.coverexit["left_cqb"][1] = %corner_standl_trans_cqb_out_1;
level.coverexit["left_cqb"][2] = %corner_standl_trans_cqb_out_2;
level.coverexit["left_cqb"][3] = %corner_standl_trans_cqb_out_3;
level.coverexit["left_cqb"][4] = %corner_standl_trans_cqb_out_4;
level.coverexit["left_cqb"][6] = %corner_standl_trans_cqb_out_6;
level.coverexit["left_cqb"][7] = %corner_standl_trans_cqb_out_7;
level.coverexit["left_cqb"][8] = %corner_standl_trans_cqb_out_8;
level.coverexit["left_crouch_cqb"][1] = %cornercrl_cqb_trans_out_1;
level.coverexit["left_crouch_cqb"][2] = %cornercrl_cqb_trans_out_2;
level.coverexit["left_crouch_cqb"][3] = %cornercrl_cqb_trans_out_3;
level.coverexit["left_crouch_cqb"][4] = %cornercrl_cqb_trans_out_4;
level.coverexit["left_crouch_cqb"][6] = %cornercrl_cqb_trans_out_6;
level.coverexit["left_crouch_cqb"][7] = %cornercrl_cqb_trans_out_7;
level.coverexit["left_crouch_cqb"][8] = %cornercrl_cqb_trans_out_8;
level.coverexit["crouch"][1] = %covercrouch_run_out_ml;
level.coverexit["crouch"][2] = %covercrouch_run_out_m;
level.coverexit["crouch"][3] = %covercrouch_run_out_mr;
level.coverexit["crouch"][4] = %covercrouch_run_out_l;
level.coverexit["crouch"][6] = %covercrouch_run_out_r;
level.coverexit["stand"][1] = %coverstand_trans_out_ml;
level.coverexit["stand"][2] = %coverstand_trans_out_m;
level.coverexit["stand"][3] = %coverstand_trans_out_mr;
level.coverexit["stand"][4] = %coverstand_trans_out_l;
level.coverexit["stand"][6] = %coverstand_trans_out_r;
level.coverexit["stand_saw"][1] = %saw_gunner_runout_ml;
level.coverexit["stand_saw"][2] = %saw_gunner_runout_m;
level.coverexit["stand_saw"][3] = %saw_gunner_runout_mr;
level.coverexit["stand_saw"][4] = %saw_gunner_runout_l;
level.coverexit["stand_saw"][6] = %saw_gunner_runout_r;
level.coverexit["prone_saw"][2] = %saw_gunner_prone_runout_m;
level.coverexit["prone_saw"][4] = %saw_gunner_prone_runout_l;
level.coverexit["prone_saw"][6] = %saw_gunner_prone_runout_r;
level.coverexit["prone_saw"][8] = %saw_gunner_prone_runout_f;
level.coverexit["crouch_saw"][1] = %saw_gunner_lowwall_runout_ml;
level.coverexit["crouch_saw"][2] = %saw_gunner_lowwall_runout_m;
level.coverexit["crouch_saw"][3] = %saw_gunner_lowwall_runout_mr;
level.coverexit["crouch_saw"][4] = %saw_gunner_lowwall_runout_l;
level.coverexit["crouch_saw"][6] = %saw_gunner_lowwall_runout_r;
level.coverexit["exposed"] = [];
level.coverexit["exposed"][1] = %cqb_start_1;
level.coverexit["exposed"][2] = %stand_2_run_180l;
level.coverexit["exposed"][3] = %cqb_start_3;
level.coverexit["exposed"][4] = %stand_2_run_l;
level.coverexit["exposed"][6] = %stand_2_run_r;
level.coverexit["exposed"][7] = %cqb_start_7;
level.coverexit["exposed"][8] = %surprise_start_v1;
level.coverexit["exposed"][9] = %cqb_start_9;
level.coverexit["exposed_crouch"] = [];
level.coverexit["exposed_crouch"][1] = %cqb_crouch_start_1;
level.coverexit["exposed_crouch"][2] = %crouch_2run_180;
level.coverexit["exposed_crouch"][3] = %cqb_crouch_start_3;
level.coverexit["exposed_crouch"][4] = %crouch_2run_l;
level.coverexit["exposed_crouch"][6] = %crouch_2run_r;
level.coverexit["exposed_crouch"][7] = %cqb_crouch_start_7;
level.coverexit["exposed_crouch"][8] = %crouch_2run_f;
level.coverexit["exposed_crouch"][9] = %cqb_crouch_start_9;
level.coverexit["exposed_cqb"] = [];
level.coverexit["exposed_cqb"][1] = %cqb_start_1;
level.coverexit["exposed_cqb"][2] = %cqb_start_2;
level.coverexit["exposed_cqb"][3] = %cqb_start_3;
level.coverexit["exposed_cqb"][4] = %cqb_start_4;
level.coverexit["exposed_cqb"][6] = %cqb_start_6;
level.coverexit["exposed_cqb"][7] = %cqb_start_7;
level.coverexit["exposed_cqb"][8] = %cqb_start_8;
level.coverexit["exposed_cqb"][9] = %cqb_start_9;
level.coverexit["exposed_crouch_cqb"] = [];
level.coverexit["exposed_crouch_cqb"][1] = %cqb_crouch_start_1;
level.coverexit["exposed_crouch_cqb"][2] = %cqb_crouch_start_2;
level.coverexit["exposed_crouch_cqb"][3] = %cqb_crouch_start_3;
level.coverexit["exposed_crouch_cqb"][4] = %cqb_crouch_start_4;
level.coverexit["exposed_crouch_cqb"][6] = %cqb_crouch_start_6;
level.coverexit["exposed_crouch_cqb"][7] = %cqb_crouch_start_7;
level.coverexit["exposed_crouch_cqb"][8] = %cqb_crouch_start_8;
level.coverexit["exposed_crouch_cqb"][9] = %cqb_crouch_start_9;
level.coverexit["heat"] = [];
level.coverexit["heat"][1] = %heat_exit_1;
level.coverexit["heat"][2] = %heat_exit_2;
level.coverexit["heat"][3] = %heat_exit_3;
level.coverexit["heat"][4] = %heat_exit_4;
level.coverexit["heat"][6] = %heat_exit_6;
level.coverexit["heat"][7] = %heat_exit_7;
level.coverexit["heat"][8] = %heat_exit_8;
level.coverexit["heat"][9] = %heat_exit_9;
level.coverexit["heat_left"] = [];
level.coverexit["heat_left"][1] = %heat_exit_1;
level.coverexit["heat_left"][2] = %heat_exit_2;
level.coverexit["heat_left"][3] = %heat_exit_3;
level.coverexit["heat_left"][4] = %heat_exit_4;
level.coverexit["heat_left"][6] = %heat_exit_6;
level.coverexit["heat_left"][7] = %heat_exit_8l;
level.coverexit["heat_left"][8] = %heat_exit_8l;
level.coverexit["heat_left"][9] = %heat_exit_8r;
level.coverexit["heat_right"] = [];
level.coverexit["heat_right"][1] = %heat_exit_1;
level.coverexit["heat_right"][2] = %heat_exit_2;
level.coverexit["heat_right"][3] = %heat_exit_3;
level.coverexit["heat_right"][4] = %heat_exit_4;
level.coverexit["heat_right"][6] = %heat_exit_6;
level.coverexit["heat_right"][7] = %heat_exit_8l;
level.coverexit["heat_right"][8] = %heat_exit_8r;
level.coverexit["heat_right"][9] = %heat_exit_8r;
for(var_02 = 1;var_02 <= 6;var_02++ = var_41[21])
{
if(var_02 == 5)
{
continue;
}
for(var_04 = 0;var_04 < var_41.size;var_04++ = "exposed_ready_cqb")
{
var_03 = var_41[var_04];
if(isdefined(level.covertrans[var_03]) && isdefined(level.covertrans[var_03][var_02]))
{
level.covertransdist[var_03][var_02] = getmovedelta(level.covertrans[var_03][var_02],0,1);
level.var_D72[var_03][var_02] = getangledelta(level.covertrans[var_03][var_02],0,1);
}
if(isdefined(level.coverexit[var_03]) && isdefined(level.coverexit[var_03][var_02]))
{
if(animhasnotetrack(level.coverexit[var_03][var_02],"code_move"))
{
var_05 = getnotetracktimes(level.coverexit[var_03][var_02],"code_move")[0];
}
else
{
var_05 = 1;
}
level.coverexitdist[var_03][var_02] = getmovedelta(level.coverexit[var_03][var_02],0,var_05);
level.coverexitangles[var_03][var_02] = getangledelta(level.coverexit[var_03][var_02],0,1);
}
}
}
for(var_04 = 0;var_04 < var_41.size;var_04++ = var_41[20])
{
var_03 = var_41[var_04];
level.covertranslongestdist[var_03] = 0;
for(var_02 = 1;var_02 <= 6;var_02++ = "exposed_ready")
{
if(var_02 == 5 || !isdefined(level.covertrans[var_03]) || !isdefined(level.covertrans[var_03][var_02]))
{
continue;
}
var_06 = lengthsquared(level.covertransdist[var_03][var_02]);
if(level.covertranslongestdist[var_03] < var_06)
{
level.covertranslongestdist[var_03] = var_06;
}
}
level.covertranslongestdist[var_03] = sqrt(level.covertranslongestdist[var_03]);
}
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_ready"] = 1;
level.exposedtransition["heat"] = 1;
if(!isdefined(level.longestexposedapproachdist))
{
anim.longestexposedapproachdist = 0;
}
foreach(var_03, var_08 in level.exposedtransition)
{
for(var_02 = 7;var_02 <= 9;var_02++ = "heat_right")
{
if(isdefined(level.covertrans[var_03]) && isdefined(level.covertrans[var_03][var_02]))
{
level.covertransdist[var_03][var_02] = getmovedelta(level.covertrans[var_03][var_02],0,1);
level.var_D72[var_03][var_02] = getangledelta(level.covertrans[var_03][var_02],0,1);
}
if(isdefined(level.coverexit[var_03]) && isdefined(level.coverexit[var_03][var_02]))
{
var_05 = getnotetracktimes(level.coverexit[var_03][var_02],"code_move")[0];
level.coverexitdist[var_03][var_02] = getmovedelta(level.coverexit[var_03][var_02],0,var_05);
level.coverexitangles[var_03][var_02] = getangledelta(level.coverexit[var_03][var_02],0,1);
}
}
for(var_02 = 1;var_02 <= 9;var_02++ = var_41[19])
{
if(!isdefined(level.covertrans[var_03]) || !isdefined(level.covertrans[var_03][var_02]))
{
continue;
}
var_09 = length(level.covertransdist[var_03][var_02]);
if(var_09 > level.longestexposedapproachdist)
{
anim.longestexposedapproachdist = var_09;
}
}
}
level.covertranssplit["left"][7] = 0.369369;
level.covertranssplit["left_crouch"][7] = 0.319319;
level.covertranssplit["left_cqb"][7] = 0.451451;
level.covertranssplit["left_crouch_cqb"][7] = 0.246246;
level.var_1C07["left"][7] = 0.547548;
level.var_1C07["left_crouch"][7] = 0.593594;
level.var_1C07["left_cqb"][7] = 0.702703;
level.var_1C07["left_crouch_cqb"][7] = 0.718719;
level.var_1C07["heat_left"][7] = 0.42;
level.covertranssplit["left"][8] = 0.525526;
level.covertranssplit["left_crouch"][8] = 0.428428;
level.covertranssplit["left_cqb"][8] = 0.431431;
level.covertranssplit["left_crouch_cqb"][8] = 0.33033;
level.var_1C07["left"][8] = 0.614615;
level.var_1C07["left_crouch"][8] = 0.451451;
level.var_1C07["left_cqb"][8] = 0.451451;
level.var_1C07["left_crouch_cqb"][8] = 0.603604;
level.var_1C07["heat_left"][8] = 0.42;
level.covertranssplit["right"][8] = 0.458458;
level.covertranssplit["right_crouch"][8] = 0.248248;
level.covertranssplit["right_cqb"][8] = 0.458458;
level.covertranssplit["right_crouch_cqb"][8] = 0.311311;
level.var_1C07["right"][8] = 0.457457;
level.var_1C07["right_crouch"][8] = 0.545546;
level.var_1C07["right_cqb"][8] = 0.540541;
level.var_1C07["right_crouch_cqb"][8] = 0.399399;
level.var_1C07["heat_right"][8] = 0.4;
level.covertranssplit["right"][9] = 0.546547;
level.covertranssplit["right_crouch"][9] = 0.2002;
level.covertranssplit["right_cqb"][9] = 0.546547;
level.covertranssplit["right_crouch_cqb"][9] = 0.232232;
level.var_1C07["right"][9] = 0.483483;
level.var_1C07["right_crouch"][9] = 0.493493;
level.var_1C07["right_cqb"][9] = 0.565566;
level.var_1C07["right_crouch_cqb"][9] = 0.518519;
level.var_1C07["heat_right"][9] = 0.4;
var_0A = [];
var_0B = [];
getsplittimes(7,8,0,var_0A,var_0B);
var_0A = [];
var_0A["right"] = 1;
var_0A["right_crouch"] = 1;
var_0A["right_cqb"] = 1;
var_0A["right_crouch_cqb"] = 1;
var_0B = [];
getsplittimes(8,9,1,var_0A,var_0B);
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["exposed"] = "stand";
level.arrivalendstance["exposed_cqb"] = "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.var_D5D["Cover Stand"] = "stand";
level.var_D5D["Conceal Stand"] = "stand";
level.var_D5D["Cover Crouch"] = "crouch";
level.var_D5D["Conceal Crouch"] = "crouch";
}
//Function Number: 3
getsplittimes(param_00,param_01,param_02,param_03,param_04)
{
for(var_05 = param_00;var_05 <= param_01;var_05++)
{
foreach(var_08, var_07 in param_03)
{
level.var_D9B[var_08][var_05] = getmovedelta(level.covertrans[var_08][var_05],0,gettranssplittime(var_08,var_05));
level.covertransdist[var_08][var_05] = getmovedelta(level.covertrans[var_08][var_05],0,1) - level.var_D9B[var_08][var_05];
level.var_D72[var_08][var_05] = getangledelta(level.covertrans[var_08][var_05],0,1);
}
foreach(var_08, var_07 in param_04)
{
level.coverexitdist[var_08][var_05] = getmovedelta(level.coverexit[var_08][var_05],0,getexitsplittime(var_08,var_05));
level.var_D98[var_08][var_05] = getmovedelta(level.coverexit[var_08][var_05],0,1) - level.coverexitdist[var_08][var_05];
level.coverexitangles[var_08][var_05] = getangledelta(level.coverexit[var_08][var_05],0,1);
}
}
}
//Function Number: 4
getexitsplittime(param_00,param_01)
{
return level.var_1C07[param_00][param_01];
}
//Function Number: 5
gettranssplittime(param_00,param_01)
{
return level.covertranssplit[param_00][param_01];
}

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,986 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\notetracks.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 58
* Decompile Time: 934 ms
* Timestamp: 10/27/2023 2:30:35 AM
*******************************************************************/
//Function Number: 1
handledogsoundnotetracks(param_00)
{
if(param_00 == "sound_dogstep_run_default")
{
self playsound("dogstep_run_default");
return 1;
}
var_01 = getsubstr(param_00,0,5);
if(var_01 != "sound")
{
return 0;
}
var_02 = "anml" + getsubstr(param_00,5);
if(isalive(self))
{
thread maps\_utility::func_1F5B(var_02,"tag_eye");
}
else
{
thread common_scripts\utility::play_sound_in_space(var_02,self geteye());
}
return 1;
}
//Function Number: 2
growling()
{
return isdefined(self.script_growl);
}
//Function Number: 3
registernotetracks()
{
level.notetracks["anim_pose = \"stand\"] = ::func_1F6B;
level.notetracks["anim_pose = \"crouch\"] = ::notetrackposecrouch;
level.notetracks["anim_pose = \"prone\"] = ::notetrackposeprone;
level.notetracks["anim_pose = \"crawl\"] = ::func_1F6E;
level.notetracks["anim_pose = \"back\"] = ::notetrackposeback;
level.notetracks["anim_movement = \"stop\"] = ::notetrackmovementstop;
level.notetracks["anim_movement = \"walk\"] = ::func_1F65;
level.notetracks["anim_movement = \"run\"] = ::notetrackmovementrun;
level.notetracks["anim_aiming = 1"] = ::notetrackalertnessaiming;
level.notetracks["anim_aiming = 0"] = ::func_1F69;
level.notetracks["anim_alertness = causal"] = ::notetrackalertnesscasual;
level.notetracks["anim_alertness = alert"] = ::func_1F69;
level.notetracks["anim_alertness = aiming"] = ::notetrackalertnessaiming;
level.notetracks["gunhand = (gunhand)_left"] = ::notetrackgunhand;
level.notetracks["anim_gunhand = \"left\"] = ::notetrackgunhand;
level.notetracks["gunhand = (gunhand)_right"] = ::notetrackgunhand;
level.notetracks["anim_gunhand = \"right\"] = ::notetrackgunhand;
level.notetracks["anim_gunhand = \"none\"] = ::notetrackgunhand;
level.notetracks["gun drop"] = ::func_1F70;
level.notetracks["dropgun"] = ::func_1F70;
level.notetracks["gun_2_chest"] = ::notetrackguntochest;
level.notetracks["gun_2_back"] = ::notetrackguntoback;
level.notetracks["pistol_pickup"] = ::notetrackpistolpickup;
level.notetracks["pistol_putaway"] = ::func_1F75;
level.notetracks["drop clip"] = ::notetrackdropclip;
level.notetracks["refill clip"] = ::notetrackrefillclip;
level.notetracks["reload done"] = ::notetrackrefillclip;
level.notetracks["load_shell"] = ::notetrackloadshell;
level.notetracks["pistol_rechamber"] = ::func_1F79;
level.notetracks["gravity on"] = ::notetrackgravity;
level.notetracks["gravity off"] = ::notetrackgravity;
level.notetracks["footstep_right_large"] = ::func_1F7B;
level.notetracks["footstep_right_small"] = ::func_1F7B;
level.notetracks["footstep_left_large"] = ::func_1F7B;
level.notetracks["footstep_left_small"] = ::func_1F7B;
level.notetracks["footscrape"] = ::notetrackfootscrape;
level.notetracks["land"] = ::func_1F81;
level.notetracks["bodyfall large"] = ::notetrackbodyfall;
level.notetracks["bodyfall small"] = ::notetrackbodyfall;
level.notetracks["code_move"] = ::notetrackcodemove;
level.notetracks["face_enemy"] = ::func_1F83;
level.notetracks["laser_on"] = ::func_1F5F;
level.notetracks["laser_off"] = ::func_1F5F;
level.notetracks["start_ragdoll"] = ::notetrackstartragdoll;
level.notetracks["fire"] = ::notetrackfire;
level.notetracks["fire_spray"] = ::func_1F8E;
level.notetracks["bloodpool"] = ::animscripts/death::play_blood_pool;
if(isdefined(level._notetrackfx))
{
var_00 = getarraykeys(level._notetrackfx);
foreach(var_02 in var_00)
{
level.notetracks[var_02] = ::customnotetrackfx;
}
}
}
//Function Number: 4
notetrackfire(param_00,param_01)
{
if(isdefined(level.fire_notetrack_functions[self.script]))
{
thread [[ level.fire_notetrack_functions[self.script] ]]();
return;
}
thread [[ ::shootnotetrack ]]();
}
//Function Number: 5
func_1F5F(param_00,param_01)
{
if(issubstr(param_00,"on"))
{
self.a.laseron = 1;
}
else
{
self.a.laseron = 0;
}
animscripts/shared::updatelaserstatus();
}
//Function Number: 6
notetrackstopanim(param_00,param_01)
{
}
//Function Number: 7
unlinknextframe()
{
wait 0.1;
if(isdefined(self))
{
self unlink();
}
}
//Function Number: 8
notetrackstartragdoll(param_00,param_01)
{
if(isdefined(self.noragdoll))
{
return;
}
if(isdefined(self.ragdolltime))
{
return;
}
if(!isdefined(self.var_1F63))
{
thread unlinknextframe();
}
self startragdoll();
}
//Function Number: 9
notetrackmovementstop(param_00,param_01)
{
self.a.movement = "stop";
}
//Function Number: 10
func_1F65(param_00,param_01)
{
self.a.movement = "walk";
}
//Function Number: 11
notetrackmovementrun(param_00,param_01)
{
self.a.movement = "run";
}
//Function Number: 12
notetrackalertnessaiming(param_00,param_01)
{
}
//Function Number: 13
notetrackalertnesscasual(param_00,param_01)
{
}
//Function Number: 14
func_1F69(param_00,param_01)
{
}
//Function Number: 15
stoponback()
{
animscripts/utility::exitpronewrapper(1);
self.a.onback = undefined;
}
//Function Number: 16
setpose(param_00)
{
self.a.var_911 = param_00;
if(isdefined(self.a.onback))
{
stoponback();
}
self notify("entered_pose" + param_00);
}
//Function Number: 17
func_1F6B(param_00,param_01)
{
if(self.a.var_911 == "prone")
{
self orientmode("face default");
animscripts/utility::exitpronewrapper(1);
}
setpose("stand");
}
//Function Number: 18
notetrackposecrouch(param_00,param_01)
{
if(self.a.var_911 == "prone")
{
self orientmode("face default");
animscripts/utility::exitpronewrapper(1);
}
setpose("crouch");
}
//Function Number: 19
notetrackposeprone(param_00,param_01)
{
if(!issentient(self))
{
return;
}
self setproneanimnodes(-45,45,%prone_legs_down,%exposed_aiming,%prone_legs_up);
animscripts/utility::enterpronewrapper(1);
setpose("prone");
if(isdefined(self.a.goingtoproneaim))
{
self.a.var_ACB = 1;
return;
}
self.a.var_ACB = undefined;
}
//Function Number: 20
func_1F6E(param_00,param_01)
{
if(!issentient(self))
{
return;
}
self setproneanimnodes(-45,45,%prone_legs_down,%exposed_aiming,%prone_legs_up);
animscripts/utility::enterpronewrapper(1);
setpose("prone");
self.a.var_ACB = undefined;
}
//Function Number: 21
notetrackposeback(param_00,param_01)
{
if(!issentient(self))
{
return;
}
setpose("crouch");
self.a.onback = 1;
self.a.movement = "stop";
self setproneanimnodes(-90,90,%prone_legs_down,%exposed_aiming,%prone_legs_up);
animscripts/utility::enterpronewrapper(1);
}
//Function Number: 22
notetrackgunhand(param_00,param_01)
{
if(issubstr(param_00,"left"))
{
animscripts/shared::placeweaponon(self.weapon,"left");
self notify("weapon_switch_done");
return;
}
if(issubstr(param_00,"right"))
{
animscripts/shared::placeweaponon(self.weapon,"right");
self notify("weapon_switch_done");
return;
}
if(issubstr(param_00,"none"))
{
animscripts/shared::placeweaponon(self.weapon,"none");
return;
}
}
//Function Number: 23
func_1F70(param_00,param_01)
{
animscripts/shared::dropaiweapon();
self.lastweapon = self.weapon;
}
//Function Number: 24
notetrackguntochest(param_00,param_01)
{
animscripts/shared::placeweaponon(self.weapon,"chest");
}
//Function Number: 25
notetrackguntoback(param_00,param_01)
{
animscripts/shared::placeweaponon(self.weapon,"back");
self.weapon = animscripts/utility::getpreferredweapon();
self.bulletsinclip = weaponclipsize(self.weapon);
}
//Function Number: 26
notetrackpistolpickup(param_00,param_01)
{
animscripts/shared::placeweaponon(self.sidearm,"right");
self.bulletsinclip = weaponclipsize(self.weapon);
self notify("weapon_switch_done");
}
//Function Number: 27
func_1F75(param_00,param_01)
{
animscripts/shared::placeweaponon(self.weapon,"none");
self.weapon = animscripts/utility::getpreferredweapon();
self.bulletsinclip = weaponclipsize(self.weapon);
}
//Function Number: 28
notetrackdropclip(param_00,param_01)
{
thread animscripts/shared::handledropclip(param_01);
}
//Function Number: 29
notetrackrefillclip(param_00,param_01)
{
if(weaponclass(self.weapon) == "rocketlauncher")
{
animscripts/combat_utility::showrocket();
}
animscripts/weaponlist::refillclip();
self.a.needstorechamber = 0;
}
//Function Number: 30
notetrackloadshell(param_00,param_01)
{
self playsound("weap_reload_shotgun_loop_npc");
}
//Function Number: 31
func_1F79(param_00,param_01)
{
self playsound("weap_reload_pistol_chamber_npc");
}
//Function Number: 32
notetrackgravity(param_00,param_01)
{
if(issubstr(param_00,"on"))
{
self animmode("gravity");
return;
}
if(issubstr(param_00,"off"))
{
self animmode("nogravity");
}
}
//Function Number: 33
func_1F7B(param_00,param_01)
{
var_02 = issubstr(param_00,"left");
var_03 = issubstr(param_00,"large");
func_1F8B(var_02,var_03);
var_04 = get_notetrack_movement();
self playsound("gear_rattle_" + var_04);
}
//Function Number: 34
get_notetrack_movement()
{
var_00 = "run";
if(isdefined(self.sprint))
{
var_00 = "sprint";
}
if(isdefined(self.a))
{
if(isdefined(self.a.movement))
{
if(self.a.movement == "walk")
{
var_00 = "walk";
}
}
if(isdefined(self.a.var_911))
{
if(self.a.var_911 == "prone")
{
var_00 = "prone";
}
}
}
return var_00;
}
//Function Number: 35
customnotetrackfx(param_00,param_01)
{
if(isdefined(self.groundtype))
{
var_02 = self.groundtype;
}
else
{
var_02 = "dirt";
}
var_03 = undefined;
if(isdefined(level._notetrackfx[param_00][var_02]))
{
var_03 = level._notetrackfx[param_00][var_02];
}
else if(isdefined(level._notetrackfx[param_00]["all"]))
{
var_03 = level._notetrackfx[param_00]["all"];
}
if(!isdefined(var_03))
{
return;
}
if(isai(self))
{
playfxontag(var_03.fx,self,var_03.tag);
}
if(!isdefined(var_03.sound_prefix) && !isdefined(var_03.sound_suffix))
{
return;
}
var_04 = "" + var_03.sound_prefix + var_02 + var_03.sound_suffix;
self playsound(var_04);
}
//Function Number: 36
notetrackfootscrape(param_00,param_01)
{
if(isdefined(self.groundtype))
{
var_02 = self.groundtype;
}
else
{
var_02 = "dirt";
}
self playsound("step_scrape_" + var_02);
}
//Function Number: 37
func_1F81(param_00,param_01)
{
if(isdefined(self.groundtype))
{
var_02 = self.groundtype;
}
else
{
var_02 = "dirt";
}
self playsound("land_" + var_02);
}
//Function Number: 38
notetrackcodemove(param_00,param_01)
{
return "code_move";
}
//Function Number: 39
func_1F83(param_00,param_01)
{
if(self.script != "reactions")
{
self orientmode("face enemy");
return;
}
if(isdefined(self.enemy) && distancesquared(self.enemy.origin,self.reactiontargetpos) < 4096)
{
self orientmode("face enemy");
return;
}
self orientmode("face point",self.reactiontargetpos);
}
//Function Number: 40
notetrackbodyfall(param_00,param_01)
{
var_02 = "_small";
if(issubstr(param_00,"large"))
{
var_02 = "_large";
}
if(isdefined(self.groundtype))
{
var_03 = self.groundtype;
}
else
{
var_03 = "dirt";
}
self playsound("bodyfall_" + var_03 + var_02);
}
//Function Number: 41
func_1F4C(param_00,param_01,param_02)
{
if(isai(self) && self.type == "dog")
{
if(handledogsoundnotetracks(param_00))
{
return;
}
}
var_03 = level.notetracks[param_00];
if(isdefined(var_03))
{
return [[ var_03 ]](param_00,param_01);
}
switch(param_00)
{
case "undefined":
case "finish":
case "end":
return param_00;
case "finish early":
if(isdefined(self.enemy))
{
return param_00;
}
break;
case "swish small":
thread common_scripts\utility::play_sound_in_space("melee_swing_small",self gettagorigin("TAG_WEAPON_RIGHT"));
break;
case "swish large":
thread common_scripts\utility::play_sound_in_space("melee_swing_large",self gettagorigin("TAG_WEAPON_RIGHT"));
break;
case "rechamber":
if(animscripts/utility::weapon_pump_action_shotgun())
{
self playsound("weap_reload_shotgun_pump_npc");
}
self.a.needstorechamber = 0;
break;
case "no death":
self.a.nodeath = 1;
break;
case "no pain":
self.allowpain = 0;
break;
case "allow pain":
self.allowpain = 1;
break;
case "anim_melee = \"right\":
case "anim_melee = right":
self.a.meleestate = "right";
break;
case "anim_melee = \"left\":
case "anim_melee = left":
self.a.meleestate = "left";
break;
case "swap taghelmet to tagleft":
if(isdefined(self.var_ABA))
{
if(isdefined(self.var_1F85))
{
self detach(self.var_1F85,"TAG_HELMETSIDE");
self.var_1F85 = undefined;
}
self detach(self.var_ABA,"");
self attach(self.var_ABA,"TAG_WEAPON_LEFT");
self.var_ABA = undefined;
}
break;
case "stop anim":
maps\_utility::anim_stopanimscripted();
return param_00;
case "break glass":
level notify("glass_break",self);
break;
case "break_glass":
level notify("glass_break",self);
break;
default:
if(isdefined(param_02))
{
return [[ param_02 ]](param_00);
}
break;
}
}
//Function Number: 42
donotetracksintercept(param_00,param_01,param_02)
{
for(;;)
{
self waittill(param_00,var_03);
if(!isdefined(var_03))
{
var_03 = "undefined";
}
var_04 = [[ param_01 ]](var_03);
if(isdefined(var_04) && var_04)
{
continue;
}
var_05 = func_1F4C(var_03,param_00);
if(isdefined(var_05))
{
return var_05;
}
}
}
//Function Number: 43
donotetrackspostcallback(param_00,param_01)
{
for(;;)
{
self waittill(param_00,var_02);
if(!isdefined(var_02))
{
var_02 = "undefined";
}
var_03 = func_1F4C(var_02,param_00);
[[ param_01 ]](var_02);
if(isdefined(var_03))
{
return var_03;
}
}
}
//Function Number: 44
donotetracksfortimeout(param_00,param_01,param_02,param_03)
{
animscripts/shared::donotetracks(param_00,param_02,param_03);
}
//Function Number: 45
donotetracksforever(param_00,param_01,param_02,param_03)
{
donotetracksforeverproc(::animscripts/shared::donotetracks,param_00,param_01,param_02,param_03);
}
//Function Number: 46
func_1F87(param_00,param_01,param_02,param_03)
{
donotetracksforeverproc(::donotetracksintercept,param_00,param_01,param_02,param_03);
}
//Function Number: 47
donotetracksforeverproc(param_00,param_01,param_02,param_03,param_04)
{
if(isdefined(param_02))
{
self endon(param_02);
}
self endon("killanimscript");
if(!isdefined(param_04))
{
param_04 = "undefined";
}
for(;;)
{
var_05 = gettime();
var_06 = [[ param_00 ]](param_01,param_03,param_04);
var_07 = gettime() - var_05;
if(var_07 < 0.05)
{
var_05 = gettime();
var_06 = [[ param_00 ]](param_01,param_03,param_04);
var_07 = gettime() - var_05;
if(var_07 < 0.05)
{
wait 0.05 - var_07;
}
}
}
}
//Function Number: 48
func_0C57(param_00,param_01,param_02,param_03)
{
var_04 = spawnstruct();
var_04 thread donotetracksfortimeendnotify(param_01);
func_1F89(::donotetracksfortimeout,param_00,param_02,param_03,var_04);
}
//Function Number: 49
donotetracksfortime(param_00,param_01,param_02,param_03)
{
var_04 = spawnstruct();
var_04 thread donotetracksfortimeendnotify(param_00);
func_1F89(::donotetracksforever,param_01,param_02,param_03,var_04);
}
//Function Number: 50
donotetracksfortimeintercept(param_00,param_01,param_02,param_03)
{
var_04 = spawnstruct();
var_04 thread donotetracksfortimeendnotify(param_00);
func_1F89(::func_1F87,param_01,param_02,param_03,var_04);
}
//Function Number: 51
func_1F89(param_00,param_01,param_02,param_03,param_04)
{
param_04 endon("stop_notetracks");
[[ param_00 ]](param_01,undefined,param_02,param_03);
}
//Function Number: 52
donotetracksfortimeendnotify(param_00)
{
wait param_00;
self notify("stop_notetracks");
}
//Function Number: 53
func_1F8B(param_00,param_01)
{
if(!isai(self))
{
self playsound("step_run_dirt");
return;
}
var_02 = undefined;
if(!isdefined(self.groundtype))
{
if(!isdefined(self.lastgroundtype))
{
self playsound("step_run_dirt");
return;
}
var_02 = self.lastgroundtype;
}
else
{
var_02 = self.groundtype;
self.lastgroundtype = self.groundtype;
}
var_03 = "J_Ball_RI";
if(param_00)
{
var_03 = "J_Ball_LE";
}
var_04 = get_notetrack_movement();
self playsound("step_" + var_04 + "_" + var_02);
if(param_01)
{
if(![[ level.optionalstepeffectfunction ]](var_03,var_02))
{
playfootstepeffectsmall(var_03,var_02);
return;
}
return;
}
if(![[ level.optionalstepeffectsmallfunction ]](var_03,var_02))
{
playfootstepeffect(var_03,var_02);
}
}
//Function Number: 54
playfootstepeffect(param_00,param_01)
{
var_02 = 0;
while(var_02 < level.var_1C53.size)
{
if(param_01 != level.var_1C53[var_02])
{
continue;
}
var_03 = self gettagorigin(param_00);
var_04 = self.angles;
var_05 = anglestoforward(var_04);
var_06 = var_05 * -1;
var_07 = anglestoup(var_04);
playfx(level._effect["step_" + level.var_1C53[var_02]],var_03,var_07,var_06);
return 1;
var_07++;
}
return 0;
}
//Function Number: 55
playfootstepeffectsmall(param_00,param_01)
{
var_02 = 0;
while(var_02 < level.optionalstepeffectssmall.size)
{
if(param_01 != level.optionalstepeffectssmall[var_02])
{
continue;
}
var_03 = self gettagorigin(param_00);
var_04 = self.angles;
var_05 = anglestoforward(var_04);
var_06 = var_05 * -1;
var_07 = anglestoup(var_04);
playfx(level._effect["step_small_" + level.optionalstepeffectssmall[var_02]],var_03,var_07,var_06);
return 1;
var_07++;
}
return 0;
}
//Function Number: 56
shootnotetrack()
{
waittillframeend;
if(isdefined(self) && gettime() > self.a.lastshoottime)
{
animscripts/utility::shootenemywrapper();
animscripts/combat_utility::decrementbulletsinclip();
if(weaponclass(self.weapon) == "rocketlauncher")
{
self.a.rockets--;
}
}
}
//Function Number: 57
fire_straight()
{
if(self.a.weaponpos["right"] == "none")
{
return;
}
if(isdefined(self.dontshootstraight))
{
shootnotetrack();
return;
}
var_00 = self gettagorigin("tag_weapon");
var_01 = anglestoforward(self getmuzzleangle());
var_02 = var_00 + var_01 * 1000;
self shoot(1,var_02);
animscripts/combat_utility::decrementbulletsinclip();
}
//Function Number: 58
func_1F8E(param_00,param_01)
{
if(!isalive(self) && self isbadguy())
{
if(isdefined(self.var_1F8F))
{
return;
}
self.var_1F8F = 1;
var_02["axis"] = "team3";
self.team = var_41[self.team];
}
if(!issentient(self))
{
self notify("fire",var_41["team3"],"axis");
return;
}
if(self.a.weaponpos["right"] == "none")
{
return;
}
var_03 = self getmuzzlepos();
var_04 = anglestoforward(self getmuzzleangle());
var_05 = 10;
if(isdefined(self.isrambo))
{
var_05 = 20;
}
var_06 = 0;
if(isalive(self.enemy) && issentient(self.enemy) && self canshootenemy())
{
var_07 = vectornormalize(self.enemy geteye() - var_03);
if(vectordot(var_04,var_07) > cos(var_05))
{
var_06 = 1;
}
}
if(var_06)
{
animscripts/utility::shootenemywrapper();
}
else
{
var_04 = var_04 + (randomfloat(2) - 1 * 0.1,randomfloat(2) - 1 * 0.1,randomfloat(2) - 1 * 0.1);
var_08 = var_03 + var_04 * 1000;
animscripts/utility::shootposwrapper(var_08);
}
animscripts/combat_utility::decrementbulletsinclip();
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,284 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\reactions.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 11
* Decompile Time: 194 ms
* Timestamp: 10/27/2023 2:30:39 AM
*******************************************************************/
//Function Number: 1
main()
{
self endon("killanimscript");
animscripts/utility::initialize("reactions");
newenemysurprisedreaction();
}
//Function Number: 2
func_0B07()
{
anim.runningreacttobullets = [];
level.runningreacttobullets[level.runningreacttobullets.size] = %run_react_duck;
level.runningreacttobullets[level.runningreacttobullets.size] = %run_react_flinch;
level.runningreacttobullets[level.runningreacttobullets.size] = %run_react_stumble;
anim.lastrunningreactanim = 0;
anim.coverreactions = [];
level.coverreactions["cover_stand"] = animscripts/utility::array(%stand_cover_reaction_a,%stand_cover_reaction_b);
level.coverreactions["cover_crouch"] = animscripts/utility::array(%crouch_cover_reaction_a,%crouch_cover_reaction_b);
level.coverreactions["cover_left"] = animscripts/utility::array(%cornerstndl_react_a);
level.coverreactions["cover_right"] = animscripts/utility::array(%cornerstndr_react_a);
}
//Function Number: 3
reactionscheckloop()
{
thread func_0B12();
}
//Function Number: 4
func_0B0C()
{
return !isdefined(self.lastreacttime) || gettime() - self.lastreacttime > 2000;
}
//Function Number: 5
func_0B0E()
{
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(%root,0.1);
var_01 = [];
var_02 = var_41[randomint(var_41.size)];
if(var_01)
{
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(%root,0.1);
if(!var_01 && 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.var_911 == "stand")
{
self clearanim(%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(%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(%root,0.1);
self setflaggedanimknobrestart("turn",var_09,1,0.1,1);
animscripts/shared::donotetracks("turn");
}
}
self clearanim(%root,0.1);
self.whizbyenemy = undefined;
self animmode("normal");
self orientmode("face default");
}
//Function Number: 6
func_0B12()
{
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.var_911 != "stand")
{
continue;
}
if(!func_0B0C())
{
continue;
}
self.whizbyenemy = var_00;
self animcustom(::func_0B0E);
}
}
//Function Number: 7
clearlookatthread()
{
self endon("killanimscript");
wait 0.3;
self setlookatentity();
}
//Function Number: 8
func_0B14()
{
var_00 = undefined;
if(self nearclaimnodeandangle() && isdefined(level.coverreactions[self.prevscript]))
{
var_01 = anglestoforward(self.node.angles);
var_02 = vectornormalize(self.reactiontargetpos - self.origin);
if(vectordot(var_01,var_02) < -0.5)
{
self orientmode("face current");
var_03 = randomint(level.coverreactions[self.prevscript].size);
var_00 = level.coverreactions[self.prevscript][var_03];
}
}
if(!isdefined(var_00))
{
var_04 = [];
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.var_911 == "crouch")
{
var_02 = vectornormalize(self.reactiontargetpos - self.origin);
var_05 = anglestoforward(self.angles);
if(vectordot(var_05,var_02) < -0.5)
{
self orientmode("face current");
var_41[0] = %crouch_cover_reaction_a;
var_41[1] = %crouch_cover_reaction_b;
}
}
var_04 = var_41[randomint(var_41.size)];
}
return var_04;
}
//Function Number: 9
func_0B15()
{
self clearanim(%root,0.2);
if(randomint(4) < 3)
{
self orientmode("face enemy");
self setflaggedanimknobrestart("reactanim",%exposed_idle_reactb,1,0.2,1);
var_00 = getanimlength(%exposed_idle_reactb);
animscripts/notetracks::donotetracksfortime(var_00 * 0.8,"reactanim");
self orientmode("face current");
return;
}
self orientmode("face enemy");
self setflaggedanimknobrestart("reactanim",%exposed_backpedal,1,0.2,1);
var_00 = getanimlength(%exposed_backpedal);
animscripts/notetracks::donotetracksfortime(var_00 * 0.8,"reactanim");
self orientmode("face current");
self clearanim(%root,0.2);
self setflaggedanimknobrestart("reactanim",%exposed_backpedal_v2,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";
if(isdefined(self._stealth) && self.alertlevel != "combat")
{
func_0B15();
}
else
{
var_00 = func_0B14();
self clearanim(%root,0.2);
self setflaggedanimknobrestart("reactanim",var_00,1,0.2,1);
animscripts/shared::donotetracks("reactanim");
}
self notify("newEnemyReactionDone");
}
//Function Number: 11
newenemysurprisedreaction()
{
self endon("death");
if(isdefined(self.var_B18))
{
return;
}
if(!func_0B0C())
{
return;
}
if(self.a.var_911 == "prone" || isdefined(self.a.onback))
{
return;
}
self animmode("gravity");
if(isdefined(self.enemy))
{
newenemyreactionanim();
}
}

View File

@ -0,0 +1,967 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\run.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 43
* Decompile Time: 743 ms
* Timestamp: 10/27/2023 2:30:42 AM
*******************************************************************/
//Function Number: 1
moverun()
{
var_00 = [[ self.chooseposefunc ]]("stand");
switch(var_00)
{
case "stand":
if(animscripts/setposemovement::beginstandrun())
{
return;
}
if(isdefined(self.run_overrideanim))
{
animscripts/move::movestandmoveoverride(self.run_overrideanim,self.var_BA8);
return;
}
if(changeweaponstandrun())
{
return;
}
if(reloadstandrun())
{
return;
}
if(animscripts/utility::isincombat())
{
movestandcombatnormal();
}
else
{
movestandnoncombatnormal();
}
break;
case "crouch":
if(animscripts/setposemovement::begincrouchrun())
{
return;
}
if(isdefined(self.crouchrun_combatanim))
{
movecrouchrunoverride();
}
else
{
movecrouchrunnormal();
}
break;
default:
if(animscripts/setposemovement::beginpronerun())
{
return;
}
pronecrawl();
break;
}
}
//Function Number: 2
getrunanim()
{
if(!isdefined(self.a.moveanimset))
{
return %run_lowready_f;
}
if(!self.facemotion)
{
if(self.stairsstate == "none" || abs(self getmotionangle()) > 45)
{
return animscripts/utility::moveanim("move_f");
}
}
if(self.stairsstate == "up")
{
return animscripts/utility::moveanim("stairs_up");
}
else if(self.stairsstate == "down")
{
return animscripts/utility::moveanim("stairs_down");
}
return animscripts/utility::moveanim("straight");
}
//Function Number: 3
getcrouchrunanim()
{
if(!isdefined(self.a.moveanimset))
{
return %crouch_fastwalk_f;
}
return animscripts/utility::moveanim("crouch");
}
//Function Number: 4
pronecrawl()
{
self.a.movement = "run";
self setflaggedanimknob("runanim",animscripts/utility::moveanim("prone"),1,0.3,self.moveplaybackrate);
animscripts/notetracks::donotetracksfortime(0.25,"runanim");
}
//Function Number: 5
initrunngun()
{
if(!isdefined(self.runngun))
{
self notify("stop_move_anim_update");
self.update_move_anim_type = undefined;
self clearanim(%combatrun_backward,0.2);
self clearanim(%combatrun_right,0.2);
self clearanim(%combatrun_left,0.2);
self clearanim(%w_aim_2,0.2);
self clearanim(%w_aim_4,0.2);
self clearanim(%w_aim_6,0.2);
self clearanim(%w_aim_8,0.2);
self.runngun = 1;
}
}
//Function Number: 6
func_0BB5()
{
if(isdefined(self.runngun))
{
self clearanim(%run_n_gun,0.2);
self.runngun = undefined;
}
return 0;
}
//Function Number: 7
runngun(param_00)
{
if(param_00)
{
var_01 = func_0BD7(0.2);
var_02 = var_01 < 0;
}
else
{
var_01 = 0;
var_02 = self.runngunweight < 0;
}
var_03 = 1 - var_02;
var_04 = self.maxrunngunangle;
var_05 = self.runnguntransitionpoint;
var_06 = self.runngunincrement;
if(!param_00 || squared(var_01) > var_04 * var_04)
{
self clearanim(%add_fire,0);
if(squared(self.runngunweight) < var_06 * var_06)
{
self.runngunweight = 0;
self.runngun = undefined;
return 0;
}
else if(self.runngunweight > 0)
{
self.runngunweight = self.runngunweight - var_06;
}
else
{
self.runngunweight = self.runngunweight + var_06;
}
}
else
{
var_07 = var_01 / var_04;
var_08 = var_07 - self.runngunweight;
if(abs(var_08) < var_05 * 0.7)
{
self.runngunweight = var_07;
}
else if(var_08 > 0)
{
self.runngunweight = self.runngunweight + var_06;
}
else
{
self.runngunweight = self.runngunweight - var_06;
}
}
initrunngun();
var_09 = abs(self.runngunweight);
if(var_09 > var_05)
{
var_0A = var_09 - var_05 / var_05;
var_0A = clamp(var_0A,0,1);
self clearanim(self.runngunanims["F"],0.2);
self setanimlimited(self.runngunanims["L"],1 - var_0A * var_02,0.2);
self setanimlimited(self.runngunanims["R"],1 - var_0A * var_03,0.2);
self setanimlimited(self.runngunanims["LB"],var_0A * var_02,0.2);
self setanimlimited(self.runngunanims["RB"],var_0A * var_03,0.2);
}
else
{
var_0A = clamp(var_0A / var_06,0,1);
self setanimlimited(self.runngunanims["F"],1 - var_0A,0.2);
self setanimlimited(self.runngunanims["L"],var_0A * var_02,0.2);
self setanimlimited(self.runngunanims["R"],var_0A * var_03,0.2);
if(var_05 < 1)
{
self clearanim(self.runngunanims["LB"],0.2);
self clearanim(self.runngunanims["RB"],0.2);
}
}
self setflaggedanimknob("runanim",%run_n_gun,1,0.3,0.8);
self.a.allowedpartialreloadontheruntime = gettime() + 500;
if(param_00 && isplayer(self.enemy))
{
self updateplayersightaccuracy();
}
return 1;
}
//Function Number: 8
runngun_backward()
{
initrunngun();
self setflaggedanimknob("runanim",%combatwalk_b,1,0.3,0.8);
if(isplayer(self.enemy))
{
self updateplayersightaccuracy();
}
animscripts/notetracks::donotetracksfortime(0.2,"runanim");
thread stopshootwhilemovingthreads();
self clearanim(%combatwalk_b,0.2);
}
//Function Number: 9
reacttobulletsinterruptcheck()
{
self endon("killanimscript");
for(;;)
{
wait 0.2;
if(!isdefined(self.reactingtobullet))
{
break;
}
if(!isdefined(self.pathgoalpos) || distancesquared(self.pathgoalpos,self.origin) < squared(80))
{
func_0BBB();
self notify("interrupt_react_to_bullet");
break;
}
}
}
//Function Number: 10
func_0BBB()
{
self orientmode("face default");
self.reactingtobullet = undefined;
self.requestreacttobullet = undefined;
}
//Function Number: 11
runningreacttobullets()
{
self.var_BBD = undefined;
self notify("end_face_enemy_tracking");
self endon("interrupt_react_to_bullet");
self.reactingtobullet = 1;
self orientmode("face motion");
var_00 = randomint(level.runningreacttobullets.size);
if(var_00 == level.lastrunningreactanim)
{
var_00 = var_00 + 1 % level.runningreacttobullets.size;
}
anim.lastrunningreactanim = var_00;
var_01 = level.runningreacttobullets[var_00];
self setflaggedanimknobrestart("reactanim",var_01,1,0.5);
thread reacttobulletsinterruptcheck();
animscripts/shared::donotetracks("reactanim");
func_0BBB();
}
//Function Number: 12
customrunningreacttobullets()
{
self.var_BBD = undefined;
self notify("end_face_enemy_tracking");
self.reactingtobullet = 1;
self orientmode("face motion");
var_00 = randomint(self.run_overridebulletreact.size);
var_01 = self.run_overridebulletreact[var_00];
self setflaggedanimknobrestart("reactanim",var_01,1,0.5);
thread reacttobulletsinterruptcheck();
animscripts/shared::donotetracks("reactanim");
func_0BBB();
}
//Function Number: 13
getsprintanim()
{
var_00 = undefined;
if(isdefined(self.grenade))
{
var_00 = animscripts/utility::moveanim("sprint_short");
}
if(!isdefined(var_00))
{
var_00 = animscripts/utility::moveanim("sprint");
}
return var_00;
}
//Function Number: 14
func_0BC1()
{
if(isdefined(self.sprint))
{
return 1;
}
if(isdefined(self.grenade) && isdefined(self.enemy) && self.frontshieldanglecos == 1)
{
return distancesquared(self.origin,self.enemy.origin) > 90000;
}
return 0;
}
//Function Number: 15
shouldsprintforvariation()
{
if(isdefined(self.neversprintforvariation))
{
return 0;
}
if(!self.facemotion || self.stairsstate != "none")
{
return 0;
}
var_00 = gettime();
if(isdefined(self.dangersprinttime))
{
if(var_00 < self.dangersprinttime)
{
return 1;
}
if(var_00 - self.dangersprinttime < 6000)
{
return 0;
}
}
if(!isdefined(self.enemy) || !issentient(self.enemy))
{
return 0;
}
if(randomint(100) < 25 && self lastknowntime(self.enemy) + 2000 > var_00)
{
self.dangersprinttime = var_00 + 2000 + randomint(1000);
return 1;
}
return 0;
}
//Function Number: 16
getmoveplaybackrate()
{
var_00 = self.moveplaybackrate;
if(self.lookaheadhitsstairs && self.stairsstate == "none" && self.lookaheaddist < 300)
{
var_00 = var_00 * 0.75;
}
return var_00;
}
//Function Number: 17
movestandcombatnormal()
{
var_00 = getmoveplaybackrate();
self setanimknob(%combatrun,1,0.5,var_00);
var_01 = 0;
if(isdefined(self.requestreacttobullet) && gettime() - self.requestreacttobullet < 100 && randomfloat(1) < self.a.reacttobulletchance)
{
func_0BB5();
runningreacttobullets();
return;
}
if(func_0BC1())
{
self setflaggedanimknob("runanim",getsprintanim(),1,0.5);
var_01 = 1;
}
else if(isdefined(self.enemy) && animscripts/move::mayshootwhilemoving())
{
runshootwhilemovingthreads();
if(!self.facemotion)
{
thread faceenemyaimtracking();
}
else if(self.shootstyle != "none" && !isdefined(self.norunngun))
{
self notify("end_face_enemy_tracking");
self.var_BBD = undefined;
if(canshootwhilerunningforward())
{
var_01 = runngun(1);
}
else if(func_0BD5())
{
runngun_backward();
return;
}
}
else if(isdefined(self.runngunweight) && self.runngunweight != 0)
{
var_01 = runngun(0);
}
}
else if(isdefined(self.runngunweight) && self.runngunweight != 0)
{
var_01 = runngun(0);
}
if(!var_01)
{
func_0BB5();
if(isdefined(self.requestreacttobullet) && gettime() - self.requestreacttobullet < 100 && self.a.reacttobulletchance != 0)
{
runningreacttobullets();
return;
}
if(shouldsprintforvariation())
{
var_02 = animscripts/utility::moveanim("sprint_short");
}
else
{
var_02 = getrunanim();
}
self setflaggedanimknoblimited("runanim",var_02,1,0.1,1,1);
setmovenonforwardanims(animscripts/utility::moveanim("move_b"),animscripts/utility::moveanim("move_l"),animscripts/utility::moveanim("move_r"),self.sidesteprate);
thread setcombatstandmoveanimweights("run");
}
animscripts/notetracks::donotetracksfortime(0.2,"runanim");
thread stopshootwhilemovingthreads();
}
//Function Number: 18
faceenemyaimtracking()
{
self notify("want_aim_while_moving");
if(isdefined(self.var_BBD))
{
return;
}
self.var_BBD = 1;
self endon("killanimscript");
self endon("end_face_enemy_tracking");
self setdefaultaimlimits();
if(!isdefined(self.combatstandanims) || !isdefined(self.combatstandanims["walk_aims"]))
{
self setanimlimited(%walk_aim_2);
self setanimlimited(%walk_aim_4);
self setanimlimited(%walk_aim_6);
self setanimlimited(%walk_aim_8);
}
else
{
self setanimlimited(self.combatstandanims["walk_aims"]["walk_aim_2"]);
self setanimlimited(self.combatstandanims["walk_aims"]["walk_aim_4"]);
self setanimlimited(self.combatstandanims["walk_aims"]["walk_aim_6"]);
self setanimlimited(self.combatstandanims["walk_aims"]["walk_aim_8"]);
}
animscripts/track::trackloop(%w_aim_2,%w_aim_4,%w_aim_6,%w_aim_8);
}
//Function Number: 19
endfaceenemyaimtracking()
{
self.var_BBD = undefined;
self notify("end_face_enemy_tracking");
}
//Function Number: 20
runshootwhilemovingthreads()
{
self notify("want_shoot_while_moving");
if(isdefined(self.shoot_while_moving_thread))
{
return;
}
self.shoot_while_moving_thread = 1;
thread rundecidewhatandhowtoshoot();
thread runshootwhilemoving();
}
//Function Number: 21
stopshootwhilemovingthreads()
{
self endon("killanimscript");
self endon("want_shoot_while_moving");
self endon("want_aim_while_moving");
wait 0.05;
self notify("end_shoot_while_moving");
self notify("end_face_enemy_tracking");
self.shoot_while_moving_thread = undefined;
self.var_BBD = undefined;
self.runngun = undefined;
}
//Function Number: 22
rundecidewhatandhowtoshoot()
{
self endon("killanimscript");
self endon("end_shoot_while_moving");
animscripts/shoot_behavior::decidewhatandhowtoshoot("normal");
}
//Function Number: 23
runshootwhilemoving()
{
self endon("killanimscript");
self endon("end_shoot_while_moving");
animscripts/move::shootwhilemoving();
}
//Function Number: 24
aimedsomewhatatenemy()
{
var_00 = self getmuzzleangle();
var_01 = vectortoangles(self.enemy getshootatpos() - self getmuzzlepos());
if(animscripts/utility::absangleclamp180(var_00[1] - var_01[1]) > 15)
{
return 0;
}
return animscripts/utility::absangleclamp180(var_00[0] - var_01[0]) <= 20;
}
//Function Number: 25
canshootwhilerunningforward()
{
if((!isdefined(self.runngunweight) || self.runngunweight == 0) && abs(self getmotionangle()) > self.maxrunngunangle)
{
return 0;
}
return 1;
}
//Function Number: 26
func_0BD5()
{
if(180 - abs(self getmotionangle()) >= 45)
{
return 0;
}
var_00 = func_0BD7(0.2);
if(abs(var_00) > 30)
{
return 0;
}
return 1;
}
//Function Number: 27
func_0BD6()
{
return animscripts/move::mayshootwhilemoving() && isdefined(self.enemy) && canshootwhilerunningforward() || func_0BD5();
}
//Function Number: 28
func_0BD7(param_00)
{
var_01 = self.origin;
var_02 = self.angles[1] + self getmotionangle();
var_01 = var_01 + (cos(var_02),sin(var_02),0) * length(self.velocity) * param_00;
var_03 = self.angles[1] - vectortoyaw(self.enemy.origin - var_01);
var_03 = angleclamp180(var_03);
return var_03;
}
//Function Number: 29
movestandnoncombatnormal()
{
self endon("movemode");
self clearanim(%combatrun,0.6);
var_00 = getmoveplaybackrate();
self setanimknoball(%combatrun,%body,1,0.2,var_00);
if(func_0BC1())
{
var_01 = getsprintanim();
}
else
{
var_01 = getrunanim();
}
if(self.stairsstate == "none")
{
var_02 = 0.3;
}
else
{
var_02 = 0.1;
}
self setflaggedanimknob("runanim",var_01,1,var_02,1,1);
setmovenonforwardanims(animscripts/utility::moveanim("move_b"),animscripts/utility::moveanim("move_l"),animscripts/utility::moveanim("move_r"));
thread setcombatstandmoveanimweights("run");
animscripts/notetracks::donotetracksfortime(0.2,"runanim");
}
//Function Number: 30
movecrouchrunoverride()
{
self endon("movemode");
self setflaggedanimknoball("runanim",self.crouchrun_combatanim,%body,1,0.4,self.moveplaybackrate);
animscripts/shared::donotetracks("runanim");
}
//Function Number: 31
movecrouchrunnormal()
{
self endon("movemode");
var_00 = getcrouchrunanim();
self setanimknob(var_00,1,0.4);
thread updatemoveanimweights("crouchrun",var_00,%crouch_fastwalk_b,%crouch_fastwalk_l,%crouch_fastwalk_r);
self setflaggedanimknoball("runanim",%crouchrun,%body,1,0.2,self.moveplaybackrate);
animscripts/notetracks::donotetracksfortime(0.2,"runanim");
}
//Function Number: 32
reloadstandrun()
{
var_00 = isdefined(self.a.allowedpartialreloadontheruntime) && self.a.allowedpartialreloadontheruntime > gettime();
var_00 = var_00 || isdefined(self.enemy) && distancesquared(self.origin,self.enemy.origin) < 65536;
if(var_00)
{
if(!animscripts/combat_utility::needtoreload(0))
{
return 0;
}
}
else if(!animscripts/combat_utility::needtoreload(0.5))
{
return 0;
}
if(isdefined(self.grenade))
{
return 0;
}
if(!self.facemotion || self.stairsstate != "none")
{
return 0;
}
if(isdefined(self.dontshootwhilemoving) || isdefined(self.norunreload))
{
return 0;
}
if(func_0BD6() && !animscripts/combat_utility::needtoreload(0))
{
return 0;
}
if(!isdefined(self.pathgoalpos) || distancesquared(self.origin,self.pathgoalpos) < 65536)
{
return 0;
}
var_01 = angleclamp180(self getmotionangle());
if(abs(var_01) > 25)
{
return 0;
}
if(!animscripts/utility::usingriflelikeweapon())
{
return 0;
}
if(!runloopisnearbeginning())
{
return 0;
}
reloadstandruninternal();
self notify("abort_reload");
self orientmode("face default");
return 1;
}
//Function Number: 33
reloadstandruninternal()
{
self endon("movemode");
self orientmode("face motion");
var_00 = "reload_" + animscripts/combat_utility::getuniqueflagnameindex();
self setflaggedanimknoballrestart(var_00,%run_lowready_reload,%body,1,0.25);
self.var_BE0 = 1;
setmovenonforwardanims(animscripts/utility::moveanim("move_b"),animscripts/utility::moveanim("move_l"),animscripts/utility::moveanim("move_r"));
thread setcombatstandmoveanimweights("run");
animscripts/shared::donotetracks(var_00);
self.var_BE0 = undefined;
}
//Function Number: 34
runloopisnearbeginning()
{
var_00 = self getanimtime(%walk_and_run_loops);
var_01 = getanimlength(%run_lowready_f) / 3;
var_00 = var_00 * 3;
if(var_00 > 3)
{
var_00 = var_00 - 2;
}
else if(var_00 > 2)
{
var_00 = var_00 - 1;
}
if(var_00 < 0.15 / var_01)
{
return 1;
}
if(var_00 > 1 - 0.3 / var_01)
{
return 1;
}
return 0;
}
//Function Number: 35
setmovenonforwardanims(param_00,param_01,param_02,param_03)
{
if(!isdefined(param_03))
{
param_03 = 1;
}
self setanimknoblimited(param_00,1,0.1,param_03,1);
self setanimknoblimited(param_01,1,0.1,param_03,1);
self setanimknoblimited(param_02,1,0.1,param_03,1);
}
//Function Number: 36
setcombatstandmoveanimweights(param_00)
{
updatemoveanimweights(param_00,%combatrun_forward,%combatrun_backward,%combatrun_left,%combatrun_right);
}
//Function Number: 37
updatemoveanimweights(param_00,param_01,param_02,param_03,param_04)
{
if(isdefined(self.update_move_anim_type) && self.update_move_anim_type == param_00)
{
return;
}
self notify("stop_move_anim_update");
self.update_move_anim_type = param_00;
self.wasfacingmotion = undefined;
self endon("killanimscript");
self endon("move_interrupt");
self endon("stop_move_anim_update");
for(;;)
{
updaterunweightsonce(param_01,param_02,param_03,param_04);
wait 0.05;
waittillframeend;
}
}
//Function Number: 38
updaterunweightsonce(param_00,param_01,param_02,param_03)
{
if(self.facemotion && !animscripts/utility::shouldcqb() && !isdefined(self.var_BE0))
{
if(!isdefined(self.wasfacingmotion))
{
self.wasfacingmotion = 1;
self setanim(param_00,1,0.2,1,1);
self setanim(param_01,0,0.2,1,1);
self setanim(param_02,0,0.2,1,1);
self setanim(param_03,0,0.2,1,1);
return;
}
return;
}
self.wasfacingmotion = undefined;
var_04 = animscripts/utility::quadrantanimweights(self getmotionangle());
if(isdefined(self.var_BE0))
{
if(var_41["front"] < 0.2)
{
}
}
self setanim(param_01,var_41["front"],0.2,1,1);
self setanim(param_02,var_41["back"],0.2,1,1);
self setanim(param_03,var_41["left"],0.2,1,1);
self setanim(var_04,var_41["right"],0.2,1,1);
}
//Function Number: 39
changeweaponstandrun()
{
var_00 = isdefined(self.wantshotgun) && self.wantshotgun;
var_01 = animscripts/utility::isshotgun(self.weapon);
if(var_00 == var_01)
{
return 0;
}
if(!isdefined(self.pathgoalpos) || distancesquared(self.origin,self.pathgoalpos) < 65536)
{
return 0;
}
if(animscripts/utility::usingsidearm())
{
return 0;
}
if(self.weapon == self.primaryweapon)
{
if(!var_00)
{
return 0;
}
if(animscripts/utility::isshotgun(self.secondaryweapon))
{
return 0;
}
}
else
{
if(var_00)
{
return 0;
}
if(animscripts/utility::isshotgun(self.primaryweapon))
{
return 0;
}
}
var_02 = angleclamp180(self getmotionangle());
if(abs(var_02) > 25)
{
return 0;
}
if(!runloopisnearbeginning())
{
return 0;
}
if(var_00)
{
shotgunswitchstandruninternal("shotgunPullout",%shotgun_cqbrun_pullout,"gun_2_chest","none",self.secondaryweapon,"shotgun_pickup");
}
else
{
shotgunswitchstandruninternal("shotgunPutaway",%shotgun_cqbrun_putaway,"gun_2_back","back",self.primaryweapon,"shotgun_pickup");
}
self notify("switchEnded");
return 1;
}
//Function Number: 40
shotgunswitchstandruninternal(param_00,param_01,param_02,param_03,param_04,param_05)
{
self endon("movemode");
self setflaggedanimknoballrestart(param_00,param_01,%body,1,0.25);
self.var_BE0 = 1;
setmovenonforwardanims(animscripts/utility::moveanim("move_b"),animscripts/utility::moveanim("move_l"),animscripts/utility::moveanim("move_r"));
thread setcombatstandmoveanimweights("run");
thread func_0BEE(param_00,param_02,param_03,param_04,param_05);
animscripts/notetracks::donotetracksfortimeintercept(getanimlength(param_01) - 0.25,param_00,::func_0BED);
self.var_BE0 = undefined;
}
//Function Number: 41
func_0BED(param_00)
{
if(param_00 == "gun_2_chest" || param_00 == "gun_2_back")
{
return 1;
}
}
//Function Number: 42
func_0BEE(param_00,param_01,param_02,param_03,param_04)
{
self endon("killanimscript");
self endon("movemode");
self endon("switchEnded");
self waittillmatch(param_01,param_00);
animscripts/shared::placeweaponon(self.weapon,param_02);
thread func_0BEF(param_03);
self waittillmatch(param_04,param_00);
self notify("complete_weapon_switch");
}
//Function Number: 43
func_0BEF(param_00)
{
self endon("death");
common_scripts\utility::waittill_any("killanimscript","movemode","switchEnded","complete_weapon_switch");
self.lastweapon = self.weapon;
animscripts/shared::placeweaponon(param_00,"right");
self.bulletsinclip = weaponclipsize(self.weapon);
}

View File

@ -0,0 +1,60 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\scripted.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 43 ms
* Timestamp: 10/27/2023 2:30:42 AM
*******************************************************************/
//Function Number: 1
main()
{
self endon("death");
self notify("killanimscript");
self notify("clearSuppressionAttack");
self.a.var_1C2D = 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 = undefined;
if(isdefined(self.var_3AE8) || isdefined(self.facial_animation))
{
animscripts/face::sayspecificdialogue(self.facial_animation,self.var_3AE8,0.9,"scripted_anim_facedone");
self.facial_animation = undefined;
self.var_3AE8 = 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)
{
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;
return;
}
self.codescripted["root"] = %body;
}

View File

@ -0,0 +1,967 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\setposemovement.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 55
* Decompile Time: 878 ms
* Timestamp: 10/27/2023 2:30:45 AM
*******************************************************************/
//Function Number: 1
setposemovement(param_00,param_01)
{
if(param_00 == "")
{
if(self.a.var_911 == "prone" && param_01 == "walk" || param_01 == "run")
{
param_00 = "crouch";
}
else
{
param_00 = self.a.var_911;
}
}
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"] = ::beginstandstop;
level.setposemovementfnarray["stand"]["walk"] = ::beginstandwalk;
level.setposemovementfnarray["stand"]["run"] = ::beginstandrun;
level.setposemovementfnarray["crouch"]["stop"] = ::func_1F92;
level.setposemovementfnarray["crouch"]["walk"] = ::func_0C6E;
level.setposemovementfnarray["crouch"]["run"] = ::begincrouchrun;
level.setposemovementfnarray["prone"]["stop"] = ::func_1F93;
level.setposemovementfnarray["prone"]["walk"] = ::beginpronewalk;
level.setposemovementfnarray["prone"]["run"] = ::beginpronerun;
}
//Function Number: 3
beginstandstop()
{
switch(self.a.var_911)
{
case "stand":
switch(self.a.movement)
{
case "stop":
return 0;
case "walk":
standwalktostand();
break;
default:
func_1F98();
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
beginstandwalk()
{
switch(self.a.var_911)
{
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":
func_1FA1();
break;
case "walk":
blendintostandwalk();
break;
default:
blendintostandwalk();
break;
}
break;
default:
pronetostandwalk();
break;
}
return 1;
}
//Function Number: 5
beginstandrun()
{
switch(self.a.var_911)
{
case "stand":
switch(self.a.movement)
{
case "walk":
case "stop":
return func_1F9B();
default:
return 0;
}
break;
case "crouch":
switch(self.a.movement)
{
case "stop":
return func_1FA7();
default:
return func_1F9B();
}
break;
default:
func_1FAA();
break;
}
return 1;
}
//Function Number: 6
func_1F92()
{
switch(self.a.var_911)
{
case "stand":
switch(self.a.movement)
{
case "stop":
standtocrouch();
break;
case "walk":
func_1F97();
break;
case "run":
func_1F99();
break;
default:
break;
}
break;
case "crouch":
switch(self.a.movement)
{
case "stop":
break;
case "walk":
func_1FA2();
break;
case "run":
crouchruntocrouch();
break;
default:
break;
}
break;
case "prone":
pronetocrouch();
break;
default:
break;
}
}
//Function Number: 7
func_0C6E()
{
switch(self.a.var_911)
{
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
begincrouchrun()
{
switch(self.a.var_911)
{
case "stand":
switch(self.a.movement)
{
case "stop":
blendintocrouchrun();
break;
default:
blendintocrouchrun();
break;
}
break;
case "crouch":
switch(self.a.movement)
{
case "stop":
func_1FA6();
break;
case "walk":
blendintocrouchrun();
break;
default:
return 0;
}
break;
default:
func_1FA9();
break;
}
return 1;
}
//Function Number: 9
func_1F93()
{
switch(self.a.var_911)
{
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":
func_1FB5();
break;
case "walk":
func_1FB5();
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
beginpronewalk()
{
switch(self.a.var_911)
{
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":
func_1FB3();
break;
default:
self.a.movement = "walk";
return 0;
}
break;
}
return 1;
}
//Function Number: 11
beginpronerun()
{
switch(self.a.var_911)
{
case "stand":
switch(self.a.movement)
{
case "stop":
func_1FBA();
break;
default:
crouchruntopronerun();
break;
}
break;
case "crouch":
switch(self.a.movement)
{
case "stop":
func_1FB7();
break;
default:
crouchruntopronerun();
break;
}
break;
default:
switch(self.a.movement)
{
case "stop":
func_1FB3();
break;
default:
self.a.movement = "run";
return 0;
}
break;
}
return 1;
}
//Function Number: 12
func_1F94(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.var_911 = 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
func_1F95(param_00,param_01)
{
playtransitionanimation(param_00,"stand","walk",param_01);
}
//Function Number: 14
standwalktostand()
{
self.a.movement = "stop";
}
//Function Number: 15
func_1F97()
{
standwalktostand();
standtocrouch();
}
//Function Number: 16
func_1F98()
{
self.a.movement = "stop";
}
//Function Number: 17
func_1F99()
{
self.a.movement = "stop";
self.a.var_911 = "crouch";
}
//Function Number: 18
playblendtransitionstandrun(param_00)
{
var_01 = 0.3;
if(self.a.movement != "stop")
{
self endon("movemode");
var_01 = 1;
}
func_1F94(param_00,var_01,"stand","run");
}
//Function Number: 19
func_1F9B()
{
if(!self.facemotion)
{
self.a.movement = "run";
self.a.var_911 = "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::moveanim("sprint"),1,var_00,1);
}
else
{
self setanimknoblimited(animscripts/run::getrunanim(),1,var_00,1);
}
animscripts/run::setmovenonforwardanims(animscripts/utility::moveanim("move_b"),animscripts/utility::moveanim("move_l"),animscripts/utility::moveanim("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.var_911 != "prone")
{
animscripts/run::setmovenonforwardanims(animscripts/utility::moveanim("move_b"),animscripts/utility::moveanim("move_l"),animscripts/utility::moveanim("move_r"));
}
self.a.var_911 = "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
func_1FA1()
{
crouchtocrouchwalk();
blendintostandwalk();
}
//Function Number: 24
func_1FA2()
{
self.a.movement = "stop";
}
//Function Number: 25
crouchwalktostand()
{
func_1FA2();
crouchtostand();
}
//Function Number: 26
crouchruntocrouch()
{
self.a.movement = "stop";
}
//Function Number: 27
crouchruntostand()
{
crouchruntocrouch();
crouchtostand();
}
//Function Number: 28
func_1FA6()
{
blendintocrouchrun();
}
//Function Number: 29
func_1FA7()
{
return func_1F9B();
}
//Function Number: 30
blendintocrouchrun()
{
if(isdefined(self.crouchrun_combatanim))
{
func_1F94(self.crouchrun_combatanim,0.6,"crouch","run");
return;
}
self setanimknob(%crouchrun,1,0.4,self.moveplaybackrate);
thread animscripts/run::updatemoveanimweights("crouchrun",animscripts/utility::moveanim("crouch"),animscripts/utility::moveanim("crouch_b"),animscripts/utility::moveanim("crouch_l"),animscripts/utility::moveanim("crouch_r"));
wait 0.05;
func_1F94(%crouchrun,0.4,"crouch","run");
}
//Function Number: 31
func_1FA9()
{
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
func_1FAA()
{
func_1FA9();
func_1F9B();
}
//Function Number: 33
pronetocrouchwalk()
{
func_1FA9();
blendintocrouchwalk();
}
//Function Number: 34
blendintocrouchwalk()
{
if(isdefined(self.crouchrun_combatanim))
{
self setanimknoball(self.crouchrun_combatanim,%body,1,0.4);
func_1F94(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::moveanim("crouch"),animscripts/utility::moveanim("crouch_b"),animscripts/utility::moveanim("crouch_l"),animscripts/utility::moveanim("crouch_r"));
wait 0.05;
func_1F94(%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
func_1FB3()
{
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
func_1FB5()
{
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()
{
func_1FB5();
func_1FB3();
}
//Function Number: 44
func_1FB7()
{
func_1FB5();
func_1FB3();
}
//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";
pronelegsstraighttree(0.2);
animscripts/cover_prone::updatepronewrapper(0.1);
self waittillmatch("end","transAnimDone2");
}
//Function Number: 46
standtopronewalk()
{
standtoprone();
func_1FB3();
}
//Function Number: 47
func_1FBA()
{
standtoprone();
func_1FB3();
}
//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();
func_1FB3();
}
//Function Number: 50
crouchruntopronerun()
{
crouchruntoprone();
func_1FB3();
}
//Function Number: 51
playtransitionanimationthread_withoutwaitsetstates(param_00,param_01,param_02,param_03,param_04)
{
self endon("killanimscript");
self endon("entered_pose" + param_01);
func_1FC1(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)
{
func_1FC1(param_00,param_01,param_02,param_03,param_04,1);
}
//Function Number: 53
func_1FC1(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(!isdefined(param_04))
{
param_04 = 1;
}
if(param_05)
{
thread func_1FC2(getanimlength(param_00) / 2,"killtimerscript",param_01);
}
self setflaggedanimknoballrestart("transAnimDone2",param_00,%body,1,0.2,param_04);
if(!isdefined(self.a.var_911))
{
self.var_911 = "undefined";
}
if(!isdefined(self.a.movement))
{
self.movement = "undefined";
}
var_06 = "";
animscripts/shared::donotetracks("transAnimDone2",undefined,var_06);
self notify("killtimerscript");
self.a.var_911 = 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
func_1FC2(param_00,param_01,param_02)
{
self endon("killanimscript");
self endon("death");
self endon(param_01);
var_03 = self.a.var_911;
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,823 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\shared.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 34
* Decompile Time: 582 ms
* Timestamp: 10/27/2023 2:30:47 AM
*******************************************************************/
//Function Number: 1
placeweaponon(param_00,param_01,param_02)
{
self notify("weapon_position_change");
var_03 = self.weaponinfo[param_00].var_1C1B;
if(param_01 != "none" && self.a.weaponpos[param_01] == param_00)
{
return;
}
detachallweaponmodels();
if(var_03 != "none")
{
func_1F40(param_00);
}
if(param_01 == "none")
{
func_1F46();
return;
}
if(self.a.weaponpos[param_01] != "none")
{
func_1F40(self.a.weaponpos[param_01]);
}
if(!isdefined(param_02))
{
param_02 = 1;
}
if(param_02 && param_01 == "left" || param_01 == "right")
{
func_1F41(param_00,param_01);
self.weapon = param_00;
}
else
{
func_1F41(param_00,param_01);
}
func_1F46();
}
//Function Number: 2
func_1F40(param_00)
{
self.a.weaponpos[self.weaponinfo[param_00].var_1C1B] = "none";
self.weaponinfo[param_00].var_1C1B = "none";
}
//Function Number: 3
func_1F41(param_00,param_01)
{
self.weaponinfo[param_00].var_1C1B = 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
func_1F42(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 = [];
self laseroff();
foreach(var_02 in var_41)
{
var_03 = func_1F42(var_02);
if(var_03 == "none")
{
continue;
}
if(weapontype(var_03) == "riotshield" && isdefined(self.var_1F44))
{
if(isdefined(self.shieldbroken) && self.shieldbroken)
{
playfxontag(common_scripts\utility::func_539("riot_shield_dmg"),self,"TAG_BRASS");
self.shieldbroken = undefined;
}
self detach(getweaponmodel(var_03,self.var_1F44),func_1F49(var_02));
continue;
}
self detach(getweaponmodel(var_03),func_1F49(var_02));
}
}
//Function Number: 6
func_1F46()
{
var_00 = [];
foreach(var_02 in var_41)
{
var_03 = func_1F42(var_02);
if(var_03 == "none")
{
continue;
}
var_04 = 0;
if(weapontype(var_03) == "riotshield" && isdefined(self.var_1F44))
{
var_04 = self.var_1F44;
}
var_05 = getweaponmodel(var_03,var_04);
if(weapontype(var_03) == "riotshield")
{
self attach(var_05,func_1F49(var_02));
}
else
{
self attach(var_05,func_1F49(var_02),1);
}
var_06 = getweaponhidetags(var_03);
var_07 = 0;
while(var_07 < var_06.size)
{
self hidepart(var_06[var_07],var_05);
var_07++ = var_41[var_41.size];
}
if(self.weaponinfo[var_03].var_1C1D && !self.weaponinfo[var_03].var_1C1C)
{
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();
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
func_1F49(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.var_1CC7))
{
return;
}
detachallweaponmodels();
var_01 = self.weaponinfo[param_00].var_1C1B;
if(self.dropweapon && var_01 != "none")
{
thread dropweaponwrapper(param_00,var_01);
}
func_1F40(param_00);
if(param_00 == self.weapon)
{
self.weapon = "none";
}
func_1F46();
}
//Function Number: 11
dropallaiweapons()
{
if(isdefined(self.var_1CC7))
{
return "none";
}
var_00 = [];
detachallweaponmodels();
foreach(var_02 in var_41)
{
var_03 = self.a.weaponpos[var_02];
if(var_03 == "none")
{
continue;
}
self.weaponinfo[var_03].var_1C1B = "none";
self.a.weaponpos[var_02] = "none";
if(self.dropweapon)
{
thread dropweaponwrapper(var_03,var_02);
}
}
self.weapon = "none";
func_1F46();
}
//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";
}
self dropweapon(var_02,param_01,0);
self endon("end_weapon_drop_" + param_01);
wait 0.1;
if(!isdefined(self))
{
return;
}
detachallweaponmodels();
self.a.weaponposdropping[param_01] = "none";
func_1F46();
}
//Function Number: 13
donotetracks(param_00,param_01,param_02)
{
for(;;)
{
self waittill(param_00,var_03);
if(!isdefined(var_03))
{
var_03 = "undefined";
}
var_04 = animscripts/notetracks::func_1F4C(var_03,param_00,param_01);
if(isdefined(var_04))
{
return var_04;
}
}
}
//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.var_96C * param_00;
return getaimyawtopoint(var_01);
}
//Function Number: 15
getaimyawtoshootentorpos()
{
if(!isdefined(self.shootent))
{
if(!isdefined(self.shootpos))
{
return 0;
}
return getaimyawtopoint(self.shootpos);
}
return getaimyawtopoint(self.shootent getshootatpos());
}
//Function Number: 16
func_1F4D()
{
var_00 = getpitchtoshootentorpos();
if(self.script == "cover_crouch" && isdefined(self.a.var_8E3) && self.a.var_8E3 == "lean")
{
var_00 = var_00 - level.var_898;
}
return var_00;
}
//Function Number: 17
getpitchtoshootentorpos()
{
if(!isdefined(self.shootent))
{
if(!isdefined(self.shootpos))
{
return 0;
}
return animscripts/combat_utility::getpitchtospot(self.shootpos);
}
return animscripts/combat_utility::getpitchtospot(self.shootent getshootatpos());
}
//Function Number: 18
func_089B()
{
if(isdefined(self.usemuzzlesideoffset))
{
var_00 = self getmuzzlesideoffsetpos();
return (var_00[0],var_00[1],self geteye()[2]);
}
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::func_C05(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.var_1C5E[randomint(level.var_1C5E.size)];
}
else if(self.fastburst)
{
var_00 = level.var_1C5D[randomint(level.var_1C5D.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
func_1EFB()
{
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
insure_dropping_clip(param_00,param_01)
{
}
//Function Number: 25
handledropclip(param_00)
{
self endon("killanimscript");
self endon("abort_reload");
var_01 = undefined;
if(self.weaponinfo[self.weapon].var_1C1D)
{
var_01 = getweaponclipmodel(self.weapon);
}
if(self.weaponinfo[self.weapon].var_1C1C)
{
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].var_1C1C = 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");
}
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].var_1C1C = 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: 26
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].var_1C1B != "none")
{
self showpart("tag_clip");
}
self.weaponinfo[self.weapon].var_1C1C = 1;
return;
}
if(isdefined(param_01))
{
dropclipmodel(param_00,param_01);
}
}
//Function Number: 27
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: 28
movetooriginovertime(param_00,param_01)
{
self endon("killanimscript");
var_02 = distancesquared(self.origin,param_00);
if(var_02 < 1)
{
self safeteleport(param_00);
return;
}
if(var_02 > 256 && !self maymovetopoint(param_00))
{
return;
}
self.keepclaimednodeifvalid = 1;
var_03 = self.origin - param_00;
var_04 = int(param_01 * 20);
var_05 = var_03 * 1 / var_04;
for(var_06 = 0;var_06 < var_04;var_06++)
{
var_03 = var_03 - var_05;
self safeteleport(param_00 + var_03);
wait 0.05;
}
self.keepclaimednodeifvalid = 0;
}
//Function Number: 29
returntrue()
{
return 1;
}
//Function Number: 30
func_0B7E(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: 31
throwdownweapon(param_00)
{
self endon("killanimscript");
placeweaponon(self.secondaryweapon,"right");
maps\_gameskill::didsomethingotherthanshooting();
}
//Function Number: 32
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: 33
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: 34
rpgplayerrepulsor_create()
{
var_00 = missile_createrepulsorent(level.player,5000,800);
wait 4;
missile_deleteattractor(var_00);
}

View File

@ -0,0 +1,724 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\shoot_behavior.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 27
* Decompile Time: 459 ms
* Timestamp: 10/27/2023 2:30:49 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.var_8C8))
{
self.var_8C8 = 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())
{
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))
{
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)
{
func_08DB();
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
func_08DB()
{
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,-5536);
}
else
{
self.ambushendtime = gettime() + randomintrange(4000,10000);
}
}
return self.ambushendtime < gettime();
}
//Function Number: 12
rpgshoot()
{
if(!shouldshootenemyent())
{
markenemyposinvisible();
havenothingtoshoot();
return;
}
setshootenttoenemy();
self.shootstyle = "single";
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();
self.shootstyle = "single";
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.var_8C8 && 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.var_8E3) && self.enemy.a.var_8E3 == "hide")
{
return;
}
}
self.var_8E4 = 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.var_8C8)
{
return 0;
}
if(!isdefined(self.enemy) || !self cansee(self.enemy))
{
return 1;
}
if(gettime() < self.var_8E8 + 800)
{
return 0;
}
if(isplayer(self.enemy) && self.enemy.health < self.enemy.maxhealth * 0.5)
{
if(gettime() < self.var_8E8 + 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;
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.var_8C8)
{
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(weaponburstcount(self.weapon) > 0)
{
return setshootstyle("burst",0);
}
if(isdefined(self.juggernaut) && self.juggernaut)
{
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 < -3036)
{
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.var_8F5 = 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::func_539("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,898 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\snowmobile.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 32
* Decompile Time: 583 ms
* Timestamp: 10/27/2023 2:30:51 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.var_911 = "crouch";
maps\_utility::disable_surprise();
self.allowpain = 0;
self.getoffvehiclefunc = ::func_0ADA;
self.specialdeathfunc = ::snowmobile_normal_death;
self.disablebulletwhizbyreaction = 1;
}
//Function Number: 3
func_0ADA()
{
self.allowpain = 1;
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 func_0AE5();
}
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 func_0AE4();
}
snowmobile_handle_events("passenger");
}
//Function Number: 6
snowmobile_loop_driver()
{
self endon("death");
self endon("killanimscript");
var_00 = "left2right";
var_01 = [];
self setanimknoball(%sm_turn,%body,1,0);
self setanim(animscripts/utility::animarray("drive"),1,0);
self setanimknob(animscripts/utility::animarray(var_01),1,0);
self setanimtime(animscripts/utility::animarray(var_01),0.5);
for(;;)
{
if(self.ridingvehicle.steering_enable)
{
var_02 = 0.5 * 1 + maps\_vehicle::update_steering(self.ridingvehicle);
var_03 = self getanimtime(animscripts/utility::animarray(var_01));
if(var_01 == "right2left")
{
var_03 = 1 - var_03;
}
var_04 = 20 * abs(var_03 - var_02);
if(var_03 < var_02)
{
var_01 = "left2right";
var_04 = var_04 * var_41["left2right"];
}
else
{
var_01 = "right2left";
var_04 = var_04 * var_41["right2left"];
var_03 = 1 - var_03;
}
}
else
{
var_01 = "left2right";
var_04 = 0;
var_03 = 0.5;
}
self setanimknoblimited(animscripts/utility::animarray(var_01),1,0.1,var_04);
self setanimtime(animscripts/utility::animarray(var_01),var_03);
wait 0.05;
}
}
//Function Number: 7
func_0AE4()
{
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::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
func_0AE5()
{
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::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::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 func_0AEC();
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
func_0AEC()
{
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.var_AF6 = 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.var_AF6))
{
self.var_AF6 = 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.var_8AE;
var_0C = min(max(var_03,0),90) / 90 * self.a.var_8AE;
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.var_8AE;
var_11 = min(max(0 - var_07,0),90) / 90 * self.a.var_8AE;
var_12 = max(90 - abs(var_07),0) / 90 * self.a.var_8AE;
var_13 = min(max(var_07,0),90) / 90 * self.a.var_8AE;
var_14 = max(-90 + var_07,0) / 90 * self.a.var_8AE;
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
func_0AFC(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 func_0B03();
}
//Function Number: 27
snowmobile_normal_death()
{
var_00 = [];
var_01 = [];
var_02 = func_0AFC(var_41,var_01,self.damageyaw);
animscripts/death::func_941(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_05 = [];
var_06 = func_0AFC(var_41,var_05,var_04);
animscripts/death::func_941(var_06);
return 1;
}
//Function Number: 29
func_0B03()
{
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
func_0B04(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 = [];
func_0B04("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 = [];
func_0B04("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,823 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\squadmanager.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 32
* Decompile Time: 558 ms
* Timestamp: 10/27/2023 2:30:53 AM
*******************************************************************/
//Function Number: 1
func_0676()
{
if(isdefined(level.squadinitialized) && level.squadinitialized)
{
return;
}
anim.var_678 = [];
anim.squadcreatestrings = [];
anim.squads = [];
anim.squadindex = [];
anim.squadrand = 0;
anim.squadinitialized = 1;
}
//Function Number: 2
createsquad(param_00,param_01)
{
level.squads[param_00] = spawnstruct();
var_02 = level.squads[param_00];
var_02.var_67E = 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.var_688 = [];
var_02.var_689 = [];
var_02.memberremovestrings = [];
var_02.squadupdatefuncs = [];
var_02.squadupdatestrings = [];
var_02.squadid = level.squadindex.size;
var_02 func_06B7("combat",0.75);
var_02 func_06B7("cover",0.75);
var_02 func_06B7("move",0.75);
var_02 func_06B7("stop",0.75);
var_02 func_06B7("death",0.75);
var_02 func_06B7("suppressed",0.75);
var_02 func_06B7("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.var_678.size;var_03++)
{
var_04 = level.var_678[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
{
func_069C();
}
}
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.var_67E);
}
thread membercombatwaiter();
thread memberdeathwaiter();
}
//Function Number: 9
func_069C()
{
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();
}
for(var_02 = 0;var_02 < self.squad.var_689.size;var_02++)
{
var_04 = self.squad.var_689[var_02];
self thread [[ var_04 ]](var_00.var_67E);
}
if(var_00.membercount == 0)
{
deletesquad(var_00.var_67E);
}
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.var_67E);
for(;;)
{
updateall();
wait 0.1;
}
}
//Function Number: 15
memberdeathwaiter()
{
self endon("removed from squad");
self waittill("death",var_00);
if(isdefined(self))
{
self.attacker = var_00;
}
func_069C();
}
//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].var_67E].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.var_67E].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].var_67E]))
{
self.squadlist[level.squadindex[var_00].var_67E] = spawnstruct();
self.squadlist[level.squadindex[var_00].var_67E].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].var_67E);
}
}
}
//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
func_06AE(param_00)
{
switch(param_00)
{
case "move":
case "combat":
case "death":
case "stop":
self.a.state = param_00;
break;
case "grenadecower":
case "pain":
break;
case "stalingrad_cover_crouch":
case "concealment_stand":
case "concealment_prone":
case "concealment_crouch":
case "cover_wide_right":
case "cover_wide_left":
case "cover_prone":
case "cover_stand":
case "cover_left":
case "cover_crouch":
case "cover_right":
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.var_67E);
var_00 = 0.05;
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] func_06B4(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
func_06B4(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
func_06B7(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;
}
}

View File

@ -0,0 +1,258 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\stop.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 9
* Decompile Time: 170 ms
* Timestamp: 10/27/2023 2:30:54 AM
*******************************************************************/
//Function Number: 1
main()
{
if(isdefined(self.no_ai))
{
return;
}
if(isdefined(self.var_89E))
{
animscripts/snowmobile::main();
return;
}
if(isdefined(self.custom_animscript_table))
{
if(isdefined(self.custom_animscript_table["stop"]))
{
[[ self.custom_animscript_table["stop"] ]]();
return;
}
}
self notify("stopScript");
self endon("killanimscript");
[[ self.exception["stop_immediate"] ]]();
thread delayedexception();
animscripts/utility::initialize("stop");
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;
}
}
for(;;)
{
var_01 = func_0CE3();
if(var_01 == "prone")
{
var_00 = 1;
pronestill();
continue;
}
if(self.a.var_911 != var_01)
{
self clearanim(%root,0.3);
var_00 = 0;
}
animscripts/setposemovement::setposemovement(var_01,"stop");
if(!var_00)
{
transitiontoidle(var_01,self.a.idleset);
var_00 = 1;
continue;
}
playidle(var_01,self.a.idleset);
}
}
//Function Number: 2
setlaststoppedtime()
{
self endon("death");
self waittill("killanimscript");
self.laststoppedtime = gettime();
}
//Function Number: 3
specialidleloop()
{
self endon("stop_specialidle");
if(isdefined(self.specialidleanim))
{
var_00 = self.specialidleanim;
self.specialidleanim = undefined;
self notify("clearing_specialIdleAnim");
self animmode("gravity");
self orientmode("face current");
self clearanim(%root,0.2);
for(;;)
{
self setflaggedanimrestart("special_idle",var_00[randomint(var_00.size)],1,0.2,self.animplaybackrate);
self waittillmatch("end","special_idle");
}
}
}
//Function Number: 4
func_0CE3()
{
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: 5
transitiontoidle(param_00,param_01)
{
if(animscripts/utility::iscqbwalking() && self.a.var_911 == "stand")
{
param_00 = "stand_cqb";
}
if(isdefined(level.idleanimtransition[param_00]))
{
var_02 = level.idleanimtransition[param_00]["in"];
self setflaggedanimknoballrestart("idle_transition",var_02,%body,1,0.2,self.animplaybackrate);
animscripts/shared::donotetracks("idle_transition");
}
}
//Function Number: 6
playidle(param_00,param_01)
{
if(animscripts/utility::iscqbwalking() && self.a.var_911 == "stand")
{
param_00 = "stand_cqb";
}
var_02 = undefined;
if(isdefined(self.customidleanimset) && isdefined(self.customidleanimset[param_00]))
{
var_03 = self.customidleanimset[param_00];
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_02 = var_02 % level.idleanimarray[param_01].size;
var_03 = animscripts/utility::anim_array(level.idleanimarray[param_01][var_02],level.idleanimweights[param_01][var_02]);
}
var_05 = 0.2;
if(gettime() == self.a.scriptstarttime)
{
var_05 = 0.5;
}
if(isdefined(var_02))
{
self setanimknoball(var_03,%body,1,var_05,1);
self setanim(%add_idle);
self setflaggedanimknoballrestart("idle",var_02,%add_idle,1,var_05,self.animplaybackrate);
}
else
{
self setflaggedanimknoballrestart("idle",var_03,%body,1,var_05,self.animplaybackrate);
}
animscripts/shared::donotetracks("idle");
}
//Function Number: 7
pronestill()
{
if(self.a.var_911 != "prone")
{
var_00["stand_2_prone"] = %stand_2_prone;
var_01 = var_41[self.a.var_911 + "_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 = [];
var_03 = var_02[randomint(var_02.size)];
self setflaggedanimknoball("prone_idle",var_03,%exposed_modern,1,0.2);
}
else
{
self setanimknoball(%prone_aim_5,%exposed_modern,1,0.2);
self setflaggedanimknob("prone_idle",%prone_idle,1,0.2);
}
self waittillmatch(%crouch_2_prone,var_41["crouch_2_prone"],%prone_twitch_ammocheck,var_41[0],%prone_twitch_look,var_41[1],%prone_twitch_scan,var_41[2],%prone_twitch_lookfast,var_41[3],%prone_twitch_lookup,var_41[4],"end","prone_idle");
self notify("kill UpdateProneThread");
}
//Function Number: 8
updatepronethread()
{
self endon("killanimscript");
self endon("kill UpdateProneThread");
for(;;)
{
animscripts/cover_prone::updatepronewrapper(0.1);
wait 0.1;
}
}
//Function Number: 9
delayedexception()
{
self endon("killanimscript");
wait 0.05;
[[ self.exception["stop"] ]]();
}

View File

@ -0,0 +1,335 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\track.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 9
* Decompile Time: 156 ms
* Timestamp: 10/27/2023 2:30:55 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)
{
var_04 = 0;
var_05 = 0;
var_06 = (0,0,0);
var_07 = 1;
var_08 = 0;
var_09 = 0;
var_0A = 10;
var_0B = (0,0,0);
if(self.type == "dog")
{
var_0C = 0;
self.shootent = self.enemy;
}
else
{
var_0C = 1;
var_0D = 0;
var_0E = 0;
if(isdefined(self.var_897))
{
var_0D = level.var_898;
}
if((self.script == "cover_left" || self.script == "cover_right") && isdefined(self.a.var_899) && self.a.var_899 == "lean")
{
var_0E = self.covernode.angles[1] - self.angles[1];
}
var_0B = (var_0D,var_0E,0);
}
for(;;)
{
incranimaimweight();
var_0F = animscripts/shared::func_89B();
var_10 = self.shootpos;
if(isdefined(self.shootent))
{
var_10 = self.shootent getshootatpos();
}
if(!isdefined(var_10) && animscripts/utility::shouldcqb())
{
var_10 = trackloop_cqbshootpos(var_0F);
}
var_11 = isdefined(self.var_89E) || isdefined(self.onatv);
var_12 = isdefined(var_10);
var_13 = (0,0,0);
if(var_12)
{
var_13 = var_10;
}
var_14 = 0;
var_15 = isdefined(self.stepoutyaw);
if(var_15)
{
var_14 = self.stepoutyaw;
}
var_06 = self getaimangle(var_0F,var_13,var_12,var_0B,var_14,var_15,var_11);
var_16 = var_06[0];
var_17 = var_06[1];
var_06 = undefined;
if(var_09 > 0)
{
var_09 = var_09 - 1;
var_0A = max(10,var_0A - 5);
}
else if(self.relativedir && self.relativedir != var_08)
{
var_09 = 2;
var_0A = 30;
}
else
{
var_0A = 10;
}
var_18 = squared(var_0A);
var_08 = self.relativedir;
var_19 = self.movemode != "stop" || !var_07;
if(var_19)
{
var_1A = var_17 - var_04;
if(squared(var_1A) > var_18)
{
var_17 = var_04 + clamp(var_1A,-1 * var_0A,var_0A);
var_17 = clamp(var_17,self.leftaimlimit,self.rightaimlimit);
}
var_1B = var_16 - var_05;
if(squared(var_1B) > var_18)
{
var_16 = var_05 + clamp(var_1B,-1 * var_0A,var_0A);
var_16 = clamp(var_16,self.downaimlimit,self.upaimlimit);
}
}
var_07 = 0;
var_04 = var_17;
var_05 = var_16;
func_08AD(param_00,param_01,param_02,param_03,var_16,var_17);
wait 0.05;
}
}
//Function Number: 3
trackloop_cqbshootpos(param_00)
{
var_01 = undefined;
var_02 = anglestoforward(self.angles);
if(isdefined(self.cqb_target))
{
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")
{
var_03 = -40;
}
else if(self.stairsstate == "down")
{
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.var_89E) || 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
func_08AD(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(param_05 > 0)
{
var_06 = param_05 / self.rightaimlimit * self.a.var_8AE;
self setanimlimited(param_01,0,0.1,1,1);
self setanimlimited(param_02,var_06,0.1,1,1);
}
else if(param_05 < 0)
{
var_06 = param_05 / self.leftaimlimit * self.a.var_8AE;
self setanimlimited(param_02,0,0.1,1,1);
self setanimlimited(param_01,var_06,0.1,1,1);
}
if(param_04 > 0)
{
var_06 = param_04 / self.upaimlimit * self.a.var_8AE;
self setanimlimited(param_00,0,0.1,1,1);
self setanimlimited(param_03,var_06,0.1,1,1);
return;
}
if(param_04 < 0)
{
var_06 = param_04 / self.downaimlimit * self.a.var_8AE;
self setanimlimited(param_03,0,0.1,1,1);
self setanimlimited(param_00,var_06,0.1,1,1);
}
}
//Function Number: 8
setanimaimweight(param_00,param_01)
{
if(!isdefined(param_01) || param_01 <= 0)
{
self.a.var_8AE = param_00;
self.a.aimweight_start = param_00;
self.a.aimweight_end = param_00;
self.a.aimweight_transframes = 0;
}
else
{
if(!isdefined(self.a.var_8AE))
{
self.a.var_8AE = 0;
}
self.a.aimweight_start = self.a.var_8AE;
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.var_8AE = self.a.aimweight_start * 1 - var_00 + self.a.aimweight_end * var_00;
}
}

View File

@ -0,0 +1,24 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\crawl.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 35 ms
* Timestamp: 10/27/2023 2:29:26 AM
*******************************************************************/
//Function Number: 1
main()
{
animscripts/setposemovement::beginpronerun();
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("noclip");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
self setflaggedanimknoballrestart("crawlanim",%prone_crawl,%body,1,0.1,1);
animscripts/shared::donotetracks("crawlanim");
self.a.movement = "run";
self.a.var_911 = "crouch";
}

View File

@ -0,0 +1,25 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\crouch_jump_down_40.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 31 ms
* Timestamp: 10/27/2023 2:29:26 AM
*******************************************************************/
//Function Number: 1
main()
{
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self.a.movement = "walk";
self traversemode("nogravity");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
self setflaggedanimknoballrestart("stepanim",%jump_across_72,%body,1,0.1,1);
wait 0.15;
self traversemode("gravity");
animscripts/shared::donotetracks("stepanim");
}

View File

@ -0,0 +1,25 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\duck_under_56.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 29 ms
* Timestamp: 10/27/2023 2:29:27 AM
*******************************************************************/
//Function Number: 1
main()
{
self.desired_anim_pose = "stand";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
self setflaggedanimknoballrestart("jumpanim",%gulag_pipe_traverse,%body,1,0.1,1);
self waittillmatch("finish","jumpanim");
self traversemode("gravity");
animscripts/shared::donotetracks("jumpanim");
}

View File

@ -0,0 +1,24 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\fence_climb.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 30 ms
* Timestamp: 10/27/2023 2:29:27 AM
*******************************************************************/
//Function Number: 1
main()
{
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
self setflaggedanimknoballrestart("diveanim",%fenceclimb,%body,1,0.1,1);
animscripts/shared::donotetracks("diveanim");
self traversemode("gravity");
}

View File

@ -0,0 +1,31 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\jump_across_100.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 30 ms
* Timestamp: 10/27/2023 2:29:27 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_8116("window_40",20);
return;
}
self.desired_anim_pose = "stand";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
var_01 = [];
var_02 = var_41[randomint(var_41.size)];
self setflaggedanimknoballrestart("jumpanim",var_02,%body,1,0.1,1);
animscripts/shared::donotetracks("jumpanim");
}

View File

@ -0,0 +1,31 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\jump_across_72.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 32 ms
* Timestamp: 10/27/2023 2:29:28 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_8116("wallhop",20);
return;
}
self.desired_anim_pose = "stand";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
self setflaggedanimknoballrestart("jumpanim",%jump_across_72,%body,1,0.1,1);
self waittillmatch("gravity on","jumpanim");
self traversemode("gravity");
animscripts/shared::donotetracks("jumpanim");
}

View File

@ -0,0 +1,31 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\jump_over_high_wall.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 32 ms
* Timestamp: 10/27/2023 2:29:28 AM
*******************************************************************/
//Function Number: 1
main()
{
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
self clearanim(%stand_and_crouch,0.1);
self setflaggedanimknoballrestart("diveanim",%jump_over_high_wall,%body,1,0.1,1);
self playsound("dive_wall");
self waittillmatch("gravity on","diveanim");
self traversemode("nogravity");
self waittillmatch("noclip","diveanim");
self traversemode("noclip");
self waittillmatch("gravity on","diveanim");
self traversemode("gravity");
animscripts/shared::donotetracks("diveanim");
}

View File

@ -0,0 +1,25 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\jump_up_80.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 30 ms
* Timestamp: 10/27/2023 2:29:29 AM
*******************************************************************/
//Function Number: 1
main()
{
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
var_01 = var_00.var_1A98 - var_00.origin[2];
thread animscripts/traverse/shared::func_3AEB(var_01 - 80);
self clearanim(%root,0.2);
self setflaggedanimrestart("jump_up_80",level.dogtraverseanims["jump_up_80"],1,0.2,1);
animscripts/shared::donotetracks("jump_up_80");
self.var_3682 = 1;
}

View File

@ -0,0 +1,28 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\jumpdown_130.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 71 ms
* Timestamp: 10/27/2023 2:29:29 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFC(7,0.7);
return;
}
func_3B0D();
}
//Function Number: 2
func_3B0D()
{
var_00 = [];
animscripts/traverse/shared::func_3AEF(var_41);
}

View File

@ -0,0 +1,28 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\jumpdown_40.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 57 ms
* Timestamp: 10/27/2023 2:29:30 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFC(3,1);
return;
}
low_wall_human();
}
//Function Number: 2
low_wall_human()
{
var_00 = [];
animscripts/traverse/shared::func_3AEF(var_41);
}

View File

@ -0,0 +1,28 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\jumpdown_56.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 44 ms
* Timestamp: 10/27/2023 2:29:30 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFC(5,1);
return;
}
low_wall_human();
}
//Function Number: 2
low_wall_human()
{
var_00 = [];
animscripts/traverse/shared::func_3AEF(var_41);
}

View File

@ -0,0 +1,28 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\jumpdown_96.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 47 ms
* Timestamp: 10/27/2023 2:29:30 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFC(7,0.8);
return;
}
low_wall_human();
}
//Function Number: 2
low_wall_human()
{
var_00 = [];
animscripts/traverse/shared::func_3AEF(var_41);
}

View File

@ -0,0 +1,40 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\ladder_down.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 33 ms
* Timestamp: 10/27/2023 2:29:31 AM
*******************************************************************/
//Function Number: 1
main()
{
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_00 = self getnegotiationendnode();
var_01 = var_00.origin;
var_02 = self getnegotiationstartnode();
self orientmode("face angle",var_02.angles[1]);
var_03 = 1;
if(isdefined(self.moveplaybackrate))
{
var_03 = self.moveplaybackrate;
}
self setflaggedanimknoballrestart("climbanim",%ladder_climbon,%body,1,0.1,var_03);
animscripts/shared::donotetracks("climbanim");
var_04 = %ladder_climbdown;
self setflaggedanimknoballrestart("climbanim",var_04,%body,1,0.1,var_03);
var_05 = getmovedelta(var_04,0,1);
var_06 = var_05[2] * var_03 / getanimlength(var_04);
var_07 = var_01[2] - self.origin[2] / var_06;
animscripts/notetracks::donotetracksfortime(var_07,"climbanim");
self traversemode("gravity");
self.a.movement = "stop";
self.a.var_911 = "stand";
}

View File

@ -0,0 +1,51 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\ladder_up.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 32 ms
* Timestamp: 10/27/2023 2:29:31 AM
*******************************************************************/
//Function Number: 1
main()
{
if(isdefined(self.type) && self.type == "dog")
{
return;
}
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("noclip");
var_00 = %ladder_climbup;
var_01 = %ladder_climboff;
var_02 = self getnegotiationstartnode();
self orientmode("face angle",var_02.angles[1]);
var_03 = 1;
if(isdefined(self.moveplaybackrate))
{
var_03 = self.moveplaybackrate;
}
self setflaggedanimknoballrestart("climbanim",var_00,%body,1,0.1,var_03);
var_04 = getmovedelta(var_01,0,1);
var_05 = self getnegotiationendnode();
var_06 = var_05.origin - var_04 + (0,0,1);
var_07 = getmovedelta(var_00,0,1);
var_08 = var_07[2] * var_03 / getanimlength(var_00);
var_09 = var_06[2] - self.origin[2] / var_08;
if(var_09 > 0)
{
self.allowpain = 1;
animscripts/notetracks::donotetracksfortime(var_09,"climbanim");
self setflaggedanimknoballrestart("climbanim",var_01,%body,1,0.1,var_03);
animscripts/shared::donotetracks("climbanim");
}
self traversemode("gravity");
self.a.movement = "run";
self.a.var_911 = "crouch";
}

View File

@ -0,0 +1,340 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\shared.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 14
* Decompile Time: 257 ms
* Timestamp: 10/27/2023 2:29:32 AM
*******************************************************************/
//Function Number: 1
func_3AEA(param_00,param_01)
{
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_02 = self getnegotiationstartnode();
self orientmode("face angle",var_02.angles[1]);
var_03 = var_02.var_1A98 - var_02.origin[2];
thread func_3AEB(var_03 - param_01);
var_04 = 0.15;
self clearanim(%body,var_04);
self setflaggedanimknoballrestart("traverse",param_00,%root,1,var_04,1);
var_05 = 0.2;
var_06 = 0.2;
thread animscripts/notetracks::donotetracksforever("traverse","no clear");
if(!animhasnotetrack(param_00,"gravity on"))
{
var_07 = 1.23;
wait var_07 - var_05;
self traversemode("gravity");
wait var_05;
return;
}
self waittillmatch("gravity on","traverse");
self traversemode("gravity");
if(!animhasnotetrack(param_00,"blend"))
{
wait var_05;
return;
}
self waittillmatch("blend","traverse");
}
//Function Number: 2
func_3AEB(param_00)
{
self endon("killanimscript");
self notify("endTeleportThread");
self endon("endTeleportThread");
var_01 = 5;
var_02 = (0,0,param_00 / var_01);
for(var_03 = 0;var_03 < var_01;var_03++)
{
self forceteleport(self.origin + var_02);
wait 0.05;
}
}
//Function Number: 3
func_3AEC(param_00,param_01,param_02,param_03)
{
self endon("killanimscript");
self notify("endTeleportThread");
self endon("endTeleportThread");
if(param_00 == 0 || param_02 <= 0)
{
return;
}
if(param_01 > 0)
{
wait param_01;
}
var_04 = (0,0,param_00 / param_02);
if(isdefined(param_03) && param_03 < 1)
{
self setflaggedanimknoball("traverseAnim",self.var_3AEE,self.var_3AED,1,0.2,param_03);
}
for(var_05 = 0;var_05 < param_02;var_05++)
{
self forceteleport(self.origin + var_04);
wait 0.05;
}
if(isdefined(param_03) && param_03 < 1)
{
self setflaggedanimknoball("traverseAnim",self.var_3AEE,self.var_3AED,1,0.2,1);
}
}
//Function Number: 4
func_3AEF(param_00)
{
self endon("killanimscript");
self.desired_anim_pose = "stand";
animscripts/utility::updateanimpose();
var_01 = self getnegotiationstartnode();
var_02 = self getnegotiationendnode();
self orientmode("face angle",var_01.angles[1]);
self.var_3AF0 = param_00["traverseHeight"];
self.var_3AF1 = var_01;
var_03 = param_00["traverseAnim"];
var_04 = param_00["traverseToCoverAnim"];
self traversemode("nogravity");
self traversemode("noclip");
self.var_3AF2 = self.origin[2];
if(!animhasnotetrack(var_03,"traverse_align"))
{
func_3AF7();
}
var_05 = 0;
if(isdefined(var_04) && isdefined(self.node) && self.node.type == param_00["coverType"] && distancesquared(self.node.origin,var_02.origin) < 625)
{
if(animscripts/utility::absangleclamp180(self.node.angles[1] - var_02.angles[1]) > 160)
{
var_05 = 1;
var_03 = var_04;
}
}
if(var_05)
{
if(isdefined(param_00["traverseToCoverSound"]))
{
thread maps\_utility::play_sound_on_entity(param_00["traverseToCoverSound"]);
}
}
else if(isdefined(param_00["traverseSound"]))
{
thread maps\_utility::play_sound_on_entity(param_00["traverseSound"]);
}
self.var_3AEE = var_03;
self.var_3AED = %body;
self setflaggedanimknoballrestart("traverseAnim",var_03,%body,1,0.2,1);
self.traversedeathindex = 0;
self.var_3AF4 = param_00["interruptDeathAnim"];
animscripts/shared::donotetracks("traverseAnim",::func_3AF5);
self traversemode("gravity");
if(self.delayeddeath)
{
return;
}
self.a.nodeath = 0;
if(var_05 && isdefined(self.node) && distancesquared(self.origin,self.node.origin) < 256)
{
self.a.movement = "stop";
self teleport(self.node.origin);
}
else if(isdefined(param_00["traverseStopsAtEnd"]))
{
self.a.movement = "stop";
}
else
{
self.a.movement = "run";
self clearanim(var_03,0.2);
}
self.var_3AED = undefined;
self.var_3AEE = undefined;
self.var_93B = undefined;
}
//Function Number: 5
func_3AF5(param_00)
{
if(param_00 == "traverse_death")
{
return handletraversedeathnotetrack();
}
if(param_00 == "traverse_align")
{
return func_3AF7();
}
if(param_00 == "traverse_drop")
{
return func_3AF8();
}
}
//Function Number: 6
handletraversedeathnotetrack()
{
if(isdefined(self.var_3AF4))
{
var_00 = self.var_3AF4[self.traversedeathindex];
self.var_93B = var_00[randomint(var_00.size)];
self.traversedeathindex++;
}
}
//Function Number: 7
func_3AF7()
{
self traversemode("nogravity");
self traversemode("noclip");
if(isdefined(self.var_3AF0) && isdefined(self.var_3AF1.var_1A98))
{
var_00 = self.var_3AF1.var_1A98 - self.var_3AF2;
thread func_3AEB(var_00 - self.var_3AF0);
}
}
//Function Number: 8
func_3AF8()
{
var_00 = self.origin + (0,0,32);
var_01 = bullettrace(var_00,self.origin + (0,0,-512),0,undefined);
var_02 = var_01["position"];
var_03 = distance(var_00,var_02);
var_04 = var_03 - 32 - 0.5;
var_05 = self getanimtime(self.var_3AEE);
var_06 = getmovedelta(self.var_3AEE,var_05,1);
var_07 = getanimlength(self.var_3AEE);
var_08 = 0 - var_06[2];
var_09 = var_08 - var_04;
if(var_08 < var_04)
{
var_0A = var_08 / var_04;
}
else
{
var_0A = 1;
}
var_0B = var_07 - var_05 / 3;
var_0C = ceil(var_0B * 20);
thread func_3AEC(var_09,0,var_0C,var_0A);
thread finishtraversedrop(var_02[2]);
}
//Function Number: 9
finishtraversedrop(param_00)
{
self endon("killanimscript");
param_00 = param_00 + 4;
for(;;)
{
if(self.origin[2] < param_00)
{
self traversemode("gravity");
break;
}
wait 0.05;
}
}
//Function Number: 10
func_3AFA()
{
self animmode("zonly_physics");
self waittill("killanimscript");
}
//Function Number: 11
func_3AFB(param_00,param_01)
{
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_02 = self getnegotiationstartnode();
self orientmode("face angle",var_02.angles[1]);
var_03 = var_02.var_1A98 - var_02.origin[2];
thread func_3AEB(var_03 - param_01);
self clearanim(%root,0.2);
self setflaggedanimrestart("dog_traverse",level.dogtraverseanims[param_00],1,0.2,1);
animscripts/shared::donotetracks("dog_traverse");
self.var_3682 = 1;
}
//Function Number: 12
func_3AFC(param_00,param_01)
{
self endon("killanimscript");
self traversemode("noclip");
var_02 = self getnegotiationstartnode();
self orientmode("face angle",var_02.angles[1]);
var_03 = self getnegotiationstartnode().origin[2] - self getnegotiationendnode().origin[2];
self.var_3AEE = level.dogtraverseanims["jump_down_40"];
self.var_3AED = %root;
thread func_3AEC(40 - var_03,0.1,param_00,param_01);
self clearanim(%root,0.2);
self setflaggedanimrestart("traverseAnim",self.var_3AEE,1,0.2,1);
animscripts/shared::donotetracks("traverseAnim");
self clearanim(self.var_3AEE,0);
self traversemode("gravity");
self.var_3682 = 1;
self.var_3AED = undefined;
self.var_3AEE = undefined;
}
//Function Number: 13
func_3AFD(param_00,param_01)
{
self endon("killanimscript");
self traversemode("noclip");
var_02 = self getnegotiationstartnode();
self orientmode("face angle",var_02.angles[1]);
thread func_3AEC(param_00 - 40,0.2,param_01);
self clearanim(%root,0.25);
self setflaggedanimrestart("traverseAnim",level.dogtraverseanims["jump_up_40"],1,0.2,1);
animscripts/shared::donotetracks("traverseAnim");
self clearanim(level.dogtraverseanims["jump_up_40"],0);
self traversemode("gravity");
self.var_3682 = 1;
}
//Function Number: 14
func_8116(param_00,param_01)
{
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_02 = self getnegotiationstartnode();
self orientmode("face angle",var_02.angles[1]);
if(!isdefined(var_02.var_1A98))
{
var_02.var_1A98 = var_02.origin[2];
}
var_03 = var_02.var_1A98 - var_02.origin[2];
thread func_3AEB(var_03 - param_01);
self clearanim(%root,0.2);
self setflaggedanimrestart("dog_traverse",level.dogtraverseanims[param_00],1,0.2,1);
animscripts/shared::donotetracks("dog_traverse");
self.var_3682 = 1;
}

View File

@ -0,0 +1,47 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\slide_across_car.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 3
* Decompile Time: 71 ms
* Timestamp: 10/27/2023 2:29:33 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
slide_across_car_dog();
return;
}
func_3B08();
}
//Function Number: 2
func_3B08()
{
var_00 = [];
var_29["interruptDeathAnim"] = 0;
animscripts/traverse/shared::func_3AEF(var_29);
}
//Function Number: 3
slide_across_car_dog()
{
self endon("killanimscript");
self traversemode("noclip");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
self clearanim(%root,0.1);
self setflaggedanimrestart("traverse",level.dogtraverseanims["jump_up_40"],1,0.1,1);
animscripts/shared::donotetracks("traverse");
thread common_scripts\utility::play_sound_in_space("anml_dog_bark",self gettagorigin("tag_eye"));
self clearanim(%root,0);
self setflaggedanimrestart("traverse",level.dogtraverseanims["jump_down_40"],1,0,1);
animscripts/shared::donotetracks("traverse");
self traversemode("gravity");
self.var_3682 = 1;
}

View File

@ -0,0 +1,37 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\step_down.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 47 ms
* Timestamp: 10/27/2023 2:29:33 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFC(40,3);
return;
}
step_down_human();
}
//Function Number: 2
step_down_human()
{
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self.a.movement = "walk";
self traversemode("nogravity");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
self setflaggedanimknoballrestart("stepanim",%step_down_low_wall,%body,1,0.1,1);
self waittillmatch("gravity on","stepanim");
self traversemode("gravity");
animscripts/shared::donotetracks("stepanim");
}

View File

@ -0,0 +1,38 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\step_up.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 44 ms
* Timestamp: 10/27/2023 2:29:34 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFD(40,3);
return;
}
step_up_human();
}
//Function Number: 2
step_up_human()
{
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self.a.movement = "walk";
self traversemode("nogravity");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
self setflaggedanimknoballrestart("stepanim",%step_up_low_wall,%body,1,0.1,1);
self waittillmatch("gravity on","stepanim");
self traversemode("gravity");
animscripts/shared::donotetracks("stepanim");
self setanimknoballrestart(animscripts/run::getcrouchrunanim(),%body,1,0.1,1);
}

View File

@ -0,0 +1,28 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\step_up_32.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 44 ms
* Timestamp: 10/27/2023 2:29:34 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFD(32,5);
return;
}
low_wall_human();
}
//Function Number: 2
low_wall_human()
{
var_00 = [];
animscripts/traverse/shared::func_3AEF(var_41);
}

View File

@ -0,0 +1,28 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\stepup_52.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 43 ms
* Timestamp: 10/27/2023 2:29:35 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFD(52,5);
return;
}
low_wall_human();
}
//Function Number: 2
low_wall_human()
{
var_00 = [];
animscripts/traverse/shared::func_3AEF(var_41);
}

View File

@ -0,0 +1,26 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\trench_jumpout.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 30 ms
* Timestamp: 10/27/2023 2:29:35 AM
*******************************************************************/
//Function Number: 1
main()
{
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self.a.movement = "walk";
self traversemode("nogravity");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
self setflaggedanimknoballrestart("stepanim",%gully_trenchjump,%body,1,0.1,1);
self waittillmatch("gravity on","stepanim");
self traversemode("gravity");
animscripts/shared::donotetracks("stepanim");
self setanimknoballrestart(animscripts/run::getcrouchrunanim(),%body,1,0.1,1);
}

View File

@ -0,0 +1,27 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\wall_dive.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 30 ms
* Timestamp: 10/27/2023 2:29:36 AM
*******************************************************************/
//Function Number: 1
main()
{
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
self setflaggedanimknoballrestart("diveanim",%jump_over_low_wall,%body,1,0.1,1);
self playsound("dive_wall");
self waittillmatch("gravity on","diveanim");
self traversemode("gravity");
animscripts/shared::donotetracks("diveanim");
self.a.movement = "run";
}

View File

@ -0,0 +1,33 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\wall_hop.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 46 ms
* Timestamp: 10/27/2023 2:29:36 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFB("wallhop",40);
return;
}
func_3B00();
}
//Function Number: 2
func_3B00()
{
if(randomint(100) < 30)
{
animscripts/traverse/shared::func_3AEA(%traverse_wallhop_3,39.875);
return;
}
animscripts/traverse/shared::func_3AEA(%traverse_wallhop,39.875);
}

View File

@ -0,0 +1,30 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\wall_over_40.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 49 ms
* Timestamp: 10/27/2023 2:29:36 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFB("window_40",40);
return;
}
low_wall_human();
}
//Function Number: 2
low_wall_human()
{
var_00 = [];
var_29["interruptDeathAnim"] = 0;
var_29["interruptDeathAnim"] = 1;
animscripts/traverse/shared::func_3AEF(var_29);
}

View File

@ -0,0 +1,78 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\wall_over_96.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 3
* Decompile Time: 72 ms
* Timestamp: 10/27/2023 2:29:37 AM
*******************************************************************/
//Function Number: 1
main()
{
self.traversedeath = 1;
func_3B0B(%traverse90,96);
}
//Function Number: 2
func_3B0B(param_00,param_01)
{
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_02 = self getnegotiationstartnode();
self orientmode("face angle",var_02.angles[1]);
var_03 = var_02.var_1A98 - var_02.origin[2];
self setflaggedanimknoballrestart("traverse",param_00,%body,1,0.15,1);
var_04 = gettime();
thread animscripts/notetracks::donotetracksforever("traverse","no clear",::func_3B0C);
if(!animhasnotetrack(param_00,"gravity on"))
{
var_04 = 1.23;
var_05 = 0.2;
wait 5;
self traversemode("gravity");
wait var_05;
return;
}
self waittillmatch("gravity on","traverse");
self traversemode("gravity");
if(!animhasnotetrack(param_00,"blend"))
{
wait 0.2;
return;
}
self waittillmatch("blend","traverse");
}
//Function Number: 3
func_3B0C(param_00)
{
if(param_00 != "traverse_death")
{
return;
}
self endon("killanimscript");
if(self.health == 1)
{
self.a.nodeath = 1;
if(self.traversedeath > 1)
{
self setflaggedanimknoball("deathanim",%traverse90_end_death,%body,1,0.2,1);
}
else
{
self setflaggedanimknoball("deathanim",%traverse90_start_death,%body,1,0.2,1);
}
animscripts/face::saygenericdialogue("death");
}
self.traversedeath++;
}

View File

@ -0,0 +1,25 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\window.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 30 ms
* Timestamp: 10/27/2023 2:29:37 AM
*******************************************************************/
//Function Number: 1
main()
{
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_00 = self getnegotiationstartnode();
self orientmode("face angle",var_00.angles[1]);
self setflaggedanimknoballrestart("diveanim",%windowclimb,%body,1,0.1,1);
self waittillmatch("gravity on","diveanim");
self traversemode("gravity");
animscripts/shared::donotetracks("diveanim");
}

View File

@ -0,0 +1,40 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\window_2.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 44 ms
* Timestamp: 10/27/2023 2:29:38 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFB("wallhop",40);
return;
}
func_3B01(%windowclimb,35);
}
//Function Number: 2
func_3B01(param_00,param_01)
{
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("nogravity");
self traversemode("noclip");
var_02 = self getnegotiationstartnode();
self orientmode("face angle",var_02.angles[1]);
var_03 = var_02.var_1A98 - var_02.origin[2];
self setflaggedanimknoballrestart("traverse",param_00,%body,1,0.15,1);
wait 0.7;
thread animscripts/traverse/shared::func_3AEB(var_03 - param_01);
wait 0.9;
self traversemode("gravity");
animscripts/shared::donotetracks("traverse");
}

View File

@ -0,0 +1,28 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\window_divethrough_36.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 47 ms
* Timestamp: 10/27/2023 2:29:38 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFB("window_40",40);
return;
}
low_wall_human();
}
//Function Number: 2
low_wall_human()
{
var_00 = [];
animscripts/traverse/shared::func_3AEF(var_41);
}

View File

@ -0,0 +1,91 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\window_down.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 4
* Decompile Time: 89 ms
* Timestamp: 10/27/2023 2:29:39 AM
*******************************************************************/
//Function Number: 1
main()
{
var_00 = %windowclimb_fall;
var_01 = %windowclimb_land;
var_02 = 35;
self.desired_anim_pose = "crouch";
animscripts/utility::updateanimpose();
self endon("killanimscript");
self traversemode("noclip");
var_03 = self getnegotiationstartnode();
self orientmode("face angle",var_03.angles[1]);
var_04 = var_03.var_1A98 - var_03.origin[2];
self setflaggedanimknoballrestart("traverse",var_00,%body,1,0.15,1);
thread animscripts/notetracks::donotetracksforever("traverse","stop_traverse_notetracks");
wait 1.5;
var_05 = (0,var_03.angles[1],0);
var_06 = anglestoforward(var_05);
var_06 = var_06 * 85;
var_07 = bullettrace(var_03.origin + var_06,var_03.origin + var_06 + (0,0,-500),0,undefined);
var_08 = var_07["position"][2];
var_09 = var_03.origin[2] - var_08;
var_0A = 0;
for(var_0B = 0;var_0B < level.window_down_height.size;var_0B++)
{
if(var_09 < level.window_down_height[var_0B])
{
continue;
}
var_0A = var_09 - level.window_down_height[var_0B];
}
thread animscripts/traverse/shared::func_3AEB(var_0A * -1);
var_0C = self.origin[2];
var_0D = 0;
level.var_3B03 = [];
for(;;)
{
var_0D = var_0C - self.origin[2];
if(self.origin[2] - var_0D < var_08)
{
break;
}
var_0C = self.origin[2];
wait 0.05;
}
if(isdefined(self.groundtype))
{
self playsound("Land_" + self.groundtype);
}
self notify("stop_traverse_notetracks");
self setflaggedanimknoballrestart("traverse",var_01,%body,1,0.15,1);
self traversemode("gravity");
animscripts/shared::donotetracks("traverse");
}
//Function Number: 2
func_3B04(param_00)
{
level notify("print_this_" + param_00);
level endon("print_this_" + param_00);
wait 0.05;
}
//Function Number: 3
func_3B05(param_00,param_01)
{
wait 0.05;
}
//Function Number: 4
func_3B06(param_00,param_01)
{
level notify("prrint_this_" + param_01);
level endon("prrint_this_" + param_01);
wait 0.05;
}

View File

@ -0,0 +1,30 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\window_over_40.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 45 ms
* Timestamp: 10/27/2023 2:29:39 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFB("window_40",40);
return;
}
jump_through_window_human();
}
//Function Number: 2
jump_through_window_human()
{
var_00 = [];
var_29["interruptDeathAnim"] = 0;
var_29["interruptDeathAnim"] = 1;
animscripts/traverse/shared::func_3AEF(var_29);
}

View File

@ -0,0 +1,30 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\traverse\window_over_quick.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 43 ms
* Timestamp: 10/27/2023 2:29:40 AM
*******************************************************************/
//Function Number: 1
main()
{
if(self.type == "dog")
{
animscripts/traverse/shared::func_3AFB("window_40",40);
return;
}
jump_through_window_human();
}
//Function Number: 2
jump_through_window_human()
{
var_00 = [];
var_29["interruptDeathAnim"] = 0;
var_29["interruptDeathAnim"] = 1;
animscripts/traverse/shared::func_3AEF(var_29);
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,140 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\walk.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 4
* Decompile Time: 76 ms
* Timestamp: 10/27/2023 2:31:02 AM
*******************************************************************/
//Function Number: 1
movewalk()
{
var_00 = undefined;
if(isdefined(self.pathgoalpos) && distancesquared(self.origin,self.pathgoalpos) > 4096)
{
var_00 = "stand";
}
var_01 = [[ self.chooseposefunc ]](var_00);
switch(var_01)
{
case "stand":
if(animscripts/setposemovement::beginstandwalk())
{
return;
}
if(isdefined(self.walk_overrideanim))
{
animscripts/move::movestandmoveoverride(self.walk_overrideanim,self.walk_override_weights);
return;
}
dowalkanim(getwalkanim("straight"));
break;
case "crouch":
if(animscripts/setposemovement::func_C6E())
{
return;
}
dowalkanim(getwalkanim("crouch"));
break;
default:
if(animscripts/setposemovement::beginpronewalk())
{
return;
}
self.a.movement = "walk";
dowalkanim(getwalkanim("prone"));
break;
}
}
//Function Number: 2
dowalkanimoverride(param_00)
{
self endon("movemode");
self clearanim(%combatrun,0.6);
self setanimknoball(%combatrun,%body,1,0.5,self.moveplaybackrate);
if(isarray(self.walk_overrideanim))
{
if(isdefined(self.walk_override_weights))
{
var_01 = common_scripts\utility::choose_from_weighted_array(self.walk_overrideanim,self.walk_override_weights);
}
else
{
var_01 = self.walk_overrideanim[randomint(self.walk_overrideanim.size)];
}
}
else
{
var_01 = self.walk_overrideanim;
}
self setflaggedanimknob("moveanim",var_01,1,0.2);
animscripts/shared::donotetracks("moveanim");
}
//Function Number: 3
getwalkanim(param_00)
{
if(self.stairsstate == "up")
{
return animscripts/utility::moveanim("stairs_up");
}
else if(self.stairsstate == "down")
{
return animscripts/utility::moveanim("stairs_down");
}
var_01 = animscripts/utility::moveanim(param_00);
if(isarray(var_01))
{
var_01 = var_01[randomint(var_01.size)];
}
return var_01;
}
//Function Number: 4
dowalkanim(param_00)
{
self endon("movemode");
var_01 = self.moveplaybackrate;
if(self.stairsstate != "none")
{
var_01 = var_01 * 0.6;
}
if(self.a.var_911 == "stand")
{
if(isdefined(self.enemy))
{
thread animscripts/cqb::cqbtracking();
self setflaggedanimknoball("walkanim",animscripts/cqb::determinecqbanim(),%walk_and_run_loops,1,1,var_01,1);
}
else
{
self setflaggedanimknoball("walkanim",param_00,%body,1,1,var_01,1);
}
animscripts/run::setmovenonforwardanims(animscripts/utility::moveanim("move_b"),animscripts/utility::moveanim("move_l"),animscripts/utility::moveanim("move_r"));
thread animscripts/run::setcombatstandmoveanimweights("walk");
}
else
{
self setflaggedanimknoball("walkanim",param_00,%body,1,1,var_01,1);
animscripts/run::setmovenonforwardanims(animscripts/utility::moveanim("move_b"),animscripts/utility::moveanim("move_l"),animscripts/utility::moveanim("move_r"));
thread animscripts/run::setcombatstandmoveanimweights("walk");
}
animscripts/notetracks::donotetracksfortime(0.2,"walkanim");
thread animscripts/run::stopshootwhilemovingthreads();
}

View File

@ -0,0 +1,126 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: animscripts\weaponlist.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 9
* Decompile Time: 169 ms
* Timestamp: 10/27/2023 2:31:03 AM
*******************************************************************/
//Function Number: 1
usingautomaticweapon()
{
return weaponisauto(self.weapon) || weaponburstcount(self.weapon) > 0;
}
//Function Number: 2
usingsemiautoweapon()
{
return weaponissemiauto(self.weapon);
}
//Function Number: 3
autoshootanimrate()
{
if(usingautomaticweapon())
{
return 0.1 / weaponfiretime(self.weapon);
}
return 0.5;
}
//Function Number: 4
burstshootanimrate()
{
if(usingautomaticweapon())
{
return 0.1 / weaponfiretime(self.weapon);
}
return 0.2;
}
//Function Number: 5
waitaftershot()
{
return 0.25;
}
//Function Number: 6
func_08BA(param_00)
{
if(!usingautomaticweapon() || isdefined(param_00) && param_00 == 1)
{
var_01 = 0.5 + randomfloat(1);
return weaponfiretime(self.weapon) * var_01;
}
return weaponfiretime(self.weapon);
}
//Function Number: 7
refillclip()
{
if(self.weapon == "none")
{
self.bulletsinclip = 0;
return 0;
}
if(weaponclass(self.weapon) == "rocketlauncher")
{
if(!self.a.rocketvisible)
{
thread animscripts/combat_utility::showrocketwhenreloadisdone();
}
}
if(!isdefined(self.bulletsinclip))
{
self.bulletsinclip = weaponclipsize(self.weapon);
}
else
{
self.bulletsinclip = weaponclipsize(self.weapon);
}
if(self.bulletsinclip <= 0)
{
return 0;
}
return 1;
}
//Function Number: 8
add_weapon(param_00,param_01,param_02,param_03,param_04)
{
if(!isdefined(param_02))
{
param_02 = 3;
}
if(!isdefined(param_03))
{
param_02 = 1;
}
if(!isdefined(param_04))
{
param_04 = "rifle";
}
param_00 = tolower(param_00);
level.aiweapon[param_00]["type"] = param_01;
level.aiweapon[param_00]["time"] = param_02;
level.aiweapon[param_00]["clipsize"] = param_03;
level.aiweapon[param_00]["anims"] = param_04;
}
//Function Number: 9
addturret(param_00)
{
level.aiweapon[tolower(param_00)]["type"] = "turret";
}