mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-08 01:27:51 -05:00
2548 lines
56 KiB
Plaintext
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;
|
|
} |