mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-19 22:47:52 -05:00
Added MW3 Scripts
This commit is contained in:
131
MW3/Xbox/SP/animscripts/animmode.gsc
Normal file
131
MW3/Xbox/SP/animscripts/animmode.gsc
Normal 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);
|
||||
}
|
669
MW3/Xbox/SP/animscripts/animset.gsc
Normal file
669
MW3/Xbox/SP/animscripts/animset.gsc
Normal 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;
|
||||
}
|
655
MW3/Xbox/SP/animscripts/atv.gsc
Normal file
655
MW3/Xbox/SP/animscripts/atv.gsc
Normal 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;
|
||||
}
|
3935
MW3/Xbox/SP/animscripts/battlechatter.gsc
Normal file
3935
MW3/Xbox/SP/animscripts/battlechatter.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1358
MW3/Xbox/SP/animscripts/battlechatter_ai.gsc
Normal file
1358
MW3/Xbox/SP/animscripts/battlechatter_ai.gsc
Normal file
File diff suppressed because it is too large
Load Diff
69
MW3/Xbox/SP/animscripts/civilian.gsc
Normal file
69
MW3/Xbox/SP/animscripts/civilian.gsc
Normal 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)];
|
||||
}
|
1533
MW3/Xbox/SP/animscripts/combat.gsc
Normal file
1533
MW3/Xbox/SP/animscripts/combat.gsc
Normal file
File diff suppressed because it is too large
Load Diff
21
MW3/Xbox/SP/animscripts/combat_say.gsc
Normal file
21
MW3/Xbox/SP/animscripts/combat_say.gsc
Normal 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();
|
||||
}
|
1898
MW3/Xbox/SP/animscripts/combat_utility.gsc
Normal file
1898
MW3/Xbox/SP/animscripts/combat_utility.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1431
MW3/Xbox/SP/animscripts/corner.gsc
Normal file
1431
MW3/Xbox/SP/animscripts/corner.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1534
MW3/Xbox/SP/animscripts/cover_arrival.gsc
Normal file
1534
MW3/Xbox/SP/animscripts/cover_arrival.gsc
Normal file
File diff suppressed because it is too large
Load Diff
982
MW3/Xbox/SP/animscripts/cover_behavior.gsc
Normal file
982
MW3/Xbox/SP/animscripts/cover_behavior.gsc
Normal 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;
|
||||
}
|
24
MW3/Xbox/SP/animscripts/cover_crouch.gsc
Normal file
24
MW3/Xbox/SP/animscripts/cover_crouch.gsc
Normal 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");
|
||||
}
|
47
MW3/Xbox/SP/animscripts/cover_left.gsc
Normal file
47
MW3/Xbox/SP/animscripts/cover_left.gsc
Normal 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;
|
||||
}
|
313
MW3/Xbox/SP/animscripts/cover_prone.gsc
Normal file
313
MW3/Xbox/SP/animscripts/cover_prone.gsc
Normal 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);
|
||||
}
|
47
MW3/Xbox/SP/animscripts/cover_right.gsc
Normal file
47
MW3/Xbox/SP/animscripts/cover_right.gsc
Normal 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;
|
||||
}
|
23
MW3/Xbox/SP/animscripts/cover_stand.gsc
Normal file
23
MW3/Xbox/SP/animscripts/cover_stand.gsc
Normal 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");
|
||||
}
|
856
MW3/Xbox/SP/animscripts/cover_wall.gsc
Normal file
856
MW3/Xbox/SP/animscripts/cover_wall.gsc
Normal 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]);
|
||||
}
|
193
MW3/Xbox/SP/animscripts/cqb.gsc
Normal file
193
MW3/Xbox/SP/animscripts/cqb.gsc
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
933
MW3/Xbox/SP/animscripts/death.gsc
Normal file
933
MW3/Xbox/SP/animscripts/death.gsc
Normal 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;
|
||||
}
|
309
MW3/Xbox/SP/animscripts/door.gsc
Normal file
309
MW3/Xbox/SP/animscripts/door.gsc
Normal 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;
|
||||
}
|
||||
}
|
349
MW3/Xbox/SP/animscripts/face.gsc
Normal file
349
MW3/Xbox/SP/animscripts/face.gsc
Normal 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;
|
||||
}
|
23
MW3/Xbox/SP/animscripts/first_frame.gsc
Normal file
23
MW3/Xbox/SP/animscripts/first_frame.gsc
Normal 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");
|
||||
}
|
95
MW3/Xbox/SP/animscripts/flashed.gsc
Normal file
95
MW3/Xbox/SP/animscripts/flashed.gsc
Normal 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;
|
||||
}
|
99
MW3/Xbox/SP/animscripts/grenade_cower.gsc
Normal file
99
MW3/Xbox/SP/animscripts/grenade_cower.gsc
Normal 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;
|
||||
}
|
98
MW3/Xbox/SP/animscripts/grenade_return_throw.gsc
Normal file
98
MW3/Xbox/SP/animscripts/grenade_return_throw.gsc
Normal 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");
|
||||
}
|
629
MW3/Xbox/SP/animscripts/init.gsc
Normal file
629
MW3/Xbox/SP/animscripts/init.gsc
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
613
MW3/Xbox/SP/animscripts/init_move_transitions.gsc
Normal file
613
MW3/Xbox/SP/animscripts/init_move_transitions.gsc
Normal 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];
|
||||
}
|
1564
MW3/Xbox/SP/animscripts/melee.gsc
Normal file
1564
MW3/Xbox/SP/animscripts/melee.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1110
MW3/Xbox/SP/animscripts/move.gsc
Normal file
1110
MW3/Xbox/SP/animscripts/move.gsc
Normal file
File diff suppressed because it is too large
Load Diff
986
MW3/Xbox/SP/animscripts/notetracks.gsc
Normal file
986
MW3/Xbox/SP/animscripts/notetracks.gsc
Normal 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();
|
||||
}
|
1573
MW3/Xbox/SP/animscripts/pain.gsc
Normal file
1573
MW3/Xbox/SP/animscripts/pain.gsc
Normal file
File diff suppressed because it is too large
Load Diff
284
MW3/Xbox/SP/animscripts/reactions.gsc
Normal file
284
MW3/Xbox/SP/animscripts/reactions.gsc
Normal 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();
|
||||
}
|
||||
}
|
967
MW3/Xbox/SP/animscripts/run.gsc
Normal file
967
MW3/Xbox/SP/animscripts/run.gsc
Normal 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);
|
||||
}
|
60
MW3/Xbox/SP/animscripts/scripted.gsc
Normal file
60
MW3/Xbox/SP/animscripts/scripted.gsc
Normal 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;
|
||||
}
|
967
MW3/Xbox/SP/animscripts/setposemovement.gsc
Normal file
967
MW3/Xbox/SP/animscripts/setposemovement.gsc
Normal 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);
|
||||
}
|
823
MW3/Xbox/SP/animscripts/shared.gsc
Normal file
823
MW3/Xbox/SP/animscripts/shared.gsc
Normal 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);
|
||||
}
|
724
MW3/Xbox/SP/animscripts/shoot_behavior.gsc
Normal file
724
MW3/Xbox/SP/animscripts/shoot_behavior.gsc
Normal 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;
|
||||
}
|
||||
}
|
898
MW3/Xbox/SP/animscripts/snowmobile.gsc
Normal file
898
MW3/Xbox/SP/animscripts/snowmobile.gsc
Normal 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;
|
||||
}
|
823
MW3/Xbox/SP/animscripts/squadmanager.gsc
Normal file
823
MW3/Xbox/SP/animscripts/squadmanager.gsc
Normal 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;
|
||||
}
|
||||
}
|
258
MW3/Xbox/SP/animscripts/stop.gsc
Normal file
258
MW3/Xbox/SP/animscripts/stop.gsc
Normal 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"] ]]();
|
||||
}
|
335
MW3/Xbox/SP/animscripts/track.gsc
Normal file
335
MW3/Xbox/SP/animscripts/track.gsc
Normal 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;
|
||||
}
|
||||
}
|
24
MW3/Xbox/SP/animscripts/traverse/crawl.gsc
Normal file
24
MW3/Xbox/SP/animscripts/traverse/crawl.gsc
Normal 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";
|
||||
}
|
25
MW3/Xbox/SP/animscripts/traverse/crouch_jump_down_40.gsc
Normal file
25
MW3/Xbox/SP/animscripts/traverse/crouch_jump_down_40.gsc
Normal 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");
|
||||
}
|
25
MW3/Xbox/SP/animscripts/traverse/duck_under_56.gsc
Normal file
25
MW3/Xbox/SP/animscripts/traverse/duck_under_56.gsc
Normal 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");
|
||||
}
|
24
MW3/Xbox/SP/animscripts/traverse/fence_climb.gsc
Normal file
24
MW3/Xbox/SP/animscripts/traverse/fence_climb.gsc
Normal 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");
|
||||
}
|
31
MW3/Xbox/SP/animscripts/traverse/jump_across_100.gsc
Normal file
31
MW3/Xbox/SP/animscripts/traverse/jump_across_100.gsc
Normal 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");
|
||||
}
|
31
MW3/Xbox/SP/animscripts/traverse/jump_across_72.gsc
Normal file
31
MW3/Xbox/SP/animscripts/traverse/jump_across_72.gsc
Normal 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");
|
||||
}
|
31
MW3/Xbox/SP/animscripts/traverse/jump_over_high_wall.gsc
Normal file
31
MW3/Xbox/SP/animscripts/traverse/jump_over_high_wall.gsc
Normal 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");
|
||||
}
|
25
MW3/Xbox/SP/animscripts/traverse/jump_up_80.gsc
Normal file
25
MW3/Xbox/SP/animscripts/traverse/jump_up_80.gsc
Normal 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;
|
||||
}
|
28
MW3/Xbox/SP/animscripts/traverse/jumpdown_130.gsc
Normal file
28
MW3/Xbox/SP/animscripts/traverse/jumpdown_130.gsc
Normal 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);
|
||||
}
|
28
MW3/Xbox/SP/animscripts/traverse/jumpdown_40.gsc
Normal file
28
MW3/Xbox/SP/animscripts/traverse/jumpdown_40.gsc
Normal 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);
|
||||
}
|
28
MW3/Xbox/SP/animscripts/traverse/jumpdown_56.gsc
Normal file
28
MW3/Xbox/SP/animscripts/traverse/jumpdown_56.gsc
Normal 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);
|
||||
}
|
28
MW3/Xbox/SP/animscripts/traverse/jumpdown_96.gsc
Normal file
28
MW3/Xbox/SP/animscripts/traverse/jumpdown_96.gsc
Normal 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);
|
||||
}
|
40
MW3/Xbox/SP/animscripts/traverse/ladder_down.gsc
Normal file
40
MW3/Xbox/SP/animscripts/traverse/ladder_down.gsc
Normal 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";
|
||||
}
|
51
MW3/Xbox/SP/animscripts/traverse/ladder_up.gsc
Normal file
51
MW3/Xbox/SP/animscripts/traverse/ladder_up.gsc
Normal 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";
|
||||
}
|
340
MW3/Xbox/SP/animscripts/traverse/shared.gsc
Normal file
340
MW3/Xbox/SP/animscripts/traverse/shared.gsc
Normal 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;
|
||||
}
|
47
MW3/Xbox/SP/animscripts/traverse/slide_across_car.gsc
Normal file
47
MW3/Xbox/SP/animscripts/traverse/slide_across_car.gsc
Normal 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;
|
||||
}
|
37
MW3/Xbox/SP/animscripts/traverse/step_down.gsc
Normal file
37
MW3/Xbox/SP/animscripts/traverse/step_down.gsc
Normal 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");
|
||||
}
|
38
MW3/Xbox/SP/animscripts/traverse/step_up.gsc
Normal file
38
MW3/Xbox/SP/animscripts/traverse/step_up.gsc
Normal 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);
|
||||
}
|
28
MW3/Xbox/SP/animscripts/traverse/step_up_32.gsc
Normal file
28
MW3/Xbox/SP/animscripts/traverse/step_up_32.gsc
Normal 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);
|
||||
}
|
28
MW3/Xbox/SP/animscripts/traverse/stepup_52.gsc
Normal file
28
MW3/Xbox/SP/animscripts/traverse/stepup_52.gsc
Normal 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);
|
||||
}
|
26
MW3/Xbox/SP/animscripts/traverse/trench_jumpout.gsc
Normal file
26
MW3/Xbox/SP/animscripts/traverse/trench_jumpout.gsc
Normal 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);
|
||||
}
|
27
MW3/Xbox/SP/animscripts/traverse/wall_dive.gsc
Normal file
27
MW3/Xbox/SP/animscripts/traverse/wall_dive.gsc
Normal 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";
|
||||
}
|
33
MW3/Xbox/SP/animscripts/traverse/wall_hop.gsc
Normal file
33
MW3/Xbox/SP/animscripts/traverse/wall_hop.gsc
Normal 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);
|
||||
}
|
30
MW3/Xbox/SP/animscripts/traverse/wall_over_40.gsc
Normal file
30
MW3/Xbox/SP/animscripts/traverse/wall_over_40.gsc
Normal 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);
|
||||
}
|
78
MW3/Xbox/SP/animscripts/traverse/wall_over_96.gsc
Normal file
78
MW3/Xbox/SP/animscripts/traverse/wall_over_96.gsc
Normal 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++;
|
||||
}
|
25
MW3/Xbox/SP/animscripts/traverse/window.gsc
Normal file
25
MW3/Xbox/SP/animscripts/traverse/window.gsc
Normal 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");
|
||||
}
|
40
MW3/Xbox/SP/animscripts/traverse/window_2.gsc
Normal file
40
MW3/Xbox/SP/animscripts/traverse/window_2.gsc
Normal 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");
|
||||
}
|
28
MW3/Xbox/SP/animscripts/traverse/window_divethrough_36.gsc
Normal file
28
MW3/Xbox/SP/animscripts/traverse/window_divethrough_36.gsc
Normal 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);
|
||||
}
|
91
MW3/Xbox/SP/animscripts/traverse/window_down.gsc
Normal file
91
MW3/Xbox/SP/animscripts/traverse/window_down.gsc
Normal 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;
|
||||
}
|
30
MW3/Xbox/SP/animscripts/traverse/window_over_40.gsc
Normal file
30
MW3/Xbox/SP/animscripts/traverse/window_over_40.gsc
Normal 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);
|
||||
}
|
30
MW3/Xbox/SP/animscripts/traverse/window_over_quick.gsc
Normal file
30
MW3/Xbox/SP/animscripts/traverse/window_over_quick.gsc
Normal 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);
|
||||
}
|
2240
MW3/Xbox/SP/animscripts/utility.gsc
Normal file
2240
MW3/Xbox/SP/animscripts/utility.gsc
Normal file
File diff suppressed because it is too large
Load Diff
140
MW3/Xbox/SP/animscripts/walk.gsc
Normal file
140
MW3/Xbox/SP/animscripts/walk.gsc
Normal 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();
|
||||
}
|
126
MW3/Xbox/SP/animscripts/weaponlist.gsc
Normal file
126
MW3/Xbox/SP/animscripts/weaponlist.gsc
Normal 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";
|
||||
}
|
Reference in New Issue
Block a user