iw6-scripts/maps/_deadbody.gsc
2024-02-13 13:20:49 +01:00

92 lines
2.8 KiB
Plaintext

// IW6 GSC SOURCE
// Generated by https://github.com/xensik/gsc-tool
#using_animtree("generic_human");
main()
{
level.scr_anim["dead_guy"]["death1"] = %exposed_death_nerve;
level.scr_anim["dead_guy"]["death2"] = %exposed_death_falltoknees;
level.scr_anim["dead_guy"]["death3"] = %exposed_death_headtwist;
level.scr_anim["dead_guy"]["death4"] = %exposed_crouch_death_twist;
level.scr_anim["dead_guy"]["death5"] = %exposed_crouch_death_fetal;
level.scr_anim["dead_guy"]["death6"] = %death_sitting_pose_v1;
level.scr_anim["dead_guy"]["death7"] = %death_sitting_pose_v2;
level.scr_anim["dead_guy"]["death8"] = %death_pose_on_desk;
level.scr_anim["dead_guy"]["death9"] = %death_pose_on_window;
level.scr_animtree["dead_guy"] = #animtree;
level.dead_body_count = 1;
var_0 = getdvarint( "ragdoll_max_simulating" ) - 6;
if ( var_0 > 0 )
level.max_number_of_dead_bodies = var_0;
else
level.max_number_of_dead_bodies = 0;
var_1 = spawnstruct();
var_1.bodies = [];
common_scripts\utility::run_thread_on_targetname( "trigger_body", ::trigger_body, var_1 );
common_scripts\utility::run_thread_on_targetname( "dead_body", ::spawn_dead_body, var_1 );
}
trigger_body( var_0 )
{
self waittill( "trigger" );
var_1 = getentarray( self.target, "targetname" );
common_scripts\utility::array_thread( var_1, ::spawn_dead_body, var_0 );
}
spawn_dead_body( var_0 )
{
if ( !getdvarint( "ragdoll_enable" ) && isdefined( self.script_parameters ) && self.script_parameters == "require_ragdoll" )
return;
if ( level.max_number_of_dead_bodies == 0 )
return;
var_1 = undefined;
if ( isdefined( self.script_index ) )
var_1 = self.script_index;
else
{
level.dead_body_count++;
if ( level.dead_body_count > 3 )
level.dead_body_count = 1;
var_1 = level.dead_body_count;
}
var_2 = spawn( "script_model", ( 0, 0, 0 ) );
var_2.origin = self.origin;
var_2.angles = self.angles;
var_2.animname = "dead_guy";
var_2 maps\_utility::assign_animtree();
var_0 que_body( var_2 );
var_2 [[ level.scr_deadbody[var_1] ]]();
if ( !isdefined( self.script_trace ) )
{
var_3 = bullettrace( var_2.origin + ( 0, 0, 5 ), var_2.origin + ( 0, 0, -64 ), 0, undefined );
var_2.origin = var_3["position"];
}
var_2 setflaggedanim( "flag", var_2 maps\_utility::getanim( self.script_noteworthy ), 1, 0, 1 );
var_2 waittillmatch( "flag", "end" );
if ( !isdefined( self.script_start ) )
var_2 startragdoll();
}
que_body( var_0 )
{
self.bodies[self.bodies.size] = var_0;
if ( self.bodies.size <= level.max_number_of_dead_bodies )
return;
self.bodies[0] delete();
self.bodies = common_scripts\utility::array_removeundefined( self.bodies );
}