1161 lines
33 KiB
Plaintext
1161 lines
33 KiB
Plaintext
// IW6 GSC SOURCE
|
|
// Generated by https://github.com/xensik/gsc-tool
|
|
|
|
init_player_space()
|
|
{
|
|
precacheshellshock( "underwater_swim" );
|
|
precachemodel( "viewhands_us_space" );
|
|
precachemodel( "viewhands_player_us_space" );
|
|
precacherumble( "light_1s" );
|
|
common_scripts\utility::flag_init( "spacesprint" );
|
|
common_scripts\utility::flag_init( "boostAnim" );
|
|
common_scripts\utility::flag_init( "wall_push_flag_left" );
|
|
common_scripts\utility::flag_init( "floor_push" );
|
|
common_scripts\utility::flag_init( "no_push_zone" );
|
|
common_scripts\utility::flag_init( "stop_wall_pushing" );
|
|
common_scripts\utility::flag_init( "wall_push_tweak_player" );
|
|
common_scripts\utility::flag_init( "set_player_interior_speed" );
|
|
common_scripts\utility::flag_init( "set_player_exterior_speed" );
|
|
common_scripts\utility::flag_init( "clear_to_tweak_player" );
|
|
common_scripts\utility::flag_init( "enable_player_thruster_audio" );
|
|
common_scripts\utility::flag_init( "prologue_ready_for_thrusters" );
|
|
level.sfx_player_breathing_started = 0;
|
|
}
|
|
|
|
init_player_space_anims()
|
|
{
|
|
player_space_anims();
|
|
}
|
|
|
|
shellshock_forever()
|
|
{
|
|
|
|
}
|
|
|
|
enable_player_space()
|
|
{
|
|
setsaveddvar( "cg_footsteps", 0 );
|
|
setsaveddvar( "cg_equipmentSounds", 0 );
|
|
setsaveddvar( "cg_landingSounds", 0 );
|
|
thread shellshock_forever();
|
|
level.water_current = ( 0, 0, 0 );
|
|
level.drift_vec = ( 0, 0, 0 );
|
|
thread moving_water();
|
|
thread impulse_push();
|
|
self.player_mover = common_scripts\utility::spawn_tag_origin();
|
|
thread maps\_space::player_space();
|
|
thread space_thruster_audio();
|
|
setsaveddvar( "player_spaceEnabled", "1" );
|
|
thread reloading_anim_clip_throw();
|
|
self allowswim( 1 );
|
|
level.space_friction = 15;
|
|
level.space_speed = 80;
|
|
level.space_accel = 75;
|
|
level.space_vertical_speed = 65;
|
|
level.space_vertical_accel = 85;
|
|
setsaveddvar( "player_swimFriction", level.space_friction );
|
|
setsaveddvar( "player_swimAcceleration", level.space_accel );
|
|
setsaveddvar( "player_swimVerticalFriction", 45 );
|
|
setsaveddvar( "player_swimVerticalSpeed", 65 );
|
|
setsaveddvar( "player_swimVerticalAcceleration", 85 );
|
|
setsaveddvar( "player_swimSpeed", level.space_speed );
|
|
thread direction_change_smoothing();
|
|
thread space_sprint();
|
|
setsaveddvar( "player_sprintUnlimited", "1" );
|
|
wait 1;
|
|
|
|
if ( isdefined( level.player.has_pushanims ) && level.player.has_pushanims == 1 )
|
|
{
|
|
var_0 = maps\_utility::spawn_anim_model( "player_rig" );
|
|
var_0 dontcastshadows();
|
|
var_0.origin = level.player.origin;
|
|
var_0.angles = level.player.angles;
|
|
var_0 linktoplayerview( level.player, "tag_origin", ( 0, 0, 0 ), ( 0, 0, 0 ), 1 );
|
|
var_0 hide();
|
|
thread wall_push( var_0 );
|
|
thread speed_direction_check();
|
|
thread contuing_to_move_check();
|
|
}
|
|
}
|
|
|
|
disable_player_space()
|
|
{
|
|
level notify( "disable_space" );
|
|
self notify( "disable_space" );
|
|
setsaveddvar( "cg_footsteps", 1 );
|
|
setsaveddvar( "cg_equipmentSounds", 1 );
|
|
setsaveddvar( "cg_landingSounds", 1 );
|
|
setsaveddvar( "player_swimFriction", 30 );
|
|
setsaveddvar( "player_swimAcceleration", 100 );
|
|
setsaveddvar( "player_swimVerticalFriction", 40 );
|
|
setsaveddvar( "player_swimVerticalSpeed", 120 );
|
|
setsaveddvar( "player_swimVerticalAcceleration", 160 );
|
|
setsaveddvar( "player_swimSpeed", 80 );
|
|
setsaveddvar( "player_sprintUnlimited", "1" );
|
|
setsaveddvar( "player_swimWaterCurrent", ( 0, 0, 0 ) );
|
|
setsaveddvar( "player_spaceEnabled", "0" );
|
|
thread maps\_space::player_space_helmet_disable();
|
|
thread maps\_space::space_hud_enable( 0 );
|
|
self allowlean( 1 );
|
|
self allowsprint( 1 );
|
|
self allowswim( 0 );
|
|
}
|
|
|
|
player_location_check( var_0 )
|
|
{
|
|
if ( !isdefined( var_0 ) )
|
|
return;
|
|
|
|
switch ( var_0 )
|
|
{
|
|
case "exterior":
|
|
level.space_speed = level.space_speed * 1.5;
|
|
setsaveddvar( "player_swimSpeed", level.space_speed );
|
|
break;
|
|
case "interior":
|
|
level.space_speed = level.space_speed / 1.5;
|
|
setsaveddvar( "player_swimSpeed", level.space_speed );
|
|
break;
|
|
}
|
|
}
|
|
|
|
reloading_anim_clip_throw()
|
|
{
|
|
level endon( "stop_weapon_drop_scripts" );
|
|
|
|
if ( level.script == "loki" || level.script == "odin" || level.script == "prologue" )
|
|
{
|
|
for (;;)
|
|
{
|
|
var_0 = level.player getcurrentweapon();
|
|
|
|
if ( var_0 == "arx160_space+acog_sp+glarx160_sp" || var_0 == "microtar_space_interior+acogsmg_sp" || var_0 == "microtar_space+acogsmg_sp" || var_0 == "microtar_space_interior+acogsmg_sp+spaceshroud_sp" || var_0 == "microtar_space+acogsmg_sp+spaceshroud_sp" )
|
|
{
|
|
level.player waittill( "reload_start" );
|
|
|
|
if ( level.player isreloading() == 1 )
|
|
{
|
|
var_1 = spawn( "script_model", ( 0, 0, 0 ) );
|
|
var_1 setmodel( "tag_origin" );
|
|
|
|
if ( var_0 == "microtar_space_interior+acogsmg_sp+spaceshroud_sp" || var_0 == "microtar_space_interior+acogsmg_sp" )
|
|
{
|
|
wait 1.3;
|
|
var_1 linktoplayerview( self, "magazine0_JNT", ( 0, 0, 0 ), ( 0, 0, 0 ), 1 );
|
|
playfxontag( common_scripts\utility::getfx( "space_clip_reload" ), var_1, "tag_origin" );
|
|
}
|
|
else if ( var_0 == "microtar_space+acogsmg_sp+spaceshroud_sp" || var_0 == "microtar_space+acogsmg_sp" )
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
wait 0.7;
|
|
var_1 linktoplayerview( self, "J_WristTwist_LE", ( 0, -10, 0 ), ( -30, -20, 0 ), 1 );
|
|
playfxontag( common_scripts\utility::getfx( "space_clip_reload_arx" ), var_1, "tag_origin" );
|
|
}
|
|
|
|
wait 1;
|
|
var_1 delete();
|
|
}
|
|
}
|
|
|
|
wait 0.75;
|
|
}
|
|
}
|
|
}
|
|
|
|
wall_push( var_0 )
|
|
{
|
|
level endon( "wall_push_over" );
|
|
level endon( "start_transition_to_youngblood" );
|
|
thread stop_space_push( var_0 );
|
|
|
|
while ( !common_scripts\utility::flag( "stop_wall_pushing" ) )
|
|
{
|
|
common_scripts\utility::flag_wait( "wall_push_flag" );
|
|
common_scripts\utility::flag_waitopen( "no_push_zone" );
|
|
var_1 = undefined;
|
|
var_2 = undefined;
|
|
var_3 = getentarray( "wall_push_org", "targetname" );
|
|
|
|
foreach ( var_5 in var_3 )
|
|
{
|
|
var_6 = distancesquared( level.player.origin, var_5.origin );
|
|
|
|
if ( !isdefined( var_1 ) || var_6 < var_1 )
|
|
{
|
|
var_1 = var_6;
|
|
var_2 = var_5;
|
|
}
|
|
}
|
|
|
|
switch ( var_2.script_parameters )
|
|
{
|
|
case "left":
|
|
random_player_wall_push( var_2, var_0 );
|
|
break;
|
|
case "up":
|
|
break;
|
|
case "down":
|
|
random_player_wall_pushdownup( var_2, var_0 );
|
|
break;
|
|
}
|
|
|
|
wait 0.1;
|
|
}
|
|
|
|
var_0 unlink();
|
|
var_0 delete();
|
|
}
|
|
|
|
stop_space_push( var_0 )
|
|
{
|
|
common_scripts\utility::flag_wait( "stop_wall_pushing" );
|
|
level notify( "wall_push_over" );
|
|
var_0 unlink();
|
|
var_0 delete();
|
|
}
|
|
|
|
speed_direction_check()
|
|
{
|
|
level endon( "disable_space" );
|
|
level.timecheck = 0;
|
|
|
|
for (;;)
|
|
{
|
|
var_0 = level.player getnormalizedmovement();
|
|
|
|
if ( var_0[0] > 0.4 )
|
|
{
|
|
wait 0.1;
|
|
level.timecheck = level.timecheck + 0.1;
|
|
continue;
|
|
}
|
|
|
|
level.timecheck = 0;
|
|
wait 0.1;
|
|
}
|
|
}
|
|
|
|
contuing_to_move_check()
|
|
{
|
|
level endon( "start_transition_to_youngblood" );
|
|
level.bmovingstraight = 0;
|
|
var_0 = level.player getorigin();
|
|
var_1[0] = var_0[0];
|
|
var_1[1] = var_0[1];
|
|
var_2[0] = var_1[0];
|
|
var_2[1] = var_1[1];
|
|
|
|
for (;;)
|
|
{
|
|
var_0 = level.player getorigin();
|
|
var_1[0] = var_0[0];
|
|
var_1[1] = var_0[1];
|
|
|
|
for ( var_3 = 0; var_3 < 2; var_3++ )
|
|
{
|
|
if ( var_1[var_3] < 0 )
|
|
var_1[var_3] = var_1[var_3] * -1;
|
|
|
|
if ( var_2[var_3] < 0 )
|
|
var_2[var_3] = var_2[var_3] * -1;
|
|
|
|
var_4 = var_1[var_3] - var_2[var_3];
|
|
var_5 = var_2[var_3] - var_1[var_3];
|
|
|
|
if ( ( var_1[var_3] - var_2[var_3] >= 2 || var_1[var_3] - var_2[var_3] <= -2 ) && level.player isreloading() == 0 && level.player maps\_utility::isads() == 0 )
|
|
{
|
|
level.bmovingstraight = 1;
|
|
break;
|
|
}
|
|
else
|
|
level.bmovingstraight = 0;
|
|
}
|
|
|
|
wait 0.01;
|
|
var_2[0] = var_1[0];
|
|
var_2[1] = var_1[1];
|
|
}
|
|
}
|
|
|
|
#using_animtree("player");
|
|
|
|
random_player_wall_push( var_0, var_1 )
|
|
{
|
|
var_2 = [];
|
|
var_2["player_rig"] = var_1;
|
|
var_3 = var_0.angles[1];
|
|
var_4 = 0;
|
|
var_5 = 40;
|
|
|
|
if ( var_3 <= 0 )
|
|
var_3 = var_3 + 360;
|
|
|
|
var_6 = 0;
|
|
|
|
while ( common_scripts\utility::flag( "wall_push_flag" ) )
|
|
{
|
|
var_7 = randomintrange( 1, 10 );
|
|
var_8 = level.player getnormalizedmovement();
|
|
var_9 = level.player getnormalizedmovement();
|
|
level.player maps\_anim::anim_first_frame( var_2, "viewmodel_space_l_arm_sidepush" );
|
|
var_10 = level.player.angles[1];
|
|
|
|
if ( var_10 <= 0 )
|
|
var_10 = var_10 + 360;
|
|
|
|
if ( var_3 + var_5 > 360 )
|
|
{
|
|
var_4 = var_3 + var_5 - 360;
|
|
|
|
if ( var_10 > var_3 || var_10 < var_4 )
|
|
var_6 = 1;
|
|
}
|
|
else if ( var_10 > var_3 - var_5 && var_10 < var_3 + var_5 )
|
|
var_6 = 1;
|
|
|
|
if ( var_7 < 6 )
|
|
{
|
|
|
|
}
|
|
|
|
var_11 = 1;
|
|
|
|
if ( common_scripts\utility::flag( "spacesprint" ) )
|
|
var_11 = 1.1;
|
|
|
|
if ( var_6 == 1 && var_9[0] > 0.4 && level.timecheck > 1 && level.bmovingstraight == 1 )
|
|
{
|
|
var_1 show();
|
|
var_1 setanimrestart( %viewmodel_space_l_arm_sidepush, 1, 0, var_11 );
|
|
var_1 setanimtime( %viewmodel_space_l_arm_sidepush, 0.25 );
|
|
common_scripts\utility::flag_set( "wall_push_tweak_player" );
|
|
|
|
if ( level.script == "odin" || level.script == "prologue" )
|
|
level.player playsound( "space_plr_wall_push" );
|
|
|
|
wait 1;
|
|
thread anim_boost();
|
|
wait 0.67;
|
|
var_1 hide();
|
|
wait 1;
|
|
}
|
|
|
|
var_6 = 0;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
random_player_wall_pushdownup( var_0, var_1 )
|
|
{
|
|
var_2 = [];
|
|
var_2["player_rig"] = var_1;
|
|
var_3 = var_0.angles[1];
|
|
var_4 = 0;
|
|
var_5 = 40;
|
|
|
|
if ( var_3 <= 0 )
|
|
var_3 = var_3 + 360;
|
|
|
|
var_6 = 0;
|
|
|
|
while ( common_scripts\utility::flag( "wall_push_flag" ) )
|
|
{
|
|
var_7 = randomintrange( 1, 10 );
|
|
var_8 = level.player getplayerangles();
|
|
var_9 = level.player getnormalizedmovement();
|
|
level.player maps\_anim::anim_first_frame( var_2, "viewmodel_space_l_arm_downpush" );
|
|
var_10 = level.player.angles[1];
|
|
|
|
if ( var_10 <= 0 )
|
|
var_10 = var_10 + 360;
|
|
|
|
if ( var_3 + var_5 > 360 )
|
|
{
|
|
var_4 = var_3 + var_5 - 360;
|
|
|
|
if ( var_10 > var_3 - var_5 || var_10 < var_4 )
|
|
{
|
|
if ( var_8[0] > -10 && var_8[0] < 30 )
|
|
var_6 = 1;
|
|
}
|
|
}
|
|
else if ( var_10 > var_3 - var_5 && var_10 < var_3 + var_5 )
|
|
{
|
|
if ( var_8[0] > -20 && var_8[0] < 30 )
|
|
var_6 = 1;
|
|
}
|
|
|
|
if ( var_7 < 6 )
|
|
{
|
|
|
|
}
|
|
|
|
var_11 = 1;
|
|
|
|
if ( common_scripts\utility::flag( "spacesprint" ) )
|
|
var_11 = 1.1;
|
|
|
|
if ( var_6 == 1 && var_9[0] > 0.4 && level.timecheck > 1 && level.bmovingstraight == 1 )
|
|
{
|
|
var_1 show();
|
|
var_1 setanimrestart( %viewmodel_space_l_arm_downpush, 1, 0, var_11 );
|
|
var_1 setanimtime( %viewmodel_space_l_arm_downpush, 0.25 );
|
|
common_scripts\utility::flag_set( "wall_push_tweak_player" );
|
|
|
|
if ( level.script == "odin" || level.script == "prologue" )
|
|
level.player playsound( "space_plr_wall_push" );
|
|
|
|
wait 1;
|
|
thread anim_up_down_boost();
|
|
wait 0.67;
|
|
var_1 hide();
|
|
wait 1;
|
|
}
|
|
|
|
var_6 = 0;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
anim_up_down_boost()
|
|
{
|
|
common_scripts\utility::flag_set( "boostAnim" );
|
|
setsaveddvar( "player_swimSpeed", level.space_speed * 1.1 );
|
|
wait 0.7;
|
|
common_scripts\utility::flag_clear( "boostAnim" );
|
|
setsaveddvar( "player_swimSpeed", level.space_speed );
|
|
}
|
|
|
|
anim_boost()
|
|
{
|
|
common_scripts\utility::flag_set( "boostAnim" );
|
|
setsaveddvar( "player_swimSpeed", level.space_speed * 1.1 );
|
|
wait 0.5;
|
|
common_scripts\utility::flag_clear( "boostAnim" );
|
|
setsaveddvar( "player_swimSpeed", level.space_speed );
|
|
}
|
|
|
|
moving_water()
|
|
{
|
|
var_0 = getentarray( "moving_water_flags", "script_noteworthy" );
|
|
|
|
foreach ( var_2 in var_0 )
|
|
thread moving_water_flag( var_2 );
|
|
}
|
|
|
|
moving_water_flag( var_0 )
|
|
{
|
|
level endon( "disable_space" );
|
|
var_1 = 40;
|
|
var_2 = getent( var_0.target, "targetname" );
|
|
var_3 = anglestoforward( var_2.angles ) * var_1;
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( var_0.script_flag );
|
|
level.water_current = var_3;
|
|
common_scripts\utility::flag_waitopen( var_0.script_flag );
|
|
level.water_current = ( 0, 0, 0 );
|
|
}
|
|
}
|
|
|
|
player_space_anims()
|
|
{
|
|
level.scr_animtree["playerhands"] = #animtree;
|
|
level.scr_model["playerhands"] = "viewhands_player_us_space";
|
|
}
|
|
|
|
direction_change_smoothing()
|
|
{
|
|
level endon( "start_transition_to_youngblood" );
|
|
level endon( "disable_space" );
|
|
self endon( "death" );
|
|
var_0 = level.player getnormalizedmovement();
|
|
var_1 = var_0;
|
|
|
|
if ( !isdefined( level.wall_friction_enabled ) )
|
|
level.wall_friction_enabled = 1;
|
|
|
|
if ( !isdefined( level.wall_friction_trace_dist ) )
|
|
level.wall_friction_trace_dist = 5;
|
|
|
|
if ( !isdefined( level.wall_friction_offset_dist ) )
|
|
level.wall_friction_offset_dist = 2;
|
|
|
|
for (;;)
|
|
{
|
|
var_0 = level.player getnormalizedmovement();
|
|
|
|
if ( var_0[0] > 0.15 )
|
|
var_2 = "positive";
|
|
else
|
|
var_2 = "neutral";
|
|
|
|
if ( var_0[1] > 0.15 )
|
|
var_3 = "positive";
|
|
else
|
|
var_3 = "neutral";
|
|
|
|
if ( var_0[0] < -0.15 )
|
|
var_2 = "negative";
|
|
|
|
if ( var_0[1] < -0.15 )
|
|
var_3 = "negative";
|
|
|
|
if ( var_1[0] > 0.15 )
|
|
var_4 = "positive";
|
|
else
|
|
var_4 = "neutral";
|
|
|
|
if ( var_1[1] > 0.15 )
|
|
var_5 = "positive";
|
|
else
|
|
var_5 = "neutral";
|
|
|
|
if ( var_1[0] < -0.15 )
|
|
var_4 = "negative";
|
|
|
|
if ( var_1[1] < -0.15 )
|
|
var_5 = "negative";
|
|
|
|
var_6 = 0;
|
|
|
|
if ( level.wall_friction_enabled )
|
|
{
|
|
var_7 = vectornormalize( level.player getvelocity() );
|
|
var_8 = anglestoright( vectortoangles( var_7 ) );
|
|
var_9 = anglestoup( vectortoangles( var_7 ) );
|
|
var_10 = level.wall_friction_offset_dist;
|
|
var_11 = level.player.origin + ( var_8[0] * var_10, var_8[1] * var_10, var_8[2] * var_10 );
|
|
var_11 = var_11 + ( var_9[0] * var_10, var_9[1] * var_10, var_9[2] * var_10 );
|
|
var_12 = level.player.origin - ( var_8[0] * var_10, var_8[1] * var_10, var_8[2] * var_10 );
|
|
var_12 = var_12 - ( var_9[0] * var_10, var_9[1] * var_10, var_9[2] * var_10 );
|
|
var_10 = level.wall_friction_trace_dist;
|
|
var_13 = var_11 + ( var_7[0] * var_10, var_7[1] * var_10, var_7[2] * var_10 );
|
|
var_14 = level.player aiphysicstrace( var_11, var_13 );
|
|
|
|
if ( var_13 != var_14 )
|
|
var_6 = 1;
|
|
else
|
|
{
|
|
var_13 = var_12 + ( var_7[0] * var_10, var_7[1] * var_10, var_7[2] * var_10 );
|
|
var_14 = level.player aiphysicstrace( var_12, var_13 );
|
|
|
|
if ( var_13 != var_14 )
|
|
var_6 = 1;
|
|
}
|
|
}
|
|
|
|
if ( level.wall_friction_enabled && var_6 == 1 )
|
|
{
|
|
setsaveddvar( "player_swimFriction", 120 );
|
|
wait 0.15;
|
|
}
|
|
else if ( var_3 == "neutral" && var_2 == "neutral" || var_5 == "positive" && var_4 == "positive" && var_3 == "positive" && var_2 == "positive" || var_5 == "negative" && var_4 == "negative" && var_3 == "negative" && var_2 == "negative" || var_5 == "negative" && var_4 == "positive" && var_3 == "negative" && var_2 == "positive" || var_5 == "positive" && var_4 == "negative" && var_3 == "positive" && var_2 == "negative" )
|
|
{
|
|
if ( getdvarint( "player_swimFriction", 15 ) != level.space_friction )
|
|
setsaveddvar( "player_swimFriction", level.space_friction );
|
|
|
|
if ( getdvarint( "player_swimAcceleration", 66 ) != 66 )
|
|
setsaveddvar( "player_swimAcceleration", 66 );
|
|
}
|
|
else
|
|
{
|
|
setsaveddvar( "player_swimFriction", 120 );
|
|
setsaveddvar( "player_swimAcceleration", 200 );
|
|
wait 0.1;
|
|
}
|
|
|
|
if ( var_2 != "neutral" && var_3 != "neutral " )
|
|
var_1 = var_0;
|
|
|
|
wait 0.1;
|
|
}
|
|
}
|
|
|
|
space_sprint()
|
|
{
|
|
level endon( "disable_space" );
|
|
var_0 = 0;
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.player issprinting() )
|
|
{
|
|
if ( var_0 == 0 )
|
|
{
|
|
level.player playrumbleonentity( "light_1s" );
|
|
wait 0.05;
|
|
level.player stoprumble( "light_1s" );
|
|
var_0 = 1;
|
|
}
|
|
}
|
|
else
|
|
var_0 = 0;
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
sprint_fade( var_0 )
|
|
{
|
|
level endon( "sprinting" );
|
|
|
|
for (;;)
|
|
{
|
|
if ( var_0 > 1 )
|
|
{
|
|
setsaveddvar( "player_swimSpeed", level.space_speed * var_0 );
|
|
var_0 = var_0 - 0.05;
|
|
}
|
|
else
|
|
return;
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
impulse_push()
|
|
{
|
|
level endon( "disable_space" );
|
|
|
|
for (;;)
|
|
{
|
|
level.player waittill( "damage", var_0, var_1, var_2, var_3, var_4 );
|
|
common_scripts\utility::flag_clear( "clear_to_tweak_player" );
|
|
var_5 = [];
|
|
var_5[0] = var_2[0];
|
|
var_5[1] = var_2[1];
|
|
var_5[2] = var_2[2];
|
|
var_6 = 0.25;
|
|
var_7 = 3000;
|
|
var_8 = 1;
|
|
|
|
if ( var_4 == "MOD_EXPLOSIVE" || var_4 == "MOD_GRENADE" || var_4 == "MOD_GRENADE_SPLASH" )
|
|
{
|
|
var_6 = 0.5;
|
|
var_7 = 7000;
|
|
var_8 = 1;
|
|
}
|
|
|
|
for ( var_9 = 0; var_9 < 3; var_9++ )
|
|
{
|
|
var_5[var_9] = var_5[var_9] * 0.25 * ( var_0 * var_6 );
|
|
|
|
if ( var_5[var_9] > var_7 )
|
|
var_5[var_9] = var_7;
|
|
|
|
if ( var_5[var_9] < 0 - var_7 )
|
|
var_5[var_9] = 0 - var_7;
|
|
}
|
|
|
|
setsaveddvar( "player_swimWaterCurrent", ( var_5[0], var_5[1], var_5[2] ) );
|
|
wait( var_8 );
|
|
|
|
for ( var_9 = 0; var_9 < 3; var_9++ )
|
|
{
|
|
for ( var_9 = 0; var_9 < 3; var_9++ )
|
|
var_5[var_9] = var_5[var_9] * 0.5;
|
|
|
|
setsaveddvar( "player_swimWaterCurrent", ( var_5[0], var_5[1], var_5[2] ) );
|
|
wait( var_8 * 0.25 );
|
|
}
|
|
|
|
setsaveddvar( "player_swimWaterCurrent", ( 0, 0, 0 ) );
|
|
common_scripts\utility::flag_set( "clear_to_tweak_player" );
|
|
}
|
|
}
|
|
|
|
player_recoil()
|
|
{
|
|
for (;;)
|
|
{
|
|
self waittill( "weapon_fired" );
|
|
var_0 = level.player getcurrentweapon();
|
|
|
|
if ( var_0 == "microtar_space" )
|
|
{
|
|
common_scripts\utility::flag_clear( "clear_to_tweak_player" );
|
|
var_1 = self getplayerangles();
|
|
var_2 = anglestoforward( var_1 );
|
|
var_3 = [];
|
|
var_3[0] = var_2[0];
|
|
var_3[1] = var_2[1];
|
|
var_3[2] = var_2[2];
|
|
var_4 = 2500;
|
|
var_5 = 1;
|
|
|
|
for ( var_6 = 0; var_6 < 3; var_6++ )
|
|
var_3[var_6] = var_3[var_6] * var_4 * -1;
|
|
|
|
setsaveddvar( "player_swimWaterCurrent", ( var_3[0], var_3[1], var_3[2] ) );
|
|
wait( var_5 );
|
|
|
|
for ( var_6 = 0; var_6 < 3; var_6++ )
|
|
{
|
|
for ( var_6 = 0; var_6 < 3; var_6++ )
|
|
var_3[var_6] = var_3[var_6] * 0.5;
|
|
|
|
setsaveddvar( "player_swimWaterCurrent", ( var_3[0], var_3[1], var_3[2] ) );
|
|
wait( var_5 * 0.25 );
|
|
}
|
|
|
|
setsaveddvar( "player_swimWaterCurrent", ( 0, 0, 0 ) );
|
|
common_scripts\utility::flag_set( "clear_to_tweak_player" );
|
|
}
|
|
}
|
|
}
|
|
|
|
space_thruster_audio()
|
|
{
|
|
level endon( "disable_space" );
|
|
common_scripts\utility::flag_set( "enable_player_thruster_audio" );
|
|
level.thruster_timer = 1;
|
|
level.thruster_sprint_timer = 1;
|
|
level.thruster_sprint = spawn( "script_origin", ( 0, 0, 0 ) );
|
|
level.thruster_oneshot = spawn( "script_origin", ( 0, 0, 0 ) );
|
|
level.axes = [ "x", "y", "z_up", "z_down" ];
|
|
level.player thread player_thruster_logic();
|
|
level.player thread thruster_audio_logic();
|
|
level waittill( "kill_thrusters" );
|
|
level.thruster_sprint delete();
|
|
level.thruster_oneshot delete();
|
|
}
|
|
|
|
player_space_breathing()
|
|
{
|
|
wait 0.02;
|
|
|
|
if ( level.sfx_player_breathing_started == 0 )
|
|
{
|
|
level.sfx_player_breathing_started = 1;
|
|
|
|
if ( !issplitscreen() )
|
|
thread player_space_breathe_sound();
|
|
else if ( self == level.player )
|
|
thread player_space_breathe_sound();
|
|
}
|
|
}
|
|
|
|
player_space_breathe_sound()
|
|
{
|
|
level endon( "start_transition_to_youngblood" );
|
|
self endon( "death" );
|
|
self notify( "start_scuba_breathe" );
|
|
self endon( "start_scuba_breathe" );
|
|
self endon( "stop_scuba_breathe" );
|
|
level.pressurized = 0;
|
|
level.space_intense_breathing = 0;
|
|
|
|
for (;;)
|
|
{
|
|
if ( level.space_intense_breathing == 1 )
|
|
wait 0.75;
|
|
else if ( level.space_intense_breathing == 2 )
|
|
wait 0.01;
|
|
else if ( level.space_intense_breathing == 3 )
|
|
wait 0.25;
|
|
else
|
|
wait 2.75;
|
|
|
|
if ( level.space_breathing_enabled == 1 )
|
|
{
|
|
if ( level.pressurized == 0 )
|
|
{
|
|
if ( level.space_intense_breathing == 1 || level.space_intense_breathing == 2 )
|
|
self playlocalsound( "space_breathe_player_fast_inhale", "scuba_breathe_sound_done" );
|
|
else if ( level.space_intense_breathing == 3 )
|
|
self playlocalsound( "space_breathe_player_inhale_slomo", "scuba_breathe_sound_done" );
|
|
else
|
|
self playlocalsound( "space_breathe_player_inhale", "scuba_breathe_sound_done" );
|
|
|
|
self waittill( "scuba_breathe_sound_done" );
|
|
}
|
|
|
|
if ( level.pressurized == 0 )
|
|
{
|
|
if ( level.space_intense_breathing == 1 || level.space_intense_breathing == 2 )
|
|
self playlocalsound( "space_breathe_player_fast_exhale", "scuba_breathe_sound_done" );
|
|
else if ( level.space_intense_breathing == 3 )
|
|
self playlocalsound( "space_breathe_player_exhale_slomo", "scuba_breathe_sound_done" );
|
|
else
|
|
self playlocalsound( "space_breathe_player_exhale", "scuba_breathe_sound_done" );
|
|
|
|
self waittill( "scuba_breathe_sound_done" );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
attach_audio_points_to_player()
|
|
{
|
|
level endon( "kill_thrusters" );
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "enable_player_thruster_audio" );
|
|
level._thruster_rig = spawn( "script_model", ( 0, 0, 0 ) );
|
|
level._thruster_rig.origin = self.origin;
|
|
level._thruster_rig.angles = self.angles;
|
|
level._thruster_rig setmodel( "viewhands_us_space" );
|
|
level._thruster_rig dontcastshadows();
|
|
level._thruster_rig hide();
|
|
level._thruster_rig linktoplayerview( self, "tag_player", ( 0, 0, 0 ), ( 0, 0, 0 ), 1 );
|
|
|
|
for ( var_0 = 0; var_0 < 6; var_0++ )
|
|
{
|
|
var_1 = spawn( "script_model", ( 0, 0, 0 ) );
|
|
var_1 setmodel( "tag_origin" );
|
|
|
|
if ( var_0 == 0 )
|
|
{
|
|
var_1.origin = level._thruster_rig gettagorigin( "tag_jet_top" );
|
|
var_1 linkto( level._thruster_rig, "tag_jet_top", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
}
|
|
else if ( var_0 == 1 )
|
|
{
|
|
var_1.origin = level._thruster_rig gettagorigin( "tag_jet_bottom" );
|
|
var_1 linkto( level._thruster_rig, "tag_jet_bottom", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
}
|
|
else if ( var_0 == 2 )
|
|
{
|
|
var_1.origin = level._thruster_rig gettagorigin( "tag_jet_front" );
|
|
var_1 linkto( level._thruster_rig, "tag_jet_front", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
}
|
|
else if ( var_0 == 3 )
|
|
{
|
|
var_1.origin = level._thruster_rig gettagorigin( "tag_jet_left" );
|
|
var_1 linkto( level._thruster_rig, "tag_jet_left", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
}
|
|
else if ( var_0 == 4 )
|
|
{
|
|
var_1.origin = level._thruster_rig gettagorigin( "tag_jet_right" );
|
|
var_1 linkto( level._thruster_rig, "tag_jet_right", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
}
|
|
else if ( var_0 == 5 )
|
|
{
|
|
var_1.origin = level._thruster_rig gettagorigin( "tag_jet_back" );
|
|
var_1 linkto( level._thruster_rig, "tag_jet_back", ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
|
}
|
|
|
|
var_1 thread thruster_audio_logic( var_0 );
|
|
level._thruster_ents[var_0] = var_1;
|
|
}
|
|
|
|
common_scripts\utility::flag_waitopen( "enable_player_thruster_audio" );
|
|
|
|
foreach ( var_1 in level._thruster_ents )
|
|
{
|
|
var_1 notify( "stop" );
|
|
var_1 delete();
|
|
}
|
|
|
|
level._thruster_rig delete();
|
|
}
|
|
}
|
|
|
|
thruster_audio_logic()
|
|
{
|
|
level endon( "kill_thrusters" );
|
|
self endon( "death" );
|
|
self.prev_intensity = [];
|
|
self.prev_intensity["x"] = 0;
|
|
self.prev_intensity["y"] = 0;
|
|
self.prev_intensity["z_up"] = 0;
|
|
self.prev_intensity["z_down"] = 0;
|
|
|
|
if ( isdefined( level.prologue ) && level.prologue == 1 )
|
|
common_scripts\utility::flag_wait( "prologue_ready_for_thrusters" );
|
|
|
|
for (;;)
|
|
{
|
|
self waittill( "thruster_update", var_0, var_1 );
|
|
level.bob_value = var_0;
|
|
|
|
if ( "z_up" == var_1 || "z_down" == var_1 )
|
|
level.bob_axis = "z";
|
|
else
|
|
level.bob_axis = var_1;
|
|
|
|
if ( int( var_0 ) != self.prev_intensity[var_1] )
|
|
thread play_thruster_loop_audio( abs( var_0 ) );
|
|
|
|
self.prev_intensity[var_1] = int( var_0 );
|
|
}
|
|
}
|
|
|
|
play_thruster_loop_audio( var_0 )
|
|
{
|
|
switch ( int( var_0 ) )
|
|
{
|
|
case 0:
|
|
break;
|
|
case 1:
|
|
break;
|
|
case 2:
|
|
if ( level.thruster_timer > 0 )
|
|
{
|
|
thread thruster_timer_logic();
|
|
level.thruster_oneshot stopsounds();
|
|
level.thruster_oneshot playsound( "space_jetpack_boost_oneshot" );
|
|
}
|
|
|
|
break;
|
|
case 3:
|
|
if ( level.thruster_timer > 0 )
|
|
{
|
|
self playsound( "space_jetpack_boost_start_large" );
|
|
thread thruster_timer_logic();
|
|
level.thruster_oneshot stopsounds();
|
|
level.thruster_oneshot playsound( "space_jetpack_boost_oneshot_big" );
|
|
}
|
|
|
|
break;
|
|
case 4:
|
|
if ( level.thruster_sprint_timer > 0 )
|
|
{
|
|
self playsound( "space_jetpack_boost_start_sprint" );
|
|
thread thruster_sprint_interval();
|
|
level.thruster_sprint stopsounds();
|
|
level.thruster_sprint playsound( "space_jetpack_boost_oneshot_sprint" );
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
thruster_sprint_interval()
|
|
{
|
|
level.thruster_sprint_timer = 0;
|
|
wait 0.5;
|
|
level.thruster_sprint_timer = 1;
|
|
}
|
|
|
|
thruster_timer_logic()
|
|
{
|
|
level.thruster_timer = 0;
|
|
wait 0.1;
|
|
level.thruster_timer = 1;
|
|
}
|
|
|
|
player_thruster_logic()
|
|
{
|
|
level endon( "kill_thrusters" );
|
|
self endon( "death" );
|
|
|
|
for (;;)
|
|
{
|
|
common_scripts\utility::flag_wait( "enable_player_thruster_audio" );
|
|
var_0 = [ 0, 0, 0, 0 ];
|
|
|
|
while ( common_scripts\utility::flag( "enable_player_thruster_audio" ) )
|
|
{
|
|
var_1 = parse_input_data_for_thruster();
|
|
|
|
if ( var_1[0] != var_0[0] || var_1[1] != var_0[1] || var_1[2] != var_0[2] || var_1[3] != var_0[3] )
|
|
set_player_thruster_data( var_1, var_0 );
|
|
|
|
var_0 = var_1;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
}
|
|
|
|
parse_input_data_for_thruster()
|
|
{
|
|
var_0 = [ 0, 0, 0, 0 ];
|
|
var_1 = self getnormalizedmovement();
|
|
|
|
for ( var_2 = 0; var_2 < 2; var_2++ )
|
|
{
|
|
var_0[var_2] = 0;
|
|
|
|
if ( abs( var_1[var_2] ) > 0.1 )
|
|
var_0[var_2] = 2;
|
|
|
|
if ( var_0[var_2] > 0 && self issprinting() )
|
|
var_0[var_2] = 4;
|
|
|
|
if ( var_1[var_2] < 0 )
|
|
var_0[var_2] = var_0[var_2] * -1;
|
|
}
|
|
|
|
if ( self jumpbuttonpressed() || self fragbuttonpressed() )
|
|
var_0[2] = var_0[2] + common_scripts\utility::ter_op( self fragbuttonpressed(), 3, 2 );
|
|
|
|
if ( is_change_stance_pressed() || self secondaryoffhandbuttonpressed() )
|
|
var_0[3] = var_0[3] + common_scripts\utility::ter_op( self secondaryoffhandbuttonpressed(), 3, 2 );
|
|
|
|
return var_0;
|
|
}
|
|
|
|
is_change_stance_pressed()
|
|
{
|
|
var_0 = 0;
|
|
|
|
if ( self buttonpressed( "BUTTON_CROUCH" ) || self buttonpressed( "BUTTON_PRONE" ) || self buttonpressed( "BUTTON_B" ) || self buttonpressed( "BUTTON_RSTICK" ) )
|
|
var_0 = 1;
|
|
|
|
return var_0;
|
|
}
|
|
|
|
set_player_thruster_data( var_0, var_1 )
|
|
{
|
|
for ( var_2 = 0; var_2 < var_0.size; var_2++ )
|
|
{
|
|
if ( var_0[var_2] != var_1[var_2] )
|
|
{
|
|
level.player notify( "thruster_update", var_0[var_2], level.axes[var_2] );
|
|
wait 0.05;
|
|
}
|
|
}
|
|
}
|
|
|
|
get_thrusters_by_axis( var_0, var_1 )
|
|
{
|
|
var_2 = [];
|
|
|
|
switch ( var_0 )
|
|
{
|
|
case 0:
|
|
if ( var_1 >= 0 )
|
|
var_2[var_2.size] = 5;
|
|
|
|
if ( var_1 <= 0 )
|
|
var_2[var_2.size] = 2;
|
|
|
|
break;
|
|
case 1:
|
|
if ( var_1 >= 0 )
|
|
var_2[var_2.size] = 3;
|
|
|
|
if ( var_1 <= 0 )
|
|
var_2[var_2.size] = 4;
|
|
|
|
break;
|
|
case 2:
|
|
if ( var_1 >= 0 )
|
|
var_2[var_2.size] = 1;
|
|
|
|
if ( var_1 <= 0 )
|
|
var_2[var_2.size] = 0;
|
|
|
|
break;
|
|
default:
|
|
}
|
|
|
|
return var_2;
|
|
}
|
|
|
|
debug_thruster_text( var_0, var_1 )
|
|
{
|
|
var_2 = [];
|
|
|
|
if ( isdefined( var_0 ) )
|
|
{
|
|
if ( 0 == var_0 )
|
|
var_2[var_2.size] = "TOP";
|
|
else if ( 1 == var_0 )
|
|
var_2[var_2.size] = "BOTTOM";
|
|
else if ( 2 == var_0 )
|
|
var_2[var_2.size] = "FRONT";
|
|
else if ( 3 == var_0 )
|
|
var_2[var_2.size] = "LEFT";
|
|
else if ( 4 == var_0 )
|
|
var_2[var_2.size] = "RIGHT";
|
|
else if ( 5 == var_0 )
|
|
var_2[var_2.size] = "BACK";
|
|
}
|
|
else
|
|
var_2[var_2.size] = "";
|
|
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
if ( 0 == var_1 )
|
|
var_2[var_2.size] = "OFF";
|
|
else if ( 1 == var_1 )
|
|
var_2[var_2.size] = "LOW";
|
|
else if ( 2 == var_1 )
|
|
var_2[var_2.size] = "MEDIUM";
|
|
else
|
|
var_2[var_2.size] = "HIGH";
|
|
}
|
|
else
|
|
var_2[var_2.size] = "";
|
|
|
|
return var_2;
|
|
}
|
|
|
|
debug_test_thruster_audio()
|
|
{
|
|
for (;;)
|
|
{
|
|
for ( var_0 = 1; var_0 < 4; var_0++ )
|
|
{
|
|
for ( var_1 = 0; var_1 < level._thruster_ents.size; var_1++ )
|
|
{
|
|
var_2 = debug_thruster_text( var_1, var_0 );
|
|
iprintln( "Playing thruster " + var_2[0] + "'s " + var_2[1] + " burst audio" );
|
|
|
|
switch ( var_0 )
|
|
{
|
|
case 1:
|
|
level._thruster_ents[var_1] playsound( "space_jetpack_boost_start_small" );
|
|
break;
|
|
case 2:
|
|
level._thruster_ents[var_1] playsound( "space_jetpack_boost_start_med" );
|
|
break;
|
|
case 3:
|
|
level._thruster_ents[var_1] playsound( "space_jetpack_boost_start_large" );
|
|
}
|
|
|
|
wait 2.0;
|
|
}
|
|
}
|
|
|
|
for ( var_0 = 0; var_0 < 2; var_0++ )
|
|
{
|
|
for ( var_1 = 0; var_1 < level._thruster_ents.size; var_1++ )
|
|
{
|
|
var_2 = debug_thruster_text( var_1, var_0 );
|
|
|
|
switch ( var_0 )
|
|
{
|
|
case 0:
|
|
iprintln( "Playing thruster " + var_2[0] + "'s loop audio" );
|
|
break;
|
|
case 1:
|
|
iprintln( "Playing thruster " + var_2[0] + "'s sprint loop audio" );
|
|
break;
|
|
}
|
|
|
|
wait 2.0;
|
|
level._thruster_ents[var_1] stoploopsound();
|
|
wait 1.0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
wtf_is_it( var_0, var_1 )
|
|
{
|
|
for (;;)
|
|
{
|
|
var_2 = level.player.origin;
|
|
|
|
if ( isdefined( var_1 ) )
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
|
|
wait 1.0;
|
|
}
|
|
}
|