IL-GSC/AW/PC/soundscripts/_audio_vehicle_manager.gsc
InfinityLoader b2389dbcb9 Full AW Dump
2024-04-22 02:38:24 -04:00

2548 lines
56 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: _audio_vehicle_manager.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 174
* Decompile Time: 2050 ms
* Timestamp: 4/22/2024 2:03:51 AM
*******************************************************************/
//Function Number: 1
avm_add_oneshot(param_00,param_01)
{
}
//Function Number: 2
avm_init()
{
if(isdefined(level._audio.vm))
{
return;
}
if(!isdefined(level._audio.vm))
{
level._audio.vm = spawnstruct();
}
var_00 = avmx_get();
var_00.init_time = gettime();
var_00.callbacks = [];
var_00.preset_constructors = [];
var_00.presets = [];
var_00.running_intance_accumulator = 0;
var_00.def_asset_type = "alias";
var_00.def_player_mode = 0;
var_00.def_fadein_time = 1;
var_00.def_fadeout_time = 1;
var_00.def_state_min_retrigger_time = 0;
var_00.def_sound_offset = (0,0,0);
var_00.def_smooth_up = 1;
var_00.def_smooth_down = 1;
var_00.def_input_name = "distance";
var_00.def_output_name = "volume";
var_00.def_output_scalar = 1;
var_00.def_priority = 50;
soundscripts\_snd::snd_register_message("snd_register_vehicle",::snd_register_vehicle);
soundscripts\_snd::snd_register_message("snd_start_vehicle",::snd_start_vehicle);
soundscripts\_snd::snd_register_message("snd_stop_vehicle",::snd_stop_vehicle);
avm_register_callback("distance2d",::input_callback_distance2d);
avm_register_callback("distance",::input_callback_distance);
avm_register_callback("throttle",::input_callback_throttle);
avm_register_callback("speed",::input_callback_speed);
avm_register_callback("relative_speed",::input_callback_relative_speed);
avm_register_callback("doppler",::input_callback_doppler);
avm_register_callback("doppler_exaggerated",::input_callback_doppler_exaggerated);
avm_register_callback("doppler_subtle",::input_callback_doppler_subtle);
avm_register_callback("speed_mph",::input_callback_speed_mph);
avm_register_callback("acceleration_g",::input_callback_acceleration_g);
avm_register_callback("jerk_gps",::input_callback_jerk_gps);
avm_register_callback("pitch",::input_callback_pitch);
avm_register_callback("yaw",::input_callback_yaw);
avm_register_callback("pitch_roll_max",::input_callback_pitch_roll_max);
avm_register_callback("degrees_from_upright",::input_callback_degrees_from_upright);
avm_register_callback("jetbike_thrust",::input_callback_jetbike_thrust);
avm_register_callback("jetbike_drag",::input_callback_jetbike_drag);
avm_register_callback("jetbike_anti_slip",::input_callback_jetbike_anti_slip);
avm_register_callback("jetbike_total_repulsor",::input_callback_jetbike_total_repulsor);
avm_register_callback("jetbike_height",::input_callback_player_jetbike_height);
avm_register_callback("hovertank_anti_slip_magnitude",::input_hovertank_anti_slip_magnitude);
avm_register_callback("hovertank_anti_slip_direction",::input_hovertank_anti_slip_direction);
avm_register_callback("hovertank_auto_yaw_magnitude",::input_hovertank_auto_yaw_magnitude);
avm_register_callback("hovertank_auto_yaw_direction",::input_hovertank_auto_yaw_direction);
avm_register_callback("hovertank_repulsor_front_left",::input_hovertank_repulsor_front_left);
avm_register_callback("hovertank_repulsor_front_right",::input_hovertank_repulsor_front_right);
avm_register_callback("hovertank_repulsor_back_left",::input_hovertank_repulsor_back_left);
avm_register_callback("hovertank_repulsor_back_right",::input_hovertank_repulsor_back_right);
avm_register_callback("hovertank_throttle_magnitude",::input_hovertank_throttle_magnitude);
avm_register_callback("hovertank_throttle_direction",::input_hovertank_throttle_direction);
avm_register_callback("hovertank_uprighting",::input_hovertank_uprighting);
avm_register_callback("hovertank_turret_yaw",::input_hovertank_turret_yaw);
avm_register_callback("hovertank_turret_pitch",::input_hovertank_turret_pch);
avm_register_callback("diveboat_throttle",::input_diveboat_throttle);
avm_register_callback("diveboat_drag",::input_diveboat_drag);
avm_register_callback("diveboat_drag_with_mph",::input_diveboat_drag_with_mph);
avm_register_callback("player_pdrone_look",::input_player_pdrone_look);
}
//Function Number: 3
snd_register_vehicle(param_00,param_01)
{
var_02 = avmx_get();
var_02.preset_constructors[param_00] = param_01;
}
//Function Number: 4
snd_start_vehicle(param_00)
{
var_01 = avmx_get();
if(isstring(param_00))
{
var_02 = param_00;
param_00 = spawnstruct();
param_00.preset_name = var_02;
}
var_02 = param_00.preset_name;
var_03 = soundscripts\_audio::aud_get_optional_param(var_01.def_player_mode,param_00.player_mode);
var_04 = soundscripts\_audio::aud_get_optional_param(var_01.def_fadein_time,param_00.fadein_time);
var_05 = soundscripts\_audio::aud_get_optional_param(var_01.def_fadeout_time,param_00.fadeout_time);
var_06 = soundscripts\_audio::aud_get_optional_param(var_01.def_sound_offset,param_00.offset);
var_07 = soundscripts\_audio::aud_get_optional_param(undefined,param_00.initial_state_spec);
self.snd_instance = thread avmx_start_instance(var_02,var_03,var_04,var_05,var_06,var_07);
}
//Function Number: 5
snd_stop_vehicle(param_00,param_01)
{
var_02 = self;
var_03 = avmx_get();
var_04 = var_02.snd_instance;
var_02.snd_instance = undefined;
var_05 = var_04 avmx_get_instance_preset();
var_06 = soundscripts\_audio::aud_get_optional_param(var_04.fadeout_time,var_05.header.fadeout_time);
var_04.fadeout_time = soundscripts\_audio::aud_get_optional_param(var_06,param_00);
param_01 = soundscripts\_audio::aud_get_optional_param(0,param_01);
var_04 maps\_utility::delaythread(param_01,::avmx_stop_instance,var_04.fadeout_time);
}
//Function Number: 6
avm_create_vehicle_proxy()
{
var_00 = common_scripts\utility::spawn_tag_origin();
var_00.vm_is_proxy = 1;
return var_00;
}
//Function Number: 7
avmx_is_vehicle_proxy()
{
return isdefined(self.vm_is_proxy) && self.vm_is_proxy == 1;
}
//Function Number: 8
avm_begin_preset_def(param_00,param_01)
{
var_02 = avmx_get();
avmx_set_preset_name(param_00);
avmx_set_instance_init_callback(param_01);
var_02.vehicle_under_construction = self;
}
//Function Number: 9
avm_begin_loop_data(param_00,param_01,param_02)
{
var_03 = avmx_get();
self.loop_data = spawnstruct();
self.loop_data.loops = [];
self.loop_data.defaults = spawnstruct();
self.loop_data.defaults.fadeout_time = soundscripts\_audio::aud_get_optional_param(var_03.def_fadeout_time,param_00);
self.loop_data.defaults.smooth_up = soundscripts\_audio::aud_get_optional_param(var_03.def_smooth_up,param_01);
self.loop_data.defaults.smooth_down = soundscripts\_audio::aud_get_optional_param(var_03.def_smooth_down,param_02);
}
//Function Number: 10
avm_begin_loop_def(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(isarray(param_00))
{
var_06 = param_00;
}
else
{
var_06 = [param_01];
}
param_01 = soundscripts\_audio::aud_get_optional_param(self.loop_data.defaults.fadeout_time,param_01);
param_02 = soundscripts\_audio::aud_get_optional_param(self.loop_data.defaults.smooth_up,param_02);
param_03 = soundscripts\_audio::aud_get_optional_param(self.loop_data.defaults.smooth_down,param_03);
param_04 = soundscripts\_audio::aud_get_optional_param(param_00,param_04);
param_05 = soundscripts\_audio::aud_get_optional_param("alias",param_05);
var_0A = spawnstruct();
var_0A.name = param_04;
var_0A.fadeout_time = param_01;
var_0A.asset_type = param_05;
var_0A.asset_names = var_06;
var_0A.preset_name = avmx_get_preset_name();
var_0A.param_maps = [];
var_0A avmx_preset_set_param_map_defaults(param_02,param_03);
self.loop_data.loops[var_0A.name] = var_0A;
self.loop_data.loop_under_construction = var_0A;
}
//Function Number: 11
avmx_preset_determine_param_map_owner(param_00)
{
var_01 = undefined;
if(isdefined(self.loop_data) && isdefined(self.loop_data.loop_under_construction))
{
var_01 = self.loop_data.loop_under_construction;
if(isdefined(self.behavior_data))
{
}
}
else if(isdefined(self.oneshot_data) && isdefined(self.oneshot_data.oneshot_under_construction))
{
var_01 = self.oneshot_data.oneshot_under_construction;
}
else if(isdefined(self.behavior_data) && isdefined(self.behavior_data.behavior_under_construction))
{
var_01 = self.behavior_data.behavior_under_construction;
}
return var_01;
}
//Function Number: 12
avmx_preset_determine_param_map_env_owner(param_00)
{
var_01 = undefined;
var_02 = avmx_preset_determine_param_map_owner(param_00);
if(isdefined(var_02))
{
var_01 = var_02.pmap_under_construction;
}
return var_01;
}
//Function Number: 13
avmx_preset_set_param_map_defaults(param_00,param_01)
{
var_02 = avmx_get();
self.param_map_defaults = spawnstruct();
var_03 = soundscripts\_audio::aud_get_optional_param(var_02.def_smooth_up,self.param_map_defaults.smooth_up);
var_04 = soundscripts\_audio::aud_get_optional_param(var_02.def_smooth_down,self.param_map_defaults.smooth_down);
self.param_map_defaults.smooth_up = soundscripts\_audio::aud_get_optional_param(var_03,param_00);
self.param_map_defaults.smooth_down = soundscripts\_audio::aud_get_optional_param(var_04,param_01);
self.param_map_defaults.input_name = var_02.def_input_name;
self.param_map_defaults.output_name = var_02.def_output_name;
self.param_map_defaults.input_modifiers = [];
}
//Function Number: 14
avm_begin_param_map(param_00,param_01,param_02)
{
param_00 = tolower(param_00);
var_03 = param_00;
if(!isstring(var_03))
{
var_03 = "";
}
var_04 = avmx_preset_determine_param_map_owner(var_03);
var_03 = param_00;
var_06 = spawnstruct();
var_06.envs = [];
var_06.input_name = param_00;
var_06.smooth_up = soundscripts\_audio::aud_get_optional_param(var_04.param_map_defaults.smooth_up,param_01);
var_06.smooth_down = soundscripts\_audio::aud_get_optional_param(var_04.param_map_defaults.smooth_down,soundscripts\_audio::aud_get_optional_param(param_01,param_02));
var_06.def_output_name = var_04.param_map_defaults.output_name;
var_06.smooth_up = avm_change_smoothing_rate(var_06.smooth_up,0.1,0.1);
var_06.smooth_down = avm_change_smoothing_rate(var_06.smooth_down,0.1,0.1);
var_04.param_maps[var_03] = var_06;
var_04.pmap_under_construction = var_06;
}
//Function Number: 15
avm_compute_smoothing_rc_from_alpha(param_00,param_01)
{
return param_01 * 1 - param_00 / param_00;
}
//Function Number: 16
avm_compute_alpha_from_rc(param_00,param_01)
{
return param_01 / param_00 + param_01;
}
//Function Number: 17
avm_change_smoothing_rate(param_00,param_01,param_02)
{
var_03 = avm_compute_smoothing_rc_from_alpha(param_00,param_01);
var_04 = avm_compute_alpha_from_rc(var_03,param_02);
return var_04;
}
//Function Number: 18
avmx_add_behavior_shortcut_param_maps(param_00,param_01,param_02)
{
foreach(var_04 in param_00)
{
avm_begin_param_map(var_04,param_01,param_02);
avm_end_param_map();
}
}
//Function Number: 19
avm_add_param_map_env(param_00,param_01,param_02)
{
if(isstring(param_01))
{
param_02 = soundscripts\_audio::aud_get_optional_param(param_01,param_02);
}
var_03 = avmx_preset_determine_param_map_env_owner(param_02);
var_04 = param_01;
if(!isstring(var_04))
{
var_04 = "???";
}
var_05 = spawnstruct();
var_05.asset_name = param_01;
var_05.output_name = param_00;
var_03.envs[param_02] = var_05;
}
//Function Number: 20
avm_end_param_map()
{
var_00 = avmx_preset_determine_param_map_owner("UNKNOWN param_map being terminated by AVM_end_param_map()");
if(isdefined(var_00))
{
var_00.pmap_under_construction = undefined;
}
}
//Function Number: 21
avm_end_loop_def()
{
self.loop_data.loop_under_construction = undefined;
}
//Function Number: 22
avm_end_loop_data()
{
}
//Function Number: 23
avm_begin_oneshot_data(param_00)
{
var_01 = avmx_get();
self.oneshot_data = spawnstruct();
self.oneshot_data.oneshots = [];
self.oneshot_data.defaults = spawnstruct();
self.oneshot_data.defaults.fadeout_time = soundscripts\_audio::aud_get_optional_param(var_01.def_fadeout_time,param_00);
}
//Function Number: 24
avm_begin_oneshot_def(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = avmx_get();
param_01 = soundscripts\_audio::aud_get_optional_param(undefined,param_01);
param_02 = soundscripts\_audio::aud_get_optional_param(self.oneshot_data.defaults.fadeout_time,param_02);
param_03 = soundscripts\_audio::aud_get_optional_param(1,param_03);
param_04 = soundscripts\_audio::aud_get_optional_param(param_00,param_04);
param_05 = soundscripts\_audio::aud_get_optional_param(var_06.def_asset_type,param_05);
var_07 = param_04;
if(isstring(param_04))
{
var_07 = [param_04];
}
var_0B = spawnstruct();
var_0B.name = param_00;
var_0B.asset_names = var_07;
var_0B.asset_type = param_05;
var_0B.duck_env_name = param_01;
var_0B.fadeout_time = param_02;
var_0B.oneshot_poly_mode = param_03;
var_0B.param_maps = [];
var_0B.snd_ents = [];
var_0B avmx_preset_set_param_map_defaults();
self.oneshot_data.oneshots[var_0B.name] = var_0B;
self.oneshot_data.oneshot_under_construction = var_0B;
}
//Function Number: 25
avmx_set_oneshot_update_mode(param_00)
{
var_01 = self.oneshot_data.oneshot_under_construction;
var_01.oneshot_update_mode = param_00;
}
//Function Number: 26
avm_end_oneshot_def()
{
self.oneshot_data.oneshot_under_construction = undefined;
}
//Function Number: 27
avm_end_oneshot_data()
{
}
//Function Number: 28
avm_begin_behavior_data(param_00,param_01)
{
self.behavior_data = spawnstruct();
self.behavior_data.behaviors = [];
self.behavior_data.defaults = spawnstruct();
self.behavior_data.defaults.smooth_up = param_00;
self.behavior_data.defaults.smooth_down = param_01;
}
//Function Number: 29
avm_begin_behavior_def(param_00,param_01,param_02,param_03,param_04)
{
var_05 = avmx_get();
var_06 = spawnstruct();
var_06.oneshots = [];
var_06.loops = [];
var_06.preset_name = avmx_get_preset_name();
var_06.param_maps = [];
var_06.name = param_00;
var_06.condition_callback = param_01;
param_03 = soundscripts\_audio::aud_get_optional_param(self.behavior_data.defaults.smooth_up,param_03);
param_04 = soundscripts\_audio::aud_get_optional_param(self.behavior_data.defaults.smooth_down,param_04);
var_06 avmx_preset_set_param_map_defaults(param_03,param_04);
self.behavior_data.behaviors[var_06.name] = var_06;
self.behavior_data.behavior_under_construction = var_06;
if(isarray(param_02))
{
avmx_add_behavior_shortcut_param_maps(param_02,self.behavior_data.defaults.smooth_up,self.behavior_data.defaults.smooth_down);
}
}
//Function Number: 30
avm_add_init_state_callback(param_00)
{
self.behavior_data.behavior_under_construction.init_state_callback = param_00;
}
//Function Number: 31
avm_add_in_state_callback(param_00)
{
self.behavior_data.behavior_under_construction.in_state_callback = param_00;
}
//Function Number: 32
avm_add_oneshots(param_00)
{
if(isstring(param_00))
{
param_00 = [param_00];
}
foreach(var_02 in param_00)
{
var_03 = self.behavior_data.behavior_under_construction;
var_03.oneshots[var_02] = var_02;
}
}
//Function Number: 33
avm_add_loops(param_00)
{
var_01 = self.behavior_data.behavior_under_construction;
if(!isdefined(param_00) || param_00.size == 0)
{
param_00 = "none";
}
if(isstring(param_00))
{
if(tolower(param_00) == "all")
{
var_01.loops[0] = "all";
return;
}
if(tolower(param_00) == "none")
{
var_01.loops[0] = "none";
return;
}
var_01.loops[param_00] = param_00;
return;
}
var_01.loops[0] = undefined;
foreach(var_03 in param_00)
{
if(var_03 != "all" && var_03 != "none")
{
}
var_01.loops[var_03] = var_03;
}
}
//Function Number: 34
avm_end_behavior_def()
{
self.behavior_data.behavior_under_construction = undefined;
}
//Function Number: 35
avm_end_behavior_data()
{
}
//Function Number: 36
avm_begin_state_data(param_00,param_01)
{
if(isdefined(param_00))
{
param_00 = param_00 * 1000;
}
var_02 = avmx_get();
self.state_data = spawnstruct();
self.state_data.state_groups = [];
self.state_data.defaults = spawnstruct();
self.state_data.defaults.priority = soundscripts\_audio::aud_get_optional_param(var_02.def_priority,param_01);
self.state_data.defaults.min_retrigger_time = soundscripts\_audio::aud_get_optional_param(var_02.def_state_min_retrigger_time,param_00);
}
//Function Number: 37
avm_begin_state_group(param_00,param_01,param_02,param_03,param_04)
{
if(isdefined(param_04))
{
param_04 = param_04 * 1000;
}
var_05 = spawnstruct();
var_05.name = param_00;
var_05.initial_state_name_pair = [param_01,param_02];
var_05.priority = soundscripts\_audio::aud_get_optional_param(self.state_data.defaults.priority,param_03);
var_05.min_retrigger_time = soundscripts\_audio::aud_get_optional_param(self.state_data.defaults.min_retrigger_time,param_04);
var_05.states = [];
self.state_data.state_groups[param_00] = var_05;
self.state_data.group_under_construction = var_05;
}
//Function Number: 38
avm_begin_state_def(param_00,param_01,param_02)
{
if(isdefined(param_01))
{
param_01 = param_01 * 1000;
}
var_03 = self.state_data.group_under_construction;
var_04 = var_03.name;
var_05 = spawnstruct();
var_05.name = param_00;
var_05.transitions = [];
var_05.priority = soundscripts\_audio::aud_get_optional_param(var_03.priority,param_02);
var_05.min_retrigger_time = soundscripts\_audio::aud_get_optional_param(var_03.min_retrigger_time,param_01);
var_05.preset_name = avmx_get_preset_name();
var_03.states[param_00] = var_05;
self.state_data.group_under_construction.state_under_construction = var_05;
}
//Function Number: 39
avm_add_state_transition(param_00,param_01)
{
var_03 = self.state_data.group_under_construction.state_under_construction;
var_03.transitions[var_03.transitions.size] = [param_00,param_01];
}
//Function Number: 40
avm_end_state_def()
{
self.state_data.group_under_construction.state_under_construction = undefined;
}
//Function Number: 41
avm_end_state_group()
{
self.state_data.group_under_construction = undefined;
}
//Function Number: 42
avm_end_state_data()
{
}
//Function Number: 43
avm_add_envelope(param_00,param_01)
{
if(isstring(param_00))
{
param_00 = tolower(param_00);
}
var_04 = avmx_get();
if(!isdefined(self.env_data))
{
self.env_data = [];
}
var_05 = spawnstruct();
if(isarray(param_01))
{
var_05.env_array = [];
foreach(var_07 in param_01)
{
var_05.env_array[var_05.env_array.size] = (var_07[0],var_07[1],0);
}
}
else
{
var_05.env_function = param_01;
}
self.env_data[param_00] = var_05;
}
//Function Number: 44
avm_end_preset_def()
{
var_00 = avmx_get();
self.consolidated_inputs = [];
foreach(var_08, var_02 in self.loop_data.loops)
{
var_03 = var_08;
var_04 = var_02;
foreach(var_07, var_06 in var_04.param_maps)
{
self.consolidated_inputs[var_07] = avmx_get_callback(var_07);
}
}
foreach(var_08, var_02 in self.oneshot_data.oneshots)
{
var_0A = var_08;
var_0B = var_02;
foreach(var_07, var_06 in var_0B.param_maps)
{
self.consolidated_inputs[var_07] = avmx_get_callback(var_07);
}
}
foreach(var_08, var_02 in self.behavior_data.behaviors)
{
var_0E = var_08;
var_0F = var_02;
foreach(var_07, var_06 in var_0F.param_maps)
{
self.consolidated_inputs[var_07] = avmx_get_callback(var_07);
}
}
var_00.vehicle_under_construction = undefined;
}
//Function Number: 45
avmx_get_master_volume()
{
return self.master_volume;
}
//Function Number: 46
vm2_get_vehicle_snd_instance()
{
return self.snd_instance;
}
//Function Number: 47
vm2_get_instance_name()
{
return avmx_get_instance_name();
}
//Function Number: 48
avm_set_instance_master_volume(param_00,param_01)
{
thread avmx_set_instance_master_volume(param_00,param_01);
}
//Function Number: 49
avmx_set_instance_master_volume(param_00,param_01)
{
var_02 = self;
var_03 = var_02 avmx_get_instance_name();
var_04 = var_02 avmx_get_vehicle_entity();
param_00 = clamp(param_00,0,1);
param_01 = clamp(soundscripts\_audio::aud_get_optional_param(1,param_01),0,60);
var_05 = var_03;
var_02 notify(var_05);
var_02 endon(var_05);
level endon("msg_snd_vehicle_stop");
level endon("msg_snd_vehicle_stop_" + var_02 avmx_get_instance_name());
var_04 endon("death");
var_06 = avm_get_update_rate();
var_07 = param_00 - var_02.master_volume;
var_08 = max(1,param_01 / var_06);
var_09 = var_07 / var_08;
for(;;)
{
if(var_09 < 0)
{
if(var_02.master_volume > param_00)
{
var_02.master_volume = max(0,var_02.master_volume + var_09);
}
else
{
break;
}
}
else if(var_09 > 0)
{
if(var_02.master_volume < param_00)
{
var_02.master_volume = min(1,var_02.master_volume + var_09);
}
else
{
break;
}
}
wait(var_06);
}
}
//Function Number: 50
avm_get_running_instance_count(param_00)
{
return avmx_get().running_intance_accumulator;
}
//Function Number: 51
avm_get_update_rate()
{
return 0.1;
}
//Function Number: 52
vm2_get_vehicle_instance_count(param_00)
{
var_01 = 0;
var_02 = avmx_get();
if(isstring(param_00))
{
var_03 = var_02.presets[param_00];
if(isdefined(var_03) & isarray(var_03.instances))
{
var_01 = var_03.instances.size;
}
}
else
{
foreach(var_03 in var_03.presets)
{
if(isarray(var_03.instances))
{
var_01 = var_01 + var_03.instances.size;
}
}
}
return var_01;
}
//Function Number: 53
avmx_create_preset(param_00)
{
var_01 = avmx_get();
var_02 = var_01.preset_constructors[param_00];
var_03 = spawnstruct();
var_03.global_data = spawnstruct();
var_03.user_data = spawnstruct();
var_03.header = spawnstruct();
var_03.instances = [];
var_03.header.preset_name = soundscripts\_audio::aud_get_optional_param(undefined,param_00);
var_03.header.fadein_time = var_01.def_fadein_time;
var_03.header.fadeout_time = var_01.def_fadeout_time;
var_03.header.sound_offset = var_01.def_sound_offset;
var_03 [[ var_02 ]]();
var_03 avmx_add_preset();
return var_03;
}
//Function Number: 54
avmx_add_preset()
{
var_00 = avmx_get();
var_00.presets[self.header.preset_name] = self;
}
//Function Number: 55
vm2x_remove_preset()
{
var_00 = avmx_get();
var_00.presets[self.header.preset_name] = undefined;
}
//Function Number: 56
avmx_add_instance()
{
var_00 = avmx_get();
var_00.presets[self.preset_name].instances[self.instance_name] = self;
var_00.running_intance_accumulator++;
}
//Function Number: 57
avmx_remove_instance()
{
var_00 = avmx_get();
var_00.presets[self.preset_name].instances[self.instance_name] = undefined;
}
//Function Number: 58
avmx_generate_instance_name(param_00)
{
var_01 = self.header.preset_name + "_" + avm_get_running_instance_count();
if(isdefined(param_00) && param_00 == 1)
{
var_01 = var_01 + "_player";
}
return var_01;
}
//Function Number: 59
avm_register_callback(param_00,param_01,param_02)
{
avmx_get().callbacks[param_00] = [param_01,param_02];
}
//Function Number: 60
avmx_get_instance_state_struct(param_00)
{
var_01 = self;
var_02 = undefined;
foreach(var_04 in var_01.state_group_list)
{
var_02 = var_04[param_00];
if(isdefined(var_02))
{
break;
}
}
return var_02;
}
//Function Number: 61
avmx_get_behavior_instance_struct(param_00)
{
var_01 = self;
return var_01.behavior_list[param_00];
}
//Function Number: 62
avmx_get_state_preset_struct(param_00)
{
var_01 = self;
var_02 = undefined;
foreach(var_04 in var_01.state_data.state_groups)
{
var_02 = var_04.states[param_00];
if(isdefined(var_02))
{
break;
}
}
return var_02;
}
//Function Number: 63
avmx_get_behavior_preset_struct(param_00)
{
var_01 = self;
return var_01.behavior_data.behaviors[param_00];
}
//Function Number: 64
avmx_create_instance_struct(param_00,param_01,param_02,param_03,param_04)
{
var_05 = self;
var_06 = spawnstruct();
var_06.user_data = spawnstruct();
var_06.preset_name = var_05 avmx_get_preset_name();
var_06.instance_name = var_05 avmx_generate_instance_name(param_04);
var_06.veh_ent = param_00;
var_06.fadein_time = param_01;
var_06.fadeout_time = param_02;
var_06.sound_offset = param_03;
var_06.player_mode = param_04;
var_06.loop_duck_scalar = 1;
var_06.oneshot_duck_vals = [];
var_06.master_volume = 1;
var_06.loop_list = [];
foreach(var_08 in var_05.loop_data.loops)
{
var_09 = spawnstruct();
var_09.ps_item = var_08;
var_09.play_mode = 0;
var_09.curr_io = var_06 avmx_create_param_io_struct(var_08);
var_09.snd_ents = [];
var_09.volume = 1;
var_06.loop_list[var_08.name] = var_09;
}
var_06.oneshot_list = [];
foreach(var_08 in var_05.oneshot_data.oneshots)
{
var_09 = spawnstruct();
var_09.ps_item = var_08;
var_09.curr_io = var_06 avmx_create_param_io_struct(var_08);
var_09.snd_ents = [];
var_06.oneshot_list[var_08.name] = var_09;
}
var_06.behavior_list = [];
foreach(var_08 in var_05.behavior_data.behaviors)
{
var_09 = spawnstruct();
var_09.ps_item = var_08;
var_09.curr_io = var_06 avmx_create_param_io_struct(var_08);
var_06.behavior_list[var_08.name] = var_09;
}
var_06.state_group_list = [];
foreach(var_15, var_10 in var_05.state_data.state_groups)
{
var_06.state_group_list[var_15] = [];
foreach(var_14, var_12 in var_10.states)
{
var_13 = spawnstruct();
var_13.ps_item = var_12;
var_13.start_time = 0;
var_06.state_group_list[var_15][var_14] = var_13;
}
}
if(isdefined(var_05.global_data.instance_init_callback))
{
var_06 [[ var_05.global_data.instance_init_callback ]](var_06.user_data);
}
return var_06;
}
//Function Number: 65
avmx_start_instance(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = self;
if(var_06 avmx_is_vehicle_proxy() == 0)
{
var_06 vehicle_turnengineoff();
}
var_07 = avmx_get_preset(param_00);
if(!isdefined(var_07))
{
var_07 = avmx_create_preset(param_00);
}
var_08 = var_07 avmx_create_instance_struct(var_06,param_02,param_03,param_04,param_01);
var_08 avmx_add_instance();
var_08 thread avmx_update_loops();
var_08 thread avmx_launch_state_machines(param_05);
var_06 thread avmx_monitor_death(var_08);
return var_08;
}
//Function Number: 66
avmx_stop_instance(param_00)
{
if(!isdefined(self.is_stopping))
{
self.is_stopping = 1;
var_01 = self;
var_02 = var_01 avmx_get_instance_preset();
var_03 = var_01 avmx_get_instance_name();
param_00 = max(0.01,soundscripts\_audio::aud_get_optional_param(var_01.fadeout_time,param_00));
level notify("msg_snd_vehicle_stop_" + var_03);
foreach(var_05 in var_01.loop_list)
{
var_06 = soundscripts\_audio::aud_get_optional_param(var_05.ps_item.fadeout_time,param_00);
var_05 thread avmx_fade_stop_and_delete_sound_obj(var_06);
}
foreach(var_09 in var_01.oneshot_list)
{
var_06 = soundscripts\_audio::aud_get_optional_param(var_09.ps_item.fadeout_time,param_00);
var_09 thread avmx_fade_stop_and_delete_sound_obj(var_06);
}
wait(param_00 + 0.05);
var_01 avmx_remove_instance();
}
}
//Function Number: 67
avmx_monitor_death(param_00)
{
var_01 = param_00 avmx_get_instance_name();
level endon("msg_snd_vehicle_stop_" + var_01);
self waittill("death");
param_00 thread avmx_stop_instance();
}
//Function Number: 68
avmx_create_param_io_struct(param_00)
{
var_01 = self;
var_02 = spawnstruct();
var_02.smoothed_input = [];
var_02.physical_output = [];
foreach(var_04 in param_00.param_maps)
{
var_02.smoothed_input[var_04.input_name] = 0;
foreach(var_06 in var_04.envs)
{
if(!isdefined(var_02.physical_output[var_06.output_name]))
{
var_02.physical_output[var_06.output_name] = 1;
}
}
}
if(!isdefined(var_02.physical_output["volume"]))
{
var_02.physical_output["volume"] = 1;
}
if(!isdefined(var_02.physical_output["pitch"]))
{
var_02.physical_output["pitch"] = 1;
}
return var_02;
}
//Function Number: 69
vm2x_init_param_io_struct(param_00)
{
var_01 = self;
foreach(var_04, var_03 in param_00.smoothed_input)
{
param_00.smoothed_input[var_04] = 0;
}
foreach(var_04, var_03 in param_00.physical_output)
{
param_00.physical_output[var_04] = 1;
}
}
//Function Number: 70
avmx_get_current_instance_sound_item_input()
{
return self.curr_io.smoothed_input;
}
//Function Number: 71
avmx_get_instance_sound_item_output()
{
return self.curr_io.physical_output;
}
//Function Number: 72
avmx_get_instance_sound_item_volume()
{
var_00 = avmx_get_instance_sound_item_output();
var_01 = var_00["volume"];
if(!isdefined(var_01))
{
var_01 = 1;
}
return var_01;
}
//Function Number: 73
avmx_update_loops()
{
var_00 = self;
var_01 = avmx_get_instance_preset();
var_02 = avmx_get_vehicle_entity();
level endon("msg_snd_vehicle_stop");
level endon("msg_snd_vehicle_stop_" + avmx_get_instance_name());
var_02 endon("death");
var_03 = undefined;
for(;;)
{
var_00 avmx_update_loop_ducking_scalar();
foreach(var_05 in var_00.loop_list)
{
if(var_05.play_mode == 1)
{
var_06 = var_05.ps_item.name;
var_00 avmx_map_io(var_05,var_03);
var_00 avmx_update_instance_loop_assets(var_05);
}
}
var_03 = gettime();
var_08 = distance2d(var_00.veh_ent.origin,level.player.origin);
if(var_08 < 400)
{
var_09 = 1;
}
else if(var_08 > 1500)
{
var_09 = 10;
}
else
{
var_09 = 1 + 9 * var_08 - 400 / 1100;
}
wait(0.1 * var_09);
}
}
//Function Number: 74
avmx_set_loop_play_state(param_00,param_01)
{
var_02 = self;
switch(param_00.ps_item.asset_type)
{
case "alias":
if(param_01 == 1 && param_00.play_mode != 1)
{
var_02 avmx_start_loop(param_00);
param_00.play_mode = 1;
}
else if(param_01 == 0 && param_00.play_mode != 0)
{
var_02 avmx_stop_loop(param_00);
param_00.play_mode = 0;
}
else
{
}
break;
case "soundevent":
break;
case "damb":
break;
default:
break;
}
}
//Function Number: 75
avmx_map_io(param_00,param_01)
{
if(param_00.ps_item.param_maps.size == 0)
{
return;
}
var_02 = self;
var_03 = avmx_get_instance_preset();
var_04 = param_00.ps_item;
var_05 = param_00.curr_io;
var_06 = gettime();
param_01 = soundscripts\_audio::aud_get_optional_param(var_06 - 100,param_01);
var_05.physical_output = [];
var_07 = [];
foreach(var_0A, var_09 in var_03.consolidated_inputs)
{
var_07[var_0A] = var_02 [[ var_09 ]]();
}
foreach(var_0C in var_04.param_maps)
{
var_0D = var_0C.input_name;
var_0E = var_07[var_0D];
var_0F = var_05.smoothed_input[var_0D];
if(var_0E > var_0F)
{
var_10 = var_0C.smooth_up;
}
else
{
var_10 = var_0C.smooth_down;
}
var_11 = var_06 - param_01 / 100;
var_10 = 1 - pow(1 - var_10,var_11);
var_12 = var_0F + var_10 * var_0E - var_0F;
foreach(var_17, var_14 in var_0C.envs)
{
var_15 = var_03.env_data[var_17];
var_16 = piecewiselinearlookup(var_12,var_15.env_array);
if(isdefined(var_05.physical_output[var_14.output_name]))
{
var_05.physical_output[var_14.output_name] = var_05.physical_output[var_14.output_name] * var_16;
continue;
}
var_05.physical_output[var_14.output_name] = var_16;
}
var_05.smoothed_input[var_0D] = var_12;
}
}
//Function Number: 76
avmx_update_loop_ducking_scalar()
{
self.loop_duck_scalar = 1;
foreach(var_01 in self.oneshot_duck_vals)
{
self.loop_duck_scalar = self.loop_duck_scalar * var_01;
}
}
//Function Number: 77
avmx_update_instance_loop_assets(param_00)
{
var_01 = self;
foreach(var_07, var_03 in param_00.curr_io.physical_output)
{
if(var_07 == "volume")
{
var_03 = var_03 * var_01.loop_duck_scalar * param_00.volume;
if(isdefined(param_00.fade_in_scalar))
{
param_00.fade_in_scalar = min(param_00.fade_in_scalar + param_00.fade_in_inc,1);
var_03 = var_03 * param_00.fade_in_scalar;
if(param_00.fade_in_scalar >= 1)
{
param_00.fade_in_scalar = undefined;
}
}
}
foreach(var_05 in param_00.snd_ents)
{
var_05 avmx_update_sound_ent_output_param(var_07,var_03);
}
}
}
//Function Number: 78
avm_set_loop_mute_state(param_00,param_01,param_02)
{
var_03 = self;
var_04 = var_03.loop_list[param_00];
var_05 = 1;
if(param_01 == 1)
{
var_05 = 0;
}
param_02 = soundscripts\_audio::aud_get_optional_param(0.05,param_02);
var_06 = var_05 - var_04.volume;
var_07 = max(1,param_02 / avm_get_update_rate());
var_08 = var_06 / var_07;
var_03 thread avmx_set_loop_volume(var_04,var_05,var_08,avm_get_update_rate());
}
//Function Number: 79
avmx_set_loop_volume(param_00,param_01,param_02,param_03)
{
var_04 = self;
var_05 = var_04 avmx_get_vehicle_entity();
var_06 = param_00.ps_item.name;
var_04 notify(var_06);
var_04 endon(var_06);
level endon("msg_snd_vehicle_stop");
level endon("msg_snd_vehicle_stop_" + var_04 avmx_get_instance_name());
var_05 endon("death");
for(;;)
{
if(param_02 < 0)
{
if(param_00.volume > param_01)
{
param_00.volume = max(0,param_00.volume + param_02);
}
else
{
break;
}
}
else if(param_02 > 0)
{
if(param_00.volume < param_01)
{
param_00.volume = min(1,param_00.volume + param_02);
}
else
{
break;
}
}
wait(param_03);
}
}
//Function Number: 80
avmx_launch_state_machines(param_00)
{
var_01 = self;
var_02 = avmx_get_instance_preset();
foreach(var_0A, var_04 in var_02.state_data.state_groups)
{
var_05 = var_04.initial_state_name_pair;
if(isarray(param_00))
{
var_05 = param_00[var_0A];
}
var_06 = var_05[0];
var_07 = var_05[1];
var_08 = var_01.state_group_list[var_0A][var_06];
var_09 = var_01.behavior_list[var_07];
var_01 avmx_map_io(var_09);
var_01 thread avmx_state_enter_action_function(var_08,var_09);
}
}
//Function Number: 81
avmx_state_enter_action_function(param_00,param_01)
{
var_02 = self;
var_03 = var_02 avmx_get_instance_preset();
var_04 = param_00.ps_item;
var_05 = var_02 avmx_get_vehicle_entity();
level endon("msg_snd_vehicle_stop");
level endon("msg_snd_vehicle_stop_" + avmx_get_instance_name());
var_05 endon("death");
param_00.start_time = gettime();
var_02 avmx_state_enter_action_init_data(param_00,param_01);
var_02 avmx_state_enter_action_play_oneshots(param_00,param_01);
var_02 avmx_state_enter_action_play_loops(param_00,param_01);
if(isdefined(param_01.ps_item.init_state_callback))
{
var_02 [[ param_01.ps_item.init_state_callback ]](var_02.user_data);
}
var_06 = undefined;
var_07 = undefined;
var_08 = undefined;
var_09 = undefined;
var_0A = undefined;
for(;;)
{
if(isdefined(param_01.ps_item.in_state_callback))
{
var_02 avmx_map_io(param_01);
var_02 [[ param_01.ps_item.in_state_callback ]](param_01.curr_io.smoothed_input,var_02.user_data);
}
foreach(var_0C in var_04.transitions)
{
var_0D = var_0C[0];
var_0E = var_0C[1];
var_0F = var_0C[2];
var_10 = var_02 avmx_get_instance_state_struct(var_0D);
var_11 = var_02 avmx_get_behavior_instance_struct(var_0E);
var_12 = var_10.ps_item;
var_13 = var_11.ps_item;
if(gettime() - var_10.start_time < var_12.min_retrigger_time)
{
continue;
}
var_02 avmx_map_io(var_11,var_0A);
var_14 = var_02 avmx_state_condition_function(var_10,var_11);
if(isarray(var_14))
{
var_09 = var_14;
var_14 = 1;
}
if(var_14)
{
if(!isdefined(var_06) || var_12.priority > var_06.ps_item.priority)
{
var_06 = var_10;
var_07 = var_11;
var_08 = var_09;
var_09 = undefined;
}
}
}
if(isdefined(var_06))
{
break;
}
var_0A = gettime();
var_16 = distance2d(var_02.veh_ent.origin,level.player.origin);
if(var_16 < 400)
{
var_17 = 1;
}
else if(var_16 > 1500)
{
var_17 = 10;
}
else
{
var_17 = 1 + 9 * var_16 - 400 / 1100;
}
wait(0.1 * var_17);
}
var_02 avmx_set_behavior_oneshot_overrides(var_07,var_08);
var_18 = var_02 avmx_get_behavior_restricted_oneshots(var_07);
var_19 = var_18.size > 0;
var_02 thread avmx_state_exit_action_function(param_01,var_19);
var_02 thread avmx_state_enter_action_function(var_06,var_07);
}
//Function Number: 82
avmx_state_enter_action_init_data(param_00,param_01)
{
var_02 = self;
var_03 = param_01.ps_item;
if(isdefined(var_03.loops[0]))
{
if(var_03.loops[0] == "all")
{
foreach(var_05 in var_02.loop_list)
{
var_05.volume = 1;
}
return;
}
return;
}
foreach(var_07 in var_06.loops)
{
var_08 = var_04.loop_list[var_07];
var_08.volume = 1;
}
}
//Function Number: 83
avmx_state_exit_action_function(param_00,param_01)
{
var_02 = self;
var_03 = param_00.ps_item.oneshots;
foreach(var_05 in var_03)
{
var_06 = var_02.oneshot_list[var_05];
var_07 = var_06.ps_item.oneshot_poly_mode;
if(var_07 == 2 || var_07 == 1 && param_01)
{
var_08 = var_06.snd_ents;
var_06.snd_ents = [];
var_09 = var_06.ps_item.fadeout_time;
foreach(var_0B in var_08)
{
var_0B thread avmx_stop_snd_ent(var_09);
}
}
}
}
//Function Number: 84
vm2x_fade_sound_obj(param_00)
{
var_01 = self;
param_00 = max(0.01,soundscripts\_audio::aud_get_optional_param(0.05,param_00));
switch(var_01.ps_item.asset_type)
{
case "alias":
foreach(var_03 in var_01.snd_ents)
{
if(isdefined(var_03))
{
var_03 setvolume(0,param_00);
wait(param_00);
if(isdefined(var_03))
{
var_03 stopsounds();
}
}
}
break;
case "soundevent":
break;
case "damb":
break;
default:
break;
}
}
//Function Number: 85
avmx_state_condition_function(param_00,param_01)
{
var_02 = 0;
var_03 = self;
var_02 = var_03 [[ param_01.ps_item.condition_callback ]](param_01.curr_io.smoothed_input,var_03.user_data);
return var_02;
}
//Function Number: 86
avmx_state_enter_action_play_oneshots(param_00,param_01)
{
var_02 = self;
var_03 = var_02 avmx_get_instance_preset();
var_04 = param_00.ps_item;
var_05 = param_01.ps_item;
var_06 = param_01.oneshot_overrides;
if(!isdefined(var_06))
{
var_06 = var_05.oneshots;
}
foreach(var_08 in var_06)
{
var_09 = var_02.oneshot_list[var_08];
var_0A = var_09.ps_item;
var_0B = var_02 avmx_get_oneshot_poly_mode(var_08);
var_0C = var_02 avmx_get_oneshot_update_mode(var_08);
if(var_0A.asset_type == "alias")
{
var_02 avmx_map_io(var_09);
for(var_0D = 0;var_0D < var_0A.asset_names.size;var_0D++)
{
var_0E = var_02 avmx_start_oneshot_alias(var_09,var_0D);
foreach(var_11, var_10 in var_09.curr_io.physical_output)
{
var_0E avmx_update_sound_ent_output_param(var_11,var_10);
}
if(var_0C)
{
var_02 thread avmx_continuously_update_snd_ent(var_09,var_0E);
}
if(var_0B == 1 || var_0B == 2)
{
var_09.snd_ents[var_0D] = var_0E;
}
}
var_02 thread avmx_handle_oneshot_ducking(var_09);
}
}
}
//Function Number: 87
avmx_continuously_update_snd_ent(param_00,param_01)
{
var_02 = self;
var_03 = var_02 avmx_get_vehicle_entity();
var_04 = avm_get_update_rate();
level endon("msg_snd_vehicle_stop");
level endon("msg_snd_vehicle_stop_" + var_02 avmx_get_instance_name());
var_03 endon("death");
wait(var_04);
while(isdefined(param_01))
{
var_02 avmx_map_io(param_00);
if(isdefined(param_01))
{
foreach(var_07, var_06 in param_00.curr_io.physical_output)
{
param_01 avmx_update_sound_ent_output_param(var_07,var_06);
}
}
wait(var_04);
}
}
//Function Number: 88
avmx_state_enter_action_play_loops(param_00,param_01)
{
var_02 = self;
var_03 = var_02 avmx_get_instance_preset();
var_04 = param_00.ps_item;
var_05 = param_01.ps_item;
var_06 = var_05.loops;
if(isdefined(var_06[0]))
{
if(var_06[0] == "all")
{
foreach(var_08 in var_02.loop_list)
{
avmx_set_loop_play_state(var_08,1);
}
return;
}
if(var_06[0] == "none")
{
foreach(var_08 in var_02.loop_list)
{
avmx_set_loop_play_state(var_08,0);
}
return;
}
return;
}
if(var_06.size > 0)
{
var_0B = [];
var_0C = [];
foreach(var_09, var_08 in var_02.loop_list)
{
if(isdefined(var_06[var_09]))
{
var_0B[var_09] = var_08;
continue;
}
var_0C[var_09] = var_08;
}
foreach(var_08 in var_0B)
{
avmx_set_loop_play_state(var_08,1);
}
foreach(var_08 in var_0C)
{
avmx_set_loop_play_state(var_08,0);
}
}
}
//Function Number: 89
input_callback_distance2d()
{
var_00 = avmx_get_vehicle_entity();
return distance2d(var_00.origin,level.player.origin);
}
//Function Number: 90
input_callback_distance()
{
var_00 = avmx_get_vehicle_entity();
return distance(var_00.origin,level.player.origin);
}
//Function Number: 91
input_callback_throttle()
{
var_00 = avmx_get_vehicle_entity();
return var_00 vehicle_getthrottle();
}
//Function Number: 92
input_callback_speed()
{
var_00 = avmx_get_vehicle_entity();
var_01 = length(var_00 vehicle_getvelocity() * 0.05681818);
return var_01;
}
//Function Number: 93
input_callback_relative_speed()
{
var_00 = avmx_get_vehicle_entity();
var_01 = var_00 vehicle_getvelocity();
var_02 = level.player getvelocity();
var_03 = var_01 - var_02;
var_04 = length(var_03) * 0.05681818;
return var_04;
}
//Function Number: 94
input_callback_speed_mph()
{
var_00 = avmx_get_vehicle_entity();
if(isdefined(var_00.fakespeed))
{
return var_00.fakespeed;
}
return var_00 maps\_shg_utility::get_differentiated_speed() * 0.05681818;
}
//Function Number: 95
input_callback_acceleration_g()
{
var_00 = avmx_get_vehicle_entity();
return length(var_00 maps\_shg_utility::get_differentiated_acceleration()) * 0.00125;
}
//Function Number: 96
input_callback_jerk_gps()
{
var_00 = avmx_get_vehicle_entity();
return length(var_00 maps\_shg_utility::get_differentiated_jerk()) * 0.00125;
}
//Function Number: 97
input_callback_doppler()
{
var_00 = avmx_get_vehicle_entity();
return dopplerpitch(var_00.origin,var_00 vehicle_getvelocity(),level.player.origin,level.player getvelocity());
}
//Function Number: 98
input_callback_doppler_exaggerated()
{
var_00 = avmx_get_vehicle_entity();
return dopplerpitch(var_00.origin,var_00 vehicle_getvelocity(),level.player.origin,level.player getvelocity(),2,5);
}
//Function Number: 99
input_callback_doppler_subtle()
{
var_00 = avmx_get_vehicle_entity();
return dopplerpitch(var_00.origin,var_00 vehicle_getvelocity(),level.player.origin,level.player getvelocity(),1,0.5);
}
//Function Number: 100
avm_compute_doppler_pitch(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
if(!isdefined(param_04))
{
param_04 = 1;
}
if(!isdefined(param_05))
{
param_05 = 1;
}
if(!isdefined(param_06))
{
param_06 = 13397;
}
if(param_04 != 1)
{
var_07 = param_01 - param_03;
var_08 = vectornormalize(var_07);
var_09 = param_02 - param_00;
var_0A = var_08 * vectordot(var_08,var_09);
var_0B = var_09 - var_0A;
param_02 = param_00 + var_0A + var_0B / param_04;
}
var_0C = vectornormalize(param_00 - param_02);
var_0D = vectordot(param_01,var_0C);
var_0E = vectordot(param_03,var_0C);
var_0F = param_06 + var_0E / param_06 + var_0D;
var_0F = pow(var_0F,param_05);
var_0F = clamp(var_0F,0.1,1.99);
return var_0F;
}
//Function Number: 101
input_callback_pitch()
{
var_00 = avmx_get_vehicle_entity();
var_01 = var_00.angles[0];
return var_01;
}
//Function Number: 102
input_callback_yaw()
{
var_00 = avmx_get_vehicle_entity();
var_01 = var_00.angles[1];
return var_01;
}
//Function Number: 103
input_callback_pitch_roll_max()
{
var_00 = avmx_get_vehicle_entity();
return max(abs(angleclamp180(var_00.angles[0])),abs(angleclamp180(var_00.angles[2])));
}
//Function Number: 104
input_callback_degrees_from_upright()
{
var_00 = avmx_get_vehicle_entity();
return acos(anglestoup(var_00.angles)[2]);
}
//Function Number: 105
input_callback_jetbike_thrust()
{
var_00 = avmx_get_vehicle_entity();
return var_00 vehicle_jetbikegetthrustfraction();
}
//Function Number: 106
input_callback_jetbike_drag()
{
var_00 = avmx_get_vehicle_entity();
return var_00 vehicle_jetbikegetdragfraction();
}
//Function Number: 107
input_callback_jetbike_anti_slip()
{
var_00 = avmx_get_vehicle_entity();
return var_00 vehicle_jetbikegetantislipfraction();
}
//Function Number: 108
input_callback_jetbike_total_repulsor()
{
var_00 = avmx_get_vehicle_entity();
return var_00 vehicle_jetbikegettotalrepulsorfraction();
}
//Function Number: 109
input_callback_player_jetbike_height()
{
var_00 = 0;
var_01 = avmx_get_vehicle_entity();
var_02 = 0.1;
if(avmx_is_player_mode())
{
if(!isdefined(var_01.amv_jetbike_height_time))
{
var_01.amv_jetbike_height_time = 0;
}
var_03 = gettime();
if(var_03 > var_01.amv_jetbike_height_time + var_02)
{
var_01.amv_jetbike_height_time = var_03;
var_04 = bullettrace(var_01.origin,var_01.origin - (0,0,360),0);
var_01.amv_jetbike_height_val = var_04["fraction"];
if(!isdefined(var_01.amv_jetbike_height_val))
{
var_01.amv_jetbike_height_val = 0;
}
}
var_00 = clamp(var_01.amv_jetbike_height_val,0,1);
}
return var_00;
}
//Function Number: 110
input_hovertank_anti_slip()
{
var_00 = avmx_get_vehicle_entity();
return var_00 vehicle_hovertankgetantislipforce();
}
//Function Number: 111
input_hovertank_anti_slip_magnitude()
{
var_00 = input_hovertank_anti_slip();
return var_00[0];
}
//Function Number: 112
input_hovertank_anti_slip_direction()
{
var_00 = input_hovertank_anti_slip();
return var_00[1];
}
//Function Number: 113
input_hovertank_auto_yaw()
{
var_00 = avmx_get_vehicle_entity();
return var_00 vehicle_hovertankgetautoyawforce();
}
//Function Number: 114
input_hovertank_auto_yaw_magnitude()
{
var_00 = input_hovertank_auto_yaw();
return var_00[0];
}
//Function Number: 115
input_hovertank_auto_yaw_direction()
{
var_00 = input_hovertank_auto_yaw();
return var_00[1];
}
//Function Number: 116
input_hovertank_repulsors()
{
var_00 = avmx_get_vehicle_entity();
return var_00 vehicle_hovertankgetrepulsorforces();
}
//Function Number: 117
input_hovertank_repulsor_front_left()
{
var_00 = input_hovertank_repulsors();
return var_00[0];
}
//Function Number: 118
input_hovertank_repulsor_front_right()
{
var_00 = input_hovertank_repulsors();
return var_00[1];
}
//Function Number: 119
input_hovertank_repulsor_back_left()
{
var_00 = input_hovertank_repulsors();
return var_00[2];
}
//Function Number: 120
input_hovertank_repulsor_back_right()
{
var_00 = input_hovertank_repulsors();
return var_00[3];
}
//Function Number: 121
input_hovertank_throttle()
{
var_00 = avmx_get_vehicle_entity();
return var_00 vehicle_hovertankgetthrottleforce();
}
//Function Number: 122
input_hovertank_throttle_magnitude()
{
var_00 = input_hovertank_throttle();
return var_00[0];
}
//Function Number: 123
input_hovertank_throttle_direction()
{
var_00 = input_hovertank_throttle();
return var_00[1];
}
//Function Number: 124
input_hovertank_uprighting()
{
var_00 = avmx_get_vehicle_entity();
return var_00 vehicle_hovertankgetuprightingforce();
}
//Function Number: 125
input_hovertank_turret_pch()
{
var_00 = avmx_get_vehicle_entity();
var_01 = var_00.turret getturretpitchrate();
var_01 = abs(var_01);
var_01 = clamp(var_01,0,90);
var_01 = avmx_normalize_ranged_value(var_01,0,90);
var_02 = level.player getnormalizedcameramovements();
var_03 = abs(var_02[0]);
return 0;
}
//Function Number: 126
input_hovertank_turret_yaw()
{
var_00 = avmx_get_vehicle_entity();
var_01 = var_00.turret getturretyawrate();
var_01 = abs(var_01);
var_02 = var_00.turret getturretpitchrate();
var_02 = abs(var_02);
var_03 = length2d((var_01,var_02,0));
var_03 = clamp(var_03,0,135);
var_04 = avmx_normalize_ranged_value(var_03,0,135);
var_05 = level.player getnormalizedcameramovements();
var_06 = length2d(var_05);
return var_04 * var_06;
}
//Function Number: 127
input_diveboat_throttle()
{
var_00 = avmx_get_vehicle_entity();
if(isdefined(level.aud.diveboat_ending) && level.aud.diveboat_ending == 1)
{
level.aud.diveboat_throttle = level.aud.diveboat_throttle * 0.94;
return level.aud.diveboat_throttle;
}
var_01 = var_00 vehicle_diveboatgetthrottleforce();
if(var_01 != 0)
{
level.aud.diveboat_throttle = var_01;
}
return var_01;
}
//Function Number: 128
input_diveboat_drag()
{
var_00 = avmx_get_vehicle_entity();
var_01 = var_00 vehicle_diveboatgetdragforce();
return var_01;
}
//Function Number: 129
input_diveboat_drag_with_mph()
{
var_00 = input_diveboat_drag();
var_01 = input_callback_speed_mph();
var_02 = var_01 + abs(var_00) * 0.1;
return var_01 + abs(var_00) * 0.1;
}
//Function Number: 130
input_player_pdrone_look()
{
var_00 = level.player getnormalizedcameramovements();
var_01 = abs(var_00[0]);
var_02 = abs(var_00[1]);
if(var_01 > var_02)
{
return var_01;
}
return var_02;
}
//Function Number: 131
avmx_start_oneshot_alias(param_00,param_01)
{
var_02 = self;
var_03 = param_00.ps_item;
var_04 = undefined;
var_05 = var_02 avmx_get_sound_alias(var_03,param_01);
if(isstring(var_05))
{
var_06 = var_02 avmx_get_vehicle_entity();
var_04 = spawn("script_origin",var_06.origin);
var_04 linkto(var_06,"tag_origin",var_02.sound_offset,(0,0,0));
var_04 scalevolume(0);
var_04 soundscripts\_snd_playsound::snd_play(var_05,"sound_done");
var_04 thread avmx_monitor_oneshot_done("sound_done");
}
return var_04;
}
//Function Number: 132
avmx_monitor_oneshot_done(param_00)
{
self endon("death");
self waittill(param_00);
if(isdefined(self))
{
self delete();
}
}
//Function Number: 133
avmx_is_player_mode()
{
return isdefined(self.player_mode) && self.player_mode;
}
//Function Number: 134
avmx_get_sound_alias(param_00,param_01)
{
var_02 = self;
var_03 = param_00.asset_names[soundscripts\_audio::aud_get_optional_param(0,param_01)];
if(isdefined(var_03) && var_02 avmx_is_player_mode())
{
var_03 = var_03 + "_plr";
}
return var_03;
}
//Function Number: 135
avmx_get_sound_alias_count(param_00)
{
return param_00.asset_names.size;
}
//Function Number: 136
avmx_update_sound_ent_output_param(param_00,param_01)
{
switch(param_00)
{
case "volume":
self scalevolume(param_01,0.1);
break;
case "pitch":
self scalepitch(param_01,0.1);
break;
default:
break;
}
}
//Function Number: 137
avmx_handle_oneshot_ducking(param_00)
{
var_01 = self;
var_02 = param_00.ps_item;
var_01 avmx_add_oneshot_ducking_scalar(var_02.name);
var_01 avmx_update_oneshot_duck_scalar(param_00);
var_01 avmx_remove_oneshot_ducking_scalar(var_02.name);
}
//Function Number: 138
avmx_update_oneshot_duck_scalar(param_00)
{
var_01 = self;
var_02 = var_01 avmx_get_instance_preset();
var_03 = param_00.ps_item;
level endon("msg_snd_vehicle_stop");
level endon("msg_snd_vehicle_stop_" + var_01 avmx_get_instance_name());
var_01 avmx_get_vehicle_entity() endon("death");
if(isdefined(var_03.duck_env_name))
{
var_04 = var_02 avmx_get_envelope(var_03.duck_env_name);
var_05 = soundscripts\_audio::aud_get_envelope_domain(var_04);
var_06 = 0;
var_07 = var_05[1];
var_08 = var_03.name;
while(avmx_are_all_defined(param_00.snd_ents) && var_06 < var_07)
{
var_09 = param_00 avmx_get_instance_sound_item_volume();
var_0A = var_02 avmx_map_input(var_06,var_03.duck_env_name);
var_0A = 1 - var_09 * 1 - var_0A;
var_01 avmx_set_oneshot_ducking_scalar(var_08,var_0A);
wait(0.1);
var_06 = var_06 + 0.1;
}
}
}
//Function Number: 139
avmx_are_all_defined(param_00)
{
var_01 = 1;
foreach(var_03 in param_00)
{
if(!isdefined(var_03))
{
var_01 = 0;
break;
}
}
return var_01;
}
//Function Number: 140
avmx_add_oneshot_ducking_scalar(param_00)
{
self.oneshot_duck_vals[param_00] = 1;
}
//Function Number: 141
avmx_remove_oneshot_ducking_scalar(param_00)
{
self.oneshot_duck_vals[param_00] = undefined;
}
//Function Number: 142
avmx_set_oneshot_ducking_scalar(param_00,param_01)
{
self.oneshot_duck_vals[param_00] = param_01;
}
//Function Number: 143
avmx_normalize_ranged_value(param_00,param_01,param_02)
{
return param_00 - param_01 / param_02 - param_01;
}
//Function Number: 144
avmx_get()
{
return level._audio.vm;
}
//Function Number: 145
avmx_get_callback(param_00)
{
return avmx_get().callbacks[param_00][0];
}
//Function Number: 146
avmx_get_preset_name()
{
return self.header.preset_name;
}
//Function Number: 147
avmx_set_preset_name(param_00)
{
self.header.preset_name = param_00;
}
//Function Number: 148
avmx_set_instance_init_callback(param_00)
{
self.global_data.instance_init_callback = param_00;
}
//Function Number: 149
avmx_get_instance_name()
{
return self.instance_name;
}
//Function Number: 150
avmx_get_instance_preset_name()
{
return self.preset_name;
}
//Function Number: 151
avmx_get_instance_preset()
{
return avmx_get_preset(self.preset_name);
}
//Function Number: 152
avmx_get_preset(param_00)
{
var_01 = avmx_get();
return var_01.presets[param_00];
}
//Function Number: 153
avmx_get_instance(param_00,param_01)
{
var_02 = undefined;
var_03 = avmx_get();
if(isstring(param_01))
{
var_04 = avmx_get_preset(param_01);
if(isdefined(var_04))
{
var_02 = var_04.instances[param_00];
}
}
else
{
foreach(var_04 in var_04.presets)
{
foreach(var_07 in var_04.instances)
{
if(var_07.instance_name == param_00)
{
var_02 = var_07;
break;
}
}
}
}
return var_02;
}
//Function Number: 154
avmx_get_vehicle_entity()
{
return self.veh_ent;
}
//Function Number: 155
avmx_get_sound_instance()
{
return self.snd_instance;
}
//Function Number: 156
avmx_get_fadein_time()
{
return self.header.fadein_time;
}
//Function Number: 157
avmx_get_fadeout_time()
{
return self.header.fadeout_time;
}
//Function Number: 158
avmx_set_behavior_oneshot_overrides(param_00,param_01)
{
param_00.oneshot_overrides = param_01;
}
//Function Number: 159
avmx_get_behavior_restricted_oneshots(param_00)
{
var_01 = self;
var_02 = [];
var_03 = param_00.ps_item;
var_04 = avmx_get_preset(var_03.preset_name);
var_05 = param_00.oneshot_overrides;
if(!isdefined(var_05))
{
var_05 = var_03.oneshots;
}
foreach(var_07 in var_05)
{
if(var_01 avmx_get_oneshot_poly_mode(var_07) == 1)
{
var_02[var_07] = var_07;
}
}
return var_02;
}
//Function Number: 160
avmx_get_oneshot_poly_mode(param_00)
{
var_01 = self;
var_02 = var_01.oneshot_list[param_00].ps_item;
return var_02.oneshot_poly_mode;
}
//Function Number: 161
avmx_get_oneshot_update_mode(param_00)
{
var_01 = self;
var_02 = 0;
if(isstring(param_00))
{
var_03 = var_01.oneshot_list[param_00].ps_item;
}
else
{
var_03 = var_01.ps_item;
}
var_02 = var_03.oneshot_update_mode;
if(!isdefined(var_02))
{
var_02 = 0;
}
return var_02;
}
//Function Number: 162
avmx_get_envelope(param_00)
{
return self.env_data[param_00];
}
//Function Number: 163
avmx_map_input(param_00,param_01)
{
var_02 = self;
var_03 = var_02 avmx_get_envelope(param_01);
if(isdefined(var_03.env_function))
{
var_04 = [[ var_03.env_function ]](param_00);
}
else
{
var_04 = piecewiselinearlookup(param_01,var_04.env_array);
}
return var_04;
}
//Function Number: 164
avmx_start_loop(param_00)
{
var_01 = self;
var_02 = var_01 avmx_get_instance_preset();
var_03 = var_01 avmx_get_vehicle_entity();
var_04 = param_00.ps_item;
var_05 = var_02 avmx_get_sound_alias_count(var_04);
var_06 = var_01.sound_offset;
var_07 = param_00.ps_item.fadeout_time;
var_08 = 1;
param_00.fade_in_inc = 0.1 / var_07;
param_00.fade_in_scalar = 0;
for(var_09 = 0;var_09 < var_05;var_09++)
{
var_0A = var_01 avmx_get_sound_alias(var_04,var_09);
var_0B = spawn("script_origin",var_03.origin);
var_0B linkto(var_03,"tag_origin",var_06,(0,0,0));
var_0B scalevolume(0);
var_0B soundscripts\_snd_playsound::snd_play_loop(var_0A);
param_00.snd_ents[var_0A] = var_0B;
}
}
//Function Number: 165
avmx_stop_loop(param_00)
{
var_01 = self;
var_02 = param_00.snd_ents;
param_00.snd_ents = [];
foreach(var_04 in var_02)
{
var_04 thread avmx_stop_snd_ent(param_00.ps_item.fadeout_time);
}
}
//Function Number: 166
avmx_stop_snd_ent(param_00)
{
var_01 = self;
param_00 = max(0.05,soundscripts\_audio::aud_get_optional_param(0.05,param_00));
if(isdefined(var_01))
{
var_01 setvolume(0,param_00);
wait(param_00);
if(isdefined(var_01))
{
var_01 stopsounds();
}
wait(0.05);
if(isdefined(var_01))
{
var_01 delete();
}
}
}
//Function Number: 167
vm2x_fadeout_vehicle(param_00)
{
var_01 = self;
foreach(var_03 in var_01.loop_list)
{
var_03 avmx_fade_stop_and_delete_sound_obj(param_00);
}
foreach(var_06 in var_01.oneshot_list)
{
var_06 avmx_fade_stop_and_delete_sound_obj(param_00);
}
}
//Function Number: 168
avmx_fade_stop_and_delete_sound_obj(param_00)
{
var_01 = self;
switch(var_01.ps_item.asset_type)
{
case "alias":
foreach(var_04, var_03 in var_01.snd_ents)
{
var_03 avmx_stop_snd_ent(param_00);
var_01.snd_ents[var_04] = undefined;
}
break;
case "soundevent":
break;
case "damb":
break;
}
}
//Function Number: 169
vm2x_delete_vehicle_sound_ents()
{
var_00 = self;
foreach(var_02 in var_00.loop_list)
{
switch(var_02.ps_item.asset_type)
{
case "alias":
var_02.snd_ents thread avmx_stop_snd_ent(0.05);
var_02.snd_ents = [];
break;
case "soundevent":
break;
case "damb":
break;
default:
break;
}
}
foreach(var_05 in var_00.oneshot_list)
{
foreach(var_07 in var_05.snd_ents)
{
var_07 thread avmx_stop_snd_ent(0.05);
}
var_05.snd_ents = [];
}
}
//Function Number: 170
units2yards(param_00)
{
return param_00 * 0.02777778;
}
//Function Number: 171
yards2units(param_00)
{
return param_00 * 36;
}
//Function Number: 172
dist2yards(param_00)
{
return param_00 * 0.02777778;
}
//Function Number: 173
yards2dist(param_00)
{
return param_00 * 36;
}
//Function Number: 174
avmx_vehicle_getspeed()
{
var_00 = 0;
if(avmx_is_vehicle_proxy() == 0)
{
var_00 = self vehicle_getspeed();
}
return var_00;
}