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

1423 lines
31 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: _audio_vehicles.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 46
* Decompile Time: 557 ms
* Timestamp: 4/22/2024 2:03:53 AM
*******************************************************************/
//Function Number: 1
vm_init()
{
if(!isdefined(level._audio))
{
level._audio = spawnstruct();
}
if(!isdefined(level._audio.veh))
{
level._audio.veh = spawnstruct();
level._audio.veh.minrate = 0.1;
level._audio.veh.defrate = 0.5;
level._audio.veh.defsmooth = 0.1;
level._audio.veh.minpitch = 0.5;
level._audio.veh.maxpitch = 1.5;
level._audio.veh.fadein_time = 2;
level._audio.veh.callbacks = [];
level._audio.veh.print_speed = 0;
level._audio.veh.print_tilt = 0;
level._audio.veh.print_yaw = 0;
level._audio.veh.print_roll = 0;
level._audio.veh.print_altitude = 0;
level._audio.veh.print_throttle = 0;
level._audio.veh.presets = [];
level._audio.veh.maps = [];
level._audio.veh.instances = [];
level._audio.veh.ducked_instances = [];
level._audio.veh.duck_starts = [];
level._audio.veh.duck_stops = [];
}
}
//Function Number: 2
vm_register_custom_callback(param_00,param_01)
{
level._audio.veh.callbacks[param_00] = param_01;
}
//Function Number: 3
vm_start_preset(param_00,param_01,param_02,param_03,param_04,param_05)
{
wait(0.25);
if(isdefined(level._audio.veh.instances[param_00]))
{
vm_stop_preset_instance(param_00);
}
if(isdefined(param_04))
{
thread soundscripts\_audio::deprecated_aud_play_linked_sound(param_04,param_02,undefined,undefined,param_05);
}
level._audio.veh.instances[param_00] = [];
level._audio.veh.instances[param_00]["entity"] = param_02;
if(!isdefined(level._audio.veh.presets[param_01]))
{
var_06 = [];
var_06 = soundscripts\_audio_presets_vehicles::audio_presets_vehicles(param_01,var_06);
level._audio.veh.presets[param_01] = var_06;
}
level._audio.veh.instances[param_00]["entity"] = param_02;
foreach(var_13, var_08 in level._audio.veh.presets[param_01])
{
var_09 = spawnstruct();
var_09.instance_name = param_00;
var_09.vehicle = param_02;
switch(var_13)
{
case "tilt":
var_09.type = "tilt";
var_09.callback = ::vmx_get_tilt;
var_09.min = -45;
var_09.max = 45;
break;
case "yaw":
var_09.type = "yaw";
var_09.callback = ::vmx_get_yaw;
var_09.min = 0;
var_09.max = 360;
break;
case "roll":
var_09.type = "roll";
var_09.callback = ::vmx_get_roll;
var_09.min = -45;
var_09.max = 45;
break;
case "speed":
var_09.type = "speed";
var_09.callback = ::vmx_get_speed;
var_09.min = 0;
var_09.max = 100;
break;
case "altitude":
var_09.type = "altitude";
var_09.callback = ::vmx_get_altitude;
var_09.min = 0;
var_09.max = 100;
break;
case "start_stop":
var_09.type = "start_stop";
var_09.callback = ::vmx_get_throttle;
var_09.min = 0;
var_09.max = 1;
break;
default:
break;
}
var_09.smoothness = level._audio.veh.defsmooth;
var_09.smooth_up = undefined;
var_09.smooth_down = undefined;
var_09.updaterate = level._audio.veh.defrate;
var_09.alias_data = [];
var_09.fadein = 0.5;
if(isdefined(param_03))
{
var_09.fadein = param_03;
}
foreach(var_0B in var_08)
{
switch(var_0B[0])
{
case "updaterate":
var_09.updaterate = var_0B[1];
break;
case "smoothness":
var_09.smoothness = var_0B[1];
break;
case "smooth_up":
var_09.smooth_up = var_0B[1];
break;
case "smooth_down":
var_09.smooth_down = var_0B[1];
break;
case "heightmax":
var_09.heightmax = var_0B[1];
break;
case "callback":
var_0C = var_0B[1];
var_09.custom_callback = level._audio.veh.callbacks[var_0C];
break;
case "range":
var_09.min = min(var_0B[1],var_0B[2]);
var_09.max = max(var_0B[1],var_0B[2]);
break;
case "multiply_by_throttle":
var_09.multiply_by_throttle = 1;
break;
case "multiply_by_leftstick":
var_09.multiply_by_leftstick = 1;
break;
case "start":
var_09.start_alias_data = spawnstruct();
var_09.start_alias_data.name = var_0B[1];
for(var_0D = 2;var_0D < var_0B.size;var_0D++)
{
if(isarray(var_0B[var_0D]))
{
var_0E = var_0B[var_0D][0];
var_0F = var_0B[var_0D][1];
if(var_0E == "pitch")
{
var_09.start_alias_data.pitch_map_name = var_0F;
}
else if(var_0E == "volume")
{
var_09.start_alias_data.volume_map_name = var_0F;
}
if(!isdefined(level._audio.veh.maps[var_0F]))
{
var_10 = [];
var_10 = soundscripts\_audio_presets_vehicles::audio_presets_vehicle_maps(var_0F,var_10);
level._audio.veh.maps[var_0F] = var_10;
}
continue;
}
level._audio.veh.duck_starts[param_00] = var_0B[var_0D];
}
break;
case "stop":
var_09.stop_alias_data = spawnstruct();
var_09.stop_alias_data.name = var_0B[1];
for(var_0D = 2;var_0D < var_0B.size;var_0D++)
{
if(isarray(var_0B[var_0D]))
{
var_0E = var_0B[var_0D][0];
var_0F = var_0B[var_0D][1];
if(var_0E == "pitch")
{
var_09.stop_alias_data.pitch_map_name = var_0F;
}
else if(var_0E == "volume")
{
var_09.stop_alias_data.volume_map_name = var_0F;
}
if(!isdefined(level._audio.veh.maps[var_0F]))
{
var_10 = [];
var_10 = soundscripts\_audio_presets_vehicles::audio_presets_vehicle_maps(var_0F,var_10);
level._audio.veh.maps[var_0F] = var_10;
}
continue;
}
level._audio.veh.duck_stops[param_00] = var_0B[var_0D];
}
break;
case "throttle_input":
var_09.throttle_input = var_0B[1];
break;
case "on_threshold":
var_09.on_threshold = var_0B[1];
break;
case "off_threshold":
var_09.off_threshold = var_0B[1];
break;
case "oneshot_duck":
var_09.duck_amount = var_0B[1];
break;
case "oneshot_duck_time":
var_09.duck_time = var_0B[1];
break;
case "offset":
var_09.offset = var_0B[1];
break;
default:
var_11 = spawnstruct();
var_11.alias_name = var_0B[0];
for(var_0D = 1;var_0D < var_0B.size;var_0D++)
{
var_0F = var_0B[var_0D][1];
if(var_0B[var_0D][0] == "pitch")
{
var_11.pitch_map_name = var_0F;
}
else
{
var_11.vol_map_name = var_0F;
}
if(!isdefined(level._audio.veh.maps[var_0F]))
{
var_10 = [];
var_10 = soundscripts\_audio_presets_vehicles::audio_presets_vehicle_maps(var_0F,var_10);
level._audio.veh.maps[var_0F] = var_10;
}
}
var_09.alias_data[var_09.alias_data.size] = var_11;
break;
}
}
if(var_09.type == "start_stop")
{
thread vmx_do_start_stop_callback(var_09);
continue;
}
thread vmx_callback(var_09);
}
}
//Function Number: 4
vm_stop(param_00)
{
level notify("aud_veh_stop");
var_01 = 1;
if(isdefined(param_00))
{
var_01 = max(0.1,param_00);
}
foreach(var_03 in level._audio.veh.playing_presets)
{
if(var_03.size > 0)
{
foreach(var_05 in var_03)
{
thread soundscripts\_audio::aud_fade_out_and_delete(var_05,var_01);
}
}
}
level._audio.veh.playing_presets = [];
}
//Function Number: 5
vm_stop_preset_instance(param_00,param_01)
{
var_02 = 1;
if(isdefined(param_01))
{
var_02 = max(0.01,param_01);
}
if(isdefined(level._audio.veh.instances[param_00]))
{
level notify("aud_veh_stop_" + param_00);
if(level._audio.veh.instances[param_00].size > 0)
{
foreach(var_05, var_04 in level._audio.veh.instances[param_00])
{
if(var_05 != "entity" && var_05 != "speed" && var_05 != "throttle")
{
var_04 scalevolume(0,var_02);
}
}
}
wait(var_02 + 0.05);
if(level._audio.veh.instances[param_00].size > 0)
{
foreach(var_05, var_04 in level._audio.veh.instances[param_00])
{
if(var_05 != "entity" && var_05 != "speed" && var_05 != "throttle")
{
var_04 delete();
}
}
}
level._audio.veh.instances[param_00] = undefined;
}
}
//Function Number: 6
vm_set_range(param_00,param_01,param_02)
{
if(!isdefined(self.aud_overrides))
{
self.aud_overrides = [];
}
self.aud_overrides[param_00] = spawnstruct();
self.aud_overrides[param_00].min_range = param_01;
self.aud_overrides[param_00].max_range = param_02;
}
//Function Number: 7
vmx_init_oneshot_ents(param_00)
{
if(!isdefined(level._audio.veh.start_ents))
{
level._audio.veh.start_ents = [];
}
if(!isdefined(level._audio.veh.stop_ents))
{
level._audio.veh.stop_ents = [];
}
if(!isdefined(level._audio.veh.start_ent_count))
{
level._audio.veh.start_ent_count = [];
}
if(!isdefined(level._audio.veh.stop_ent_count))
{
level._audio.veh.stop_ent_count = [];
}
level._audio.veh.start_ents[param_00] = [];
level._audio.veh.start_ent_count[param_00] = 0;
level._audio.veh.stop_ents[param_00] = [];
level._audio.veh.stop_ent_count[param_00] = 0;
}
//Function Number: 8
vmx_get_need_to_duck(param_00)
{
var_01 = 0;
if(isdefined(level._audio.veh.duck_starts[param_00]) && level._audio.veh.duck_starts[param_00] && vmx_get_start_sound_playing(param_00))
{
var_01 = 1;
}
if(isdefined(level._audio.veh.duck_stops[param_00]) && level._audio.veh.duck_stops[param_00] && vmx_get_stop_sound_playing(param_00))
{
var_01 = 1;
}
return var_01;
}
//Function Number: 9
vmx_get_start_sound_playing(param_00)
{
if(level._audio.veh.start_ents[param_00].size > 0)
{
return 1;
}
return 0;
}
//Function Number: 10
vmx_get_stop_sound_playing(param_00)
{
if(level._audio.veh.stop_ents[param_00].size > 0)
{
return 1;
}
return 0;
}
//Function Number: 11
vmx_scale_start_sound_pitch(param_00,param_01,param_02)
{
foreach(var_04 in level._audio.veh.start_ents[param_02])
{
if(isdefined(var_04))
{
var_04 setpitch(param_00,param_01);
}
}
}
//Function Number: 12
vmx_scale_stop_sound_pitch(param_00,param_01,param_02)
{
foreach(var_04 in level._audio.veh.stop_ents[param_02])
{
if(isdefined(var_04))
{
var_04 setpitch(param_00,param_01);
}
}
}
//Function Number: 13
vmx_scale_start_sound_volume(param_00,param_01,param_02)
{
foreach(var_04 in level._audio.veh.start_ents[param_02])
{
if(isdefined(var_04))
{
var_04 scalevolume(param_00,param_01);
}
}
}
//Function Number: 14
vmx_scale_stop_sound_volume(param_00,param_01,param_02)
{
foreach(var_04 in level._audio.veh.stop_ents[param_02])
{
if(isdefined(var_04))
{
var_04 scalevolume(param_00,param_01);
}
}
}
//Function Number: 15
vmx_play_start_sound(param_00,param_01,param_02,param_03)
{
var_04 = 0;
if(isdefined(param_03))
{
var_04 = param_03;
}
var_05 = spawn("script_origin",param_01.origin);
var_05 linkto(param_01,"tag_origin",(var_04,0,0),(0,0,0));
var_05.ref = level._audio.veh.start_ent_count[param_02];
var_05 playsound(param_00,"sounddone");
var_05 thread vmx_monitor_start_ent(param_02);
level._audio.veh.start_ents[param_02][var_05.ref] = var_05;
level._audio.veh.start_ent_count[param_02]++;
}
//Function Number: 16
vmx_play_stop_sound(param_00,param_01,param_02,param_03)
{
var_04 = 0;
if(isdefined(param_03))
{
var_04 = param_03;
}
var_05 = spawn("script_origin",param_01.origin);
var_05 linkto(param_01,"tag_origin",(var_04,0,0),(0,0,0));
var_05.ref = level._audio.veh.stop_ent_count[param_02];
var_05 playsound(param_00,"sounddone");
level._audio.veh.stop_ents[param_02][var_05.ref] = var_05;
level._audio.veh.stop_ent_count[param_02]++;
wait(0.05);
var_05 thread vmx_monitor_stop_ent(param_02);
}
//Function Number: 17
vmx_monitor_start_ent(param_00)
{
self endon("kill");
self waittill("sounddone");
level._audio.veh.start_ents[param_00][self.ref] = undefined;
if(isdefined(level._audio.veh.ducked_instances[param_00]))
{
level._audio.veh.ducked_instances[param_00] = undefined;
}
self delete();
}
//Function Number: 18
vmx_monitor_stop_ent(param_00)
{
self endon("kill");
self waittill("sounddone");
level._audio.veh.stop_ents[param_00][self.ref] = undefined;
if(isdefined(level._audio.veh.ducked_instances[param_00]))
{
level._audio.veh.ducked_instances[param_00] = undefined;
}
self delete();
}
//Function Number: 19
vmx_stop_stop_ent(param_00,param_01,param_02)
{
if(isdefined(level._audio.veh.ducked_instances[param_02]))
{
level._audio.veh.ducked_instances[param_02] = undefined;
}
var_03 = 0.1;
if(isdefined(param_01))
{
var_03 = param_01;
}
level._audio.veh.stop_ents[param_02][param_00.ref] = undefined;
param_00 scalevolume(0,var_03 + 0.05);
param_00 notify("kill");
wait(var_03 + 0.05);
param_00 stopsounds();
wait(0.05);
param_00 delete();
}
//Function Number: 20
vmx_stop_start_ent(param_00,param_01,param_02)
{
if(isdefined(level._audio.veh.ducked_instances[param_02]))
{
level._audio.veh.ducked_instances[param_02] = undefined;
}
var_03 = 0.1;
if(isdefined(param_01))
{
var_03 = param_01;
}
level._audio.veh.start_ents[param_02][param_00.ref] = undefined;
param_00 scalevolume(0,var_03 + 0.05);
param_00 notify("kill");
wait(var_03 + 0.05);
param_00 stopsounds();
wait(0.05);
param_00 delete();
}
//Function Number: 21
vmx_do_start_stop_callback(param_00)
{
var_01 = param_00.instance_name;
level endon("aud_veh_stop");
level endon("aud_veh_stop_" + var_01);
level._audio.veh.instances[var_01]["entity"] endon("death");
var_02 = 0;
var_03 = 0;
var_04 = -1;
var_05 = "off";
var_06 = param_00.smoothness;
var_07 = param_00.smooth_up;
var_08 = param_00.smooth_down;
var_09 = param_00.min;
var_0A = param_00.max;
var_0B = 0;
vmx_init_oneshot_ents(var_01);
var_0C = gettime();
for(;;)
{
var_0D = [[ param_00.callback ]](param_00);
var_0D = var_0D - param_00.min / param_00.max - param_00.min;
var_0D = clamp(var_0D,0,1);
var_0B = var_0D;
if(isdefined(var_07) && var_0D > var_02)
{
var_02 = var_02 + var_07 * var_0D - var_02;
}
else if(isdefined(var_08) && var_0D <= var_02)
{
var_02 = var_02 + var_08 * var_0D - var_02;
}
else
{
var_02 = var_02 + var_06 * var_0D - var_02;
}
var_0E = var_02 - var_03;
var_03 = var_02;
var_0F = gettime();
var_10 = var_0F - var_0C;
var_11 = 0;
var_12 = 0;
if((var_0E >= param_00.on_threshold || var_0B >= 0.99) && var_05 == "off" && var_10 > 200)
{
var_0C = var_0F;
var_05 = "on";
var_11 = 1;
wait(0.05);
var_13 = level._audio.veh.instances[var_01]["entity"];
thread vmx_play_start_sound(param_00.start_alias_data.name,var_13,param_00.instance_name,param_00.offset);
if(isdefined(level._audio.veh.stop_ents[param_00.instance_name]))
{
var_14 = level._audio.veh.stop_ents[param_00.instance_name];
foreach(var_13 in var_14)
{
thread vmx_stop_stop_ent(var_13,undefined,param_00.instance_name);
}
}
}
else if((var_0E <= param_00.off_threshold || var_0B <= 0.01) && var_05 == "on" && var_10 > 200)
{
var_0C = var_0F;
var_05 = "off";
var_12 = 1;
wait(0.05);
var_13 = level._audio.veh.instances[var_01]["entity"];
thread vmx_play_stop_sound(param_00.stop_alias_data.name,var_13,param_00.instance_name,param_00.offset);
if(isdefined(level._audio.veh.start_ents[param_00.instance_name]))
{
var_17 = level._audio.veh.start_ents[param_00.instance_name];
foreach(var_13 in var_17)
{
thread vmx_stop_start_ent(var_13,undefined,param_00.instance_name);
}
}
}
var_1A = undefined;
var_1B = undefined;
if(vmx_get_start_sound_playing(param_00.instance_name))
{
if(var_11)
{
var_11 = 0;
if(isdefined(param_00.start_alias_data.pitch_map_name))
{
var_1A = soundscripts\_audio::deprecated_aud_map(var_02,level._audio.veh.maps[param_00.start_alias_data.pitch_map_name]);
var_1A = level._audio.veh.minpitch + var_1A * level._audio.veh.maxpitch - level._audio.veh.minpitch;
vmx_scale_start_sound_pitch(var_1A,param_00.updaterate,param_00.instance_name);
}
}
if(isdefined(param_00.start_alias_data.vol_map_name))
{
var_1B = soundscripts\_audio::deprecated_aud_map(var_02,level._audio.veh.maps[param_00.start_alias_data.vol_map_name]);
vmx_scale_start_sound_volume(var_1B,param_00.updaterate,param_00.instance_name);
}
}
if(vmx_get_stop_sound_playing(param_00.instance_name))
{
if(var_12)
{
var_12 = 0;
if(isdefined(param_00.stop_alias_data.pitch_map_name))
{
var_1A = soundscripts\_audio::deprecated_aud_map(var_02,level._audio.veh.maps[param_00.stop_alias_data.pitch_map_name]);
var_1A = level._audio.veh.minpitch + var_1A * level._audio.veh.maxpitch - level._audio.veh.minpitch;
vmx_scale_stop_sound_pitch(var_1A,param_00.updaterate,param_00.instance_name);
}
}
if(isdefined(param_00.stop_alias_data.vol_map_name))
{
var_1B = soundscripts\_audio::deprecated_aud_map(var_02,level._audio.veh.maps[param_00.stop_alias_data.vol_map_name]);
vmx_scale_stop_sound_volume(var_1B,param_00.updaterate,param_00.instance_name);
}
}
var_04 = var_02;
wait(param_00.updaterate);
}
}
//Function Number: 22
vm_disablethrottleupdate(param_00)
{
self.aud_engine_disable = 1;
if(isdefined(param_00))
{
self.aud_engine_throttle_amount = param_00;
}
}
//Function Number: 23
vm_enablethrottleupdate()
{
self.aud_engine_disable = undefined;
}
//Function Number: 24
vmx_callback(param_00)
{
var_01 = param_00.instance_name;
level endon("aud_veh_stop");
level endon("aud_veh_stop_" + var_01);
var_02 = undefined;
var_03 = param_00.smoothness;
var_04 = param_00.smooth_up;
var_05 = param_00.smooth_down;
var_06 = param_00.min;
var_07 = param_00.max;
if(isdefined(param_00.heightmax))
{
var_08 = level._audio.veh.instances[var_01]["entity"];
param_00.init_height = var_08.origin[2];
}
var_09 = 1;
for(;;)
{
param_00.smoothness = var_03;
param_00.smooth_up = var_04;
param_00.smooth_down = var_05;
var_08 = level._audio.veh.instances[var_01]["entity"];
if(isdefined(var_08.aud_overrides) && isdefined(var_08.aud_overrides[param_00.type]) && isdefined(var_08.aud_overrides[param_00.type].min_range))
{
param_00.min = var_08.aud_overrides[param_00.type].min_range;
param_00.max = var_08.aud_overrides[param_00.type].max_range;
}
else
{
param_00.min = var_06;
param_00.max = var_07;
}
if(!isdefined(var_08))
{
vm_stop(param_00.instance_name);
return;
}
var_0A = 0;
var_0B = 0;
if(isdefined(var_08.aud_engine_disable))
{
var_0A = var_08.aud_engine_disable;
if(isdefined(var_08.aud_engine_throttle_amount))
{
var_0B = var_08.aud_engine_throttle_amount;
}
}
var_0C = [[ param_00.callback ]](param_00);
if(isdefined(param_00.multiply_by_throttle))
{
if(var_0A)
{
var_0D = var_0B;
}
else
{
var_0D = vmx_get_throttle(var_01);
}
if(level._audio.veh.print_throttle)
{
iprintln("throttle: " + var_0D);
}
var_0C = var_0C * var_0D;
}
var_0C = var_0C - param_00.min / param_00.max - param_00.min;
var_0C = clamp(var_0C,0,1);
if(isdefined(var_02))
{
if(isdefined(param_00.smooth_up) && var_0C > var_02)
{
var_02 = var_02 + param_00.smooth_up * var_0C - var_02;
}
else if(isdefined(param_00.smooth_down) && var_0C <= var_02)
{
var_02 = var_02 + param_00.smooth_down * var_0C - var_02;
}
else
{
var_02 = var_02 + param_00.smoothness * var_0C - var_02;
}
}
else
{
var_02 = var_0C;
}
if(isdefined(param_00.custom_callback))
{
[[ param_00.custom_callback ]](var_08,var_02);
}
foreach(var_0F in param_00.alias_data)
{
thread vmx_update_sound(var_0F,param_00,var_02,var_01,var_09);
}
if(var_09)
{
var_09 = 0;
wait(param_00.fadein);
continue;
}
wait(param_00.updaterate);
}
}
//Function Number: 25
vmx_update_sound(param_00,param_01,param_02,param_03,param_04)
{
var_05 = undefined;
var_06 = undefined;
if(isdefined(param_00.pitch_map_name))
{
var_05 = soundscripts\_audio::deprecated_aud_map(param_02,level._audio.veh.maps[param_00.pitch_map_name]);
var_05 = level._audio.veh.minpitch + var_05 * level._audio.veh.maxpitch - level._audio.veh.minpitch;
}
if(isdefined(param_00.vol_map_name))
{
var_06 = soundscripts\_audio::deprecated_aud_map(param_02,level._audio.veh.maps[param_00.vol_map_name]);
}
var_07 = 0;
var_08 = 0;
if(isdefined(level._audio.veh.ducked_instances[param_03]))
{
var_09 = level._audio.veh.ducked_instances[param_03];
var_0A = gettime();
var_0B = 2.5;
if(isdefined(param_01.duck_time))
{
var_0B = param_01.duck_time;
}
if(var_0A - var_09 < var_0B * 1000)
{
var_07 = 1;
}
}
if(!var_07)
{
if(!isdefined(level._audio.veh.ducked_instances[param_03]) && vmx_get_need_to_duck(param_03))
{
var_07 = 1;
level._audio.veh.ducked_instances[param_03] = gettime();
}
}
if(var_07)
{
var_0C = 0.7;
if(isdefined(param_01.duck_amount))
{
var_0C = param_01.duck_amount;
}
var_06 = var_06 * var_0C;
}
if(isdefined(param_01.heightmax))
{
var_0D = param_01.vehicle.origin[2];
var_0E = var_0D - param_01.init_height;
if(var_0E > param_01.heightmax)
{
var_06 = 0;
}
}
if(!isdefined(level._audio.veh.instances[param_03][param_00.alias_name]))
{
level._audio.veh.instances[param_03][param_00.alias_name] = spawn("script_origin",param_01.vehicle.origin);
var_0F = 0;
if(isdefined(param_01.offset))
{
var_0F = param_01.offset;
}
level._audio.veh.instances[param_03][param_00.alias_name] linkto(param_01.vehicle,"tag_origin",(var_0F,0,0),(0,0,0));
level._audio.veh.instances[param_03][param_00.alias_name] playloopsound(param_00.alias_name);
level._audio.veh.instances[param_03][param_00.alias_name] scalevolume(0);
wait(0.05);
level._audio.veh.instances[param_03][param_00.alias_name] scalevolume(var_06,param_01.fadein);
return;
}
if(isdefined(var_05))
{
level._audio.veh.instances[param_03][param_00.alias_name] setpitch(var_05,param_01.updaterate);
}
if(isdefined(var_06))
{
level._audio.veh.instances[param_03][param_00.alias_name] scalevolume(var_06,param_01.updaterate);
}
}
//Function Number: 26
vm_linkto_new_entity(param_00,param_01,param_02,param_03)
{
var_04 = "tag_origin";
if(isdefined(param_02))
{
var_04 = "tag_origin";
}
var_05 = 0;
if(isdefined(param_03))
{
var_05 = param_03;
}
if(isdefined(level._audio.veh.instances[param_00]))
{
foreach(var_08, var_07 in level._audio.veh.instances[param_00])
{
if(var_08 != "entity" && var_08 != "speed" && var_08 != "throttle")
{
var_07 unlink();
var_07 linkto(param_01,var_04,(var_05,0,0),(0,0,0));
}
}
level._audio.veh.instances[param_00]["entity"] = param_01;
}
}
//Function Number: 27
vm_set_speed_callback(param_00,param_01)
{
if(isdefined(level._audio.veh.instances[param_00]))
{
level._audio.veh.instances[param_00]["speed"] = param_01;
}
}
//Function Number: 28
vm_set_throttle_callback(param_00,param_01)
{
if(isdefined(level._audio.veh.instances[param_00]))
{
level._audio.veh.instances[param_00]["throttle"] = param_01;
}
}
//Function Number: 29
vm_set_start_stop_callback(param_00,param_01)
{
if(isdefined(level._audio.veh.instances[param_00]))
{
}
}
//Function Number: 30
vmx_get_tilt(param_00)
{
var_01 = level._audio.veh.instances[param_00.instance_name]["entity"];
var_02 = var_01.angles[0];
if(level._audio.veh.print_tilt)
{
iprintln("tilt: " + var_02);
}
return var_02;
}
//Function Number: 31
vmx_get_speed(param_00)
{
var_01 = level._audio.veh.instances[param_00.instance_name]["entity"];
var_02 = 0;
if(isdefined(level._audio.veh.instances[param_00.instance_name]["speed"]))
{
var_03 = level._audio.veh.instances[param_00.instance_name]["speed"];
var_02 = var_01 [[ var_03 ]]();
}
else
{
var_02 = param_00.vehicle vehicle_getspeed();
}
if(level._audio.veh.print_speed)
{
iprintln("speed: " + var_02);
}
return var_02;
}
//Function Number: 32
vmx_get_yaw(param_00)
{
var_01 = level._audio.veh.instances[param_00.instance_name]["entity"];
var_02 = var_01.angles[1];
if(level._audio.veh.print_speed)
{
iprintln("yaw: " + var_02);
}
return var_02;
}
//Function Number: 33
vmx_get_roll(param_00)
{
var_01 = level._audio.veh.instances[param_00.instance_name]["entity"];
var_02 = var_01.angles[2];
if(level._audio.veh.print_roll)
{
iprintln("roll: " + var_02);
}
return var_02;
}
//Function Number: 34
vmx_get_altitude(param_00)
{
var_01 = level._audio.veh.instances[param_00.instance_name]["entity"];
return 1;
}
//Function Number: 35
vmx_get_throttle(param_00)
{
var_01 = level._audio.veh.instances[param_00.instance_name]["entity"];
var_02 = 0;
if(isdefined(level._audio.veh.instances[param_00.instance_name]["throttle"]))
{
var_03 = level._audio.veh.instances[param_00.instance_name]["speed"];
var_02 = var_01 [[ var_03 ]]();
}
else if(isdefined(param_00.throttle_input) && param_00.throttle_input == "leftstick")
{
var_04 = level.player getnormalizedmovement();
var_05 = var_04[0];
var_02 = 0;
if(var_05 >= 0)
{
var_02 = var_05;
}
}
else if(isdefined(param_00.throttle_input) && param_00.throttle_input == "leftstick_abs")
{
var_04 = level.player getnormalizedmovement();
var_05 = abs(var_04[0]);
var_06 = abs(var_04[1]);
var_02 = 2 * sqrt(var_05 * var_05 + var_06 * var_06);
var_02 = clamp(var_02,0,1);
}
else if(isdefined(param_00.throttle_input) && param_00.throttle_input == "attack")
{
if(level.player attackbuttonpressed())
{
var_02 = 1;
}
else
{
var_02 = 0;
}
}
else
{
var_02 = var_01 vehicle_getthrottle();
}
return var_02;
}
//Function Number: 36
vm_ground_vehicle_start(param_00,param_01,param_02,param_03,param_04,param_05)
{
self endon("death");
self.veh_aliases = spawnstruct();
self.veh_aliases.move_lo_lp = param_00;
self.veh_aliases.rolling_lp = param_01;
self.veh_aliases.idle_lp = param_02;
self.veh_aliases.engine_rev_lo_os = param_03;
self.veh_aliases.breaks_os = param_04;
thread vmx_monitor_explosion(param_05);
thread vmx_ground_vehicle_monitor_death();
thread vmx_cleanup_ents();
vmx_vehicle_engine();
}
//Function Number: 37
vmx_vehicle_engine()
{
self endon("death");
self.do_rev = 1;
self.ents_mixed_in = 0;
self.has_idle_played = 0;
self.has_move_played = 0;
self.has_roll_played = 0;
self.veh_mix_ents = spawnstruct();
self.veh_mix_ents.idle_ent = spawn("script_origin",self.origin);
self.veh_mix_ents.idle_ent linkto(self);
self.veh_mix_ents.move_ent = spawn("script_origin",self.origin);
self.veh_mix_ents.move_ent linkto(self);
self.veh_mix_ents.roll_ent = spawn("script_origin",self.origin);
self.veh_mix_ents.roll_ent linkto(self);
self.veh_mix_ents.one_shot = spawn("script_origin",self.origin);
self.veh_mix_ents.one_shot linkto(self);
for(;;)
{
var_00 = self vehicle_getspeed();
if(var_00 > 0.05)
{
self.do_rev = 1;
vmx_ground_speed_watch(var_00);
}
wait(0.25);
}
}
//Function Number: 38
vmx_ground_speed_watch(param_00)
{
self endon("death");
var_01 = 0.5;
var_02 = 1.5;
var_03 = 0;
for(;;)
{
var_04 = param_00;
wait(0.1);
var_05 = 0.5 + self vehicle_getspeed();
if(var_05 >= var_04)
{
if(isdefined(self.veh_aliases.idle_lp) && self.has_idle_played)
{
self.veh_mix_ents.idle_ent thread vmx_aud_ent_fade_out(0.5);
}
if(self.do_rev)
{
self.do_rev = 0;
if(isdefined(self.veh_aliases.engine_rev_lo_os))
{
self.veh_mix_ents.one_shot playsound(self.veh_aliases.engine_rev_lo_os);
}
}
else
{
if(isdefined(self.veh_aliases.rolling_lp) && !self.has_roll_played)
{
self.has_roll_played = 1;
self.veh_mix_ents.roll_ent playloopsound(self.veh_aliases.rolling_lp);
}
if(isdefined(self.veh_aliases.move_lo_lp) && !self.has_move_played)
{
self.has_move_played = 1;
self.veh_mix_ents.move_ent playloopsound(self.veh_aliases.move_lo_lp);
}
if(!var_03)
{
if(isdefined(self.veh_aliases.move_lo_lp))
{
self.veh_mix_ents.move_ent thread vmx_aud_ent_fade_in(var_01);
}
if(isdefined(self.veh_aliases.rolling_lp))
{
self.veh_mix_ents.roll_ent thread vmx_aud_ent_fade_in(var_01);
}
var_03 = 1;
}
}
}
else if(var_05 < var_04)
{
if(isdefined(self.veh_aliases.idle_lp))
{
if(!self.has_idle_played)
{
self.has_idle_played = 1;
self.veh_mix_ents.idle_ent playloopsound(self.veh_aliases.idle_lp);
}
self.veh_mix_ents.idle_ent thread vmx_aud_ent_fade_in(0.5);
}
if(isdefined(self.veh_aliases.breaks_os))
{
self.veh_mix_ents.one_shot playsound(self.veh_aliases.breaks_os);
}
if(isdefined(self.veh_aliases.move_lo_lp))
{
self.veh_mix_ents.move_ent thread vmx_aud_ent_fade_out(0.5);
}
if(isdefined(self.veh_aliases.move_lo_lp))
{
self.veh_mix_ents.roll_ent thread vmx_aud_ent_fade_out(0.1);
}
return;
}
wait(0.2);
}
}
//Function Number: 39
vmx_aud_ent_fade_out(param_00)
{
self scalevolume(0,param_00);
}
//Function Number: 40
vmx_aud_ent_fade_in(param_00,param_01)
{
var_02 = 1;
if(isdefined(param_01))
{
var_02 = param_01;
}
self scalevolume(0);
wait(0.05);
self scalevolume(var_02,param_00);
}
//Function Number: 41
vmx_cleanup_ents()
{
self waittill("cleanup_sound_ents");
self.veh_mix_ents.idle_ent stoploopsound();
self.veh_mix_ents.move_ent stoploopsound();
self.veh_mix_ents.roll_ent stoploopsound();
self.veh_mix_ents.one_shot stopsounds();
wait(0.05);
self.veh_mix_ents.idle_ent delete();
self.veh_mix_ents.move_ent delete();
self.veh_mix_ents.roll_ent delete();
self.veh_mix_ents.one_shot delete();
}
//Function Number: 42
vmx_ground_vehicle_monitor_death()
{
self endon("cleanup_sound_ents");
self waittill("death");
self notify("cleanup_sound_ents");
}
//Function Number: 43
vmx_monitor_explosion(param_00)
{
self endon("cleanup_sound_ents");
for(;;)
{
if(!isdefined(self))
{
break;
}
if(self.health < self.healthbuffer)
{
break;
}
wait(0.05);
}
self notify("died");
if(isdefined(param_00))
{
common_scripts\utility::play_sound_in_space(param_00,self.origin);
}
self notify("ceanup_sound_ents");
}
//Function Number: 44
vm_aud_air_vehicle_flyby(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = 0;
if(isdefined(param_03))
{
var_06 = param_03;
}
var_07 = 0;
if(isdefined(param_04))
{
var_07 = param_04;
}
while(isdefined(param_00))
{
if(var_07)
{
var_08 = distance(param_00.origin,level.player.origin);
}
else
{
var_08 = distance2d(param_00.origin,level.player.origin);
}
if(var_06)
{
iprintln("Distance: " + var_08);
}
if(var_08 < param_02)
{
var_09 = spawn("script_origin",param_00.origin);
var_09 linkto(param_00);
var_09 playsound(param_01,"sounddone");
param_00 notify("flyby_sound_played");
var_09 thread vmx_waittill_deathspin(param_00);
var_09 thread vmx_waittill_sounddone();
var_09 waittill("flyby_ent",var_0A);
if(var_0A == "deathspin")
{
if(isdefined(param_05))
{
thread common_scripts\utility::play_sound_in_space(param_05,var_09.origin);
}
var_09 scalevolume(0,0.3);
wait(0.4);
var_09 stopsounds();
wait(0.05);
var_09 delete();
return;
}
else if(var_0A == "sounddone")
{
wait(0.1);
var_09 delete();
return;
}
continue;
}
wait(0.05);
}
}
//Function Number: 45
vmx_waittill_deathspin(param_00)
{
self endon("flyby_ent");
param_00 waittill("deathspin");
self notify("flyby_ent","deathspin");
}
//Function Number: 46
vmx_waittill_sounddone()
{
self endon("flyby_ent");
self waittill("sounddone");
self notify("flyby_ent","sounddone");
}