2024-02-13 13:20:49 +01:00

963 lines
30 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
#using_animtree("generic_human");
init_animset_death()
{
var_0 = [];
var_0["strong_legs"] = [ %death_shotgun_legs, %death_stand_sniper_leg ];
var_0["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_0["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_0["strong_right"] = [ %death_shotgun_spinl, %death_stand_sniper_spin1, %death_stand_sniper_chest1, %death_stand_sniper_chest2 ];
var_0["strong_left"] = [ %death_shotgun_spinr, %death_stand_sniper_spin2, %death_stand_sniper_chest1, %death_stand_sniper_chest2 ];
var_0["running_forward"] = [ %run_death_facedown, %run_death_roll, %run_death_fallonback, %run_death_flop ];
var_0["running_forward_f"] = [ %run_death_fallonback ];
var_0["stand_pistol_forward"] = [ %pistol_death_2 ];
var_0["stand_pistol_front"] = [ %pistol_death_2 ];
var_0["stand_pistol_groin"] = [ %pistol_death_3, %pistol_death_3 ];
var_0["stand_pistol_torso_upper"] = [ %pistol_death_3 ];
var_0["stand_pistol_upper_body"] = [ %pistol_death_4 ];
var_0["stand_pistol_default"] = [ %pistol_death_1 ];
var_0["stand_pistol_torso_upper"] = [ %pistol_death_3, %pistol_death_1 ];
var_0["stand_pistol_lower_body"] = [ %pistol_death_2 ];
var_0["cover_right_stand"] = [ %corner_standr_deatha, %corner_standr_deathb ];
var_0["cover_right_crouch_head"] = [ %cornercrr_alert_death_slideout ];
var_0["cover_right_crouch_default"] = [ %cornercrr_alert_death_slideout, %cornercrr_alert_death_back ];
var_0["cover_left_stand"] = [ %corner_standl_deatha, %corner_standl_deathb ];
var_0["cover_left_crouch"] = [ %cornercrl_death_side, %cornercrl_death_back ];
var_0["cover_stand"] = [ %coverstand_death_left, %coverstand_death_right ];
var_0["cover_crouch_head"] = %covercrouch_death_1;
var_0["cover_crouch_back"] = %covercrouch_death_3;
var_0["cover_crouch_default"] = %covercrouch_death_2;
var_0["saw_stand"] = [ %saw_gunner_death ];
var_0["saw_crouch"] = [ %saw_gunner_lowwall_death ];
var_0["saw_prone"] = [ %saw_gunner_prone_death ];
var_0["dying_crawl_crouch"] = [ %dying_back_death_v2, %dying_back_death_v3, %dying_back_death_v4 ];
var_0["dying_crawl_prone"] = [ %dying_crawl_death_v1, %dying_crawl_death_v2 ];
var_0["stand_lower_body"] = [ %exposed_death_groin, %stand_death_leg ];
var_0["stand_lower_body_extended"] = [ %stand_death_crotch, %stand_death_guts ];
var_0["stand_head"] = [ %exposed_death_headshot, %exposed_death_flop ];
var_0["stand_neck"] = [ %exposed_death_neckgrab ];
var_0["stand_left_shoulder"] = [ %exposed_death_twist, %stand_death_shoulder_spin, %stand_death_shoulderback ];
var_0["stand_torso_upper"] = [ %stand_death_tumbleforward, %stand_death_stumbleforward ];
var_0["stand_torso_upper_extended"] = [ %stand_death_fallside ];
var_0["stand_front_head"] = [ %stand_death_face, %stand_death_headshot_slowfall ];
var_0["stand_front_head_extended"] = [ %stand_death_head_straight_back ];
var_0["stand_front_torso"] = [ %stand_death_tumbleback ];
var_0["stand_front_torso_extended"] = [ %stand_death_chest_stunned ];
var_0["stand_back"] = [ %exposed_death_falltoknees, %exposed_death_falltoknees_02 ];
var_0["stand_default"] = [ %exposed_death_02, %exposed_death_nerve ];
var_0["stand_default_firing"] = [ %exposed_death_firing_02, %exposed_death_firing ];
var_0["stand_backup_default"] = %exposed_death;
var_0["crouch_head"] = [ %exposed_crouch_death_fetal ];
var_0["crouch_torso"] = [ %exposed_crouch_death_flip ];
var_0["crouch_default1"] = [ %exposed_crouch_death_twist ];
var_0["crouch_default2"] = [ %exposed_crouch_death_flip ];
var_0["melee_standing_front"] = [ %melee_death_standing_front ];
var_0["melee_standing_back"] = [ %melee_death_standing_back ];
var_0["melee_standing_left"] = [ %melee_death_standing_left ];
var_0["melee_standing_right"] = [ %melee_death_standing_right ];
var_0["melee_crouching_front"] = [ %melee_death_crouching_front ];
var_0["melee_crouching_back"] = [ %melee_death_crouching_back ];
var_0["melee_crouching_left"] = [ %melee_death_crouching_left ];
var_0["melee_crouching_right"] = [ %melee_death_crouching_right ];
anim.archetypes["soldier"]["death"] = var_0;
}
main()
{
self endon( "killanimscript" );
self stopsoundchannel( "voice" );
var_0 = 0.3;
self clearanim( %scripted_talking, var_0 );
maps\_anim::disabledefaultfacialanims( 0 );
if ( self.a.nodeath == 1 )
return;
if ( isdefined( self.deathfunction ) )
{
var_1 = self [[ self.deathfunction ]]();
if ( !isdefined( var_1 ) )
var_1 = 1;
if ( var_1 )
return;
}
animscripts\utility::initialize( "death" );
removeselffrom_squadlastseenenemypos( self.origin );
anim.numdeathsuntilcrawlingpain--;
anim.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_2 = animscripts\pain::wasdamagedbyexplosive();
if ( self.damagelocation == "helmet" || self.damagelocation == "head" )
helmetpop();
else if ( var_2 && randomint( 3 ) == 0 )
helmetpop();
self clearanim( %root, 0.3 );
if ( !animscripts\utility::damagelocationisany( "head", "helmet" ) )
{
if ( self.diequietly )
{
}
else
playdeathsound();
}
if ( var_2 && playexplodedeathanim() )
return;
if ( isdefined( self.specialdeathfunc ) )
{
if ( [[ self.specialdeathfunc ]]() )
return;
}
if ( specialdeath() )
return;
var_3 = getdeathanim();
playdeathanim( var_3 );
}
doimmediateragdolldeath()
{
animscripts\shared::dropallaiweapons();
self.skipdeathanim = 1;
var_0 = 10;
var_1 = common_scripts\_destructible::getdamagetype( self.damagemod );
if ( isdefined( self.attacker ) && self.attacker == level.player && var_1 == "melee" )
var_0 = 5;
var_2 = self.damagetaken;
if ( var_1 == "bullet" )
var_2 = max( var_2, 300 );
var_3 = var_0 * var_2;
var_4 = max( 0.3, self.damagedir[2] );
var_5 = ( self.damagedir[0], self.damagedir[1], var_4 );
if ( isdefined( self.ragdoll_directionscale ) )
var_5 = var_5 * self.ragdoll_directionscale;
else
var_5 = var_5 * var_3;
if ( self.forceragdollimmediate )
var_5 = var_5 + self.prevanimdelta * 20 * 10;
if ( isdefined( self.ragdoll_start_vel ) )
var_5 = var_5 + self.ragdoll_start_vel * 10;
self startragdollfromimpact( self.damagelocation, var_5 );
wait 0.05;
}
cross2d( var_0, var_1 )
{
return var_0[0] * var_1[1] - var_1[0] * var_0[1];
}
meleegetattackercardinaldirection( var_0, var_1 )
{
var_2 = vectordot( var_1, var_0 );
var_3 = cos( 60 );
if ( squared( var_2 ) < squared( var_3 ) )
{
if ( cross2d( var_0, var_1 ) > 0 )
return 1;
else
return 3;
}
else if ( var_2 < 0 )
return 0;
else
return 2;
}
orientmeleevictim()
{
if ( self.damagemod == "MOD_MELEE" && isdefined( self.attacker ) )
{
var_0 = self.origin - self.attacker.origin;
var_1 = anglestoforward( self.angles );
var_2 = vectornormalize( ( var_0[0], var_0[1], 0 ) );
var_3 = vectornormalize( ( var_1[0], var_1[1], 0 ) );
var_4 = meleegetattackercardinaldirection( var_3, var_2 );
var_5 = var_4 * 90;
var_6 = ( -1 * var_2[0], -1 * var_2[1], 0 );
var_7 = rotatevector( var_6, ( 0, var_5, 0 ) );
var_8 = vectortoyaw( var_7 );
self orientmode( "face angle", var_8 );
}
}
playdeathanim( var_0 )
{
if ( !animhasnotetrack( var_0, "dropgun" ) && !animhasnotetrack( var_0, "fire_spray" ) )
animscripts\shared::dropallaiweapons();
orientmeleevictim();
self setflaggedanimknoballrestart( "deathanim", var_0, %body, 1, 0.1 );
animscripts\face::playfacialanim( var_0, "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( var_0, "start_ragdoll" ) )
{
if ( self.damagemod == "MOD_MELEE" )
var_1 = 0.7;
else
var_1 = 0.35;
thread waitforragdoll( getanimlength( var_0 ) * var_1 );
}
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" );
}
updatecheckforceragdoll()
{
self endon( "endPlayDeathAnim" );
self endon( "forcedRagdoll" );
wait 0.25;
while ( isdefined( self ) )
{
self queryshouldearlyragdoll();
wait 0.2;
}
}
checkforceragdoll()
{
self endon( "endPlayDeathAnim" );
while ( isdefined( self ) )
{
self waittill( "ragdoll_early_result", var_0 );
if ( !isdefined( self ) )
return;
if ( var_0 )
{
self startragdoll();
animscripts\shared::dropallaiweapons();
break;
}
self waittill( "ragdoll_early_result", var_0 );
}
self notify( "forcedRagdoll" );
}
waitforragdoll( var_0 )
{
wait( var_0 );
if ( isdefined( self ) )
animscripts\shared::dropallaiweapons();
if ( isdefined( self ) && !isdefined( self.noragdoll ) )
self startragdoll();
}
playdeathfx()
{
self endon( "killanimscript" );
if ( self.stairsstate != "none" )
return;
wait 2;
play_blood_pool();
}
play_blood_pool( var_0, var_1 )
{
if ( !isdefined( self ) )
return;
if ( isdefined( self.skipbloodpool ) )
return;
var_2 = self gettagorigin( "j_SpineUpper" );
var_3 = self gettagangles( "j_SpineUpper" );
var_4 = anglestoforward( var_3 );
var_5 = anglestoup( var_3 );
var_6 = anglestoright( var_3 );
var_2 = var_2 + var_4 * -8.5 + var_5 * 5 + var_6 * 0;
var_7 = bullettrace( var_2 + ( 0, 0, 30 ), var_2 - ( 0, 0, 100 ), 0, undefined );
if ( var_7["normal"][2] > 0.9 )
playfx( level._effect["deathfx_bloodpool_generic"], var_2 );
}
specialdeath()
{
if ( self.a.special == "none" )
return 0;
if ( self.damagemod == "MOD_MELEE" )
return 0;
switch ( self.a.special )
{
case "cover_right":
if ( self.a.pose == "stand" )
{
var_0 = animscripts\utility::lookupanim( "death", "cover_right_stand" );
dodeathfromarray( var_0 );
}
else
{
var_0 = [];
if ( animscripts\utility::damagelocationisany( "head", "neck" ) )
var_0 = animscripts\utility::lookupanim( "death", "cover_right_crouch_head" );
else
var_0 = animscripts\utility::lookupanim( "death", "cover_right_crouch_default" );
dodeathfromarray( var_0 );
}
return 1;
case "cover_left":
if ( self.a.pose == "stand" )
{
var_0 = animscripts\utility::lookupanim( "death", "cover_left_stand" );
dodeathfromarray( var_0 );
}
else
{
var_0 = animscripts\utility::lookupanim( "death", "cover_left_crouch" );
dodeathfromarray( var_0 );
}
return 1;
case "cover_stand":
var_0 = animscripts\utility::lookupanim( "death", "cover_stand" );
dodeathfromarray( var_0 );
return 1;
case "cover_crouch":
var_0 = [];
if ( animscripts\utility::damagelocationisany( "head", "neck" ) && ( self.damageyaw > 135 || self.damageyaw <= -45 ) )
var_0[var_0.size] = animscripts\utility::lookupanim( "death", "cover_crouch_head" );
if ( self.damageyaw > -45 && self.damageyaw <= 45 )
var_0[var_0.size] = animscripts\utility::lookupanim( "death", "cover_crouch_back" );
var_0[var_0.size] = animscripts\utility::lookupanim( "death", "cover_crouch_default" );
dodeathfromarray( var_0 );
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_0 = animscripts\utility::lookupanim( "death", "dying_crawl_crouch" );
dodeathfromarray( var_0 );
}
else
{
var_0 = animscripts\utility::lookupanim( "death", "dying_crawl_prone" );
dodeathfromarray( var_0 );
}
return 1;
case "stumbling_pain":
playdeathanim( self.a.stumblingpainanimseq[self.a.stumblingpainanimseq.size - 1] );
return 1;
}
return 0;
}
dodeathfromarray( var_0 )
{
var_1 = var_0[randomint( var_0.size )];
playdeathanim( var_1 );
if ( isdefined( self.deathanimscript ) )
self [[ self.deathanimscript ]]();
}
playdeathsound()
{
animscripts\face::saygenericdialogue( "death" );
}
print3dfortime( var_0, var_1, var_2 )
{
var_3 = var_2 * 20;
for ( var_4 = 0; var_4 < var_3; var_4++ )
wait 0.05;
}
helmetpop()
{
if ( !isdefined( self ) )
return;
if ( !isdefined( self.hatmodel ) )
return;
var_0 = getpartname( self.hatmodel, 0 );
var_1 = spawn( "script_model", self.origin + ( 0, 0, 64 ) );
var_1 setmodel( self.hatmodel );
var_1.origin = self gettagorigin( var_0 );
var_1.angles = self gettagangles( var_0 );
var_1 thread helmetlaunch( self.damagedir );
var_2 = self.hatmodel;
self.hatmodel = undefined;
wait 0.05;
if ( !isdefined( self ) )
return;
self detach( var_2, "" );
}
helmetlaunch( var_0 )
{
var_1 = var_0;
var_1 = var_1 * randomfloatrange( 2000, 4000 );
var_2 = var_1[0];
var_3 = var_1[1];
var_4 = randomfloatrange( 1500, 3000 );
var_5 = self.origin + ( randomfloatrange( -1, 1 ), randomfloatrange( -1, 1 ), randomfloatrange( -1, 1 ) ) * 5;
self physicslaunchclient( var_5, ( var_2, var_3, var_4 ) );
wait 60;
for (;;)
{
if ( !isdefined( self ) )
return;
if ( distancesquared( self.origin, level.player.origin ) > 262144 )
break;
wait 30;
}
self delete();
}
removeselffrom_squadlastseenenemypos( var_0 )
{
for ( var_1 = 0; var_1 < anim.squadindex.size; var_1++ )
anim.squadindex[var_1] clearsightposnear( var_0 );
}
clearsightposnear( var_0 )
{
if ( !isdefined( self.sightpos ) )
return;
if ( distance( var_0, self.sightpos ) < 80 )
{
self.sightpos = undefined;
self.sighttime = gettime();
}
}
shoulddorunningforwarddeath()
{
if ( self.a.movement != "run" )
return 0;
if ( self getmotionangle() > 60 || self getmotionangle() < -60 )
return 0;
if ( self.damagemod == "MOD_MELEE" )
return 0;
return 1;
}
shoulddostrongbulletdamage( var_0, var_1, var_2, var_3 )
{
if ( isdefined( self.a.doinglongdeath ) )
return 0;
if ( self.a.pose == "prone" || isdefined( self.a.onback ) )
return 0;
if ( var_0 == "none" )
return 0;
if ( var_2 > 500 )
return 1;
if ( var_1 == "MOD_MELEE" )
return 0;
if ( self.a.movement == "run" && !isattackerwithindist( var_3, 275 ) )
{
if ( randomint( 100 ) < 65 )
return 0;
}
if ( animscripts\utility::issniperrifle( var_0 ) && self.maxhealth < var_2 )
return 1;
if ( animscripts\utility::isshotgun( var_0 ) && isattackerwithindist( var_3, 512 ) )
return 1;
if ( isdeserteagle( var_0 ) && isattackerwithindist( var_3, 425 ) )
return 1;
return 0;
}
isdeserteagle( var_0 )
{
if ( var_0 == "deserteagle" )
return 1;
return 0;
}
isattackerwithindist( var_0, var_1 )
{
if ( !isdefined( var_0 ) )
return 0;
if ( distance( self.origin, var_0.origin ) > var_1 )
return 0;
return 1;
}
getdeathanim()
{
if ( shoulddostrongbulletdamage( self.damageweapon, self.damagemod, self.damagetaken, self.attacker ) )
{
var_0 = getstrongbulletdamagedeathanim();
if ( isdefined( var_0 ) )
return var_0;
}
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();
else
return getstanddeathanim();
}
else if ( self.a.pose == "crouch" )
return getcrouchdeathanim();
else if ( self.a.pose == "prone" )
return getpronedeathanim();
}
getstrongbulletdamagedeathanim()
{
var_0 = abs( self.damageyaw );
if ( var_0 < 45 )
return;
if ( var_0 > 150 )
{
if ( animscripts\utility::damagelocationisany( "left_leg_upper", "left_leg_lower", "right_leg_upper", "right_leg_lower", "left_foot", "right_foot" ) )
var_1 = animscripts\utility::lookupanim( "death", "strong_legs" );
else if ( self.damagelocation == "torso_lower" )
var_1 = animscripts\utility::lookupanim( "death", "strong_torso_lower" );
else
var_1 = animscripts\utility::lookupanim( "death", "strong_default" );
}
else if ( self.damageyaw < 0 )
var_1 = animscripts\utility::lookupanim( "death", "strong_right" );
else
var_1 = animscripts\utility::lookupanim( "death", "strong_left" );
return var_1[randomint( var_1.size )];
}
getrunningforwarddeathanim()
{
if ( abs( self.damageyaw ) < 45 )
{
var_0 = animscripts\utility::lookupanim( "death", "running_forward_f" );
var_1 = getrandomunblockedanim( var_0 );
if ( isdefined( var_1 ) )
return var_1;
}
var_0 = animscripts\utility::lookupanim( "death", "running_forward" );
var_1 = getrandomunblockedanim( var_0 );
if ( isdefined( var_1 ) )
return var_1;
return getstanddeathanim();
}
getrandomunblockedanim( var_0 )
{
if ( !isdefined( var_0 ) )
return undefined;
var_1 = undefined;
for ( var_2 = var_0.size; var_2 > 0; var_2-- )
{
var_3 = randomint( var_2 );
var_1 = var_0[var_3];
if ( !isanimblocked( var_1 ) )
return var_1;
var_0[var_3] = var_0[var_2 - 1];
var_0[var_2 - 1] = undefined;
}
return undefined;
}
removeundefined( var_0 )
{
var_1 = [];
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
{
if ( !isdefined( var_0[var_2] ) )
continue;
var_1[var_1.size] = var_0[var_2];
}
return var_1;
}
isanimblocked( var_0 )
{
var_1 = 1;
if ( animhasnotetrack( var_0, "code_move" ) )
var_1 = getnotetracktimes( var_0, "code_move" )[0];
var_2 = getmovedelta( var_0, 0, var_1 );
var_3 = self localtoworldcoords( var_2 );
return !self maymovetopoint( var_3, 1, 1 );
}
getstandpistoldeathanim()
{
var_0 = [];
if ( abs( self.damageyaw ) < 50 )
var_0 = animscripts\utility::lookupanim( "death", "stand_pistol_forward" );
else
{
if ( abs( self.damageyaw ) < 110 )
var_0 = animscripts\utility::lookupanim( "death", "stand_pistol_front" );
if ( self.damagelocation == "torso_upper" )
var_0 = common_scripts\utility::array_combine( animscripts\utility::lookupanim( "death", "stand_pistol_torso_upper" ), var_0 );
else if ( animscripts\utility::damagelocationisany( "torso_lower", "left_leg_upper", "left_leg_lower", "right_leg_upper", "right_leg_lower" ) )
var_0 = common_scripts\utility::array_combine( animscripts\utility::lookupanim( "death", "stand_pistol_torso_upper" ), var_0 );
if ( !animscripts\utility::damagelocationisany( "head", "neck", "helmet", "left_foot", "right_foot", "left_hand", "right_hand", "gun" ) && randomint( 2 ) == 0 )
var_0 = common_scripts\utility::array_combine( animscripts\utility::lookupanim( "death", "stand_pistol_upper_body" ), var_0 );
if ( var_0.size == 0 || animscripts\utility::damagelocationisany( "torso_lower", "torso_upper", "neck", "head", "helmet", "right_arm_upper", "left_arm_upper" ) )
var_0 = common_scripts\utility::array_combine( animscripts\utility::lookupanim( "death", "stand_pistol_default" ), var_0 );
}
return var_0;
}
getstanddeathanim()
{
var_0 = [];
var_1 = [];
if ( animscripts\utility::usingsidearm() )
var_0 = getstandpistoldeathanim();
else if ( isdefined( self.attacker ) && self shouldplaymeleedeathanim( self.attacker ) )
{
if ( self.damageyaw <= 120 || self.damageyaw > -120 )
var_0 = animscripts\utility::lookupanim( "death", "melee_standing_front" );
else if ( self.damageyaw <= -60 && self.damageyaw > 60 )
var_0 = animscripts\utility::lookupanim( "death", "melee_standing_back" );
else if ( self.damageyaw < 0 )
var_0 = animscripts\utility::lookupanim( "death", "melee_standing_left" );
else
var_0 = 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_0 = animscripts\utility::lookupanim( "death", "stand_lower_body" );
var_1 = animscripts\utility::lookupanim( "death", "stand_lower_body_extended" );
}
else if ( animscripts\utility::damagelocationisany( "head", "helmet" ) )
var_0 = animscripts\utility::lookupanim( "death", "stand_head" );
else if ( animscripts\utility::damagelocationisany( "neck" ) )
var_0 = animscripts\utility::lookupanim( "death", "stand_neck" );
else if ( animscripts\utility::damagelocationisany( "torso_upper", "left_arm_upper" ) )
var_0 = animscripts\utility::lookupanim( "death", "stand_left_shoulder" );
if ( animscripts\utility::damagelocationisany( "torso_upper" ) )
{
var_0 = common_scripts\utility::array_combine( var_0, animscripts\utility::lookupanim( "death", "stand_torso_upper" ) );
var_1 = common_scripts\utility::array_combine( var_1, animscripts\utility::lookupanim( "death", "stand_torso_upper_extended" ) );
}
if ( self.damageyaw > 135 || self.damageyaw <= -135 )
{
if ( animscripts\utility::damagelocationisany( "neck", "head", "helmet" ) )
{
var_0 = common_scripts\utility::array_combine( var_0, animscripts\utility::lookupanim( "death", "stand_front_torso" ) );
var_1 = common_scripts\utility::array_combine( var_1, animscripts\utility::lookupanim( "death", "stand_front_torso_extended" ) );
}
if ( animscripts\utility::damagelocationisany( "torso_upper" ) )
{
var_0 = common_scripts\utility::array_combine( var_0, animscripts\utility::lookupanim( "death", "stand_front_torso" ) );
var_1 = common_scripts\utility::array_combine( var_1, animscripts\utility::lookupanim( "death", "stand_front_torso_extended" ) );
}
}
else if ( self.damageyaw > -45 && self.damageyaw <= 45 )
var_0 = common_scripts\utility::array_combine( var_0, animscripts\utility::lookupanim( "death", "stand_back" ) );
var_2 = var_0.size > 0;
if ( !var_2 || randomint( 100 ) < 15 )
var_0 = common_scripts\utility::array_combine( var_0, animscripts\utility::lookupanim( "death", "stand_default" ) );
if ( randomint( 100 ) < 10 && firingdeathallowed() )
{
var_0 = common_scripts\utility::array_combine( var_0, animscripts\utility::lookupanim( "death", "stand_default_firing" ) );
var_0 = removeundefined( var_0 );
}
}
if ( var_0.size == 0 )
var_0[var_0.size] = animscripts\utility::lookupanim( "death", "stand_backup_default" );
if ( !self.a.disablelongdeath && self.stairsstate == "none" && !isdefined( self.a.painonstairs ) )
{
var_3 = randomint( var_0.size + var_1.size );
if ( var_3 < var_0.size )
return var_0[var_3];
else
return var_1[var_3 - var_0.size];
}
return var_0[randomint( var_0.size )];
}
getcrouchdeathanim()
{
var_0 = [];
if ( isdefined( self.attacker ) && self shouldplaymeleedeathanim( self.attacker ) )
{
if ( self.damageyaw <= 120 || self.damageyaw > -120 )
var_0 = animscripts\utility::lookupanim( "death", "melee_crouching_front" );
else if ( self.damageyaw <= -60 && self.damageyaw > 60 )
var_0 = animscripts\utility::lookupanim( "death", "melee_crouching_back" );
else if ( self.damageyaw < 0 )
var_0 = animscripts\utility::lookupanim( "death", "melee_crouching_left" );
else
var_0 = animscripts\utility::lookupanim( "death", "melee_crouching_right" );
}
else
{
if ( animscripts\utility::damagelocationisany( "head", "neck" ) )
var_0 = animscripts\utility::lookupanim( "death", "crouch_head" );
if ( animscripts\utility::damagelocationisany( "torso_upper", "torso_lower", "left_arm_upper", "right_arm_upper", "neck" ) )
var_0 = common_scripts\utility::array_combine( var_0, animscripts\utility::lookupanim( "death", "crouch_torso" ) );
if ( var_0.size < 2 )
var_0 = common_scripts\utility::array_combine( var_0, animscripts\utility::lookupanim( "death", "crouch_default1" ) );
if ( var_0.size < 2 )
var_0 = common_scripts\utility::array_combine( var_0, animscripts\utility::lookupanim( "death", "crouch_default2" ) );
}
return var_0[randomint( var_0.size )];
}
getpronedeathanim()
{
if ( isdefined( self.a.proneaiming ) )
return %prone_death_quickdeath;
else
return %dying_crawl_death_v1;
}
getbackdeathanim()
{
var_0 = animscripts\utility::array( %dying_back_death_v1, %dying_back_death_v2, %dying_back_death_v3, %dying_back_death_v4 );
return var_0[randomint( var_0.size )];
}
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;
}
tryadddeathanim( var_0 )
{
return var_0;
}
tryaddfiringdeathanim( var_0 )
{
return var_0;
}
playexplodedeathanim()
{
if ( isdefined( self.juggernaut ) )
return 0;
if ( self.damagelocation != "none" )
return 0;
var_0 = [];
if ( self.a.movement != "run" )
{
if ( self.damageyaw > 135 || self.damageyaw <= -135 )
{
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_b_v1 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_b_v2 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_b_v3 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_b_v4 );
}
else if ( self.damageyaw > 45 && self.damageyaw <= 135 )
{
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_l_v1 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_l_v2 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_l_v3 );
}
else if ( self.damageyaw > -45 && self.damageyaw <= 45 )
{
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_f_v1 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_f_v2 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_f_v3 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_f_v4 );
}
else
{
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_r_v1 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_stand_r_v2 );
}
}
else if ( self.damageyaw > 135 || self.damageyaw <= -135 )
{
var_0[var_0.size] = tryadddeathanim( %death_explosion_run_b_v1 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_run_b_v2 );
}
else if ( self.damageyaw > 45 && self.damageyaw <= 135 )
{
var_0[var_0.size] = tryadddeathanim( %death_explosion_run_l_v1 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_run_l_v2 );
}
else if ( self.damageyaw > -45 && self.damageyaw <= 45 )
{
var_0[var_0.size] = tryadddeathanim( %death_explosion_run_f_v1 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_run_f_v2 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_run_f_v3 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_run_f_v4 );
}
else
{
var_0[var_0.size] = tryadddeathanim( %death_explosion_run_r_v1 );
var_0[var_0.size] = tryadddeathanim( %death_explosion_run_r_v2 );
}
var_1 = var_0[randomint( var_0.size )];
if ( getdvar( "scr_expDeathMayMoveCheck", "on" ) == "on" )
{
var_2 = getmovedelta( var_1, 0, 1 );
var_3 = self localtoworldcoords( var_2 );
if ( !self maymovetopoint( var_3, 0 ) )
return 0;
}
self animmode( "nogravity" );
playdeathanim( var_1 );
return 1;
}