/******************************************************************* * Decompiled By: Bog * Decompiled File: _audio_dynamic_ambi.gsc * Game: Call of Duty: Advanced Warfare * Platform: PC * Function Count: 54 * Decompile Time: 647 ms * Timestamp: 4/22/2024 2:03:40 AM *******************************************************************/ //Function Number: 1 damb_init() { if(!isdefined(level._audio)) { level._audio = spawnstruct(); } if(!isdefined(level._audio.damb)) { level._audio.damb = spawnstruct(); level._audio.damb.loop_handle_index = 0; level._audio.damb.single_loop_handle_index = 0; level._audio.damb.oneshot_handle_index = 0; level._audio.damb.serial_playback_lock = 1; level._audio.damb.playing = []; level._audio.damb.playing["zone"] = []; level._audio.damb.playing["free"] = []; level._audio.damb.component_weights = []; level._audio.damb.callbacks = []; level._audio.damb.preset_cache = []; level._audio.damb.component_cache = []; level._audio.damb.loop_cache = []; level._audio.damb.use_string_table_presets = 0; level._audio.damb.entity_ref_count = 0; level._audio.damb.loop_entity_ref_count = 0; level._audio.damb.max_entities = 15; } } //Function Number: 2 damb_set_max_entities(param_00) { level._audio.damb.max_entities = param_00; } //Function Number: 3 damb_use_string_table() { level._audio.damb.use_string_table_presets = 1; } //Function Number: 4 damb_zone_start_preset(param_00,param_01) { dambx_start_preset("zone",param_00,undefined,param_01); } //Function Number: 5 damb_start_preset(param_00,param_01,param_02,param_03) { dambx_start_preset("free",param_00,param_01,param_02,undefined,undefined,undefined,param_03); } //Function Number: 6 damb_start_preset_at_point(param_00,param_01,param_02,param_03,param_04,param_05) { if(isdefined(param_03)) { thread dambx_monitor_damb_point_distance(param_00,param_01,param_02,param_03,param_04,param_05); return; } dambx_start_preset("free",param_00,param_02,undefined,param_01,undefined,undefined,param_05); } //Function Number: 7 damb_stop_preset_at_point(param_00,param_01,param_02) { if(isstring(param_01)) { var_03 = param_01; } else { var_03 = param_01; } level notify(var_03 + "dist_monitor_stop"); damb_stop_preset(var_03,param_02); } //Function Number: 8 damb_make_linked_damb(param_00,param_01,param_02,param_03,param_04) { var_05 = spawnstruct(); var_05.name = param_00; var_05.point = param_01; var_05.label = param_02; var_05.min_delay = param_03; var_05.max_delay = param_04; return var_05; } //Function Number: 9 dambx_monitor_damb_point_distance(param_00,param_01,param_02,param_03,param_04,param_05) { if(isstring(param_02)) { level endon(param_02 + "dist_monitor_stop"); } else { level endon(param_00 + "dist_monitor_stop"); } var_06 = 1; if(isdefined(param_04)) { var_06 = param_04; } var_07 = 1; for(;;) { var_08 = distance(level.player.origin,param_01); if(var_08 < param_03) { if(var_07) { var_07 = 0; dambx_start_preset("free",param_00,param_02,undefined,param_01,undefined,undefined,param_05); } } else if(!var_07) { var_07 = 1; if(isdefined(param_02)) { dambx_stop_preset("free",param_02,var_06); } else { dambx_stop_preset("free",param_00,var_06); } } wait(1); } } //Function Number: 10 damb_start_preset_on_entity(param_00,param_01,param_02,param_03,param_04) { var_05 = "attach"; if(isdefined(param_03)) { var_05 = param_03; } dambx_start_preset("free",param_00,param_02,param_04,undefined,param_01,var_05); } //Function Number: 11 damb_stop(param_00,param_01) { var_02 = 2; if(isdefined(param_00)) { var_02 = param_00; } var_03 = "all"; if(isdefined(param_01)) { var_03 = param_01; } if(var_03 == "free" || var_03 == "all") { foreach(var_06, var_05 in level._audio.damb.playing["free"]) { damb_stop_preset(var_06,var_02); } } if(var_03 == "zone" || var_03 == "all") { foreach(var_06, var_05 in level._audio.damb.playing["zone"]) { damb_zone_stop_preset(var_06,var_02); } } } //Function Number: 12 damb_stop_zone(param_00) { dambx_stop_preset("zone",undefined,param_00); } //Function Number: 13 damb_zone_stop_preset(param_00,param_01) { dambx_stop_preset("zone",param_00,param_01); } //Function Number: 14 damb_stop_preset(param_00,param_01) { dambx_stop_preset("free",param_00,param_01); } //Function Number: 15 damb_prob_mix_damb_presets(param_00,param_01,param_02,param_03) { if(isdefined(param_00) && param_00 != "none") { if(param_01 == 0) { damb_zone_stop_preset(param_00,2); } else { damb_zone_start_preset(param_00,param_01); } } if(isdefined(param_02) && param_02 != "none") { if(param_03 == 0) { damb_zone_stop_preset(param_02,2); return; } damb_zone_start_preset(param_02,param_03); } } //Function Number: 16 damb_set_oneshot_callback_for_component(param_00,param_01) { if(!isdefined(level._audio.damb.callback)) { level._audio.damb.callback = []; } level._audio.damb.callback[param_00] = param_01; } //Function Number: 17 damb_set_oneshot_callback_for_dynamic_ambience(param_00,param_01) { var_02 = []; if(isdefined(level._audio.damb.preset_cache[param_00])) { var_02 = level._audio.damb.preset_cache[param_00]; } else if(level._audio.damb.use_string_table_presets) { var_02 = dambx_get_preset_from_string_table(param_00,1); level._audio.damb.preset_cache[param_00] = var_02; } else { var_02 = dambx_get_preset_from_string_table(param_00,0); level._audio.damb.preset_cache[param_00] = var_02; } foreach(var_04 in var_02["components"]) { damb_set_oneshot_callback_for_component(var_04,param_01); } } //Function Number: 18 damb_pause_damb(param_00,param_01) { var_02 = "free"; if(isdefined(param_01)) { var_02 = param_01; } if(isdefined(level._audio.damb.playing[var_02][param_00])) { level._audio.damb.playing[var_02][param_00]["paused"] = 1; } } //Function Number: 19 damb_unpause_damb(param_00,param_01) { var_02 = "free"; if(isdefined(param_01)) { var_02 = param_01; } if(isdefined(level._audio.damb.playing[var_02][param_00])) { level._audio.damb.playing[var_02][param_00]["paused"] = 0; level notify(var_02 + "_" + param_00 + "_event"); } } //Function Number: 20 damb_manual_trigger(param_00,param_01) { var_02 = "free"; if(isdefined(param_01)) { var_02 = param_01; } if(isdefined(level._audio.damb.playing[var_02][param_00])) { level notify(var_02 + "_" + param_00 + "_event"); } } //Function Number: 21 damb_link_to_damb(param_00,param_01,param_02,param_03) { var_04 = "free"; if(isdefined(level._audio.damb.playing[var_04][param_00]) && isdefined(level._audio.damb.playing[var_04][param_01])) { param_02 = min(param_02,param_03); param_03 = max(param_02,param_03); if(!isdefined(level._audio.damb.playing[var_04][param_00]["linked_dambs"])) { level._audio.damb.playing[var_04][param_00]["linked_dambs"] = []; } var_05 = level._audio.damb.playing[var_04][param_00]["linked_dambs"].size; level._audio.damb.playing[var_04][param_00]["linked_dambs"][var_05] = spawnstruct(); level._audio.damb.playing[var_04][param_00]["linked_dambs"][var_05].name = param_01; level._audio.damb.playing[var_04][param_00]["linked_dambs"][var_05].min_delay = max(param_02,0); level._audio.damb.playing[var_04][param_00]["linked_dambs"][var_05].max_delay = max(param_03,0); } } //Function Number: 22 dambx_start_preset(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07) { var_08 = 1; if(isdefined(param_03)) { var_08 = param_03; } var_09 = param_01; if(isstring(param_02)) { var_09 = param_02; } if(!isdefined(level._audio.damb.playing[param_00][var_09])) { var_0A = dambx_get_damb_preset(param_01); if(!isdefined(var_0A)) { return; } level._audio.damb.playing[param_00][var_09] = var_0A; level._audio.damb.playing[param_00][var_09]["prob_scale"] = var_08; level._audio.damb.playing[param_00][var_09]["paused"] = 0; if(isdefined(param_07)) { dambx_start_linked_dambs(var_09,param_07); } if(isdefined(param_05)) { level._audio.damb.playing[param_00][var_09]["entity"] = param_05; level._audio.damb.playing[param_00][var_09]["mode"] = param_06; } thread dambx_play(param_00,var_09,param_04); return; } if(level._audio.damb.playing[param_00][var_09]["prob_scale"] != var_08) { level._audio.damb.playing[param_00][var_09]["prob_scale"] = var_08; } } //Function Number: 23 dambx_start_linked_dambs(param_00,param_01) { if(isarray(param_01)) { foreach(var_03 in param_01) { dambx_start_preset("free",var_03.name,var_03.label,undefined,var_03.point); damb_pause_damb(var_03.label); damb_link_to_damb(param_00,var_03.label,var_03.min_delay,var_03.max_delay); } return; } dambx_start_preset("free",param_01.name,param_01.label,undefined,param_01.point); damb_pause_damb(param_01.label); damb_link_to_damb(param_00,param_01.label,param_01.min_delay,param_01.max_delay); } //Function Number: 24 dambx_stop_preset(param_00,param_01,param_02) { var_03 = 2; if(isdefined(param_02)) { var_03 = param_02; } if(param_00 == "zone" && !isdefined(param_01)) { if(isdefined(level._audio.damb.playing[param_00])) { foreach(param_01, var_05 in level._audio.damb.playing[param_00]) { level._audio.damb.playing[param_00][param_01]["fade"] = var_03; level notify(param_00 + "_" + param_01 + "_stop"); } return; } return; } if(isdefined(level._audio.damb.playing[param_02][var_03])) { level._audio.damb.playing[param_02][var_03]["fade"] = var_05; level notify(param_02 + "_" + var_03 + "_stop"); } } //Function Number: 25 dambx_update_serially(param_00,param_01,param_02) { level endon(param_00 + "_" + param_01 + "_stop"); var_03 = level._audio.damb.playing[param_00][param_01]["event_time"]; var_04 = min(var_03[0],var_03[1]); var_05 = max(var_03[0],var_03[1]); var_06 = undefined; var_07 = undefined; if(isdefined(level._audio.damb.playing[param_00][param_01]["first_event"])) { var_03 = level._audio.damb.playing[param_00][param_01]["first_event"]; var_06 = min(var_03[0],var_03[1]); var_07 = max(var_03[0],var_03[1]); } var_08 = undefined; if(isdefined(var_06)) { var_08 = randomfloatrange(var_06,var_07); } else { var_08 = randomfloatrange(var_04,var_05); } for(;;) { if(!level._audio.damb.playing[param_00][param_01]["paused"]) { wait(var_08); } if(level._audio.damb.playing[param_00][param_01]["paused"]) { level waittill(param_00 + "_" + param_01 + "_event"); } var_09 = dambx_pick_random_component(param_00,param_01); if(!isdefined(var_09)) { continue; } var_0A = dambx_get_component_data(param_00,param_01,var_09,param_01); if(var_0A.using_oneshots_or_loops) { if(var_0A.using_entity && !isdefined(var_0A.ent)) { level notify(param_00 + "_" + param_01 + "_stop"); break; } var_0B = dambx_create_damb_event(var_0A,param_01,var_09); if(var_0B.success) { if(level._audio.damb.serial_playback_lock) { dambx_perform_play_event(param_00,param_01,var_0B); } else { thread dambx_perform_play_event(param_00,param_01,var_0B); } } } else { soundscripts\_audio::aud_print_warning("Dynamic ambience is playing back serially and using components which do not define oneshots or loops"); } var_08 = randomfloatrange(var_04,var_05); } } //Function Number: 26 dambx_play_component_loops(param_00,param_01,param_02,param_03,param_04) { if(isdefined(param_02["single_loops"])) { foreach(var_06 in param_02["single_loops"]) { var_07 = undefined; if(isdefined(param_04)) { var_07 = spawn("script_origin",param_04.origin); } else if(isdefined(param_03)) { var_07 = spawn("script_origin",param_03); } else { var_07 = spawn("script_origin",level.player.origin); } level._audio.damb.loop_entity_ref_count++; var_07 playloopsound(var_06); if(isdefined(param_04)) { var_07 linkto(param_04); } var_08 = level._audio.damb.single_loop_handle_index; level._audio.damb.playing[param_00][param_01]["single_loops"][var_08] = var_07; level._audio.damb.single_loop_handle_index++; } } } //Function Number: 27 dambx_get_component_data(param_00,param_01,param_02) { var_03 = spawnstruct(); var_03.using_oneshots_or_loops = 0; if(!isdefined(param_02["single_loops"])) { var_03.single_loops = 0; } else { var_03.single_loops = 1; } if(isdefined(param_02["oneshots"]) || isdefined(param_02["loops"])) { var_03.using_oneshots_or_loops = 1; if(!isdefined(param_02["radius"])) { param_02["radius"] = [0,0.01]; } var_03.min_radius = min(param_02["radius"][0],param_02["radius"][1]); var_03.max_radius = max(param_02["radius"][0],param_02["radius"][1]); if(isarray(param_02["event_time"])) { var_03.min_time = min(param_02["event_time"][0],param_02["event_time"][1]); var_03.max_time = max(param_02["event_time"][0],param_02["event_time"][1]); } if(isarray(param_02["first_event"])) { var_03.first_event = 1; var_03.first_event_min = min(param_02["first_event"][0],param_02["first_event"][1]); var_03.first_event_max = max(param_02["first_event"][0],param_02["first_event"][1]); } if(isarray(param_02["pitch"])) { var_03.min_pitch = min(param_02["pitch"][0],param_02["pitch"][1]); var_03.max_pitch = max(param_02["pitch"][0],param_02["pitch"][1]); } if(isarray(param_02["travel_time"])) { var_03.min_trav_time = min(param_02["travel_time"][0],param_02["travel_time"][1]); var_03.max_trav_time = max(param_02["travel_time"][0],param_02["travel_time"][1]); if(isarray(param_02["delta"])) { var_03.min_delta = min(param_02["delta"][0],param_02["delta"][1]); var_03.max_delta = max(param_02["delta"][0],param_02["delta"][1]); } else { var_03.min_delta_angle = min(param_02["delta_angle"][0],param_02["delta_angle"][1]); var_03.max_delta_angle = max(param_02["delta_angle"][0],param_02["delta_angle"][1]); } } if(isarray(param_02["pitch_time"])) { var_03.min_pitch_time = min(param_02["pitch_time"][0],param_02["pitch_time"][1]); var_03.max_pitch_time = max(param_02["pitch_time"][0],param_02["pitch_time"][1]); } if(isdefined(param_02["cone"])) { var_03.min_start_angle = min(param_02["cone"][0],param_02["cone"][1]); var_03.max_start_angle = max(param_02["cone"][0],param_02["cone"][1]); } } else { var_03.using_oneshots_or_loops = 0; } var_03.using_entity = 0; if(isdefined(level._audio.damb.playing[param_00][param_01]["entity"])) { var_03.using_entity = 1; var_03.ent = level._audio.damb.playing[param_00][param_01]["entity"]; var_03.mode = level._audio.damb.playing[param_00][param_01]["mode"]; } var_03.prob_scale = level._audio.damb.playing[param_00][param_01]["prob_scale"]; return var_03; } //Function Number: 28 dambx_monitor_single_loops_on_ent(param_00,param_01,param_02) { for(;;) { if(!isdefined(param_02)) { level notify(param_00 + "_" + param_01 + "_stop"); } wait(1); } } //Function Number: 29 dambx_create_damb_event(param_00,param_01,param_02,param_03) { var_04 = spawnstruct(); if(randomfloat(1) < param_00.prob_scale) { var_04.success = 1; if(isdefined(level._audio.damb.callbacks[param_01])) { thread [[ level._audio.damb.callback[param_01] ]](); } else { var_04.alias = dambx_pick_random_alias(param_02); var_04.point = param_03; var_04.ent = param_00.ent; var_04.mode = param_00.mode; var_05 = randomfloatrange(param_00.min_radius,param_00.max_radius); var_06 = undefined; if(isdefined(param_00.min_start_angle)) { var_06 = randomfloatrange(param_00.min_start_angle,param_00.max_start_angle); } else { var_06 = randomfloatrange(0,360); } var_07 = var_05 * cos(var_06); var_08 = var_05 * sin(var_06); var_04.start_position = (var_07,var_08,0); if(isdefined(param_00.min_trav_time)) { var_04.travel_time = randomfloatrange(param_00.min_trav_time,param_00.max_trav_time); if(isdefined(param_00.min_delta)) { var_05 = randomfloatrange(param_00.min_delta,param_00.max_delta); var_06 = randomfloatrange(0,360); var_07 = var_05 * cos(var_06); var_08 = var_05 * sin(var_06); var_04.end_position = var_04.start_position + (var_07,var_08,0); } else { var_09 = randomfloatrange(param_00.min_delta_angle,param_00.max_delta_angle); var_09 = var_09 * 0.5; var_0A = level.player.origin; if(isdefined(param_03)) { var_0A = param_03; } var_0B = var_04.start_position - var_0A; var_07 = var_0B[0] * cos(var_09) - var_0B[1] * sin(var_09); var_08 = var_0B[0] * sin(var_09) + var_0B[1] * cos(var_09); var_04.end_position = var_04.start_position + (var_07,var_08,0); } } if(isdefined(param_00.min_pitch)) { var_04.start_pitch = randomfloatrange(param_00.min_pitch,param_00.max_pitch); } if(isdefined(param_00.min_pitch_time)) { var_04.end_pitch = randomfloatrange(param_00.min_pitch,param_00.max_pitch); var_04.pitch_time = randomfloatrange(param_00.min_pitch_time,param_00.max_pitch_time); } } } else { var_04.success = 0; } return var_04; } //Function Number: 30 dambx_trigger_linked_damb(param_00,param_01) { wait(param_01); damb_manual_trigger(param_00); } //Function Number: 31 dambx_make_first_wait(param_00) { var_01 = undefined; if(isdefined(param_00.first_event)) { var_01 = randomfloatrange(param_00.first_event_min,param_00.first_event_max); } else { var_01 = randomfloatrange(param_00.min_time,param_00.max_time); } return var_01; } //Function Number: 32 dambx_update(param_00,param_01,param_02,param_03) { level endon(param_00 + "_" + param_01 + "_stop"); var_04 = dambx_get_component_data(param_00,param_01,param_02,param_01); if(var_04.single_loops) { dambx_play_component_loops(param_00,param_01,param_02,param_03,var_04.ent); if(var_04.using_entity && !var_04.using_oneshots_or_loops) { thread dambx_monitor_single_loops_on_ent(param_00,param_01,var_04.ent); } } if(var_04.using_oneshots_or_loops) { var_05 = dambx_make_first_wait(var_04); for(;;) { if(!level._audio.damb.playing[param_00][param_01]["paused"]) { wait(var_05); } if(level._audio.damb.playing[param_00][param_01]["paused"]) { level waittill(param_00 + "_" + param_01 + "_event"); } if(var_04.using_entity && !isdefined(var_04.ent)) { level notify(param_00 + "_" + param_01 + "_stop"); break; } if(isdefined(level._audio.damb.playing[param_00][param_01]["linked_dambs"])) { foreach(var_07 in level._audio.damb.playing[param_00][param_01]["linked_dambs"]) { var_08 = randomfloatrange(var_07.min_delay,var_07.max_delay); thread dambx_trigger_linked_damb(var_07.name,var_08); } } var_04.prob_scale = level._audio.damb.playing[param_00][param_01]["prob_scale"]; var_0A = dambx_create_damb_event(var_04,param_01,param_02,param_03); if(var_0A.success) { thread dambx_perform_play_event(param_00,param_01,var_0A); } var_05 = randomfloatrange(var_04.min_time,var_04.max_time); } } } //Function Number: 33 dambx_wait_till_sound_done_and_remove_handle(param_00,param_01,param_02,param_03) { level endon(param_00 + "_" + param_01 + "_stop"); param_03 waittill("sounddone"); if(isdefined(level._audio.damb.playing[param_00][param_01]["oneshots"][param_02])) { param_03 delete(); decrement_ref_count(); level._audio.damb.playing[param_00][param_01]["oneshots"][param_02] = undefined; } } //Function Number: 34 dambx_perform_play_event(param_00,param_01,param_02) { level endon(param_00 + "_" + param_01 + "_stop"); if(param_02.alias["type"] == "loop") { dambx_perform_loop_event(param_00,param_01,param_02); return; } dambx_perform_oneshot_event(param_00,param_01,param_02); } //Function Number: 35 dambx_perform_oneshot_event(param_00,param_01,param_02) { level endon(param_00 + "_" + param_01 + "_stop"); var_03 = level.player.origin; if(isdefined(param_02.ent)) { var_03 = param_02.ent.origin; } else if(isdefined(param_02.point)) { var_03 = param_02.point; } if(level._audio.damb.entity_ref_count < level._audio.damb.max_entities) { var_04 = spawn("script_origin",var_03 + param_02.start_position); if(isdefined(param_02.ent) && param_02.mode == "attach") { var_04 linkto(param_02.ent); } var_04 playsound(param_02.alias["name"],"sounddone"); var_04 thread soundscripts\_audio::aud_check_sound_done(); if(!var_04.sounddone) { var_05 = level._audio.damb.oneshot_handle_index; level._audio.damb.playing[param_00][param_01]["oneshots"][var_05] = var_04; level._audio.damb.oneshot_handle_index++; increment_ref_count(); if(isdefined(param_02.end_position) && !isdefined(param_02.entity)) { var_06 = 0.1 * param_02.travel_time; var_04 moveto(var_03 + param_02.end_position,param_02.travel_time,var_06,var_06); } if(isdefined(param_02.start_pitch)) { var_04 scalepitch(param_02.start_pitch); } if(isdefined(param_02.pitch_time)) { wait(0.05); if(isdefined(var_04) && !var_04.sounddone) { var_04 scalepitch(param_02.end_pitch,param_02.pitch_time); } } thread dambx_wait_till_sound_done_and_remove_handle(param_00,param_01,var_05,var_04); var_04 waittill("sounddone"); return; } var_04 delete(); return; } soundscripts\_audio::aud_print_warning("TRYING TO PLAY ONESHOT WITH DAMB REF COUNT AT MAXIMUM!"); } //Function Number: 36 dambx_perform_loop_event(param_00,param_01,param_02) { level endon(param_00 + "_" + param_01 + "_stop"); if(level._audio.damb.entity_ref_count < level._audio.damb.max_entities) { var_03 = level.player.origin; if(isdefined(param_02.ent)) { var_03 = param_02.ent.origin; } else if(isdefined(param_02.point)) { var_03 = param_02.point; } var_04 = param_02.alias["name"]; var_05 = dambx_get_loop_preset(var_04); if(!isdefined(var_05)) { return; } var_06 = min(var_05["duration"][0],var_05["duration"][1]); var_07 = max(var_05["duration"][0],var_05["duration"][1]); var_08 = randomfloatrange(var_06,var_07); var_09 = var_05["loop_alias"]; var_0A = var_05["fade_in"]; var_0B = var_05["fade_out"]; var_0C = undefined; if(isdefined(var_05["end_alias"])) { var_0C = var_05["end_alias"]; } var_0D = spawn("script_origin",var_03 + param_02.start_position); if(isdefined(param_02.ent) && param_02.mode == "attach") { var_0D linkto(param_02.ent); } var_0D playloopsound(var_09); if(isdefined(var_0A)) { var_0D scalevolume(0); wait(0.05); var_0D scalevolume(1,var_0A); } var_0D thread soundscripts\_audio::aud_check_sound_done(); if(!var_0D.sounddone) { var_0E = level._audio.damb.loop_handle_index; level._audio.damb.playing[param_00][param_01]["loops"][var_0E] = var_0D; increment_ref_count(); level._audio.damb.loop_handle_index++; var_0F = 0; if(isdefined(param_02.mode) && param_02.mode == "free" && isdefined(param_02.end_position)) { var_0F = 1; } else if(!isdefined(param_02.mode) && isdefined(param_02.end_position)) { var_0F = 1; } if(var_0F) { var_10 = 0.1 * param_02.travel_time; var_0D moveto(var_03 + param_02.end_position,param_02.travel_time,var_10,var_10); } if(isdefined(param_02.start_pitch)) { var_0D setpitch(param_02.start_pitch); } if(isdefined(param_02.pitch_time)) { wait(0.05); if(isdefined(var_0D) && !var_0D.sounddone) { var_0D setpitch(param_02.end_pitch,param_02.pitch_time); } } wait(var_08); if(!var_0D.sounddone) { if(isdefined(level._audio.damb.playing[param_00][param_01]["loops"][var_0E])) { if(isdefined(var_0C)) { var_11 = spawn("script_origin",var_0D.origin); var_11 playsound(var_0C,"sounddone"); var_12 = level._audio.damb.oneshot_handle_index; level._audio.damb.oneshot_handle_index++; level._audio.damb.playing[param_00][param_01]["oneshots"][var_12] = var_11; increment_ref_count(); thread dambx_wait_till_sound_done_and_remove_handle(param_00,param_01,var_12,var_11); } if(isdefined(var_0B)) { thread soundscripts\_audio::aud_fade_loop_out_and_delete(var_0D,var_0B); } else { var_0D stoploopsound(); wait(0.05); var_0D delete(); } decrement_ref_count(); level._audio.damb.playing[param_00][param_01]["loops"][var_0E] = undefined; return; } return; } var_0D stoploopsound(); var_0D delete(); decrement_ref_count(); level._audio.damb.playing[param_00][param_01]["loops"][var_0E] = undefined; return; } var_0D delete(); return; } soundscripts\_audio::aud_print_warning("TRYING TO PLAY LOOP WITH DAMB REF COUNT AT MAXIMUM!"); } //Function Number: 37 dambx_pick_random_component(param_00,param_01) { var_02 = 0; foreach(var_04 in level._audio.damb.playing[param_00][param_01]["components"]) { var_05 = var_04[1]; var_02 = var_02 + var_05; } var_07 = randomfloat(var_02); var_08 = 0; var_09 = undefined; foreach(var_04 in level._audio.damb.playing[param_00][param_01]["components"]) { var_0B = var_08 + var_04[1]; if(var_07 >= var_08 && var_07 < var_0B) { var_09 = var_04[0]; break; } var_08 = var_0B; } var_0D = dambx_get_component_preset(var_09); if(!isdefined(var_0D)) { return; } var_0D["name"] = var_09; return var_0D; } //Function Number: 38 dambx_pick_random_alias(param_00) { var_01 = param_00["loops"]; var_02 = param_00["oneshots"]; var_03 = undefined; if(!isdefined(level._audio.damb.component_weights[param_00["name"]])) { var_03 = 0; if(isdefined(var_01)) { if(isstring(var_01[0])) { var_03 = var_03 + var_01[1]; } else { foreach(var_05 in var_01) { var_03 = var_03 + var_05[1]; } } } if(isdefined(var_02)) { if(isstring(var_02[0])) { var_03 = var_03 + var_02[1]; } else { foreach(var_05 in var_02) { var_03 = var_03 + var_05[1]; } } } level._audio.damb.component_weights[param_00["name"]] = var_03; } else { var_03 = level._audio.damb.component_weights[param_00["name"]]; } var_09 = randomfloatrange(0,var_03); var_0A = undefined; var_0B = undefined; var_0C = 0; if(isdefined(var_01)) { if(isstring(var_01[0])) { var_0D = var_0C + var_01[1]; if(var_09 >= var_0C && var_09 < var_0D) { var_0A = var_01[0]; var_0B = "loop"; } else { var_0C = var_0D; } } else { foreach(var_05 in var_02) { var_0D = var_0C + var_05[1]; if(var_09 >= var_0C && var_09 < var_0D) { var_0A = var_05[0]; var_0B = "loop"; break; } else { var_0C = var_0D; } } } } if(!isdefined(var_0A) && isdefined(var_02)) { if(isarray(var_02)) { foreach(var_05 in var_02) { var_0D = var_0C + var_05[1]; if(var_09 >= var_0C && var_09 < var_0D) { var_0A = var_05[0]; var_0B = "oneshot"; break; } else { var_0C = var_0D; } } } else { var_0D = var_0D + var_03[1]; if(var_09 >= var_0C && var_09 < var_0D) { var_0A = var_02[0]; var_0B = "oneshot"; } else { var_0C = var_0D; } } } var_12 = []; var_12["name"] = var_0A; var_12["type"] = var_0B; return var_12; } //Function Number: 39 dambx_get_loop_preset(param_00) { var_01 = []; if(isdefined(level._audio.damb.loop_cache[param_00])) { var_01 = level._audio.damb.loop_cache[param_00]; } else { var_01 = dambx_get_loop_def_from_string_table(param_00,1); } if(!isdefined(var_01) || var_01.size == 0) { return; } level._audio.damb.loop_cache[param_00] = var_01; return var_01; } //Function Number: 40 dambx_get_component_preset(param_00) { if(!isdefined(level._audio.damb.component_cache)) { level._audio.damb.component_cache = []; } var_01 = []; if(isdefined(level._audio.damb.component_cache[param_00])) { var_01 = level._audio.damb.component_cache[param_00]; } var_01 = dambx_get_component_from_string_table(param_00,1); if(!isdefined(var_01) || var_01.size == 0) { return; } level._audio.damb.component_cache[param_00] = var_01; return var_01; } //Function Number: 41 dambx_play(param_00,param_01,param_02) { level._audio.damb.playing[param_00][param_01]["loops"] = []; level._audio.damb.playing[param_00][param_01]["single_loops"] = []; level._audio.damb.playing[param_00][param_01]["oneshots"] = []; if(!isdefined(level._audio.damb.playing[param_00][param_01]["event_time"])) { foreach(var_04 in level._audio.damb.playing[param_00][param_01]["components"]) { var_05 = dambx_get_component_preset(var_04); if(!isdefined(var_05)) { return; } var_05["name"] = var_04; thread dambx_update(param_00,param_01,var_05,param_02); } } else { thread dambx_update_serially(param_00,param_01,param_02); } level waittill(param_00 + "_" + param_01 + "_stop"); wait(0.1); foreach(var_08 in level._audio.damb.playing[param_00][param_01]["loops"]) { thread dambx_fade_out_playing_loop(var_08,level._audio.damb.playing[param_00][param_01]["fade"],0); } foreach(var_08 in level._audio.damb.playing[param_00][param_01]["single_loops"]) { thread dambx_fade_out_playing_loop(var_08,level._audio.damb.playing[param_00][param_01]["fade"],1); } foreach(var_08 in level._audio.damb.playing[param_00][param_01]["oneshots"]) { thread dambx_fade_out_playing_sound(var_08,level._audio.damb.playing[param_00][param_01]["fade"]); } level._audio.damb.playing[param_00][param_01] = undefined; } //Function Number: 42 dambx_fade_out_playing_sound(param_00,param_01) { if(isdefined(param_00)) { param_00 scalevolume(0,param_01); wait(param_01); param_00 stopsounds(); wait(0.05); param_00 delete(); decrement_ref_count(); } } //Function Number: 43 dambx_fade_out_playing_loop(param_00,param_01,param_02) { param_00 scalevolume(0,param_01); wait(param_01); if(isdefined(param_00)) { param_00 stoploopsound(); wait(0.05); param_00 delete(); } if(param_02) { level._audio.damb.loop_entity_ref_count--; return; } decrement_ref_count(); } //Function Number: 44 dambx_get_list_value_from_string_table(param_00,param_01,param_02,param_03) { var_04 = 0; if(isdefined(param_03)) { var_04 = param_03; } var_05 = []; var_06 = 0; var_07 = strtok(param_00,"+"); var_08 = 0; for(var_09 = 0;var_09 < var_07.size;var_09++) { var_0A = strtok(var_07[var_09]," "); if(var_0A.size == 1 && var_0A[0] != "") { var_05[var_05.size] = var_0A[0]; continue; } var_0B = var_05.size; var_05[var_0B] = []; var_05[var_0B][0] = var_0A[0]; var_05[var_0B][1] = float(var_0A[1]); } if(!var_06 && var_04) { var_0C = []; for(var_09 = 0;var_09 < var_05.size;var_09++) { var_0D = var_0C.size; var_0C[var_0D] = []; var_0C[var_0D][0] = var_05[var_09]; var_0C[var_0D][1] = 1; } var_05 = var_0C; } return var_05; } //Function Number: 45 dambx_get_loop_def_from_string_table(param_00,param_01) { var_02 = "soundtables/sp_defaults.csv"; var_03 = soundscripts\_audio::get_damb_loops_stringtable(); var_04 = []; if(param_01) { var_04 = dambx_get_loop_def_from_string_table_internal(var_03,param_00); } if(!isdefined(var_04) || var_04.size == 0) { var_04 = dambx_get_loop_def_from_string_table_internal(var_02,param_00); } if(!isdefined(var_04) || var_04.size == 0) { return; } return var_04; } //Function Number: 46 dambx_get_loop_def_from_string_table_internal(param_00,param_01) { var_02 = []; var_03 = 8; var_04 = undefined; var_05 = undefined; var_06 = undefined; var_07 = undefined; var_08 = []; var_09 = packedtablesectionlookup(param_00,"loop_defs","zone_names;reverb_names;filter_names;occlusion_names;timescale_names;dynamic_ambience_names;components;loop_defs;whizby_preset_names;mix_names;healthfx_params"); if(isdefined(var_09)) { for(var_0A = 0;var_0A < var_03;var_0A++) { var_0B = packedtablelookupwithrange(param_00,0,"loop_defs",var_0A,var_09[0],var_09[1]); if(!isdefined(var_0B) || var_0B == "") { return; } var_0C = packedtablelookupwithrange(param_00,0,param_01,var_0A,var_09[0],var_09[1]); if(var_0C != "" && var_0B != "comments") { switch(var_0B) { case "loop_alias": var_04 = var_0C; break; case "fade_in": if(isdefined(var_0C) && var_0C != "") { var_06 = max(float(var_0C),0); } break; case "fade_out": if(isdefined(var_0C) && var_0C != "") { var_07 = max(float(var_0C),0); } break; case "end_alias": if(isdefined(var_0C) && var_0C != "") { var_05 = var_0C; } break; case "duration_min": if(isdefined(var_0C) && var_0C != "") { var_08[0] = float(var_0C); } break; case "duration_max": if(isdefined(var_0C) && var_0C != "") { var_08[1] = float(var_0C); } break; default: break; } } } var_02["loop_alias"] = var_04; if(isdefined(var_06)) { var_02["fade_in"] = var_06; } if(isdefined(var_07)) { var_02["fade_out"] = var_07; } if(isdefined(var_05)) { var_02["end_alias"] = var_05; } if(isdefined(var_08[0])) { var_02["duration"] = dambx_get_two_value_float_array(var_08); } return var_02; } } //Function Number: 47 dambx_get_two_value_float_array(param_00) { var_01 = []; var_01[0] = float(param_00[0]); var_01[1] = float(param_00[1]); return var_01; } //Function Number: 48 dambx_get_component_from_string_table_internal(param_00,param_01) { var_02 = []; var_03 = 21; var_04 = 8; var_05 = []; var_06 = []; var_07 = []; var_08 = []; var_09 = []; var_0A = []; var_0B = []; var_0C = []; var_0D = []; var_0E = []; var_0F = []; var_10 = 0; var_11 = packedtablesectionlookup(param_00,"components","zone_names;reverb_names;filter_names;occlusion_names;timescale_names;dynamic_ambience_names;components;loop_defs;whizby_preset_names;mix_names;healthfx_params"); if(isdefined(var_11)) { for(var_12 = 1;var_12 < var_03;var_12++) { var_13 = packedtablelookupwithrange(param_00,0,"components",var_12,var_11[0],var_11[1]); if(!isdefined(var_13)) { return; } var_14 = packedtablelookupwithrange(param_00,0,param_01,var_12,var_11[0],var_11[1]); if(var_14 != "" && var_13 != "comments") { var_10++; switch(var_13) { case "oneshots": var_05 = dambx_get_list_value_from_string_table(var_14,"component definition","oneshots",1); break; case "loops": var_06 = dambx_get_list_value_from_string_table(var_14,"component definition","loops",1); break; case "single_loops": var_07 = dambx_get_list_value_from_string_table(var_14,"component definition","single_loops",0); break; case "first_event_min": var_08[0] = float(var_14); break; case "first_event_max": var_08[1] = float(var_14); break; case "event_time_min": var_09[0] = float(var_14); break; case "event_time_max": var_09[1] = float(var_14); break; case "dist_min": var_0A[0] = float(var_14); break; case "dist_max": var_0A[1] = float(var_14); break; case "cone_min": var_0B[0] = float(var_14); break; case "cone_max": var_0B[1] = float(var_14); break; case "travel_min": var_0C[0] = float(var_14); break; case "travel_max": var_0C[1] = float(var_14); break; case "travel_time_min": var_0D[0] = float(var_14); break; case "travel_time_max": var_0D[1] = float(var_14); break; case "pitch_min": var_0E[0] = float(var_14); break; case "pitch_max": var_0E[1] = float(var_14); break; case "pitch_time_min": var_0F[0] = float(var_14); break; case "pitch_time_max": var_0F[1] = float(var_14); break; default: break; } } } if(var_10 > 0) { if(isdefined(var_05[0])) { if(isstring(var_05[0])) { var_05[1] = 1; } var_02["oneshots"] = var_05; } if(isdefined(var_06[0])) { var_02["loops"] = var_06; } if(isdefined(var_07[0])) { var_02["single_loops"] = var_07; } if(isdefined(var_08[0])) { var_02["first_event"] = dambx_get_two_value_float_array(var_08); } if(isdefined(var_09[0])) { var_02["event_time"] = dambx_get_two_value_float_array(var_09); } if(isdefined(var_0A[0])) { var_02["radius"] = dambx_get_two_value_float_array(var_0A); } if(isdefined(var_0B[0])) { var_02["cone"] = dambx_get_two_value_float_array(var_0B); } if(isdefined(var_0C[0])) { var_02["delta"] = dambx_get_two_value_float_array(var_0C); } if(isdefined(var_0D[0])) { var_02["travel_time"] = dambx_get_two_value_float_array(var_0D); } if(isdefined(var_0E[0])) { var_02["pitch"] = dambx_get_two_value_float_array(var_0E); } if(isdefined(var_0F[0])) { var_02["pitch_time"] = dambx_get_two_value_float_array(var_0F); } if(!isdefined(var_02["radius"])) { var_02["radius"] = [0,0.01]; } } return var_02; } } //Function Number: 49 dambx_get_component_from_string_table(param_00,param_01) { var_02 = soundscripts\_audio::get_damb_component_stringtable(); var_03 = "soundtables/sp_defaults.csv"; var_04 = []; if(param_01) { var_04 = dambx_get_component_from_string_table_internal(var_02,param_00); } if(!isdefined(var_04) || var_04.size == 0) { var_04 = dambx_get_component_from_string_table_internal(var_03,param_00); } if(!isdefined(var_04) || var_04.size == 0) { return; } return var_04; } //Function Number: 50 dambx_get_preset_from_stringtable_internal(param_00,param_01) { var_02 = 7; var_03 = []; var_04 = []; var_05 = []; var_06 = []; var_07 = packedtablesectionlookup(param_00,"dynamic_ambience_names","zone_names;reverb_names;filter_names;occlusion_names;timescale_names;dynamic_ambience_names;components;loop_defs;whizby_preset_names;mix_names;healthfx_params"); if(isdefined(var_07)) { for(var_08 = 1;var_08 < var_02;var_08++) { var_09 = packedtablelookupwithrange(param_00,0,"dynamic_ambience_names",var_08,var_07[0],var_07[1]); var_0A = packedtablelookupwithrange(param_00,0,param_01,var_08,var_07[0],var_07[1]); var_0B = 0; if(var_0A != "" && var_09 != "comments") { switch(var_09) { case "components": var_04 = dambx_get_list_value_from_string_table(var_0A,"preset definition","components"); break; case "first_event_min": if(isdefined(var_0A) && var_0A != "") { var_05[0] = float(var_0A); } break; case "first_event_max": if(isdefined(var_0A) && var_0A != "") { var_05[1] = float(var_0A); } break; case "event_time_min": if(isdefined(var_0A) && var_0A != "") { var_06[0] = float(var_0A); } break; case "event_time_max": if(isdefined(var_0A) && var_0A != "") { var_06[1] = float(var_0A); } break; case "comment": break; default: break; } } } var_0B = 0; if(isdefined(var_05[0])) { var_0B = 1; var_03["first_event"] = var_05; } if(isdefined(var_06[0])) { var_0B = 1; var_03["event_time"] = var_06; } if(var_0B) { if(isdefined(var_04[0][1])) { var_03["components"] = var_04; } else { var_03["components"] = []; for(var_08 = 0;var_08 < var_04.size;var_08++) { var_03["components"][var_03["components"].size] = [var_04[0],1]; } if(var_03["components"].size == 0) { var_03["components"] = undefined; } } } else if(var_04.size != 0) { var_03["components"] = var_04; } return var_03; } } //Function Number: 51 dambx_get_preset_from_string_table(param_00,param_01) { var_02 = soundscripts\_audio::get_damb_stringtable(); var_03 = "soundtables/sp_defaults.csv"; var_04 = []; if(param_01) { var_04 = dambx_get_preset_from_stringtable_internal(var_02,param_00); } if(!isdefined(var_04) || var_04.size == 0) { var_04 = dambx_get_preset_from_stringtable_internal(var_03,param_00); } if(!isdefined(var_04) || var_04.size == 0) { return; } return var_04; } //Function Number: 52 dambx_get_damb_preset(param_00) { var_01 = []; if(isdefined(level._audio.damb.preset_cache[param_00])) { var_01 = level._audio.damb.preset_cache[param_00]; } else { var_01 = dambx_get_preset_from_string_table(param_00,1); } if(!isdefined(var_01) || var_01.size == 0) { return; } level._audio.damb.preset_cache[param_00] = var_01; var_01["name"] = param_00; return var_01; } //Function Number: 53 increment_ref_count() { level._audio.damb.entity_ref_count++; } //Function Number: 54 decrement_ref_count() { level._audio.damb.entity_ref_count--; }