diff --git a/addons/medical_engine/$PBOPREFIX$ b/addons/medical_engine/$PBOPREFIX$ new file mode 100644 index 0000000000..6dc35db6f9 --- /dev/null +++ b/addons/medical_engine/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\medical_engine diff --git a/addons/medical_engine/CfgActions.hpp b/addons/medical_engine/CfgActions.hpp new file mode 100644 index 0000000000..64ecf717db --- /dev/null +++ b/addons/medical_engine/CfgActions.hpp @@ -0,0 +1,16 @@ + +class CfgActions { + class None; + class Heal: None { + show = 0; + }; + class HealSoldier: None { + show = 0; + }; + class HealSoldierSelf: None { + show = 0; + }; + class FirstAid: None { + show = 0; + }; +}; diff --git a/addons/medical_engine/CfgEventHandlers.hpp b/addons/medical_engine/CfgEventHandlers.hpp new file mode 100644 index 0000000000..becf395052 --- /dev/null +++ b/addons/medical_engine/CfgEventHandlers.hpp @@ -0,0 +1,18 @@ + +class Extended_PreStart_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preStart)); + }; +}; + +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_postInit)); + }; +}; diff --git a/addons/medical_engine/CfgInGameUI.hpp b/addons/medical_engine/CfgInGameUI.hpp new file mode 100644 index 0000000000..d18024e0a6 --- /dev/null +++ b/addons/medical_engine/CfgInGameUI.hpp @@ -0,0 +1,8 @@ + +#ifdef DISABLE_VANILLA_BLOOD_TEXTURES +class CfgInGameUI { + class PeripheralVision { + bloodTexture = ""; //"A3\ui_f\data\igui\cfg\PeripheralVision\bloodTexture_ca.paa"; + }; +}; +#endif diff --git a/addons/medical_engine/CfgVehicles.hpp b/addons/medical_engine/CfgVehicles.hpp new file mode 100644 index 0000000000..3d250b2ae4 --- /dev/null +++ b/addons/medical_engine/CfgVehicles.hpp @@ -0,0 +1,158 @@ + +class CfgVehicles { + class Man; + class CAManBase: Man { + // Delete base game sounds. + // These are never played for ai and remote players. + #ifdef DISABLE_VANILLA_SCREAMS + class SoundHitScream { + person1[] = {{"Male08ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person2[] = {{"Male06ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person3[] = {{"Male09ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person4[] = {{"Male07ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person5[] = {{"Male03GRE"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person6[] = {{"Male02ENGB"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person7[] = {{"Male01ENGB"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person8[] = {{"Male01GRE"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person9[] = {{"Male02ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person10[] = {{"Male02GRE"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person11[] = {{"Male03ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person12[] = {{"Male03ENGB"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person13[] = {{"Male04ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person14[] = {{"Male05GRE"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person15[] = {{"Male06GRE"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person16[] = {{"Male04GRE"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person17[] = {{"Male05ENGB"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person18[] = {{"Male05ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + }; + #endif + #ifdef DISABLE_VANILLA_MOANS + class SoundInjured { + person_moan1[] = {{"Male08ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan2[] = {{"Male06ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan3[] = {{"Male09ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan4[] = {{"Male07ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan5[] = {{"Male03GRE"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan6[] = {{"Male02ENGB"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan7[] = {{"Male01ENGB"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan8[] = {{"Male01GRE"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan9[] = {{"Male02ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan10[] = {{"Male02GRE"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan11[] = {{"Male03ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan12[] = {{"Male03ENGB"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan13[] = {{"Male04ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan14[] = {{"Male05GRE"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan15[] = {{"Male06GRE"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan16[] = {{"Male04GRE"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan17[] = {{"Male05ENGB"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + person_moan18[] = {{"Male05ENG"},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}},{{EMPTY_SOUND,1}}}; + }; + #endif + // Can't overwrite these with empty sounds -> CTD + // Assume lock up if sound duration is 0 seconds. + // We mute the sounds instead + #ifdef DISABLE_VANILLA_HEARTBEAT + class PulsationSound { + sample0[] = {{{{"A3\sounds_f\characters\human-sfx\other\heart_4_1",0,0.7},1}}}; + sample1[] = {{{{"A3\sounds_f\characters\human-sfx\other\heart_4_3",0,0.7},1}}}; + sample2[] = {{{{"A3\sounds_f\characters\human-sfx\other\heart_4_4",0,0.7},1}}}; + sample3[] = {{{{"A3\sounds_f\characters\human-sfx\other\heart_4_5",0,0.7},1}}}; + }; + #endif + // General + class HitPoints { + ADD_ACE_HITPOINTS(1,1); + }; + }; + + // BluFor + class B_Soldier_base_F; + class B_Soldier_04_f: B_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(2,2); + }; + }; + class B_Soldier_05_f: B_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(2,2); + }; + }; + + // Indep + class I_Soldier_base_F; + class I_Soldier_03_F: I_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(2,2); + }; + }; + class I_Soldier_04_F: I_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(2,2); + }; + }; + + // OpFor + class SoldierEB; + class O_Soldier_base_F: SoldierEB { + class HitPoints { + ADD_ACE_HITPOINTS(2,2); + }; + }; + class O_Soldier_02_F: O_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(2,2); + }; + }; + class O_officer_F: O_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(1,2); + }; + }; + class O_Soldier_diver_base_F: O_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(1,1); + }; + }; + + // Virtual Reality + class B_Soldier_VR_F: B_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(1,1); + }; + }; + class O_Soldier_VR_F: O_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(1,1); + }; + }; + class I_Soldier_VR_F: I_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(1,1); + }; + }; + + // Civilians + class C_man_1; + class C_Soldier_VR_F: C_man_1 { + class HitPoints { + ADD_ACE_HITPOINTS(1,1); + }; + }; + class O_Protagonist_VR_F: O_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(1,1); + }; + }; + + // APEX + class O_V_Soldier_Viper_F: O_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(3,3); + }; + }; + class O_V_Soldier_base_F: O_Soldier_base_F { + class HitPoints { + ADD_ACE_HITPOINTS(3,3); + }; + }; +}; diff --git a/addons/medical_engine/CfgWeapons.hpp b/addons/medical_engine/CfgWeapons.hpp new file mode 100644 index 0000000000..b4e3572620 --- /dev/null +++ b/addons/medical_engine/CfgWeapons.hpp @@ -0,0 +1,11 @@ + +class CfgWeapons { + // Remove items from Virtual Arsenal. + class ItemCore; + class FirstAidKit: ItemCore { + type = 0; + }; + class Medikit: ItemCore { + type = 0; + }; +}; diff --git a/addons/medical_engine/README.md b/addons/medical_engine/README.md new file mode 100644 index 0000000000..c609f506cc --- /dev/null +++ b/addons/medical_engine/README.md @@ -0,0 +1,11 @@ +ace_medical_engine +=============== + +Links Arma 3 soldier health simulation to ACE medical system. + + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [commy2](https://github.com/commy2) diff --git a/addons/medical_engine/RscTitles.hpp b/addons/medical_engine/RscTitles.hpp new file mode 100644 index 0000000000..9a9eb43e73 --- /dev/null +++ b/addons/medical_engine/RscTitles.hpp @@ -0,0 +1,20 @@ + +#ifdef DISABLE_VANILLA_BLOOD_TEXTURES +class RscTitles { + // Disables blood texture overlay + class RscHealthTextures { + class controls { + class Flame_1; + class Blood_1: Flame_1 { + text = ""; //"A3\Ui_f\data\igui\rsctitles\HealthTextures\blood_lower_ca.paa"; + }; + class Blood_2: Flame_1 { + text = ""; //"A3\Ui_f\data\igui\rsctitles\HealthTextures\blood_middle_ca.paa"; + }; + class Blood_3: Flame_1 { + text = ""; //"A3\Ui_f\data\igui\rsctitles\HealthTextures\blood_upper_ca.paa"; + }; + }; + }; +}; +#endif diff --git a/addons/medical_engine/XEH_PREP.hpp b/addons/medical_engine/XEH_PREP.hpp new file mode 100644 index 0000000000..568fa0d406 --- /dev/null +++ b/addons/medical_engine/XEH_PREP.hpp @@ -0,0 +1,5 @@ + +PREP(handleDamage); +PREP(playInjuredSound); +PREP(damageBodyPart); +PREP(setStructuralDamage); diff --git a/addons/medical_engine/XEH_postInit.sqf b/addons/medical_engine/XEH_postInit.sqf new file mode 100644 index 0000000000..e0b963df2a --- /dev/null +++ b/addons/medical_engine/XEH_postInit.sqf @@ -0,0 +1,87 @@ +#include "script_component.hpp" + +["CAManBase", "init", { + params ["_unit"]; + + // Check if last hit point is our dummy. + private _allHitPoints = getAllHitPointsDamage _unit param [0, []]; + reverse _allHitPoints; + + if (_allHitPoints param [0, ""] != "ACE_HDBracket") then { + ACE_LOGERROR_1("Bad hitpoints for unit type ""%1""",typeOf _unit); + } else { + // Calling this function inside curly brackets allows the usage of + // "exitWith", which would be broken with "HandleDamage" otherwise. + _unit addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}]; + }; +}, nil, nil, true] call CBA_fnc_addClassEventHandler; + +#ifdef DEBUG_MODE_FULL +[QGVAR(woundReceived), { + diag_log _this; + systemChat str _this; +}] call CBA_fnc_addEventHandler; +#endif + +// Kill vanilla bleeding feedback effects. +#ifdef DISABLE_VANILLA_DAMAGE_EFFECTS +[{ + {isNil _x} count [ + "BIS_fnc_feedback_damageCC", + "BIS_fnc_feedback_damageRadialBlur", + "BIS_fnc_feedback_damageBlur" + ] == 0 +}, { + { + ppEffectDestroy _x; + } forEach [ + BIS_fnc_feedback_damageCC, + BIS_fnc_feedback_damageRadialBlur, + BIS_fnc_feedback_damageBlur + ]; +}] call CBA_fnc_waitUntilAndExecute; +#endif + +// Hack for #3168 (units in static weapons do not take any damage): +// Doing a manual pre-load with a small distance seems to fix the LOD problems +// with handle damage not returning full results. +GVAR(fixedStatics) = []; + +private _fnc_fixStatic = { + params ["_vehicle"]; + + private _type = typeOf _vehicle; + TRACE_2("",_vehicle,_type); + + if !(_type in GVAR(fixedStatics)) then { + GVAR(fixedStatics) pushBack _type; + + ACE_LOGINFO_1("Starting preload for ""%1""",_type); + [{ + 1 preloadObject _this; + }, { + ACE_LOGINFO_1("Preload done for ""%1""",_this); + }, _type] call CBA_fnc_waitUntilAndExecute; + }; +}; + +["StaticWeapon", "init", _fnc_fixStatic, nil, nil, true] call CBA_fnc_addClassEventHandler; +["Car", "init", _fnc_fixStatic, nil, nil, true] call CBA_fnc_addClassEventHandler; + +addMissionEventHandler ["Loaded", { + { + ACE_LOGINFO_1("Starting preload for ""%1""",_x); + [{ + 1 preloadObject _this; + }, { + ACE_LOGINFO_1("Preload done for ""%1""",_this); + }, _x] call CBA_fnc_waitUntilAndExecute; + } forEach GVAR(fixedStatics); +}]; + +#define BLAH __FILE__ +diag_log BLAH; + +diag_log 127; + +diag_log __FILE__; diff --git a/addons/medical_engine/XEH_preInit.sqf b/addons/medical_engine/XEH_preInit.sqf new file mode 100644 index 0000000000..09fc6ebc64 --- /dev/null +++ b/addons/medical_engine/XEH_preInit.sqf @@ -0,0 +1,744 @@ +#include "script_component.hpp" + +ADDON = false; + +#include "XEH_PREP.hpp" + +// HitScream +GVAR(HitScreamNamespace) = [] call CBA_fnc_createNamespace; +GVAR(HitScreamNamespace) setVariable ["#default", "Male08ENG"]; + +GVAR(HitScreamNamespace) setVariable ["Male08ENG", [[ + ["A3\sounds_f\characters\human-sfx\P01\Low_hit_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P01\Low_hit_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P01\Low_hit_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P01\Low_hit_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P01\Low_hit_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P01\Mid_hit_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P01\Mid_hit_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P01\Mid_hit_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P01\Mid_hit_4",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P01\Max_hit_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P01\Max_hit_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P01\Max_hit_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P01\Max_hit_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P01\Max_hit_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male06ENG", [[ + ["A3\sounds_f\characters\human-sfx\P02\Low_hit_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P02\Low_hit_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P02\Low_hit_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P02\Low_hit_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P02\Low_hit_5",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P02\Low_hit_6",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P02\Mid_hit_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P02\Mid_hit_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P02\Mid_hit_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P02\Mid_hit_4",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P02\Max_hit_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P02\Max_hit_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P02\Max_hit_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P02\Max_hit_4",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male09ENG", [[ + ["A3\sounds_f\characters\human-sfx\P03\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P03\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P03\Hit_Low_3",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P03\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P03\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P03\Hit_Mid_3",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P03\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P03\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P03\Hit_Max_3",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male07ENG", [[ + ["A3\sounds_f\characters\human-sfx\P04\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P04\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P04\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P04\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P04\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P04\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P04\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P04\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P04\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P04\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P04\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P04\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P04\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P04\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P04\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male03GRE", [[ + ["A3\sounds_f\characters\human-sfx\P05\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P05\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P05\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P05\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P05\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P05\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P05\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P05\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P05\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P05\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P05\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P05\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P05\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P05\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P05\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male02ENGB", [[ + ["A3\sounds_f\characters\human-sfx\P06\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P06\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P06\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P06\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P06\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P06\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P06\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P06\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P06\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P06\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P06\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P06\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P06\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P06\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P06\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male01ENGB", [[ + ["A3\sounds_f\characters\human-sfx\P07\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P07\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P07\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P07\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P07\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P07\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P07\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P07\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P07\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P07\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P07\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P07\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P07\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P07\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P07\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male01GRE", [[ + ["A3\sounds_f\characters\human-sfx\P08\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P08\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P08\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P08\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P08\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P08\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P08\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P08\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P08\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P08\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P08\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P08\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P08\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P08\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P08\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male02ENG", [[ + ["A3\sounds_f\characters\human-sfx\P09\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P09\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P09\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P09\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P09\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P09\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P09\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P09\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P09\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P09\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P09\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P09\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P09\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P09\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P09\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male02GRE", [[ + ["A3\sounds_f\characters\human-sfx\P10\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P10\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P10\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P10\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P10\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P10\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P10\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P10\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P10\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P10\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P10\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P10\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P10\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P10\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P10\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male03ENG", [[ + ["A3\sounds_f\characters\human-sfx\P11\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P11\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P11\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P11\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P11\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P11\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P11\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P11\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P11\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P11\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P11\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P11\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P11\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P11\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P11\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male03ENGB", [[ + ["A3\sounds_f\characters\human-sfx\P12\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P12\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P12\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P12\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P12\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P12\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P12\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P12\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P12\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P12\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P12\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P12\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P12\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P12\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P12\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male04ENG", [[ + ["A3\sounds_f\characters\human-sfx\P13\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P13\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P13\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P13\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P13\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P13\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P13\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P13\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P13\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P13\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P13\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P13\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P13\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P13\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P13\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male05GRE", [[ + ["A3\sounds_f\characters\human-sfx\P14\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P14\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P14\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P14\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P14\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P14\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P14\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P14\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P14\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P14\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P14\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P14\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P14\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P14\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P14\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male06GRE", [[ + ["A3\sounds_f\characters\human-sfx\P15\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P15\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P15\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P15\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P15\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P15\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P15\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P15\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P15\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P15\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P15\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P15\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P15\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P15\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P15\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male04GRE", [[ + ["A3\sounds_f\characters\human-sfx\P16\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P16\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P16\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P16\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P16\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P16\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P16\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P16\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P16\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P16\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P16\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P16\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P16\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P16\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P16\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male05ENGB", [[ + ["A3\sounds_f\characters\human-sfx\P17\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P17\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P17\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P17\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P17\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P17\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P17\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P17\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P17\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P17\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P17\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P17\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P17\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P17\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P17\Hit_Max_5",3.1622777,1,80] +]]]; + +GVAR(HitScreamNamespace) setVariable ["Male05ENG", [[ + ["A3\sounds_f\characters\human-sfx\P18\Hit_Low_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P18\Hit_Low_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P18\Hit_Low_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P18\Hit_Low_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P18\Hit_Low_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P18\Hit_Mid_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P18\Hit_Mid_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P18\Hit_Mid_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P18\Hit_Mid_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P18\Hit_Mid_5",3.1622777,1,80] +], [ + ["A3\sounds_f\characters\human-sfx\P18\Hit_Max_1",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P18\Hit_Max_2",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P18\Hit_Max_3",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P18\Hit_Max_4",3.1622777,1,80], + ["A3\sounds_f\characters\human-sfx\P18\Hit_Max_5",3.1622777,1,80] +]]]; + +// InjuredMoan +GVAR(InjuredMoanNamespace) = [] call CBA_fnc_createNamespace; +GVAR(InjuredMoanNamespace) setVariable ["#default", "Male08ENG"]; + +GVAR(InjuredMoanNamespace) setVariable ["Male08ENG", [[ + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Low_5",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Low_6",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Low_7",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Low_8",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Mid_5",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Mid_6",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Mid_7",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Mid_8",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Max_1",0.15848932,1,20], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Max_2",0.15848932,1,20], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Max_3",0.15848932,1,20], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Max_4",0.15848932,1,20], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Max_5",0.15848932,1,20], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Max_6",0.15848932,1,20], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Max_7",0.15848932,1,20], + ["A3\Sounds_F\characters\human-sfx\P01\Soundinjured_Max_8",0.15848932,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male06ENG", [[ + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Low_5",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Low_6",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Low_7",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Low_8",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Mid_5",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Mid_6",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Mid_7",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Mid_8",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Max_5",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Max_6",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Max_7",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P02\Soundinjured_Max_8",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male09ENG", [[ + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P03\Soundinjured_Max_4",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male07ENG", [[ + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P04\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male03GRE", [[ + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P05\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male02ENGB", [[ + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P06\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male01ENGB", [[ + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P07\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male01GRE", [[ + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P08\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male02ENG", [[ + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P09\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male02GRE", [[ + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P10\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male03ENG", [[ + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P11\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male03ENGB", [[ + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P12\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male04ENG", [[ + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P13\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male05GRE", [[ + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P14\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male06GRE", [[ + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P15\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male04GRE", [[ + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P16\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male05ENGB", [[ + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P17\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +GVAR(InjuredMoanNamespace) setVariable ["Male05ENG", [[ + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Low_1",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Low_2",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Low_3",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Low_4",1.4125376,1,10], + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Low_5",1.4125376,1,10] +], [ + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Mid_1",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Mid_2",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Mid_3",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Mid_4",1.5848932,1,15], + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Mid_5",1.5848932,1,15] +], [ + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Max_1",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Max_2",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Max_3",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Max_4",1.7782794,1,20], + ["A3\Sounds_F\characters\human-sfx\P18\Soundinjured_Max_5",1.7782794,1,20] +]]]; + +ADDON = true; diff --git a/addons/medical_engine/XEH_preStart.sqf b/addons/medical_engine/XEH_preStart.sqf new file mode 100644 index 0000000000..022888575e --- /dev/null +++ b/addons/medical_engine/XEH_preStart.sqf @@ -0,0 +1,3 @@ +#include "script_component.hpp" + +#include "XEH_PREP.hpp" diff --git a/addons/medical_engine/config.cpp b/addons/medical_engine/config.cpp new file mode 100644 index 0000000000..ce65d837e9 --- /dev/null +++ b/addons/medical_engine/config.cpp @@ -0,0 +1,23 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + name = COMPONENT_NAME; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author = ECSTRING(common,ACETeam); + authors[] = {"Glowbal","KoffeinFlummi","commy2"}; + url = ECSTRING(main,URL); + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" + +#include "CfgActions.hpp" +#include "CfgVehicles.hpp" +#include "CfgWeapons.hpp" +#include "CfgInGameUI.hpp" +#include "RscTitles.hpp" diff --git a/addons/medical_engine/functions/fnc_damageBodyPart.sqf b/addons/medical_engine/functions/fnc_damageBodyPart.sqf new file mode 100644 index 0000000000..7dbec32b8a --- /dev/null +++ b/addons/medical_engine/functions/fnc_damageBodyPart.sqf @@ -0,0 +1,47 @@ +/* + * Author: commy2 + * Damages a body part of a local unit. Does not kill the unit. + * + * Arguments: + * 0: Unit + * 1: Selection, can be "Head", "Body", "Arms" or "Legs" + * 2: Damage (optional, default: 1) + * + * Return Value: + * None + * + * Example: + * [player, "HEAD"] call ace_medical_engine_fnc_damageBodyPart + * + * Notes: + * Head: Blood visuals @ 0.45 + * Body: Blood visuals @ 0.45 + * Arms: Blood visuals @ 0.35, increases weapon sway linerarly + * Legs: Blood visuals @ 0.35, limping @ 0.5 + * + * Public: No + */ +#include "script_component.hpp" + +params [["_unit", objNull, [objNull]], ["_selection", "", [""]], ["_damage", 1, [0]]]; + +if (!local _unit) exitWith { + ACE_LOGERROR("Unit not local or null"); +}; + +_damage = _damage min 0.99; + +switch (toLower _selection) do { + case ("head"): { + _unit setHitPointDamage ["HitHead", _damage]; + }; + case ("body"): { + _unit setHitPointDamage ["HitBody", _damage]; + }; + case ("arms"): { + _unit setHitPointDamage ["HitHands", _damage]; + }; + case ("legs"): { + _unit setHitPointDamage ["HitLegs", _damage]; + }; +}; diff --git a/addons/medical_engine/functions/fnc_handleDamage.sqf b/addons/medical_engine/functions/fnc_handleDamage.sqf new file mode 100644 index 0000000000..3ca62ee2a9 --- /dev/null +++ b/addons/medical_engine/functions/fnc_handleDamage.sqf @@ -0,0 +1,105 @@ +/* + * Author: commy2 + * Main HandleDamage EH function for soldiers. + * + * Arguments: + * Handle damage EH + * + * Return Value: + * Damage to be inflicted + * + * Public: No + */ +#include "script_component.hpp" + +params ["_unit", "_selection", "_damage", "_shooter", "_ammo", "_hitPointIndex"]; +//diag_log _this; + +// HD sometimes triggers for remote units - ignore. +if (!local _unit) exitWith {nil}; + +// Get missing meta info +private ["_hitPoint", "_oldDamage"]; + +if (_hitPointIndex < 0) then { + _hitPoint = "#structural"; + _oldDamage = damage _unit; +} else { + _hitPoint = toLower (getAllHitPointsDamage _unit select 0 select _hitPointIndex); + _oldDamage = _unit getHitIndex _hitPointIndex; +}; + +private _newDamage = _damage - _oldDamage; +_unit setVariable [format [QGVAR(newDamage$%1), _hitPoint], _newDamage]; + +// Never kill the unit by the critical hit points of the engine. +if (_hitPoint in ["#structural", "hitbody", "hithead"]) then { + _damage = _damage min 0.99; +}; + +// These control blood material visuals. +// If damage is in dummy hitpoints, "hands" and "legs", don't change anything +if (_hitPoint in ["hithead", "hitbody", "hithands", "hitlegs"]) exitWith {_oldDamage}; + +// Add injury +if (_hitPoint isEqualTo "ace_hdbracket") exitWith { + // --- Head + private _damageFace = _unit getVariable [QGVAR(newDamage$HitFace), 0]; + private _damageNeck = _unit getVariable [QGVAR(newDamage$HitNeck), 0]; + private _damageHead = (_unit getVariable [QGVAR(newDamage$HitHead), 0]) max _damageFace max _damageNeck; + + // --- Body + private _damageStructural = _unit getVariable [QGVAR(newDamage$#structural), 0]; + private _damagePelvis = _unit getVariable [QGVAR(newDamage$HitPelvis), 0]; + private _damageAbdomen = _unit getVariable [QGVAR(newDamage$HitAbdomen), 0]; + private _damageDiaphragm = _unit getVariable [QGVAR(newDamage$HitDiaphragm), 0]; + private _damageChest = _unit getVariable [QGVAR(newDamage$HitChest), 0]; + private _damageBody = (_unit getVariable [QGVAR(newDamage$HitBody), 0]) max _damagePelvis max _damageAbdomen max _damageDiaphragm max _damageChest max _damageStructural; + + // --- Arms and Legs + private _damageLeftArm = _unit getVariable [QGVAR(newDamage$HitLeftArm), 0]; + private _damageRightArm = _unit getVariable [QGVAR(newDamage$HitRightArm), 0]; + private _damageLeftLeg = _unit getVariable [QGVAR(newDamage$HitLeftLeg), 0]; + private _damageRightLeg = _unit getVariable [QGVAR(newDamage$HitRightLeg), 0]; + + // Find hit point that received the maxium damage. + private _allDamages = [ + [_damageHead, "Head"], + [_damageBody, "Body"], + [_damageLeftArm, "LeftArm"], + [_damageRightArm, "RightArm"], + [_damageLeftLeg, "LeftLeg"], + [_damageRightLeg, "RightLeg"] + ]; + + _allDamages sort false; + (_allDamages select 0) params ["_receivedDamage", "_woundedHitPoint"]; + + // Check for falling damage. + if (_ammo isEqualTo "") then { + if (velocity _unit select 2 < -2) then { + _woundedHitPoint = selectRandom ["LeftLeg", "RightLeg"]; + _ammo = "#falling"; + } else { + // Assume collision damage. + // @todo, find a method for detecting burning damage. + _woundedHitPoint = "Body"; + _ammo = "#collision"; + }; + }; + + // Don't trigger for minor damage. + if (_receivedDamage > 1E-3) then { + [QGVAR(woundReceived), [_unit, _woundedHitPoint, _receivedDamage, _shooter, _ammo]] call CBA_fnc_localEvent; + }; + + 0 +}; + +// Check for drowning damage. +// Don't change the third expression. Safe method for FLOATs. +if (_hitPoint isEqualTo "#structural" && {getOxygenRemaining _unit <= 0.5} && {_damage isEqualTo (_oldDamage + 0.005)}) then { + [QGVAR(woundReceived), [_unit, "Body", _newDamage, _unit, "#drowning"]] call CBA_fnc_localEvent; +}; + +_damage diff --git a/addons/medical_engine/functions/fnc_playInjuredSound.sqf b/addons/medical_engine/functions/fnc_playInjuredSound.sqf new file mode 100644 index 0000000000..b17d3f72d6 --- /dev/null +++ b/addons/medical_engine/functions/fnc_playInjuredSound.sqf @@ -0,0 +1,80 @@ +/* + * Author: commy2 + * Play random injured sound for a unit. The sound is broadcasted across MP. + * Will not play if the unit has already played a sound within to close a time frame. + * + * Arguments: + * 0: Unit + * 1: Type (optional) ["hit" (default) or "moan"] + * 2: Severity (optional) [0 (default), 1, 2] + * + * Return Value: + * None + * + * Example: + * [player, "hit", 1] call ace_medical_engine_fnc_playInjuredSound + * + * Public: No + */ +#include "script_component.hpp" + +#define TIME_OUT 1 + +params [["_unit", objNull, [objNull]], ["_type", "hit", [""]], ["_severity", 0, [0]]]; + +if (!local _unit) exitWith { + ACE_LOGERROR("Unit not local or null"); +}; + +// Handle timeout +if (_unit getVariable [QGVAR(soundTimeout), -1] > CBA_missionTime) exitWith {}; +_unit setVariable [QGVAR(soundTimeout), CBA_missionTime + TIME_OUT]; + +// Get sounds +private _soundsNamespace = NAMESPACE_NULL; + +switch (toLower _type) do { + case ("hit"): { + _soundsNamespace = GVAR(HitScreamNamespace); + }; + case ("moan"): { + _soundsNamespace = GVAR(InjuredMoanNamespace); + }; +}; + +// Get units speaker +private _speaker = speaker _unit; + +if (_speaker == "ACE_NoVoice") then { + _speaker = _unit getVariable "ace_originalSpeaker"; +}; + +private _sounds = _soundsNamespace getVariable _speaker; + +if (isNil "_sounds") then { + _sounds = _soundsNamespace getVariable (_soundsNamespace getVariable "#default"); +}; + +if (isNil "_sounds") exitWith { + ACE_LOGERROR("No sounds for speaker and no default found"); +}; + +// Get correct sound of the speaker +_sounds = _sounds param [_severity, []]; +(selectRandom _sounds) params ["_sound", ["_volume", 1], ["_frequency", 1], ["_distance", 80]]; + +if (isNil "_sound") exitWith { + ACE_LOGERROR("No sound for this speaker"); +}; + +// Delete leading slash. +if (_sound select [0, 1] == "\") then { + _sound = _sound select [1]; +}; + +// Default file extension. +if (_sound find "." == -1) then { + _sound = _sound + ".wss"; +}; + +playSound3D [_sound, objNull, false, position _unit, _volume, _frequency, _distance]; diff --git a/addons/medical_engine/functions/fnc_setStructuralDamage.sqf b/addons/medical_engine/functions/fnc_setStructuralDamage.sqf new file mode 100644 index 0000000000..613f6257bc --- /dev/null +++ b/addons/medical_engine/functions/fnc_setStructuralDamage.sqf @@ -0,0 +1,31 @@ +/* + * Author: commy2 + * Set structural damage of an object without modifying the individual hit points. + * + * Arguments: + * 0: Unit + * 1: New damage value + * + * Return Value: + * None + * + * Example: + * [player, 0.5] call ace_medical_engine_fnc_setStructuralDamage + * + * Public: No + */ +#include "script_component.hpp" + +params [["_unit", objNull, [objNull]], ["_damage", 0, [0]]]; + +if (!local _unit) exitWith { + ACE_LOGERROR("Unit not local or null"); +}; + +private _hitPointDamages = getAllHitPointsDamage _unit param [2, []]; + +_unit setDamage _damage; + +{ + _unit setHitIndex [_forEachIndex, _x]; +} forEach _hitPointDamages; diff --git a/addons/medical_engine/functions/script_component.hpp b/addons/medical_engine/functions/script_component.hpp new file mode 100644 index 0000000000..c28da622f0 --- /dev/null +++ b/addons/medical_engine/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\medical_engine\script_component.hpp" diff --git a/addons/medical_engine/script_component.hpp b/addons/medical_engine/script_component.hpp new file mode 100644 index 0000000000..5d726ffe13 --- /dev/null +++ b/addons/medical_engine/script_component.hpp @@ -0,0 +1,29 @@ +#define COMPONENT medical_engine +#define COMPONENT_BEAUTIFIED Medical (Engine) +#include "\z\ace\addons\main\script_mod.hpp" + +#define DEBUG_MODE_FULL +// #define DISABLE_COMPILE_CACHE +// #define CBA_DEBUG_SYNCHRONOUS +// #define ENABLE_PERFORMANCE_COUNTERS + +#ifdef DEBUG_ENABLED_MEDICAL_ENGINE + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_MEDICAL_ENGINE + #define DEBUG_SETTINGS DEBUG_SETTINGS_MEDICAL_ENGINE +#endif + +#include "\z\ace\addons\main\script_macros.hpp" + +#define DISABLE_VANILLA_SCREAMS +#define DISABLE_VANILLA_MOANS +#define DISABLE_VANILLA_HEARTBEAT +#define DISABLE_VANILLA_BLOOD_TEXTURES +#define DISABLE_VANILLA_DAMAGE_EFFECTS + +#include "script_macros_medical.hpp" + +#define EMPTY_SOUND {"A3\Sounds_F\dummysound.wss",1,1} +#define NAMESPACE_NULL locationNull diff --git a/addons/medical_engine/script_macros_medical.hpp b/addons/medical_engine/script_macros_medical.hpp new file mode 100644 index 0000000000..b2dba69a35 --- /dev/null +++ b/addons/medical_engine/script_macros_medical.hpp @@ -0,0 +1,64 @@ +/* + Usage: + + #include "\z\ace\addons\medical_engine\script_macros_medical.hpp" + + class CfgVehicles { + class My_AwesomeUnit_base; + class My_AwesomeUnit: My_AwesomeUnit_base { + class HitPoints { + ADD_ACE_HITPOINTS(2,2); + }; + }; + }; +*/ + +// Our method for adding left and right arm and leg armor. Uses those selections +// that are used for animations and therefore exist in all third party units +// usage: arm_armor and leg_armor are the armor values of of HitHands and +// HitLegs respectively. +// "ACE_HDBracket" is a special hit point. It is designed in a way where the +// "HandleDamage" event handler will compute it at the end of every damage +// calculation step. This way we can figure out which hit point took the most +// damage from one projectile and should be receiving the ACE medical wound. +// the hit point itself should not take any damage +// It is important that the "ACE_HDBracket" hit point is the last in the config, +// but has the same selection as the first one (always "HitHead" for soldiers). +#define ADD_ACE_HITPOINTS(arm_armor,leg_armor)\ + class HitLeftArm {\ + armor = arm_armor;\ + material = -1;\ + name = "hand_l";\ + passThrough = 1;\ + radius = 0.08;\ + explosionShielding = 1;\ + visual = "injury_hands";\ + minimalHit = 0.01;\ + };\ + class HitRightArm: HitLeftArm {\ + name = "hand_r";\ + };\ + class HitLeftLeg {\ + armor = leg_armor;\ + material = -1;\ + name = "leg_l";\ + passThrough = 1;\ + radius = 0.1;\ + explosionShielding = 1;\ + visual = "injury_legs";\ + minimalHit = 0.01;\ + };\ + class HitRightLeg: HitLeftLeg {\ + name = "leg_r";\ + };\ + class ACE_HDBracket {\ + armor = 1;\ + material = -1;\ + name = "head";\ + passThrough = 1;\ + radius = 1;\ + explosionShielding = 1;\ + visual = "";\ + minimalHit = 0;\ + depends = "HitHead";\ + }