mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
1490 lines
37 KiB
Plaintext
1490 lines
37 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: death.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 47
|
|
* Decompile Time: 719 ms
|
|
* Timestamp: 4/22/2024 2:00:27 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
init_animset_death()
|
|
{
|
|
var_00 = [];
|
|
var_00["directed_energy_stand_front_head"] = [%stand_death_head_front_a_dea];
|
|
var_00["directed_energy_stand_front_legs"] = [%stand_death_legs_front_a_dea];
|
|
var_00["directed_energy_stand_front_default"] = [%stand_death_torso_front_a_dea];
|
|
var_00["directed_energy_stand_back_default"] = [%stand_death_torso_back_a_dea];
|
|
var_00["strong_legs"] = [%death_shotgun_legs,%death_stand_sniper_leg];
|
|
var_00["strong_torso_lower"] = [%death_shotgun_legs,%death_stand_sniper_leg,%death_shotgun_back_v1,%exposed_death_blowback,%death_stand_sniper_chest1,%death_stand_sniper_chest2,%death_stand_sniper_spin1];
|
|
var_00["strong_default"] = [%death_shotgun_legs,%death_stand_sniper_leg,%death_shotgun_back_v1,%exposed_death_blowback,%death_stand_sniper_chest1,%death_stand_sniper_chest2,%death_stand_sniper_spin1];
|
|
var_00["strong_right"] = [%death_shotgun_spinl,%death_stand_sniper_spin1,%death_stand_sniper_chest1,%death_stand_sniper_chest2];
|
|
var_00["strong_left"] = [%death_shotgun_spinr,%death_stand_sniper_spin2,%death_stand_sniper_chest1,%death_stand_sniper_chest2];
|
|
var_00["running_forward"] = [%run_death_facedown,%run_death_roll,%run_death_fallonback,%run_death_flop];
|
|
var_00["running_forward_f"] = [%run_death_fallonback];
|
|
var_00["stand_pistol_forward"] = [%pistol_death_2];
|
|
var_00["stand_pistol_front"] = [%pistol_death_2];
|
|
var_00["stand_pistol_groin"] = [%pistol_death_3,%pistol_death_3];
|
|
var_00["stand_pistol_torso_upper"] = [%pistol_death_3];
|
|
var_00["stand_pistol_upper_body"] = [%pistol_death_4];
|
|
var_00["stand_pistol_default"] = [%pistol_death_1];
|
|
var_00["stand_pistol_torso_upper"] = [%pistol_death_3,%pistol_death_1];
|
|
var_00["stand_pistol_lower_body"] = [%pistol_death_2];
|
|
var_00["cover_right_stand"] = [%corner_standr_deatha,%corner_standr_deathb];
|
|
var_00["cover_right_crouch_head"] = [%cornercrr_alert_death_slideout];
|
|
var_00["cover_right_crouch_default"] = [%cornercrr_alert_death_slideout,%cornercrr_alert_death_back];
|
|
var_00["cover_left_stand"] = [%corner_standl_deatha,%corner_standl_deathb];
|
|
var_00["cover_left_crouch"] = [%cornercrl_death_side,%cornercrl_death_back];
|
|
var_00["cover_stand"] = [%coverstand_death_left,%coverstand_death_right];
|
|
var_00["cover_crouch_head"] = %covercrouch_death_1;
|
|
var_00["cover_crouch_back"] = %covercrouch_death_3;
|
|
var_00["cover_crouch_default"] = %covercrouch_death_2;
|
|
var_00["saw_stand"] = [%saw_gunner_death];
|
|
var_00["saw_crouch"] = [%saw_gunner_lowwall_death];
|
|
var_00["saw_prone"] = [%saw_gunner_prone_death];
|
|
var_00["dying_crawl_crouch"] = [%dying_back_death_v2,%dying_back_death_v3,%dying_back_death_v4];
|
|
var_00["dying_crawl_prone"] = [%dying_crawl_death_v1,%dying_crawl_death_v2];
|
|
var_00["stand_lower_body"] = [%exposed_death_groin,%stand_death_leg];
|
|
var_00["stand_lower_body_extended"] = [%stand_death_crotch,%stand_death_guts];
|
|
var_00["stand_head"] = [%exposed_death_headshot,%exposed_death_flop];
|
|
var_00["stand_neck"] = [%exposed_death_neckgrab];
|
|
var_00["stand_left_shoulder"] = [%exposed_death_twist,%stand_death_shoulder_spin,%stand_death_shoulderback];
|
|
var_00["stand_torso_upper"] = [%stand_death_tumbleforward,%stand_death_stumbleforward];
|
|
var_00["stand_torso_upper_extended"] = [%stand_death_fallside];
|
|
var_00["stand_front_head"] = [%stand_death_face,%stand_death_headshot_slowfall];
|
|
var_00["stand_front_head_extended"] = [%stand_death_head_straight_back];
|
|
var_00["stand_front_torso"] = [%stand_death_tumbleback];
|
|
var_00["stand_front_torso_extended"] = [%stand_death_chest_stunned];
|
|
var_00["stand_back"] = [%exposed_death_falltoknees,%exposed_death_falltoknees_02];
|
|
var_00["stand_default"] = [%exposed_death_02,%exposed_death_nerve];
|
|
var_00["stand_default_firing"] = [%exposed_death_firing_02,%exposed_death_firing];
|
|
var_00["stand_backup_default"] = %exposed_death;
|
|
var_00["crouch_head"] = [%exposed_crouch_death_fetal];
|
|
var_00["crouch_torso"] = [%exposed_crouch_death_flip];
|
|
var_00["crouch_default1"] = [%exposed_crouch_death_twist];
|
|
var_00["crouch_default2"] = [%exposed_crouch_death_flip];
|
|
var_00["melee_standing_front"] = [%melee_death_standing_front];
|
|
var_00["melee_standing_back"] = [%melee_death_standing_back];
|
|
var_00["melee_standing_left"] = [%melee_death_standing_left];
|
|
var_00["melee_standing_right"] = [%melee_death_standing_right];
|
|
var_00["melee_crouching_front"] = [%melee_death_crouching_front];
|
|
var_00["melee_crouching_back"] = [%melee_death_crouching_back];
|
|
var_00["melee_crouching_left"] = [%melee_death_crouching_left];
|
|
var_00["melee_crouching_right"] = [%melee_death_crouching_right];
|
|
var_00["melee_exo_front_stand_stand"] = [%npc_sp_exo_melee_stand_front];
|
|
var_00["melee_exo_back_stand_stand"] = [%npc_sp_exo_melee_stand_back];
|
|
var_00["melee_exo_right_stand_stand"] = [%npc_sp_exo_melee_stand_right];
|
|
var_00["melee_exo_left_stand_stand"] = [%npc_sp_exo_melee_stand_left];
|
|
var_00["melee_exo_front_stand_crouch"] = [%npc_sp_exo_melee_kneel_front];
|
|
var_00["melee_exo_back_stand_crouch"] = [%npc_sp_exo_melee_kneel_back];
|
|
var_00["melee_exo_left_stand_crouch"] = [%npc_sp_exo_melee_kneel_left];
|
|
var_00["melee_exo_right_stand_crouch"] = [%npc_sp_exo_melee_kneel_right];
|
|
var_00["melee_exo_front_stand_prone"] = [%npc_sp_exo_melee_prone_front];
|
|
var_00["melee_exo_back_stand_prone"] = [%npc_sp_exo_melee_prone_back];
|
|
var_00["melee_exo_left_stand_prone"] = [%npc_sp_exo_melee_prone_left];
|
|
var_00["melee_exo_right_stand_prone"] = [%npc_sp_exo_melee_prone_right];
|
|
var_00["melee_exo_front_crouch_stand"] = [%npc_sp_exo_melee_stand_front];
|
|
var_00["melee_exo_back_crouch_stand"] = [%npc_sp_exo_melee_stand_back];
|
|
var_00["melee_exo_left_crouch_stand"] = [%npc_sp_exo_melee_stand_left];
|
|
var_00["melee_exo_right_crouch_stand"] = [%npc_sp_exo_melee_stand_right];
|
|
var_00["melee_exo_front_crouch_crouch"] = [%npc_sp_exo_melee_kneel_front];
|
|
var_00["melee_exo_back_crouch_crouch"] = [%npc_sp_exo_melee_kneel_back];
|
|
var_00["melee_exo_left_crouch_crouch"] = [%npc_sp_exo_melee_kneel_left];
|
|
var_00["melee_exo_right_crouch_crouch"] = [%npc_sp_exo_melee_kneel_right];
|
|
var_00["melee_exo_front_crouch_prone"] = [%npc_sp_exo_melee_prone_front];
|
|
var_00["melee_exo_back_crouch_prone"] = [%npc_sp_exo_melee_prone_back];
|
|
var_00["melee_exo_left_crouch_prone"] = [%npc_sp_exo_melee_prone_left];
|
|
var_00["melee_exo_right_crouch_prone"] = [%npc_sp_exo_melee_prone_right];
|
|
var_00["melee_exo_front_prone_stand"] = [%npc_sp_exo_melee_stand_front];
|
|
var_00["melee_exo_back_prone_stand"] = [%npc_sp_exo_melee_stand_back];
|
|
var_00["melee_exo_left_prone_stand"] = [%npc_sp_exo_melee_stand_left];
|
|
var_00["melee_exo_right_prone_stand"] = [%npc_sp_exo_melee_stand_right];
|
|
var_00["melee_exo_front_prone_crouch"] = [%npc_sp_exo_melee_kneel_front];
|
|
var_00["melee_exo_back_prone_crouch"] = [%npc_sp_exo_melee_kneel_back];
|
|
var_00["melee_exo_left_prone_crouch"] = [%npc_sp_exo_melee_kneel_left];
|
|
var_00["melee_exo_right_prone_crouch"] = [%npc_sp_exo_melee_kneel_right];
|
|
var_00["melee_exo_front_prone_prone"] = [%npc_sp_exo_melee_prone_front];
|
|
var_00["melee_exo_back_prone_prone"] = [%npc_sp_exo_melee_prone_back];
|
|
var_00["melee_exo_left_prone_prone"] = [%npc_sp_exo_melee_prone_left];
|
|
var_00["melee_exo_right_prone_prone"] = [%npc_sp_exo_melee_prone_right];
|
|
var_00["melee_exo_stand_front_head"] = [%npc_sp_exo_melee_stand_front_head];
|
|
var_00["melee_exo_stand_back_head"] = [%npc_sp_exo_melee_stand_back_head];
|
|
var_00["melee_exo_stand_left_head"] = [%npc_sp_exo_melee_stand_left_head];
|
|
var_00["melee_exo_stand_right_head"] = [%npc_sp_exo_melee_stand_right_head];
|
|
var_00["melee_exo_crouch_front_head"] = [%npc_sp_exo_melee_kneel_front_head];
|
|
var_00["melee_exo_crouch_back_head"] = [%npc_sp_exo_melee_kneel_back_head];
|
|
var_00["melee_exo_crouch_left_head"] = [%npc_sp_exo_melee_kneel_left_head];
|
|
var_00["melee_exo_crouch_right_head"] = [%npc_sp_exo_melee_kneel_right_head];
|
|
var_00["melee_exo_prone_front_head"] = [%npc_sp_exo_melee_prone_front_head];
|
|
var_00["melee_exo_prone_back_head"] = [%npc_sp_exo_melee_prone_back_head];
|
|
var_00["melee_exo_prone_left_head"] = [%npc_sp_exo_melee_prone_left_head];
|
|
var_00["melee_exo_prone_right_head"] = [%npc_sp_exo_melee_prone_right_head];
|
|
var_00["melee_exo_front_lower"] = [%stand_death_crotch];
|
|
level.archetypes["soldier"]["death"] = var_00;
|
|
}
|
|
|
|
//Function Number: 2
|
|
main()
|
|
{
|
|
self endon("killanimscript");
|
|
self stopsounds();
|
|
var_00 = 0.3;
|
|
self clearanim(%scripted_talking,var_00);
|
|
maps\_anim::disabledefaultfacialanims(0);
|
|
self hudoutlinedisable();
|
|
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.deathanim))
|
|
{
|
|
playdeathanim(self.deathanim);
|
|
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(%animscript_root,0.3);
|
|
if(!animscripts\utility::damagelocationisany("head","helmet") || (self.damagemod == "MOD_MELEE" || self.damagemod == "MOD_MELEE_ALT") && isdefined(self.attacker))
|
|
{
|
|
if(self.diequietly)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
playdeathsound();
|
|
}
|
|
}
|
|
|
|
if(var_02 && playexplodedeathanim())
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self.specialdeathfunc))
|
|
{
|
|
if([[ self.specialdeathfunc ]]())
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(specialdeath())
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_03 = getdeathanim();
|
|
playdeathanim(var_03);
|
|
}
|
|
|
|
//Function Number: 3
|
|
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: 4
|
|
cross2d(param_00,param_01)
|
|
{
|
|
return param_00[0] * param_01[1] - param_01[0] * param_00[1];
|
|
}
|
|
|
|
//Function Number: 5
|
|
meleegetattackercardinaldirection(param_00,param_01)
|
|
{
|
|
var_02 = vectordot(param_01,param_00);
|
|
var_03 = cos(60);
|
|
if(squared(var_02) < squared(var_03))
|
|
{
|
|
if(cross2d(param_00,param_01) > 0)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 3;
|
|
}
|
|
|
|
if(var_02 < 0)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 2;
|
|
}
|
|
|
|
//Function Number: 6
|
|
orientmeleevictim()
|
|
{
|
|
if((self.damagemod == "MOD_MELEE" || self.damagemod == "MOD_MELEE_ALT") && isdefined(self.attacker))
|
|
{
|
|
if(isdefined(self.altmeleedeath) && isdefined(self.altmeleevictimorientation))
|
|
{
|
|
var_00 = self.altmeleevictimorientation;
|
|
self.altmeleevictimorientation = undefined;
|
|
}
|
|
else
|
|
{
|
|
var_00 = getorientedmeleevictimtargetyaw();
|
|
}
|
|
|
|
self orientmode("face angle",var_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 7
|
|
getorientedmeleevictimtargetyaw()
|
|
{
|
|
var_00 = self.origin - self.attacker.origin;
|
|
var_01 = anglestoforward(self.angles);
|
|
var_02 = vectornormalize((var_00[0],var_00[1],0));
|
|
var_03 = vectornormalize((var_01[0],var_01[1],0));
|
|
var_04 = meleegetattackercardinaldirection(var_03,var_02);
|
|
var_05 = var_04 * 90;
|
|
var_06 = (-1 * var_02[0],-1 * var_02[1],0);
|
|
var_07 = rotatevector(var_06,(0,var_05,0));
|
|
var_08 = vectortoyaw(var_07);
|
|
return var_08;
|
|
}
|
|
|
|
//Function Number: 8
|
|
man_overboard()
|
|
{
|
|
if(getdvar("mapname") != "sanfran_b")
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = getentarray("enemy_overboard_achievement_trigger","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 thread man_overboard_helper(self);
|
|
}
|
|
}
|
|
|
|
//Function Number: 9
|
|
man_overboard_helper(param_00)
|
|
{
|
|
while(isdefined(param_00))
|
|
{
|
|
if(self istouching(param_00) && isdefined(level.player.man_overboard))
|
|
{
|
|
maps\_utility::giveachievement_wrapper("LEVEL_12A");
|
|
break;
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
playdeathanim(param_00)
|
|
{
|
|
if(self.damagemod == "MOD_MELEE_ALT" && getdvar("mapname","undefined") == "sanfran_b")
|
|
{
|
|
thread man_overboard();
|
|
}
|
|
|
|
if(!animhasnotetrack(param_00,"dropgun") && !animhasnotetrack(param_00,"fire_spray"))
|
|
{
|
|
animscripts\shared::dropallaiweapons();
|
|
}
|
|
|
|
if(!isdefined(self.nomeleedeathorient) || !self.nomeleedeathorient)
|
|
{
|
|
orientmeleevictim();
|
|
}
|
|
|
|
self setflaggedanimknoballrestart("deathanim",param_00,%body,1,0.1);
|
|
animscripts\face::playfacialanim(param_00,"death");
|
|
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"))
|
|
{
|
|
if(self.damagemod == "MOD_MELEE" || self.damagemod == "MOD_MELEE_ALT")
|
|
{
|
|
var_01 = 0.7;
|
|
}
|
|
else
|
|
{
|
|
var_01 = 0.35;
|
|
}
|
|
|
|
thread waitforragdoll(getanimlength(param_00) * var_01);
|
|
}
|
|
|
|
if(!isdefined(self.skipdeathanim))
|
|
{
|
|
thread playdeathfx();
|
|
}
|
|
|
|
self endon("forcedRagdoll");
|
|
if(self.damagemod != "MOD_MELEE")
|
|
{
|
|
thread updatecheckforceragdoll();
|
|
thread checkforceragdoll();
|
|
}
|
|
|
|
animscripts\shared::donotetracks("deathanim");
|
|
animscripts\shared::dropallaiweapons();
|
|
self notify("endPlayDeathAnim");
|
|
}
|
|
|
|
//Function Number: 11
|
|
updatecheckforceragdoll()
|
|
{
|
|
self endon("endPlayDeathAnim");
|
|
self endon("forcedRagdoll");
|
|
wait(0.25);
|
|
while(isdefined(self))
|
|
{
|
|
self queryshouldearlyragdoll();
|
|
wait(0.2);
|
|
}
|
|
}
|
|
|
|
//Function Number: 12
|
|
checkforceragdoll()
|
|
{
|
|
self endon("endPlayDeathAnim");
|
|
while(isdefined(self))
|
|
{
|
|
self waittill("ragdoll_early_result",var_00);
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(var_00)
|
|
{
|
|
self startragdoll();
|
|
animscripts\shared::dropallaiweapons();
|
|
break;
|
|
}
|
|
|
|
self waittill("ragdoll_early_result",var_00);
|
|
}
|
|
|
|
self notify("forcedRagdoll");
|
|
}
|
|
|
|
//Function Number: 13
|
|
waitforragdoll(param_00)
|
|
{
|
|
wait(param_00);
|
|
if(isdefined(self))
|
|
{
|
|
animscripts\shared::dropallaiweapons();
|
|
}
|
|
|
|
if(isdefined(self) && !isdefined(self.noragdoll))
|
|
{
|
|
self startragdoll();
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
playdeathfx()
|
|
{
|
|
self endon("killanimscript");
|
|
if(self.stairsstate != "none")
|
|
{
|
|
return;
|
|
}
|
|
|
|
wait(2);
|
|
play_blood_pool();
|
|
}
|
|
|
|
//Function Number: 15
|
|
play_blood_pool(param_00,param_01)
|
|
{
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self.skipbloodpool))
|
|
{
|
|
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: 16
|
|
specialdeath()
|
|
{
|
|
if(self.a.special == "none")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.damagemod == "MOD_MELEE" || self.damagemod == "MOD_MELEE_ALT")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
switch(self.a.special)
|
|
{
|
|
case "cover_right":
|
|
if(self.a.pose == "stand")
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","cover_right_stand");
|
|
dodeathfromarray(var_00);
|
|
}
|
|
else
|
|
{
|
|
var_00 = [];
|
|
if(animscripts\utility::damagelocationisany("head","neck"))
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","cover_right_crouch_head");
|
|
}
|
|
else
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","cover_right_crouch_default");
|
|
}
|
|
|
|
dodeathfromarray(var_00);
|
|
}
|
|
return 1;
|
|
|
|
case "cover_left":
|
|
if(self.a.pose == "stand")
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","cover_left_stand");
|
|
dodeathfromarray(var_00);
|
|
}
|
|
else
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","cover_left_crouch");
|
|
dodeathfromarray(var_00);
|
|
}
|
|
return 1;
|
|
|
|
case "cover_stand":
|
|
var_00 = animscripts\utility::lookupanim("death","cover_stand");
|
|
dodeathfromarray(var_00);
|
|
return 1;
|
|
|
|
case "cover_crouch":
|
|
var_00 = [];
|
|
if(animscripts\utility::damagelocationisany("head","neck") && self.damageyaw > 135 || self.damageyaw <= -45)
|
|
{
|
|
var_00[var_00.size] = animscripts\utility::lookupanim("death","cover_crouch_head");
|
|
}
|
|
|
|
if(self.damageyaw > -45 && self.damageyaw <= 45)
|
|
{
|
|
var_00[var_00.size] = animscripts\utility::lookupanim("death","cover_crouch_back");
|
|
}
|
|
|
|
var_00[var_00.size] = animscripts\utility::lookupanim("death","cover_crouch_default");
|
|
dodeathfromarray(var_00);
|
|
return 1;
|
|
|
|
case "saw":
|
|
if(self.a.pose == "stand")
|
|
{
|
|
dodeathfromarray(animscripts\utility::lookupanim("death","saw_stand"));
|
|
}
|
|
else if(self.a.pose == "crouch")
|
|
{
|
|
dodeathfromarray(animscripts\utility::lookupanim("death","saw_crouch"));
|
|
}
|
|
else
|
|
{
|
|
dodeathfromarray(animscripts\utility::lookupanim("death","saw_prone"));
|
|
}
|
|
return 1;
|
|
|
|
case "dying_crawl":
|
|
if(isdefined(self.a.onback) && self.a.pose == "crouch")
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","dying_crawl_crouch");
|
|
dodeathfromarray(var_00);
|
|
}
|
|
else
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","dying_crawl_prone");
|
|
dodeathfromarray(var_00);
|
|
}
|
|
return 1;
|
|
|
|
case "stumbling_pain":
|
|
playdeathanim(self.a.stumblingpainanimseq[self.a.stumblingpainanimseq.size - 1]);
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 17
|
|
dodeathfromarray(param_00)
|
|
{
|
|
var_01 = param_00[randomint(param_00.size)];
|
|
playdeathanim(var_01);
|
|
if(isdefined(self.deathanimscript))
|
|
{
|
|
self [[ self.deathanimscript ]]();
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
playdeathsound()
|
|
{
|
|
if(!animscripts\utility::damagelocationisany("head","helmet"))
|
|
{
|
|
if(!self.diequietly)
|
|
{
|
|
animscripts\face::saygenericdialogue("pain_small");
|
|
if(isdefined(self.team))
|
|
{
|
|
maps\_dds::dds_notify_mod(self.team != "allies");
|
|
}
|
|
}
|
|
}
|
|
else if(isdefined(self.team))
|
|
{
|
|
maps\_dds::dds_notify_mod(self.team != "allies","headshot");
|
|
}
|
|
|
|
if((self.damagemod == "MOD_MELEE" || self.damagemod == "MOD_MELEE_ALT") && isdefined(self.attacker))
|
|
{
|
|
animscripts\face::saygenericdialogue("melee_death");
|
|
return;
|
|
}
|
|
|
|
animscripts\face::saygenericdialogue("death");
|
|
}
|
|
|
|
//Function Number: 19
|
|
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: 20
|
|
helmetpop()
|
|
{
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(self.hatmodel))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = getpartname(self.hatmodel,0);
|
|
var_01 = spawn("script_model",self.origin + (0,0,64));
|
|
var_01 setmodel(self.hatmodel);
|
|
var_01.origin = self gettagorigin(var_00);
|
|
var_01.angles = self gettagangles(var_00);
|
|
var_01 thread helmetlaunch(self.damagedir);
|
|
var_02 = self.hatmodel;
|
|
self.hatmodel = undefined;
|
|
wait(0.05);
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self detach(var_02,"");
|
|
}
|
|
|
|
//Function Number: 21
|
|
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: 22
|
|
removeselffrom_squadlastseenenemypos(param_00)
|
|
{
|
|
for(var_01 = 0;var_01 < level.squadindex.size;var_01++)
|
|
{
|
|
level.squadindex[var_01] clearsightposnear(param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 23
|
|
clearsightposnear(param_00)
|
|
{
|
|
if(!isdefined(self.sightpos))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(distance(param_00,self.sightpos) < 80)
|
|
{
|
|
self.sightpos = undefined;
|
|
self.sighttime = gettime();
|
|
}
|
|
}
|
|
|
|
//Function Number: 24
|
|
shoulddorunningforwarddeath()
|
|
{
|
|
if(self.a.movement != "run")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self getmotionangle() > 60 || self getmotionangle() < -60)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.damagemod == "MOD_MELEE" || self.damagemod == "MOD_MELEE_ALT")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 25
|
|
shoulddodirectedenergydeath(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(param_01 != "MOD_ENERGY")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.a.pose != "stand")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(isdefined(self.a.doinglongdeath))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 26
|
|
is_weak_melee_weapon(param_00)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
return issubstr(param_00,"onearm");
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 27
|
|
shoulddostrongmeleedamage(param_00,param_01,param_02)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
if(param_00 == "MOD_MELEE_ALT")
|
|
{
|
|
if(is_weak_melee_weapon(param_02))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
else if(param_00 == "MOD_MELEE" && isdefined(param_01) && isdefined(param_01.forcealtmeleedeaths))
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 28
|
|
shoulddostrongbulletdamage(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(isdefined(self.a.doinglongdeath))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.a.pose == "prone" || isdefined(self.a.onback))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(param_00 == "none")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(param_02 > 500)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(param_01 == "MOD_MELEE" || param_01 == "MOD_MELEE_ALT")
|
|
{
|
|
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: 29
|
|
isdeserteagle(param_00)
|
|
{
|
|
if(param_00 == "deserteagle")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 30
|
|
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: 31
|
|
getdeathanim()
|
|
{
|
|
if(shoulddostrongmeleedamage(self.damagemod,self.attacker,self.damageweapon))
|
|
{
|
|
self.altmeleedeath = 1;
|
|
var_00 = getalternatemeleedeathanim();
|
|
if(isdefined(var_00))
|
|
{
|
|
return var_00;
|
|
}
|
|
}
|
|
|
|
if(shoulddodirectedenergydeath(self.damageweapon,self.damagemod,self.damagetaken,self.attacker))
|
|
{
|
|
var_00 = getdirectedenergydeathanim();
|
|
if(isdefined(var_00))
|
|
{
|
|
return var_00;
|
|
}
|
|
}
|
|
|
|
if(shoulddostrongbulletdamage(self.damageweapon,self.damagemod,self.damagetaken,self.attacker))
|
|
{
|
|
var_00 = getstrongbulletdamagedeathanim();
|
|
if(isdefined(var_00))
|
|
{
|
|
return var_00;
|
|
}
|
|
}
|
|
|
|
if(isdefined(self.a.onback))
|
|
{
|
|
if(self.a.pose == "crouch")
|
|
{
|
|
return getbackdeathanim();
|
|
}
|
|
else
|
|
{
|
|
animscripts\notetracks::stoponback();
|
|
}
|
|
}
|
|
|
|
if(self.a.pose == "stand")
|
|
{
|
|
if(shoulddorunningforwarddeath())
|
|
{
|
|
return getrunningforwarddeathanim();
|
|
}
|
|
|
|
return getstanddeathanim();
|
|
}
|
|
|
|
if(self.a.pose == "crouch")
|
|
{
|
|
return getcrouchdeathanim();
|
|
}
|
|
|
|
if(self.a.pose == "prone")
|
|
{
|
|
return getpronedeathanim();
|
|
}
|
|
}
|
|
|
|
//Function Number: 32
|
|
getalternatemeleedeathanim()
|
|
{
|
|
self.altmeleevictimorientation = getorientedmeleevictimtargetyaw();
|
|
var_00 = self.altmeleevictimorientation - self.angles[1];
|
|
var_01 = angleclamp180(self.damageyaw - var_00);
|
|
var_02 = self.a.pose;
|
|
if(!isdefined(self.attacker) || self.attacker != level.player)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_03 = level.player getstance();
|
|
var_04 = [];
|
|
if(var_01 < -135 || var_01 > 135)
|
|
{
|
|
var_04 = animscripts\utility::lookupanim("death","melee_exo_front_" + var_03 + "_" + var_02);
|
|
if(animscripts\utility::damagelocationisany("head","neck"))
|
|
{
|
|
var_04 = common_scripts\utility::array_combine(var_04,animscripts\utility::lookupanim("death","melee_exo_" + var_02 + "_front_head"));
|
|
}
|
|
}
|
|
else if(var_01 < 45 && var_01 > -45)
|
|
{
|
|
var_04 = animscripts\utility::lookupanim("death","melee_exo_back_" + var_03 + "_" + var_02);
|
|
if(animscripts\utility::damagelocationisany("head","neck"))
|
|
{
|
|
var_04 = common_scripts\utility::array_combine(var_04,animscripts\utility::lookupanim("death","melee_exo_" + var_02 + "_back_head"));
|
|
}
|
|
}
|
|
else if(var_01 < -45 && var_01 > -135)
|
|
{
|
|
var_04 = animscripts\utility::lookupanim("death","melee_exo_left_" + var_03 + "_" + var_02);
|
|
if(animscripts\utility::damagelocationisany("head","neck"))
|
|
{
|
|
var_04 = common_scripts\utility::array_combine(var_04,animscripts\utility::lookupanim("death","melee_exo_" + var_02 + "_left_head"));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_04 = animscripts\utility::lookupanim("death","melee_exo_right_" + var_03 + "_" + var_02);
|
|
if(animscripts\utility::damagelocationisany("head","neck"))
|
|
{
|
|
var_04 = common_scripts\utility::array_combine(var_04,animscripts\utility::lookupanim("death","melee_exo_" + var_02 + "_right_head"));
|
|
}
|
|
}
|
|
|
|
return var_04[randomint(var_04.size)];
|
|
}
|
|
|
|
//Function Number: 33
|
|
getstrongbulletdamagedeathanim()
|
|
{
|
|
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::lookupanim("death","strong_legs");
|
|
}
|
|
else if(self.damagelocation == "torso_lower")
|
|
{
|
|
var_01 = animscripts\utility::lookupanim("death","strong_torso_lower");
|
|
}
|
|
else
|
|
{
|
|
var_01 = animscripts\utility::lookupanim("death","strong_default");
|
|
}
|
|
}
|
|
else if(self.damageyaw < 0)
|
|
{
|
|
var_01 = animscripts\utility::lookupanim("death","strong_right");
|
|
}
|
|
else
|
|
{
|
|
var_01 = animscripts\utility::lookupanim("death","strong_left");
|
|
}
|
|
|
|
return var_01[randomint(var_01.size)];
|
|
}
|
|
|
|
//Function Number: 34
|
|
getdirectedenergydeathanim()
|
|
{
|
|
var_00 = abs(self.damageyaw);
|
|
if(var_00 > 135)
|
|
{
|
|
var_01 = "directed_energy_stand_front_default";
|
|
if(isdefined(self.last_damage_pos))
|
|
{
|
|
if(self.last_damage_pos[2] < self.origin[2] + 20)
|
|
{
|
|
var_01 = "directed_energy_stand_front_legs";
|
|
}
|
|
else if(self.last_damage_pos[2] > self.origin[2] + 40)
|
|
{
|
|
var_01 = "directed_energy_stand_front_head";
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_01 = "directed_energy_stand_back_default";
|
|
}
|
|
|
|
var_02 = animscripts\utility::lookupanim("death",var_01);
|
|
var_03 = var_02[randomint(var_02.size)];
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 35
|
|
getrunningforwarddeathanim()
|
|
{
|
|
if(abs(self.damageyaw) < 45)
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","running_forward_f");
|
|
var_01 = getrandomunblockedanim(var_00);
|
|
if(isdefined(var_01))
|
|
{
|
|
return var_01;
|
|
}
|
|
}
|
|
|
|
var_00 = animscripts\utility::lookupanim("death","running_forward");
|
|
var_01 = getrandomunblockedanim(var_00);
|
|
if(isdefined(var_01))
|
|
{
|
|
return var_01;
|
|
}
|
|
|
|
return getstanddeathanim();
|
|
}
|
|
|
|
//Function Number: 36
|
|
getrandomunblockedanim(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
return undefined;
|
|
}
|
|
|
|
var_01 = undefined;
|
|
for(var_02 = param_00.size;var_02 > 0;var_02--)
|
|
{
|
|
var_03 = randomint(var_02);
|
|
var_01 = param_00[var_03];
|
|
if(!isanimblocked(var_01))
|
|
{
|
|
return var_01;
|
|
}
|
|
|
|
param_00[var_03] = param_00[var_02 - 1];
|
|
param_00[var_02 - 1] = undefined;
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
//Function Number: 37
|
|
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: 38
|
|
isanimblocked(param_00)
|
|
{
|
|
var_01 = 1;
|
|
if(animhasnotetrack(param_00,"code_move"))
|
|
{
|
|
var_01 = getnotetracktimes(param_00,"code_move")[0];
|
|
}
|
|
|
|
var_02 = getmovedelta(param_00,0,var_01);
|
|
var_03 = self localtoworldcoords(var_02);
|
|
return !self maymovetopoint(var_03,1,1);
|
|
}
|
|
|
|
//Function Number: 39
|
|
getstandpistoldeathanim()
|
|
{
|
|
var_00 = [];
|
|
if(abs(self.damageyaw) < 50)
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","stand_pistol_forward");
|
|
}
|
|
else
|
|
{
|
|
if(abs(self.damageyaw) < 110)
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","stand_pistol_front");
|
|
}
|
|
|
|
if(self.damagelocation == "torso_upper")
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(animscripts\utility::lookupanim("death","stand_pistol_torso_upper"),var_00);
|
|
}
|
|
else if(animscripts\utility::damagelocationisany("torso_lower","left_leg_upper","left_leg_lower","right_leg_upper","right_leg_lower"))
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(animscripts\utility::lookupanim("death","stand_pistol_torso_upper"),var_00);
|
|
}
|
|
|
|
if(!animscripts\utility::damagelocationisany("head","neck","helmet","left_foot","right_foot","left_hand","right_hand","gun") && randomint(2) == 0)
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(animscripts\utility::lookupanim("death","stand_pistol_upper_body"),var_00);
|
|
}
|
|
|
|
if(var_00.size == 0 || animscripts\utility::damagelocationisany("torso_lower","torso_upper","neck","head","helmet","right_arm_upper","left_arm_upper"))
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(animscripts\utility::lookupanim("death","stand_pistol_default"),var_00);
|
|
}
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 40
|
|
getstanddeathanim()
|
|
{
|
|
var_00 = [];
|
|
var_01 = [];
|
|
if(animscripts\utility::usingsidearm())
|
|
{
|
|
var_00 = getstandpistoldeathanim();
|
|
}
|
|
else if(isdefined(self.emp) && self.emp)
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","emp");
|
|
}
|
|
else if(isdefined(self.attacker) && self shouldplaymeleedeathanim(self.attacker))
|
|
{
|
|
if(self.damageyaw <= 120 || self.damageyaw > -120)
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","melee_standing_front");
|
|
}
|
|
else if(self.damageyaw <= -60 && self.damageyaw > 60)
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","melee_standing_back");
|
|
}
|
|
else if(self.damageyaw < 0)
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","melee_standing_left");
|
|
}
|
|
else
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","melee_standing_right");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(animscripts\utility::damagelocationisany("torso_lower","left_leg_upper","left_leg_lower","right_leg_lower","right_leg_lower"))
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","stand_lower_body");
|
|
var_01 = animscripts\utility::lookupanim("death","stand_lower_body_extended");
|
|
}
|
|
else if(animscripts\utility::damagelocationisany("head","helmet"))
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","stand_head");
|
|
}
|
|
else if(animscripts\utility::damagelocationisany("neck"))
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","stand_neck");
|
|
}
|
|
else if(animscripts\utility::damagelocationisany("torso_upper","left_arm_upper"))
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","stand_left_shoulder");
|
|
}
|
|
|
|
if(animscripts\utility::damagelocationisany("torso_upper"))
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(var_00,animscripts\utility::lookupanim("death","stand_torso_upper"));
|
|
var_01 = common_scripts\utility::array_combine(var_01,animscripts\utility::lookupanim("death","stand_torso_upper_extended"));
|
|
}
|
|
|
|
if(self.damageyaw > 135 || self.damageyaw <= -135)
|
|
{
|
|
if(animscripts\utility::damagelocationisany("neck","head","helmet"))
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(var_00,animscripts\utility::lookupanim("death","stand_front_torso"));
|
|
var_01 = common_scripts\utility::array_combine(var_01,animscripts\utility::lookupanim("death","stand_front_torso_extended"));
|
|
}
|
|
|
|
if(animscripts\utility::damagelocationisany("torso_upper"))
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(var_00,animscripts\utility::lookupanim("death","stand_front_torso"));
|
|
var_01 = common_scripts\utility::array_combine(var_01,animscripts\utility::lookupanim("death","stand_front_torso_extended"));
|
|
}
|
|
}
|
|
else if(self.damageyaw > -45 && self.damageyaw <= 45)
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(var_00,animscripts\utility::lookupanim("death","stand_back"));
|
|
}
|
|
|
|
var_02 = var_00.size > 0;
|
|
if(!var_02 || randomint(100) < 15)
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(var_00,animscripts\utility::lookupanim("death","stand_default"));
|
|
}
|
|
|
|
if(randomint(100) < 10 && firingdeathallowed())
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(var_00,animscripts\utility::lookupanim("death","stand_default_firing"));
|
|
var_00 = removeundefined(var_00);
|
|
}
|
|
}
|
|
|
|
if(var_00.size == 0)
|
|
{
|
|
var_00[var_00.size] = animscripts\utility::lookupanim("death","stand_backup_default");
|
|
}
|
|
|
|
if(!self.a.disablelongdeath && self.stairsstate == "none" && !isdefined(self.a.painonstairs))
|
|
{
|
|
var_03 = randomint(var_00.size + var_01.size);
|
|
if(var_03 < var_00.size)
|
|
{
|
|
return var_00[var_03];
|
|
}
|
|
else
|
|
{
|
|
return var_01[var_03 - var_00.size];
|
|
}
|
|
}
|
|
|
|
return var_00[randomint(var_00.size)];
|
|
}
|
|
|
|
//Function Number: 41
|
|
getcrouchdeathanim()
|
|
{
|
|
var_00 = [];
|
|
if(isdefined(self.attacker) && self shouldplaymeleedeathanim(self.attacker))
|
|
{
|
|
if(self.damageyaw <= 120 || self.damageyaw > -120)
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","melee_crouching_front");
|
|
}
|
|
else if(self.damageyaw <= -60 && self.damageyaw > 60)
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","melee_crouching_back");
|
|
}
|
|
else if(self.damageyaw < 0)
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","melee_crouching_left");
|
|
}
|
|
else
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","melee_crouching_right");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(animscripts\utility::damagelocationisany("head","neck"))
|
|
{
|
|
var_00 = animscripts\utility::lookupanim("death","crouch_head");
|
|
}
|
|
|
|
if(animscripts\utility::damagelocationisany("torso_upper","torso_lower","left_arm_upper","right_arm_upper","neck"))
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(var_00,animscripts\utility::lookupanim("death","crouch_torso"));
|
|
}
|
|
|
|
if(var_00.size < 2)
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(var_00,animscripts\utility::lookupanim("death","crouch_default1"));
|
|
}
|
|
|
|
if(var_00.size < 2)
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(var_00,animscripts\utility::lookupanim("death","crouch_default2"));
|
|
}
|
|
}
|
|
|
|
return var_00[randomint(var_00.size)];
|
|
}
|
|
|
|
//Function Number: 42
|
|
getpronedeathanim()
|
|
{
|
|
if(isdefined(self.a.proneaiming))
|
|
{
|
|
return %prone_death_quickdeath;
|
|
}
|
|
|
|
return %dying_crawl_death_v1;
|
|
}
|
|
|
|
//Function Number: 43
|
|
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: 44
|
|
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: 45
|
|
tryadddeathanim(param_00)
|
|
{
|
|
return param_00;
|
|
}
|
|
|
|
//Function Number: 46
|
|
tryaddfiringdeathanim(param_00)
|
|
{
|
|
return param_00;
|
|
}
|
|
|
|
//Function Number: 47
|
|
playexplodedeathanim()
|
|
{
|
|
if(isdefined(self.juggernaut) || isdefined(self.mech))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.damagelocation != "none")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = [];
|
|
if(self.a.movement != "run")
|
|
{
|
|
if(self.damageyaw > 135 || self.damageyaw <= -135)
|
|
{
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_b_v1);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_b_v2);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_b_v3);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_b_v4);
|
|
}
|
|
else if(self.damageyaw > 45 && self.damageyaw <= 135)
|
|
{
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_l_v1);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_l_v2);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_l_v3);
|
|
}
|
|
else if(self.damageyaw > -45 && self.damageyaw <= 45)
|
|
{
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_f_v1);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_f_v2);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_f_v3);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_f_v4);
|
|
}
|
|
else
|
|
{
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_r_v1);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_stand_r_v2);
|
|
}
|
|
}
|
|
else if(self.damageyaw > 135 || self.damageyaw <= -135)
|
|
{
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_run_b_v1);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_run_b_v2);
|
|
}
|
|
else if(self.damageyaw > 45 && self.damageyaw <= 135)
|
|
{
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_run_l_v1);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_run_l_v2);
|
|
}
|
|
else if(self.damageyaw > -45 && self.damageyaw <= 45)
|
|
{
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_run_f_v1);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_run_f_v2);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_run_f_v3);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_run_f_v4);
|
|
}
|
|
else
|
|
{
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_run_r_v1);
|
|
var_00[var_00.size] = tryadddeathanim(%death_explosion_run_r_v2);
|
|
}
|
|
|
|
var_01 = var_00[randomint(var_00.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");
|
|
playdeathanim(var_01);
|
|
return 1;
|
|
} |