1686 lines
50 KiB
Plaintext
1686 lines
50 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
trigger_moveto( var_0 )
|
|
{
|
|
if ( !isdefined( level.mover_candidates ) )
|
|
{
|
|
level.mover_candidates = getentarray( "script_brushmodel", "classname" );
|
|
level.mover_candidates = common_scripts\utility::array_combine( level.mover_candidates, getentarray( "script_model", "classname" ) );
|
|
level.mover_object = common_scripts\utility::spawn_tag_origin();
|
|
}
|
|
|
|
var_1 = getentarray( self.target, "targetname" );
|
|
common_scripts\utility::array_thread( var_1, ::moveto_volume_think, self );
|
|
}
|
|
|
|
moveto_volume_think( var_0 )
|
|
{
|
|
var_1 = [];
|
|
var_2 = self;
|
|
|
|
foreach ( var_4 in level.mover_candidates )
|
|
{
|
|
level.mover_object.origin = var_4.origin;
|
|
|
|
if ( level.mover_object istouching( var_2 ) )
|
|
{
|
|
level.mover_candidates = common_scripts\utility::array_remove( level.mover_candidates, var_4 );
|
|
var_1 = common_scripts\utility::array_add( var_1, var_4 );
|
|
}
|
|
}
|
|
|
|
var_6 = undefined;
|
|
|
|
foreach ( var_4 in var_1 )
|
|
{
|
|
if ( isdefined( var_4.script_noteworthy ) && var_4.script_noteworthy == "mover" || isdefined( var_4.targetname ) && var_4.targetname == "mover" )
|
|
{
|
|
var_6 = var_4;
|
|
break;
|
|
}
|
|
}
|
|
|
|
foreach ( var_4 in var_1 )
|
|
{
|
|
if ( var_6 != var_4 )
|
|
var_4 linkto( var_6 );
|
|
}
|
|
|
|
var_11 = common_scripts\utility::get_target_ent();
|
|
|
|
if ( !isdefined( var_11.angles ) )
|
|
var_11.angles = ( 0, 0, 0 );
|
|
|
|
var_6.origin = var_11.origin;
|
|
var_6.angles = var_11.angles;
|
|
var_12 = undefined;
|
|
var_13 = 5;
|
|
var_14 = 0;
|
|
var_15 = 0;
|
|
|
|
if ( isdefined( var_11.script_duration ) )
|
|
var_13 = var_11.script_duration;
|
|
|
|
if ( isdefined( var_11.script_accel ) )
|
|
var_14 = var_11.script_accel;
|
|
|
|
if ( isdefined( var_11.script_decel ) )
|
|
var_15 = var_11.script_decel;
|
|
|
|
if ( isdefined( var_11.script_earthquake ) )
|
|
var_12 = var_11.script_earthquake;
|
|
|
|
var_0 waittill( "trigger" );
|
|
var_11 maps\_utility::script_delay();
|
|
|
|
if ( isdefined( var_11.target ) )
|
|
var_11 = var_11 common_scripts\utility::get_target_ent();
|
|
else
|
|
var_11 = undefined;
|
|
|
|
while ( isdefined( var_11 ) )
|
|
{
|
|
if ( isdefined( var_12 ) )
|
|
{
|
|
if ( issubstr( var_12, "constant" ) )
|
|
var_6 thread constant_quake( var_12 );
|
|
}
|
|
|
|
if ( !isdefined( var_11.angles ) )
|
|
var_11.angles = ( 0, 0, 0 );
|
|
|
|
var_6 moveto_rotateto( var_11, var_13, var_14, var_15 );
|
|
var_6 notify( "stop_constant_quake" );
|
|
var_13 = 5;
|
|
var_14 = 0;
|
|
var_15 = 0;
|
|
var_12 = undefined;
|
|
var_11 maps\_utility::script_delay();
|
|
|
|
if ( isdefined( var_11.script_duration ) )
|
|
var_13 = var_11.script_duration;
|
|
|
|
if ( isdefined( var_11.script_accel ) )
|
|
var_14 = var_11.script_accel;
|
|
|
|
if ( isdefined( var_11.script_decel ) )
|
|
var_15 = var_11.script_decel;
|
|
|
|
if ( isdefined( var_11.script_earthquake ) )
|
|
var_12 = var_11.script_earthquake;
|
|
|
|
var_16 = var_11 common_scripts\utility::get_linked_ents();
|
|
|
|
if ( var_16.size > 0 )
|
|
{
|
|
if ( issubstr( var_16[0].classname, "trigger" ) )
|
|
var_16[0] waittill( "trigger" );
|
|
}
|
|
|
|
if ( isdefined( var_11.target ) )
|
|
{
|
|
var_11 = var_11 common_scripts\utility::get_target_ent();
|
|
continue;
|
|
}
|
|
|
|
var_11 = undefined;
|
|
}
|
|
}
|
|
|
|
trigger_sort_and_attach( var_0 )
|
|
{
|
|
if ( !isdefined( level.mover_candidates ) )
|
|
{
|
|
level.mover_candidates = getentarray( "script_brushmodel", "classname" );
|
|
level.mover_candidates = common_scripts\utility::array_combine( level.mover_candidates, getentarray( "script_model", "classname" ) );
|
|
level.mover_object = common_scripts\utility::spawn_tag_origin();
|
|
}
|
|
|
|
var_1 = getentarray( self.target, "targetname" );
|
|
common_scripts\utility::array_thread( var_1, ::attach_in_volume, self );
|
|
}
|
|
|
|
attach_in_volume( var_0 )
|
|
{
|
|
var_1 = [];
|
|
var_2 = self;
|
|
|
|
foreach ( var_4 in level.mover_candidates )
|
|
{
|
|
level.mover_object.origin = var_4.origin;
|
|
|
|
if ( level.mover_object istouching( var_2 ) )
|
|
{
|
|
level.mover_candidates = common_scripts\utility::array_remove( level.mover_candidates, var_4 );
|
|
var_1 = common_scripts\utility::array_add( var_1, var_4 );
|
|
}
|
|
}
|
|
|
|
var_6 = undefined;
|
|
|
|
foreach ( var_4 in var_1 )
|
|
{
|
|
if ( isdefined( var_4.script_noteworthy ) && var_4.script_noteworthy == "mover" || isdefined( var_4.targetname ) && var_4.targetname == "link_to_trigger" )
|
|
{
|
|
var_6 = var_4;
|
|
break;
|
|
}
|
|
}
|
|
|
|
foreach ( var_4 in var_1 )
|
|
{
|
|
if ( var_6 != var_4 )
|
|
var_4 linkto( var_6 );
|
|
}
|
|
}
|
|
|
|
constant_quake( var_0 )
|
|
{
|
|
self endon( "stop_constant_quake" );
|
|
|
|
for (;;)
|
|
{
|
|
thread common_scripts\utility::do_earthquake( var_0, self.origin );
|
|
wait( randomfloatrange( 0.1, 0.2 ) );
|
|
}
|
|
}
|
|
|
|
moveto_rotateto_speed( var_0, var_1, var_2, var_3 )
|
|
{
|
|
var_4 = var_0.origin;
|
|
var_5 = self.origin;
|
|
var_6 = distance( var_5, var_4 );
|
|
var_7 = var_6 / var_1;
|
|
|
|
if ( !isdefined( var_2 ) )
|
|
var_2 = 0;
|
|
|
|
if ( !isdefined( var_3 ) )
|
|
var_3 = 0;
|
|
|
|
self rotateto( var_0.angles, var_7, var_7 * var_2, var_7 * var_3 );
|
|
self moveto( var_4, var_7, var_7 * var_2, var_7 * var_3 );
|
|
self waittill( "movedone" );
|
|
}
|
|
|
|
moveto_rotateto( var_0, var_1, var_2, var_3 )
|
|
{
|
|
self moveto( var_0.origin, var_1, var_2, var_3 );
|
|
self rotateto( var_0.angles, var_1, var_2, var_3 );
|
|
self waittill( "movedone" );
|
|
}
|
|
|
|
set_start_positions( var_0 )
|
|
{
|
|
var_1 = common_scripts\utility::getstructarray( var_0, "targetname" );
|
|
|
|
foreach ( var_3 in var_1 )
|
|
{
|
|
switch ( var_3.script_noteworthy )
|
|
{
|
|
case "player":
|
|
level.player setorigin( var_3.origin );
|
|
level.player setplayerangles( var_3.angles );
|
|
break;
|
|
case "hesh":
|
|
level.hesh forceteleport( var_3.origin, var_3.angles );
|
|
level.hesh setgoalpos( var_3.origin );
|
|
|
|
if ( isdefined( var_3.animation ) )
|
|
var_3 thread maps\_anim::anim_generic( level.hesh, var_3.animation );
|
|
|
|
if ( isdefined( var_3.target ) )
|
|
{
|
|
var_3 = var_3 common_scripts\utility::get_target_ent();
|
|
level.hesh thread maps\_utility::follow_path_and_animate( var_3 );
|
|
}
|
|
|
|
break;
|
|
case "elias":
|
|
level.elias forceteleport( var_3.origin, var_3.angles );
|
|
level.elias setgoalpos( var_3.origin );
|
|
|
|
if ( isdefined( var_3.animation ) )
|
|
var_3 thread maps\_anim::anim_generic( level.elias, var_3.animation );
|
|
|
|
if ( isdefined( var_3.target ) )
|
|
{
|
|
var_3 = var_3 common_scripts\utility::get_target_ent();
|
|
level.elias thread maps\_utility::follow_path_and_animate( var_3 );
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
spawn_hesh()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "hesh" );
|
|
level.hesh = var_0 maps\_utility::spawn_ai( 1 );
|
|
level.hesh thread maps\_utility::deletable_magic_bullet_shield();
|
|
level.hesh.animname = "hesh";
|
|
level.hesh set_ignore_states();
|
|
level.hesh maps\_utility::set_force_color( "r" );
|
|
level.hesh.alertlevel = "noncombat";
|
|
level.hesh set_move_rate( 0.98 );
|
|
level.hesh maps\_utility::walkdist_zero();
|
|
level.hesh.goalradius = 64;
|
|
level.hesh.turnrate = 0.2;
|
|
}
|
|
|
|
spawn_elias()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent( "elias" );
|
|
level.elias = var_0 maps\_utility::spawn_ai( 1 );
|
|
level.elias thread maps\_utility::deletable_magic_bullet_shield();
|
|
level.elias.animname = "elias";
|
|
level.elias set_ignore_states();
|
|
level.elias maps\_utility::set_force_color( "o" );
|
|
level.elias.alertlevel = "noncombat";
|
|
level.elias set_move_rate( 1 );
|
|
level.elias maps\_utility::walkdist_zero();
|
|
level.elias.goalradius = 64;
|
|
level.elias.turnrate = 0.2;
|
|
}
|
|
|
|
set_ignore_states()
|
|
{
|
|
maps\_utility::set_ignoreall( 1 );
|
|
maps\_utility::set_ignoreme( 1 );
|
|
}
|
|
|
|
clear_ignore_states()
|
|
{
|
|
maps\_utility::set_ignoreall( 0 );
|
|
maps\_utility::set_ignoreall( 0 );
|
|
}
|
|
|
|
set_move_rate( var_0 )
|
|
{
|
|
self.moveplaybackrate = var_0;
|
|
self.movetransitionrate = var_0;
|
|
}
|
|
|
|
enable_team_color()
|
|
{
|
|
if ( isdefined( level.hesh ) )
|
|
level.hesh maps\_utility::enable_ai_color();
|
|
|
|
if ( isdefined( level.elias ) )
|
|
level.elias maps\_utility::enable_ai_color();
|
|
}
|
|
|
|
disable_team_color()
|
|
{
|
|
if ( isdefined( level.hesh ) )
|
|
level.hesh maps\_utility::disable_ai_color();
|
|
|
|
if ( isdefined( level.elias ) )
|
|
level.elias maps\_utility::disable_ai_color();
|
|
}
|
|
|
|
viewmodel_anim_on()
|
|
{
|
|
level.player allowstand( 1 );
|
|
level.player allowcrouch( 0 );
|
|
level.player allowprone( 0 );
|
|
level.player allowjump( 0 );
|
|
level.player allowmelee( 0 );
|
|
level.player allowsprint( 0 );
|
|
}
|
|
|
|
viewmodel_anim_off()
|
|
{
|
|
level.player allowstand( 1 );
|
|
level.player allowcrouch( 1 );
|
|
level.player allowprone( 1 );
|
|
level.player allowjump( 1 );
|
|
level.player allowsprint( 1 );
|
|
}
|
|
|
|
anim_generic_reach_and_animate( var_0, var_1, var_2, var_3 )
|
|
{
|
|
maps\_anim::anim_generic_reach( var_0, var_1, var_2 );
|
|
self notify( "starting_anim" );
|
|
var_0 notify( "starting_anim" );
|
|
|
|
if ( isdefined( var_3 ) )
|
|
maps\_anim::anim_generic_custom_animmode( var_0, var_3, var_1, var_2 );
|
|
else
|
|
maps\_anim::anim_generic( var_0, var_1, var_2 );
|
|
}
|
|
|
|
disable_awareness()
|
|
{
|
|
self.awareness = 0;
|
|
self.ignoreall = 1;
|
|
self.dontmelee = 1;
|
|
maps\_utility::disable_surprise();
|
|
self.ignorerandombulletdamage = 1;
|
|
maps\_utility::disable_bulletwhizbyreaction();
|
|
maps\_utility::disable_pain();
|
|
maps\_utility::disable_danger_react();
|
|
self.grenadeawareness = 0;
|
|
self.ignoreme = 1;
|
|
maps\_utility::enable_dontevershoot();
|
|
self.disablefriendlyfirereaction = 1;
|
|
}
|
|
|
|
enable_awareness()
|
|
{
|
|
self.awareness = 1;
|
|
self.ignoreall = 0;
|
|
self.dontmelee = undefined;
|
|
maps\_utility::enable_surprise();
|
|
self.ignorerandombulletdamage = 0;
|
|
maps\_utility::enable_bulletwhizbyreaction();
|
|
maps\_utility::enable_pain();
|
|
maps\_utility::enable_danger_react( 3 );
|
|
self.grenadeawareness = 1;
|
|
self.ignoreme = 0;
|
|
maps\_utility::disable_dontevershoot();
|
|
self.disablefriendlyfirereaction = undefined;
|
|
}
|
|
|
|
yb_player_speed_percent( var_0, var_1 )
|
|
{
|
|
level.saved_speed_percent = var_0;
|
|
var_2 = int( getdvar( "g_speed" ) );
|
|
|
|
if ( !isdefined( level.player.g_speed ) )
|
|
level.player.g_speed = var_2;
|
|
|
|
var_3 = int( level.player.g_speed * var_0 * 0.01 );
|
|
level.player maps\_utility::player_speed_set( var_3, var_1 );
|
|
}
|
|
|
|
trigger_activate_targetname_safe( var_0 )
|
|
{
|
|
var_1 = getent( var_0, "targetname" );
|
|
|
|
if ( isdefined( var_1 ) )
|
|
var_1 notify( "trigger" );
|
|
}
|
|
|
|
bloom_fadein()
|
|
{
|
|
setblur( 10, 0 );
|
|
thread maps\_utility::vision_set_fog_changes( "coup_sunblind", 0 );
|
|
wait 0.5;
|
|
setblur( 0, 2 );
|
|
thread maps\_utility::vision_set_fog_changes( "ygb_chaos_a", 3 );
|
|
}
|
|
|
|
bloom_fadeout()
|
|
{
|
|
thread maps\_utility::vision_set_fog_changes( "coup_sunblind", 0 );
|
|
}
|
|
|
|
reset_player_sprint_speed_scale()
|
|
{
|
|
set_player_sprint_speed_scale( 1.5 );
|
|
}
|
|
|
|
set_player_sprint_speed_scale( var_0 )
|
|
{
|
|
var_0 = gt_op( var_0, 0 );
|
|
setsaveddvar( "player_sprintSpeedScale", var_0 );
|
|
}
|
|
|
|
gt_op( var_0, var_1, var_2 )
|
|
{
|
|
if ( isdefined( var_0 ) && isdefined( var_1 ) )
|
|
return common_scripts\utility::ter_op( var_0 > var_1, var_0, var_1 );
|
|
|
|
if ( isdefined( var_0 ) && !isdefined( var_1 ) )
|
|
return var_0;
|
|
|
|
if ( !isdefined( var_0 ) && isdefined( var_1 ) )
|
|
return var_1;
|
|
|
|
return var_2;
|
|
}
|
|
|
|
heroes_light_earthquake( var_0 )
|
|
{
|
|
level.no_tremor = 0;
|
|
waittillframeend;
|
|
level.player yb_player_speed_percent( 25, 0.75 );
|
|
level.player playrumbleonentity( "light_2s" );
|
|
earthquake( 0.3, 2.5, level.player.origin, 64 );
|
|
setblur( 1, 0.1 );
|
|
level.player allowsprint( 0 );
|
|
level.player thread maps\_player_limp::stumble( ( 8, 2, 7 ), 0.75, 2 );
|
|
wait 2;
|
|
setblur( 0, 0.1 );
|
|
level.player yb_player_speed_percent( var_0, 1 );
|
|
level.no_tremor = 1;
|
|
|
|
if ( common_scripts\utility::flag( "new_treefall" ) )
|
|
level.player allowsprint( 1 );
|
|
}
|
|
|
|
heavy_quake( var_0, var_1 )
|
|
{
|
|
if ( !isdefined( var_1 ) )
|
|
var_1 = 25;
|
|
|
|
level.player playrumbleonentity( "light_2s" );
|
|
earthquake( 0.4, 2.5, level.player.origin, 512 );
|
|
level.player thread yb_player_speed_percent( var_1, 0.75 );
|
|
level.player thread maps\_player_limp::stumble( ( 20, 5, 35 ), 0.75, 2 );
|
|
level.player allowsprint( 0 );
|
|
wait 2;
|
|
level.player thread yb_player_speed_percent( var_0, 1.5 );
|
|
|
|
if ( common_scripts\utility::flag( "new_treefall" ) )
|
|
level.player allowsprint( 1 );
|
|
}
|
|
|
|
enable_elias_walk()
|
|
{
|
|
maps\_utility::disable_turnanims();
|
|
maps\_utility::disable_surprise();
|
|
self.uphill = 0;
|
|
self.anim_blend_time_override = 0.75;
|
|
self.pathrandompercent = 0;
|
|
self.ignoreall = 1;
|
|
self.ignoreme = 1;
|
|
self.no_pistol_switch = 1;
|
|
self.ignoresuppression = 1;
|
|
self.dontmelee = 1;
|
|
self.norunreload = 1;
|
|
self.ammocheatinterval = 2000;
|
|
self.disablebulletwhizbyreaction = 1;
|
|
self.usechokepoints = 0;
|
|
self.disabledoorbehavior = 1;
|
|
self.combatmode = "no_cover";
|
|
self.oldgrenadeawareness = self.grenadeawareness;
|
|
self.grenadeawareness = 0;
|
|
self.oldgrenadereturnthrow = self.nogrenadereturnthrow;
|
|
self.nogrenadereturnthrow = 1;
|
|
self.awareness = 0;
|
|
maps\_utility::disable_surprise();
|
|
self.ignorerandombulletdamage = 1;
|
|
maps\_utility::disable_bulletwhizbyreaction();
|
|
maps\_utility::disable_pain();
|
|
maps\_utility::disable_danger_react();
|
|
maps\_utility::enable_dontevershoot();
|
|
self.disablefriendlyfirereaction = 1;
|
|
init_elias_animset();
|
|
self.a.pose = "stand";
|
|
self allowedstances( "stand" );
|
|
}
|
|
|
|
enable_hesh_walk()
|
|
{
|
|
maps\_utility::disable_turnanims();
|
|
maps\_utility::disable_surprise();
|
|
self.uphill = 0;
|
|
self.pathrandompercent = 0;
|
|
self.ignoreall = 1;
|
|
self.ignoreme = 1;
|
|
self.no_pistol_switch = 1;
|
|
self.ignoresuppression = 1;
|
|
self.dontmelee = 1;
|
|
self.norunreload = 1;
|
|
self.ammocheatinterval = 2000;
|
|
self.disablebulletwhizbyreaction = 1;
|
|
self.usechokepoints = 0;
|
|
self.disabledoorbehavior = 1;
|
|
self.combatmode = "no_cover";
|
|
self.oldgrenadeawareness = self.grenadeawareness;
|
|
self.grenadeawareness = 0;
|
|
self.oldgrenadereturnthrow = self.nogrenadereturnthrow;
|
|
self.nogrenadereturnthrow = 1;
|
|
self.awareness = 0;
|
|
maps\_utility::disable_surprise();
|
|
self.ignorerandombulletdamage = 1;
|
|
maps\_utility::disable_bulletwhizbyreaction();
|
|
maps\_utility::disable_pain();
|
|
maps\_utility::disable_danger_react();
|
|
maps\_utility::enable_dontevershoot();
|
|
self.disablefriendlyfirereaction = 1;
|
|
init_hesh_animset();
|
|
self.a.pose = "stand";
|
|
self allowedstances( "stand" );
|
|
}
|
|
|
|
#using_animtree("generic_human");
|
|
|
|
init_elias_animset()
|
|
{
|
|
self notify( "movemode" );
|
|
self.run_overrideanim = undefined;
|
|
self.walk_overrideanim = undefined;
|
|
maps\_utility::clear_generic_idle_anim();
|
|
maps\_utility::disable_turnanims();
|
|
maps\_utility::disable_surprise();
|
|
self.uphill = 0;
|
|
var_0 = [];
|
|
var_0["sprint"] = %youngblood_jog_hesh;
|
|
var_0["straight"] = %youngblood_elias_walk;
|
|
var_0["walk"] = %youngblood_elias_walk;
|
|
var_0["move_f"] = %civilian_walk_hurried_1;
|
|
var_0["move_l"] = %walk_left;
|
|
var_0["move_r"] = %walk_right;
|
|
var_0["move_b"] = %walk_backward;
|
|
self.custommoveanimset["run"] = var_0;
|
|
self.custommoveanimset["crouch"] = var_0;
|
|
self.custommoveanimset["walk"] = var_0;
|
|
self.customidleanimset = [];
|
|
self.customidleanimset["stand"] = [ %youngblood_hesh_calm_idle ];
|
|
self.customidleanimweights["stand"] = [ 1 ];
|
|
self.a.pose = "stand";
|
|
self allowedstances( "stand" );
|
|
self.custommovetransition = ::yb_calm_startmovetransition;
|
|
self.customarrivalfunc = ::yb_calm_stopmovetransition;
|
|
self.permanentcustommovetransition = 1;
|
|
}
|
|
|
|
init_hesh_animset()
|
|
{
|
|
self notify( "movemode" );
|
|
self.run_overrideanim = undefined;
|
|
self.walk_overrideanim = undefined;
|
|
maps\_utility::clear_generic_idle_anim();
|
|
maps\_utility::disable_turnanims();
|
|
maps\_utility::disable_surprise();
|
|
self.uphill = 0;
|
|
var_0 = [];
|
|
var_0["sprint"] = %youngblood_hesh_sprint;
|
|
var_0["straight"] = %youngblood_walk_hesh;
|
|
var_0["walk"] = %youngblood_walk_hesh;
|
|
var_0["move_f"] = %civilian_walk_hurried_1;
|
|
var_0["move_l"] = %walk_left;
|
|
var_0["move_r"] = %walk_right;
|
|
var_0["move_b"] = %walk_backward;
|
|
var_0["crouch"] = %crouch_sprint;
|
|
var_0["crouch_l"] = %crouch_fastwalk_l;
|
|
var_0["crouch_r"] = %crouch_fastwalk_r;
|
|
var_0["crouch_b"] = %crouch_fastwalk_b;
|
|
var_0["stairs_up"] = %traverse_stair_run_01;
|
|
var_0["stairs_down"] = %traverse_stair_run_down;
|
|
self.custommoveanimset["run"] = var_0;
|
|
self.custommoveanimset["crouch"] = var_0;
|
|
self.custommoveanimset["walk"] = var_0;
|
|
self.customidleanimset = [];
|
|
self.customidleanimset["stand"] = [ %youngblood_hesh_calm_idle ];
|
|
self.customidleanimweights["stand"] = [ 1 ];
|
|
self.a.pose = "stand";
|
|
self allowedstances( "stand" );
|
|
level.hesh_anim_set = 1;
|
|
self.custommovetransition = ::yb_calm_startmovetransition;
|
|
self.customarrivalfunc = ::yb_calm_stopmovetransition;
|
|
self.permanentcustommovetransition = 1;
|
|
}
|
|
|
|
init_jog_animset()
|
|
{
|
|
self notify( "movemode" );
|
|
self.run_overrideanim = undefined;
|
|
self.walk_overrideanim = undefined;
|
|
maps\_utility::clear_generic_idle_anim();
|
|
maps\_utility::disable_turnanims();
|
|
maps\_utility::disable_surprise();
|
|
self.uphill = 0;
|
|
var_0 = [];
|
|
var_0["sprint"] = %youngblood_hesh_sprint;
|
|
var_0["straight"] = %youngblood_jog_hesh;
|
|
var_0["walk"] = %youngblood_jog_hesh;
|
|
var_0["move_f"] = %civilian_walk_hurried_1;
|
|
var_0["move_l"] = %walk_left;
|
|
var_0["move_r"] = %walk_right;
|
|
var_0["move_b"] = %walk_backward;
|
|
var_0["crouch"] = %crouch_sprint;
|
|
var_0["crouch_l"] = %crouch_fastwalk_l;
|
|
var_0["crouch_r"] = %crouch_fastwalk_r;
|
|
var_0["crouch_b"] = %crouch_fastwalk_b;
|
|
var_0["stairs_up"] = %traverse_stair_run_01;
|
|
var_0["stairs_down"] = %traverse_stair_run_down;
|
|
self.custommoveanimset["run"] = var_0;
|
|
self.custommoveanimset["crouch"] = var_0;
|
|
self.custommoveanimset["walk"] = var_0;
|
|
self.customidleanimset = [];
|
|
self.customidleanimset["stand"] = [ %youngblood_hesh_calm_idle ];
|
|
self.customidleanimweights["stand"] = [ 1 ];
|
|
self.a.pose = "stand";
|
|
self allowedstances( "stand" );
|
|
level.hesh_anim_set = 1;
|
|
}
|
|
|
|
init_chaos_animset()
|
|
{
|
|
self notify( "movemode" );
|
|
self.run_overrideanim = undefined;
|
|
self.walk_overrideanim = undefined;
|
|
maps\_utility::clear_generic_idle_anim();
|
|
maps\_utility::disable_turnanims();
|
|
maps\_utility::disable_surprise();
|
|
maps\_utility::disable_arrivals();
|
|
maps\_utility::disable_exits();
|
|
self.uphill = 0;
|
|
var_0 = [];
|
|
var_0["sprint"] = %youngblood_hesh_sprint;
|
|
var_0["straight"] = %youngblood_hesh_run_faster;
|
|
var_0["straight_twitch"] = [ %youngblood_hesh_run_twitch_a, %youngblood_hesh_run_twitch_b ];
|
|
var_0["walk"] = %youngblood_hesh_run_faster;
|
|
var_0["move_f"] = %youngblood_hesh_run_faster;
|
|
var_0["move_l"] = %walk_left;
|
|
var_0["move_r"] = %walk_right;
|
|
var_0["move_b"] = %walk_backward;
|
|
var_0["crouch"] = %crouch_sprint;
|
|
var_0["crouch_l"] = %crouch_fastwalk_l;
|
|
var_0["crouch_r"] = %crouch_fastwalk_r;
|
|
var_0["crouch_b"] = %crouch_fastwalk_b;
|
|
var_0["stairs_up"] = %youngblood_hesh_jog_upstairs;
|
|
var_0["stairs_down"] = %traverse_stair_run_down;
|
|
self.custommoveanimset["run"] = var_0;
|
|
self.custommoveanimset["crouch"] = var_0;
|
|
self.custommoveanimset["walk"] = var_0;
|
|
self.customidleanimset = [];
|
|
self.customidleanimset["stand"] = [ %youngblood_hesh_alert_idle_1 ];
|
|
self.customidleanimweights["stand"] = [ 1 ];
|
|
self.a.pose = "stand";
|
|
self allowedstances( "stand" );
|
|
level.hesh_anim_set = 1;
|
|
self.custommovetransition = ::yb_alert_startmovetransition;
|
|
self.customarrivalfunc = ::yb_alert_stopmovetransition;
|
|
self.permanentcustommovetransition = 1;
|
|
}
|
|
|
|
init_jog_animset_alert()
|
|
{
|
|
self notify( "movemode" );
|
|
self.run_overrideanim = undefined;
|
|
self.walk_overrideanim = undefined;
|
|
maps\_utility::clear_generic_idle_anim();
|
|
maps\_utility::disable_turnanims();
|
|
maps\_utility::disable_surprise();
|
|
self.uphill = 0;
|
|
self.turnrate = 0.3;
|
|
var_0 = [];
|
|
var_0["sprint"] = %youngblood_hesh_run;
|
|
var_0["straight"] = %youngblood_jog_hesh;
|
|
var_0["walk"] = %youngblood_jog_hesh;
|
|
var_0["move_f"] = %youngblood_jog_hesh;
|
|
var_0["move_l"] = %walk_left;
|
|
var_0["move_r"] = %walk_right;
|
|
var_0["move_b"] = %walk_backward;
|
|
var_0["crouch"] = %crouch_sprint;
|
|
var_0["crouch_l"] = %crouch_fastwalk_l;
|
|
var_0["crouch_r"] = %crouch_fastwalk_r;
|
|
var_0["crouch_b"] = %crouch_fastwalk_b;
|
|
var_0["stairs_up"] = %traverse_stair_run_01;
|
|
var_0["stairs_down"] = %traverse_stair_run_down;
|
|
self.custommoveanimset["run"] = var_0;
|
|
self.custommoveanimset["crouch"] = var_0;
|
|
self.custommoveanimset["walk"] = var_0;
|
|
self.customidleanimset = [];
|
|
|
|
if ( self == level.hesh )
|
|
self.customidleanimset["stand"] = [ %youngblood_hesh_alert_idle_r ];
|
|
else if ( self == level.elias )
|
|
self.customidleanimset["stand"] = [ %youngblood_hesh_alert_idle_l ];
|
|
else
|
|
self.customidleanimset["stand"] = [ %youngblood_hesh_alert_idle_1 ];
|
|
|
|
self.customidleanimweights["stand"] = [ 1 ];
|
|
self.a.pose = "stand";
|
|
self allowedstances( "stand" );
|
|
level.hesh_anim_set = 1;
|
|
self.custommovetransition = ::yb_alert_startmovetransition;
|
|
self.customarrivalfunc = ::yb_alert_stopmovetransition;
|
|
self.permanentcustommovetransition = 1;
|
|
}
|
|
|
|
init_run_animset_alert()
|
|
{
|
|
self notify( "movemode" );
|
|
self.run_overrideanim = undefined;
|
|
self.walk_overrideanim = undefined;
|
|
maps\_utility::clear_generic_idle_anim();
|
|
self.uphill = 0;
|
|
maps\_utility::disable_turnanims();
|
|
maps\_utility::disable_surprise();
|
|
self.turnrate = 0.3;
|
|
var_0 = [];
|
|
var_0["sprint"] = %youngblood_hesh_sprint;
|
|
var_0["straight"] = %youngblood_hesh_run;
|
|
var_0["walk"] = %youngblood_hesh_run;
|
|
var_0["move_f"] = %youngblood_jog_hesh;
|
|
var_0["move_l"] = %walk_left;
|
|
var_0["move_r"] = %walk_right;
|
|
var_0["move_b"] = %walk_backward;
|
|
var_0["crouch"] = %crouch_sprint;
|
|
var_0["crouch_l"] = %crouch_fastwalk_l;
|
|
var_0["crouch_r"] = %crouch_fastwalk_r;
|
|
var_0["crouch_b"] = %crouch_fastwalk_b;
|
|
var_0["stairs_up"] = %traverse_stair_run_01;
|
|
var_0["stairs_down"] = %traverse_stair_run_down;
|
|
self.custommoveanimset["run"] = var_0;
|
|
self.custommoveanimset["crouch"] = var_0;
|
|
self.custommoveanimset["walk"] = var_0;
|
|
self.customidleanimset = [];
|
|
|
|
if ( self == level.hesh )
|
|
self.customidleanimset["stand"] = [ %youngblood_hesh_alert_idle_r ];
|
|
else if ( self == level.elias )
|
|
self.customidleanimset["stand"] = [ %youngblood_hesh_alert_idle_l ];
|
|
else
|
|
self.customidleanimset["stand"] = [ %youngblood_hesh_alert_idle_1 ];
|
|
|
|
self.customidleanimweights["stand"] = [ 1 ];
|
|
self.a.pose = "stand";
|
|
self allowedstances( "stand" );
|
|
level.hesh_anim_set = 1;
|
|
self.custommovetransition = ::yb_alert_startmovetransition;
|
|
self.customarrivalfunc = ::yb_alert_stopmovetransition;
|
|
self.permanentcustommovetransition = 1;
|
|
}
|
|
|
|
yb_calm_startmovetransition()
|
|
{
|
|
if ( !animscripts\exit_node::checktransitionpreconditions() )
|
|
return;
|
|
|
|
if ( self.a.movement != "stop" )
|
|
return;
|
|
|
|
var_0 = animscripts\exit_node::getexitnode();
|
|
self orientmode( "face angle", self.angles[1] );
|
|
self animmode( "zonly_physics", 0 );
|
|
var_1 = randomfloatrange( 0.9, 1.1 );
|
|
var_2 = %youngblood_hesh_calm_idle_2_walk;
|
|
self setflaggedanimknoballrestart( "startmove", var_2, %body, 1, 0.1, var_1 );
|
|
animscripts\shared::donotetracks( "startmove" );
|
|
self orientmode( "face default" );
|
|
self animmode( "none", 0 );
|
|
|
|
if ( animhasnotetrack( var_2, "code_move" ) )
|
|
animscripts\shared::donotetracks( "startmove" );
|
|
}
|
|
|
|
yb_calm_stopmovetransition()
|
|
{
|
|
if ( isdefined( self.disablearrivals ) )
|
|
return;
|
|
|
|
var_0 = %youngblood_hesh_walk_2_calm_idle;
|
|
self clearanim( %body, 0.2 );
|
|
self setflaggedanimrestart( "coverArrival", var_0, 1, 0.2, self.movetransitionrate );
|
|
animscripts\face::playfacialanim( var_0, "run" );
|
|
animscripts\shared::donotetracks( "coverArrival", animscripts\cover_arrival::handlestartaim );
|
|
self.a.pose = "stand";
|
|
self.a.movement = "stop";
|
|
self.a.arrivaltype = self.approachtype;
|
|
self clearanim( %root, 0.3 );
|
|
self.lastapproachaborttime = undefined;
|
|
}
|
|
|
|
yb_alert_startmovetransition()
|
|
{
|
|
if ( !animscripts\exit_node::checktransitionpreconditions() )
|
|
return;
|
|
|
|
if ( self.a.movement != "stop" )
|
|
return;
|
|
|
|
var_0 = animscripts\exit_node::getexitnode();
|
|
self orientmode( "face angle", self.angles[1] );
|
|
self animmode( "zonly_physics", 0 );
|
|
var_1 = randomfloatrange( 0.9, 1.1 );
|
|
var_2 = %youngblood_hesh_alert_idle_2_run;
|
|
self setflaggedanimknoballrestart( "startmove", var_2, %body, 1, 0.1, var_1 );
|
|
animscripts\shared::donotetracks( "startmove" );
|
|
self orientmode( "face default" );
|
|
self animmode( "none", 0 );
|
|
|
|
if ( animhasnotetrack( var_2, "code_move" ) )
|
|
animscripts\shared::donotetracks( "startmove" );
|
|
}
|
|
|
|
yb_alert_stopmovetransition()
|
|
{
|
|
if ( isdefined( self.disablearrivals ) )
|
|
return;
|
|
|
|
var_0 = %youngblood_hesh_run_2_alert_idle;
|
|
self clearanim( %body, 0.2 );
|
|
self setflaggedanimrestart( "coverArrival", var_0, 1, 0.2, self.movetransitionrate );
|
|
animscripts\face::playfacialanim( var_0, "run" );
|
|
animscripts\shared::donotetracks( "coverArrival", animscripts\cover_arrival::handlestartaim );
|
|
self.a.pose = "stand";
|
|
self.a.movement = "stop";
|
|
self.a.arrivaltype = self.approachtype;
|
|
self clearanim( %root, 0.3 );
|
|
self.lastapproachaborttime = undefined;
|
|
}
|
|
|
|
init_uphill_jog_animset()
|
|
{
|
|
maps\_utility::set_generic_run_anim( "youngblood_hesh_jog_uphill_A" );
|
|
maps\_utility::set_generic_idle_anim( "youngblood_hesh_calm_idle" );
|
|
}
|
|
|
|
init_hesh_hurt_animset()
|
|
{
|
|
self.uphill = 0;
|
|
var_0 = [];
|
|
var_0["sprint"] = %youngblood_stumble_walk_hesh;
|
|
var_0["straight"] = %youngblood_stumble_walk_hesh;
|
|
var_0["walk"] = %youngblood_stumble_walk_hesh;
|
|
var_0["move_f"] = %youngblood_stumble_walk_hesh;
|
|
var_0["move_l"] = %walk_left;
|
|
var_0["move_r"] = %walk_right;
|
|
var_0["move_b"] = %walk_backward;
|
|
var_0["crouch"] = %crouch_sprint;
|
|
var_0["crouch_l"] = %crouch_fastwalk_l;
|
|
var_0["crouch_r"] = %crouch_fastwalk_r;
|
|
var_0["crouch_b"] = %crouch_fastwalk_b;
|
|
self.custommoveanimset["run"] = var_0;
|
|
self.custommoveanimset["crouch"] = var_0;
|
|
self.custommoveanimset["walk"] = var_0;
|
|
self.customidleanimset = [];
|
|
self.customidleanimset["stand"] = [ %youngblood_hesh_calm_idle ];
|
|
self.customidleanimweights["stand"] = [ 1 ];
|
|
self.a.pose = "stand";
|
|
self allowedstances( "stand" );
|
|
}
|
|
|
|
init_uphill_walk_animset()
|
|
{
|
|
maps\_utility::set_generic_run_anim( "youngblood_hesh_walk_uphill" );
|
|
maps\_utility::set_generic_idle_anim( "youngblood_hesh_calm_idle" );
|
|
}
|
|
|
|
uphill_trigger()
|
|
{
|
|
level endon( "start_transition_to_odin" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "trigger", var_0 );
|
|
|
|
if ( isai( var_0 ) )
|
|
{
|
|
if ( !var_0.uphill )
|
|
{
|
|
var_0.uphill = 1;
|
|
|
|
if ( var_0.script == "move" && level.woods_movement == "walk" )
|
|
var_0 thread maps\_anim::anim_generic_gravity( var_0, "youngblood_hesh_walk_uphill_2_IN" );
|
|
|
|
switch ( level.woods_movement )
|
|
{
|
|
case "walk":
|
|
var_0 thread init_uphill_walk_animset();
|
|
break;
|
|
case "jog":
|
|
var_0 thread init_uphill_jog_animset();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
flat_trigger()
|
|
{
|
|
level endon( "start_transition_to_odin" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "trigger", var_0 );
|
|
|
|
if ( isai( var_0 ) )
|
|
{
|
|
if ( var_0.uphill )
|
|
{
|
|
var_0.uphill = 0;
|
|
|
|
if ( var_0.script == "move" && level.woods_movement == "walk" )
|
|
var_0 thread maps\_anim::anim_generic_gravity( var_0, "youngblood_hesh_walk_uphill_2_OUT" );
|
|
|
|
var_0 notify( "movemode" );
|
|
var_0.run_overrideanim = undefined;
|
|
var_0.walk_overrideanim = undefined;
|
|
var_0 maps\_utility::clear_generic_idle_anim();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
player_heartbeat()
|
|
{
|
|
level endon( "stop_player_heartbeat" );
|
|
|
|
for (;;)
|
|
{
|
|
self playlocalsound( "breathing_heartbeat" );
|
|
wait 0.5;
|
|
}
|
|
}
|
|
|
|
videotaper_think()
|
|
{
|
|
self endon( "death" );
|
|
var_0 = self.spawner;
|
|
|
|
if ( isdefined( self.spawner.target ) )
|
|
{
|
|
var_1 = self.spawner common_scripts\utility::get_target_ent();
|
|
|
|
if ( !isdefined( var_1.classname ) )
|
|
var_0 = var_1;
|
|
else if ( !issubstr( var_1.classname, "trigger" ) )
|
|
var_0 = var_1;
|
|
}
|
|
|
|
var_2 = undefined;
|
|
|
|
if ( self.animation == "bunker_toss_idle_guy1" )
|
|
{
|
|
wait 0.1;
|
|
self delete();
|
|
return;
|
|
}
|
|
|
|
if ( self.animation == "roadkill_videotaper_3B_explosion_idle" )
|
|
{
|
|
if ( self.model == "body_us_civ_male_b" )
|
|
{
|
|
self detach( self.headmodel, "" );
|
|
|
|
if ( isdefined( self.hatmodel ) )
|
|
self detach( self.hatmodel, "" );
|
|
|
|
var_3 = [ "a", "e", "i" ];
|
|
var_4 = common_scripts\utility::random( var_3 );
|
|
var_5 = "head_us_civ_male_" + var_4;
|
|
self setmodel( "body_us_civ_male_" + var_4 );
|
|
self attach( var_5, "", 1 );
|
|
self.headmodel = var_5;
|
|
}
|
|
}
|
|
|
|
if ( issubstr( self.animation, "videotaper" ) || issubstr( self.animation, "texting" ) )
|
|
{
|
|
var_6 = "electronics_camera_cellphone_low";
|
|
|
|
switch ( self.animation )
|
|
{
|
|
case "roadkill_videotaper_1B_explosion_idle":
|
|
var_6 = "electronics_camera_pointandshoot_low";
|
|
break;
|
|
}
|
|
|
|
var_2 = spawn( "script_model", ( 0, 0, 0 ) );
|
|
var_2 setmodel( var_6 );
|
|
var_2 linkto( self, "tag_inhand", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
}
|
|
|
|
if ( isdefined( self.script_parameters ) && self.script_parameters == "approach" )
|
|
{
|
|
var_0 thread maps\_anim::anim_generic_first_frame( self, self.animation + "_start" );
|
|
|
|
if ( !isdefined( self.target ) )
|
|
{
|
|
while ( distance( level.player.origin, self.origin ) < 400 )
|
|
wait 0.05;
|
|
|
|
waittill_player_lookat_drone( 0.7 );
|
|
}
|
|
else
|
|
{
|
|
var_7 = common_scripts\utility::get_target_ent();
|
|
var_7 waittill( "trigger" );
|
|
}
|
|
|
|
var_0 maps\_anim::anim_generic( self, self.animation + "_start" );
|
|
}
|
|
|
|
var_0 thread maps\_anim::anim_generic_loop( self, self.animation );
|
|
level waittill( "start_mansion" );
|
|
self delete();
|
|
|
|
if ( isdefined( var_0.classname ) )
|
|
var_0 delete();
|
|
|
|
if ( isdefined( var_2 ) )
|
|
var_2 delete();
|
|
}
|
|
|
|
waittill_player_lookat_drone( var_0, var_1, var_2, var_3, var_4, var_5 )
|
|
{
|
|
if ( !isdefined( var_5 ) )
|
|
var_5 = level.player;
|
|
|
|
var_6 = spawnstruct();
|
|
|
|
if ( isdefined( var_3 ) )
|
|
var_6 thread maps\_utility::notify_delay( "timeout", var_3 );
|
|
|
|
var_6 endon( "timeout" );
|
|
|
|
if ( !isdefined( var_0 ) )
|
|
var_0 = 0.92;
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
var_1 = 0;
|
|
|
|
var_7 = int( var_1 * 20 );
|
|
var_8 = var_7;
|
|
self endon( "death" );
|
|
var_9 = undefined;
|
|
|
|
for (;;)
|
|
{
|
|
var_9 = self gettagorigin( "j_head" );
|
|
|
|
if ( var_5 maps\_utility::player_looking_at( var_9, var_0, var_2, self ) )
|
|
{
|
|
var_8--;
|
|
|
|
if ( var_8 <= 0 )
|
|
return 1;
|
|
}
|
|
else
|
|
var_8 = var_7;
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
falling_debris( var_0 )
|
|
{
|
|
var_1 = spawn( "script_model", var_0.origin );
|
|
var_1 setmodel( "tag_origin" );
|
|
var_1.angles = ( -90, 0, 0 );
|
|
|
|
if ( isdefined( var_0.target ) )
|
|
{
|
|
var_2 = var_0 common_scripts\utility::get_target_ent();
|
|
var_3 = var_2.origin;
|
|
var_4 = bullettrace( var_1.origin, var_3, 0, var_1, 1 );
|
|
var_3 = var_4["position"];
|
|
}
|
|
else
|
|
{
|
|
var_4 = bullettrace( var_1.origin, var_1.origin - ( 0, 0, 7000 ), 0, var_1, 1 );
|
|
var_3 = var_4["position"];
|
|
}
|
|
|
|
var_5 = 1000.0;
|
|
var_6 = distance( var_1.origin, var_3 );
|
|
var_7 = var_6 / var_5;
|
|
var_1 moveto( var_3, var_7, 0, 0 );
|
|
var_1 maps\_utility::delaythread( max( var_7 - 1.75, 0 ), maps\_utility::play_sound_on_entity, "debris_inc_whoosh" );
|
|
common_scripts\utility::noself_delaycall( max( var_7 - 1.75, 0 ), ::playfxontag, common_scripts\utility::getfx( "ygb_chaos_debris_smk" ), var_1, "tag_origin" );
|
|
wait( var_7 );
|
|
do_player_crash_fx( var_3 );
|
|
earthquake( 0.6, randomfloatrange( 0.75, 1.25 ), var_3, 1024 );
|
|
playfx( level._effect["vfx_lrg_vehicle_exp"], var_3 );
|
|
thread common_scripts\utility::play_sound_in_space( "exp_rock_big_debris_s1", var_3 );
|
|
stopfxontag( common_scripts\utility::getfx( "ygb_chaos_debris_smk" ), var_1, "tag_origin" );
|
|
common_scripts\utility::waitframe();
|
|
var_1 delete();
|
|
}
|
|
|
|
do_player_crash_fx( var_0 )
|
|
{
|
|
if ( common_scripts\utility::flag( "do_player_crash_fx" ) )
|
|
return;
|
|
|
|
common_scripts\utility::flag_set( "do_player_crash_fx" );
|
|
thread maps\_utility::flag_clear_delayed( "do_player_crash_fx", 1 );
|
|
var_1 = distancesquared( level.player.origin, var_0 );
|
|
|
|
if ( var_1 < squared( 1500 ) )
|
|
{
|
|
level.player playrumblelooponentity( "tank_rumble" );
|
|
level.player common_scripts\utility::delaycall( 1.0, ::stoprumble, "tank_rumble" );
|
|
earthquake( 0.5, 1, var_0, 2000 );
|
|
|
|
if ( common_scripts\utility::flag( "suppress_crash_player_fx" ) )
|
|
return;
|
|
|
|
var_2 = bullettrace( level.player.origin, level.player.origin - ( 0, 0, 5 ), 0, level.player );
|
|
|
|
if ( var_2["fraction"] < 0.99 )
|
|
{
|
|
level.player setvelocity( anglestoup( level.player.angles ) * 210 );
|
|
|
|
if ( var_1 < squared( 650 ) )
|
|
{
|
|
level.player allowsprint( 0 );
|
|
level.player allowstand( 0 );
|
|
level.player allowprone( 0 );
|
|
level.player setstance( "crouch" );
|
|
level.player maps\_utility::blend_movespeedscale( 0.5 );
|
|
level.player maps\_utility::delaythread( 0.1, maps\_utility::playlocalsoundwrapper, "breathing_hurt" );
|
|
var_3 = 1;
|
|
level.player maps\_utility::delaythread( 0.5, maps\_utility::blend_movespeedscale, level.saved_speed_percent * 0.01, 1.0 );
|
|
level.player maps\_utility::delaythread( var_3 + 0.25, maps\_utility::playlocalsoundwrapper, "breathing_better" );
|
|
level.player common_scripts\utility::delaycall( var_3, ::allowsprint, 1 );
|
|
level.player common_scripts\utility::delaycall( var_3, ::allowstand, 1 );
|
|
level.player common_scripts\utility::delaycall( var_3, ::allowprone, 1 );
|
|
level.player common_scripts\utility::delaycall( var_3, ::setstance, "stand" );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
neighborhood_fail_if_too_far()
|
|
{
|
|
level endon( "player_safe" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( getdvarint( "no_fail", 0 ) || getdvarint( "scr_art_tweak", 0 ) )
|
|
return;
|
|
|
|
if ( distance2d( level.player.origin, level.hesh.origin ) > 800 )
|
|
{
|
|
level notify( "new_quote_string" );
|
|
setdvar( "ui_deadquote", &"YOUNGBLOOD_LEFTBEHIND" );
|
|
maps\_utility::missionfailedwrapper();
|
|
break;
|
|
}
|
|
else if ( distance2d( level.player.origin, level.hesh.origin ) > 500 )
|
|
{
|
|
maps\_utility::display_hint( "hint_sprint" );
|
|
wait 5;
|
|
}
|
|
|
|
wait 0.5;
|
|
}
|
|
}
|
|
|
|
chaos_player_kill()
|
|
{
|
|
var_0 = anglestoforward( level.player.angles );
|
|
playfx( level._effect["vfx_yb_explosion_fire_med"], level.player geteye() + var_0 * 32, ( 0, 0, 1 ), anglestoright( level.player.angles ) );
|
|
thread common_scripts\utility::play_sound_in_space( "scn_yb_house_collapse", level.player.origin + ( 0, 0, 0 ) );
|
|
wait 0.25;
|
|
level.player kill();
|
|
}
|
|
|
|
chaos_kill_after_time( var_0 )
|
|
{
|
|
level endon( "player_safe" );
|
|
common_scripts\utility::flag_set( "player_unsafe" );
|
|
wait( var_0 );
|
|
|
|
if ( getdvarint( "no_fail", 0 ) || getdvarint( "scr_art_tweak", 0 ) )
|
|
return;
|
|
|
|
thread chaos_player_kill();
|
|
}
|
|
|
|
chaos_checkpoint_trigger()
|
|
{
|
|
self waittill( "trigger" );
|
|
level notify( "chaos_checkpoint" );
|
|
|
|
if ( self.script_duration )
|
|
{
|
|
maps\_utility::autosave_by_name_silent( "chaos" );
|
|
thread chaos_checkpoint( self.script_duration );
|
|
}
|
|
|
|
self delete();
|
|
}
|
|
|
|
chaos_checkpoint( var_0 )
|
|
{
|
|
level.player endon( "death" );
|
|
level notify( "chaos_checkpoint" );
|
|
level endon( "chaos_checkpoint" );
|
|
|
|
if ( getdvarint( "no_fail", 0 ) || getdvarint( "scr_art_tweak", 0 ) )
|
|
return;
|
|
|
|
if ( level.gameskill < 2 )
|
|
var_0 = var_0 + 3;
|
|
else if ( level.gameskill == 2 )
|
|
var_0 = var_0 + 1;
|
|
|
|
if ( var_0 > 5 )
|
|
{
|
|
wait( var_0 - 5 );
|
|
playfx( level._effect["vfx_lrg_vehicle_exp"], level.player.origin + ( 0, 0, 0 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "exp_rock_big_debris_s1", level.player.origin + ( 0, 0, 0 ) );
|
|
earthquake( 0.5, 0.7, level.player.origin, 512 );
|
|
wait 0.2;
|
|
level.player dodamage( 99, level.player.origin + ( 0, 0, 80 ) );
|
|
level.player viewkick( 50, level.player.origin + ( 0, 0, 80 ) );
|
|
maps\_utility::display_hint_timeout( "hint_sprint", 5 );
|
|
wait 5;
|
|
}
|
|
else
|
|
wait( var_0 );
|
|
|
|
earthquake( 0.5, 0.7, level.player.origin, 512 );
|
|
level notify( "new_quote_string" );
|
|
setdvar( "ui_deadquote", &"YOUNGBLOOD_LEFTBEHIND" );
|
|
chaos_player_kill();
|
|
}
|
|
|
|
time_countdown( var_0 )
|
|
{
|
|
for (;;)
|
|
{
|
|
iprintlnbold( var_0 );
|
|
wait 1;
|
|
var_0 = var_0 - 1;
|
|
}
|
|
}
|
|
|
|
chaos_kill_if_too_far()
|
|
{
|
|
level endon( "player_safe" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( getdvarint( "no_fail", 0 ) || getdvarint( "scr_art_tweak", 0 ) )
|
|
return;
|
|
|
|
if ( distance2d( level.player.origin, level.hesh.origin ) > 800 )
|
|
{
|
|
thread chaos_player_kill();
|
|
break;
|
|
}
|
|
else if ( distance2d( level.player.origin, level.hesh.origin ) > 500 )
|
|
{
|
|
playfx( level._effect["vfx_lrg_vehicle_exp"], level.player.origin + ( 0, 0, 80 ) );
|
|
thread common_scripts\utility::play_sound_in_space( "exp_rock_big_debris_s1", level.player.origin + ( 0, 0, 80 ) );
|
|
wait 0.2;
|
|
level.player dodamage( 99, level.player.origin + ( 0, 0, 80 ) );
|
|
level.player viewkick( 50, level.player.origin + ( 0, 0, 80 ) );
|
|
maps\_utility::display_hint_timeout( "hint_sprint", 5 );
|
|
wait 6;
|
|
}
|
|
|
|
wait 0.5;
|
|
}
|
|
}
|
|
|
|
check_close_to_hesh()
|
|
{
|
|
return distance2d( level.player.origin, level.hesh.origin ) < 400 && !common_scripts\utility::flag( "player_unsafe" );
|
|
}
|
|
|
|
player_unlink_slide_on_death()
|
|
{
|
|
level.player waittill( "death" );
|
|
level.player notify( "stop_slide" );
|
|
|
|
if ( level.player maps\_utility::issliding() )
|
|
level.player unlink();
|
|
}
|
|
|
|
chaos_chunk_fall()
|
|
{
|
|
var_0 = common_scripts\utility::get_target_ent();
|
|
var_1 = maps\_utility::get_linked_structs();
|
|
var_0 hide();
|
|
self waittill( "trigger" );
|
|
var_0 show();
|
|
var_0 thread maps\_utility::play_sound_on_entity( "scn_yb_final_street_piece_incoming" );
|
|
var_0 moveto_rotateto( var_1[0], 1.5, 1.5, 0 );
|
|
earthquake( 0.6, 1, var_0.origin, 1024 );
|
|
playfx( level._effect["vfx_lrg_vehicle_exp"], var_0.origin );
|
|
var_0 thread maps\_utility::play_sound_on_entity( "scn_yb_final_street_piece_hit" );
|
|
|
|
if ( !common_scripts\utility::flag( "do_player_crash_fx" ) )
|
|
{
|
|
thread heavy_quake( 80, 75 );
|
|
|
|
if ( distance2d( level.player.origin, var_0.origin ) < 500 )
|
|
level.player shellshock( "ygb_crash", 2 );
|
|
}
|
|
|
|
thread do_player_crash_fx( var_0.origin );
|
|
common_scripts\utility::flag_wait( "truck_landed_exit_scene" );
|
|
var_0 delete();
|
|
}
|
|
|
|
rog_strikes()
|
|
{
|
|
level endon( "stop_rog_strikes" );
|
|
wait 1;
|
|
|
|
for (;;)
|
|
{
|
|
thread rog_incoming();
|
|
wait( randomfloatrange( 10, 20 ) );
|
|
}
|
|
}
|
|
|
|
rog_incoming()
|
|
{
|
|
var_0 = common_scripts\utility::randomvectorrange( 2000, 3000 );
|
|
var_0 = ( var_0[0], var_0[1], 0 );
|
|
thread common_scripts\utility::play_sound_in_space( "yb_rog_distant_sky_flash", level.player.origin + ( 0, 0, 5000 ) + var_0 );
|
|
thread common_scripts\utility::play_sound_in_space( "yb_rog_distant_sky_flash", level.player.origin + ( 0, 0, 5000 ) - var_0 );
|
|
rog_incoming_light();
|
|
}
|
|
|
|
rog_incoming_light()
|
|
{
|
|
var_0 = ( -45, 65, 0 );
|
|
var_1 = ( -40, 55, 0 );
|
|
thread lerp_sun_angles( var_0, var_1 );
|
|
fade_sun_in_out();
|
|
resetsunlight();
|
|
}
|
|
|
|
lerp_sun_angles( var_0, var_1 )
|
|
{
|
|
var_2 = 2;
|
|
lerpsunangles( var_0, var_1, var_2, var_2 * 0.2, var_2 * 0.6 );
|
|
wait( var_2 * 1.1 );
|
|
lerpsunangles( var_1, var_0, 4.5, 0.5, 3 );
|
|
}
|
|
|
|
fade_sun_in_out()
|
|
{
|
|
var_0 = randomfloatrange( 0.15, 0.25 );
|
|
var_1 = ( 1, 0.98, 0.866 );
|
|
|
|
if ( maps\_utility::is_gen4() )
|
|
{
|
|
var_2 = 9;
|
|
var_3 = 1;
|
|
}
|
|
else
|
|
{
|
|
var_2 = 1.6;
|
|
var_3 = 0.75;
|
|
}
|
|
|
|
var_1 = var_1 * var_2;
|
|
var_4 = ( 234, 157, 83 );
|
|
var_4 = var_4 / 255.0;
|
|
var_5 = var_4 * randomfloatrange( 3, 3.5 ) * var_2 * var_3;
|
|
var_6 = 0;
|
|
|
|
while ( var_6 < var_0 )
|
|
{
|
|
var_7 = var_6 / var_0;
|
|
var_8 = lerp_value( var_1[0], var_5[0], var_7 );
|
|
var_9 = lerp_value( var_1[1], var_5[1], var_7 );
|
|
var_10 = lerp_value( var_1[2], var_5[2], var_7 );
|
|
setsunlight( var_8, var_9, var_10 );
|
|
var_6 = var_6 + 0.05;
|
|
wait 0.05;
|
|
}
|
|
|
|
thread sun_flicker( var_5 );
|
|
wait 1.4;
|
|
level notify( "stop_sun_flicker" );
|
|
var_0 = 0.4;
|
|
var_6 = 0;
|
|
var_11 = level.current_sun;
|
|
wait 0.4;
|
|
var_0 = 0.5;
|
|
var_6 = 0;
|
|
|
|
while ( var_6 < var_0 )
|
|
{
|
|
var_7 = var_6 / var_0;
|
|
var_8 = lerp_value( var_11[0], var_1[0], var_7 );
|
|
var_9 = lerp_value( var_11[1], var_1[1], var_7 );
|
|
var_10 = lerp_value( var_11[2], var_1[2], var_7 );
|
|
setsunlight( var_8, var_9, var_10 );
|
|
var_6 = var_6 + 0.05;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
sun_flicker( var_0 )
|
|
{
|
|
level endon( "stop_sun_flicker" );
|
|
var_1 = 0;
|
|
var_2 = 0;
|
|
|
|
for (;;)
|
|
{
|
|
var_3 = var_0 * ( sin( var_1 + 90 ) + 0.3 ) * 0.75;
|
|
var_4 = var_0 * sin( var_1 ) * 0.5;
|
|
var_5 = var_0 + var_3 + var_4;
|
|
var_6 = var_1;
|
|
var_5 = var_0 + var_0 * 0.3 * ( ( sin( var_6 + 90 ) + 0.3 ) * 0.75 + sin( var_6 * 10 ) * randomfloatrange( 0.2, 0.3 ) * ( sin( var_6 + 90 ) + 1 ) );
|
|
level.current_sun = var_5;
|
|
setsunlight( var_5[0], var_5[1], var_5[2] );
|
|
var_1 = var_1 + 7;
|
|
var_2 = var_2 + 80;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
lerp_value( var_0, var_1, var_2 )
|
|
{
|
|
var_3 = var_0 + ( var_1 - var_0 ) * var_2;
|
|
return var_3;
|
|
}
|
|
|
|
_set_anim_time( var_0, var_1 )
|
|
{
|
|
self setanimtime( maps\_utility::getanim( var_0 ), var_1 );
|
|
}
|
|
|
|
yb_follow_path_and_animate( var_0, var_1 )
|
|
{
|
|
self endon( "death" );
|
|
self endon( "stop_path" );
|
|
self notify( "stop_going_to_node" );
|
|
self notify( "follow_path" );
|
|
self endon( "follow_path" );
|
|
wait 0.1;
|
|
var_2 = var_0;
|
|
var_3 = undefined;
|
|
var_4 = undefined;
|
|
|
|
if ( !isdefined( var_1 ) )
|
|
var_1 = 300;
|
|
|
|
self.current_follow_path = var_2;
|
|
var_2 maps\_utility::script_delay();
|
|
|
|
while ( isdefined( var_2 ) )
|
|
{
|
|
self.current_follow_path = var_2;
|
|
|
|
if ( isdefined( var_2.lookahead ) )
|
|
break;
|
|
|
|
if ( isdefined( level.struct_class_names["targetname"][var_2.targetname] ) )
|
|
var_4 = ::yb_follow_path_animate_set_struct;
|
|
else if ( isdefined( var_2.classname ) )
|
|
var_4 = ::yb_follow_path_animate_set_ent;
|
|
else
|
|
var_4 = ::yb_follow_path_animate_set_node;
|
|
|
|
if ( isdefined( var_2.radius ) && var_2.radius != 0 )
|
|
self.goalradius = var_2.radius;
|
|
|
|
if ( self.goalradius < 16 )
|
|
self.goalradius = 16;
|
|
|
|
if ( isdefined( var_2.height ) && var_2.height != 0 )
|
|
self.goalheight = var_2.height;
|
|
|
|
var_5 = self.goalradius;
|
|
self childthread [[ var_4 ]]( var_2 );
|
|
|
|
if ( isdefined( var_2.animation ) )
|
|
var_2 waittill( var_2.animation );
|
|
else
|
|
{
|
|
for (;;)
|
|
{
|
|
self waittill( "goal" );
|
|
|
|
if ( distance( var_2.origin, self.origin ) < var_5 + 10 || self.team != "allies" )
|
|
break;
|
|
}
|
|
}
|
|
|
|
var_2 notify( "trigger", self );
|
|
|
|
if ( isdefined( var_2.script_flag_set ) )
|
|
common_scripts\utility::flag_set( var_2.script_flag_set );
|
|
|
|
if ( isdefined( var_2.script_parameters ) )
|
|
{
|
|
var_6 = strtok( var_2.script_parameters, " " );
|
|
|
|
for ( var_7 = 0; var_7 < var_6.size; var_7++ )
|
|
{
|
|
if ( isdefined( level.custom_followpath_parameter_func ) )
|
|
self [[ level.custom_followpath_parameter_func ]]( var_6[var_7], var_2 );
|
|
|
|
if ( self.type == "dog" )
|
|
continue;
|
|
|
|
switch ( var_6[var_7] )
|
|
{
|
|
case "enable_cqb":
|
|
maps\_utility::enable_cqbwalk();
|
|
break;
|
|
case "disable_cqb":
|
|
maps\_utility::disable_cqbwalk();
|
|
break;
|
|
case "deleteme":
|
|
self delete();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( !isdefined( var_2.script_requires_player ) && var_1 > 0 && self.team == "allies" )
|
|
{
|
|
while ( isalive( level.player ) )
|
|
{
|
|
if ( maps\_utility::follow_path_wait_for_player( var_2, var_1 ) )
|
|
break;
|
|
|
|
if ( isdefined( var_2.animation ) )
|
|
{
|
|
self.goalradius = var_5;
|
|
self setgoalpos( self.origin );
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
if ( !isdefined( var_2.target ) )
|
|
break;
|
|
|
|
if ( isdefined( var_2.script_flag_wait ) )
|
|
common_scripts\utility::flag_wait( var_2.script_flag_wait );
|
|
|
|
var_2 maps\_utility::script_delay();
|
|
var_2 = var_2 common_scripts\utility::get_target_ent();
|
|
}
|
|
|
|
self notify( "path_end_reached" );
|
|
}
|
|
|
|
yb_follow_path_animate_set_node( var_0 )
|
|
{
|
|
self notify( "follow_path_new_goal" );
|
|
|
|
if ( isdefined( var_0.animation ) )
|
|
{
|
|
var_0 maps\_anim::anim_generic_reach( self, var_0.animation );
|
|
self notify( "starting_anim", var_0.animation );
|
|
|
|
if ( isdefined( var_0.script_parameters ) && issubstr( var_0.script_parameters, "gravity" ) )
|
|
var_0 maps\_anim::anim_generic_gravity( self, var_0.animation );
|
|
else
|
|
var_0 maps\_anim::anim_generic_run( self, var_0.animation );
|
|
|
|
self setgoalpos( self.origin );
|
|
}
|
|
else
|
|
maps\_utility::set_goal_node( var_0 );
|
|
}
|
|
|
|
yb_follow_path_animate_set_ent( var_0 )
|
|
{
|
|
self notify( "follow_path_new_goal" );
|
|
|
|
if ( isdefined( var_0.animation ) )
|
|
{
|
|
var_0 maps\_anim::anim_generic_reach( self, var_0.animation );
|
|
self notify( "starting_anim", var_0.animation );
|
|
|
|
if ( isdefined( var_0.script_parameters ) && issubstr( var_0.script_parameters, "gravity" ) )
|
|
var_0 maps\_anim::anim_generic_gravity( self, var_0.animation );
|
|
else
|
|
var_0 maps\_anim::anim_generic_run( self, var_0.animation );
|
|
|
|
self setgoalpos( self.origin );
|
|
}
|
|
else
|
|
maps\_utility::set_goal_ent( var_0 );
|
|
}
|
|
|
|
yb_follow_path_animate_set_struct( var_0 )
|
|
{
|
|
self notify( "follow_path_new_goal" );
|
|
|
|
if ( isdefined( var_0.animation ) )
|
|
{
|
|
var_0 maps\_anim::anim_generic_reach( self, var_0.animation );
|
|
self notify( "starting_anim", var_0.animation );
|
|
var_1 = isdefined( self.disableexits ) && self.disableexits;
|
|
maps\_utility::disable_exits();
|
|
|
|
if ( isdefined( var_0.script_parameters ) && issubstr( var_0.script_parameters, "gravity" ) )
|
|
var_0 maps\_anim::anim_generic_gravity( self, var_0.animation );
|
|
else
|
|
var_0 maps\_anim::anim_generic_run( self, var_0.animation );
|
|
|
|
if ( !var_1 )
|
|
maps\_utility::delaythread( 0.1, maps\_utility::enable_exits );
|
|
|
|
self setgoalpos( self.origin );
|
|
}
|
|
else
|
|
maps\_utility::set_goal_pos( var_0.origin );
|
|
}
|
|
|
|
mansion_exploders( var_0, var_1 )
|
|
{
|
|
level notify( "stop_mansion_exploders" );
|
|
level endon( "stop_mansion_exploders" );
|
|
|
|
for (;;)
|
|
{
|
|
wait( randomfloatrange( 0.5, 1.25 ) );
|
|
common_scripts\utility::exploder( var_0 + randomintrange( 1, var_1 + 1 ) );
|
|
}
|
|
}
|
|
|
|
flashes_on_player()
|
|
{
|
|
level endon( "player_goes_into_mansion" );
|
|
|
|
for (;;)
|
|
{
|
|
wait( randomfloatrange( 0.75, 3.5 ) );
|
|
var_0 = randomfloatrange( -45, 45 );
|
|
var_1 = ( cos( var_0 ), sin( var_0 ), 0 );
|
|
var_1 = var_1 * randomfloatrange( 100, 200 );
|
|
var_1 = var_1 + ( 0, 0, 300 );
|
|
playfx( common_scripts\utility::getfx( "vfx_yb_onplayer_cloud_flash_a" ), level.player.origin + var_1 );
|
|
}
|
|
}
|