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

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 );
}
}