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

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