diff --git a/.hemtt/launch.toml b/.hemtt/launch.toml index 6e2348da9..599ddc3f4 100644 --- a/.hemtt/launch.toml +++ b/.hemtt/launch.toml @@ -4,3 +4,9 @@ workshop = [ "463939057", # ACE3's Workshop ID "2369477168" # Advanced Developer Tools's Workshop ID ] + +[rhs] +extends = "default" +workshop = [ + "843577117", # RHS USAF Workshop ID +] diff --git a/addons/airway/ACE_Medical_Treatment_Actions.hpp b/addons/airway/ACE_Medical_Treatment_Actions.hpp index a5750776a..922185fa2 100644 --- a/addons/airway/ACE_Medical_Treatment_Actions.hpp +++ b/addons/airway/ACE_Medical_Treatment_Actions.hpp @@ -140,7 +140,7 @@ class ACE_Medical_Treatment_Actions { allowedSelections[] = {"Head"}; allowSelfTreatment = 0; callbackSuccess = QFUNC(checkAirway); - condition = QUOTE(!([_patient] call ACEFUNC(common,isAwake)) && (missionNamespace getVariable [ARR_2(QQGVAR(enable),true)]) && !([_patient] call FUNC(checkMask))); + condition = QUOTE((missionNamespace getVariable [ARR_2(QQGVAR(enable),true)]) && !([_patient] call FUNC(checkMask))); animationPatientUnconscious = "AinjPpneMstpSnonWrflDnon_rolltoback"; animationPatientUnconsciousExcludeOn[] = {"ainjppnemstpsnonwrfldnon", "kat_recoveryposition"}; }; diff --git a/addons/airway/functions/fnc_checkAirway.sqf b/addons/airway/functions/fnc_checkAirway.sqf index ffa120a50..f74c24436 100644 --- a/addons/airway/functions/fnc_checkAirway.sqf +++ b/addons/airway/functions/fnc_checkAirway.sqf @@ -55,6 +55,15 @@ if (!(_patient getVariable [QGVAR(occluded), false]) && !(_patient getVariable [ _hintWidth = 10; }; +if (_patient getVariable [QEGVAR(chemical,airPoisoning), false]) exitWith { + _message = LLSTRING(AirwayStatus_Poison); + + [_message, _hintSize, _medic, _hintWidth] call ACEFUNC(common,displayTextStructured); + [_patient, "quick_view", LSTRING(checkAirway_log)] call EFUNC(circulation,removeLog); + [_patient, "quick_view", LSTRING(checkAirway_poisonLog)] call EFUNC(circulation,removeLog); + [_patient, "quick_view", LSTRING(checkAirway_poisonLog), [[_medic] call ACEFUNC(common,getName)]] call ACEFUNC(medical_treatment,addToLog); +}; + [_message, _hintSize, _medic, _hintWidth] call ACEFUNC(common,displayTextStructured); [_patient, "quick_view", LSTRING(checkAirway_log)] call EFUNC(circulation,removeLog); diff --git a/addons/airway/stringtable.xml b/addons/airway/stringtable.xml index a79ef1fdb..ffd5f3724 100644 --- a/addons/airway/stringtable.xml +++ b/addons/airway/stringtable.xml @@ -195,6 +195,9 @@ %1 检查呼吸道: %2, %3 %1 Heeft de luchtwegen gecheckt: %2, %3 + + %1 checked airways: Heavily Blistered + %1 inserted a %2 %1 intubierte mit %2 @@ -399,6 +402,9 @@ Tuuliputki on selkeä Luchtweg is vrij + + Airway is heavily blistered + Item could not be used, airways are not clear Gegenstand konnte nicht verwendet werden, Atemwege sind nicht frei diff --git a/addons/breathing/CfgMagazines.hpp b/addons/breathing/CfgMagazines.hpp index c3342089a..78f4f8312 100644 --- a/addons/breathing/CfgMagazines.hpp +++ b/addons/breathing/CfgMagazines.hpp @@ -47,11 +47,11 @@ class CfgMagazines { picture = QPATHTOF(ui\oxygenTank.paa); ammo = ""; - count = 60; + count = 30; initSpeed = 0; tracersEvery = 0; lastRoundsTracer = 0; - mass = 3; + mass = 5; ACE_isMedicalItem = 1; ACE_asItem = 1; }; diff --git a/addons/breathing/CfgSounds.hpp b/addons/breathing/CfgSounds.hpp index ea57583fe..d10da34cb 100644 --- a/addons/breathing/CfgSounds.hpp +++ b/addons/breathing/CfgSounds.hpp @@ -30,4 +30,11 @@ class CfgSounds sound[] = { QPATHTOF(audio\pneumothoraxcough.ogg), 5, 1, 2 }; titles[] = {}; }; + class GVAR(respiratorTone) { + name = QGVAR(respiratorTone); + + // filename, volume, pitch, distance (optional) + sound[] = { QPATHTOF(audio\respiratorTone.ogg), 5, 1, 2 }; + titles[] = {}; + }; }; \ No newline at end of file diff --git a/addons/breathing/XEH_postInit.sqf b/addons/breathing/XEH_postInit.sqf index 5c45042d4..62efb8271 100644 --- a/addons/breathing/XEH_postInit.sqf +++ b/addons/breathing/XEH_postInit.sqf @@ -14,6 +14,12 @@ _unit say3D [QGVAR(pneumothoraxcough), 15]; }] call CBA_fnc_addEventHandler; +[QGVAR(playRespiratorTone), { + params ["_unit"]; + _unit say3D [QGVAR(respiratorTone), 10]; +}] call CBA_fnc_addEventHandler; + + [QEGVAR(misc,handleRespawn), LINKFUNC(handleRespawn)] call CBA_fnc_addEventHandler; [QACEGVAR(medical_status,initialized), LINKFUNC(handleBreathingConditions)] call CBA_fnc_addEventHandler; diff --git a/addons/breathing/audio/respiratorTone.ogg b/addons/breathing/audio/respiratorTone.ogg new file mode 100644 index 000000000..6a0b70b7d Binary files /dev/null and b/addons/breathing/audio/respiratorTone.ogg differ diff --git a/addons/breathing/functions/fnc_attachPersonalOxygen.sqf b/addons/breathing/functions/fnc_attachPersonalOxygen.sqf index b763ee51e..8a38d90b1 100644 --- a/addons/breathing/functions/fnc_attachPersonalOxygen.sqf +++ b/addons/breathing/functions/fnc_attachPersonalOxygen.sqf @@ -42,6 +42,8 @@ _patient removeMagazines "kat_personal_oxygen"; _patient setVariable [QGVAR(oxygenMaskStatus), [(_largestTankValue + 1), 1], true]; +[QGVAR(playRespiratorTone), [_patient], _patient] call CBA_fnc_targetEvent; + [{ _this params ["_args", "_pfhID"]; _args params ["_patient"]; @@ -68,6 +70,11 @@ _patient setVariable [QGVAR(oxygenMaskStatus), [(_largestTankValue + 1), 1], tru }; private _maskStatus = _patient getVariable [QGVAR(oxygenMaskStatus), [0,0]]; + _patient setVariable [QGVAR(oxygenMaskStatus), [((_maskStatus select 0) - 1), _pfhID]]; + + if ((_maskStatus select 0) < 4) then { + [QGVAR(playRespiratorTone), [_patient], _patient] call CBA_fnc_targetEvent; + }; if ((_maskStatus select 0) == 0) exitWith { [LLSTRING(PersonalOxygen_Empty), 1.5, _patient] call ACEFUNC(common,displayTextStructured); @@ -78,7 +85,6 @@ _patient setVariable [QGVAR(oxygenMaskStatus), [(_largestTankValue + 1), 1], tru _pfhID call CBA_fnc_removePerFrameHandler; }; - _patient setVariable [QGVAR(oxygenMaskStatus), [((_maskStatus select 0) - 1), _pfhID]]; }, 60, [ _patient ]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/breathing/functions/fnc_attachVehicleOxygen.sqf b/addons/breathing/functions/fnc_attachVehicleOxygen.sqf index d53c04b61..808821932 100644 --- a/addons/breathing/functions/fnc_attachVehicleOxygen.sqf +++ b/addons/breathing/functions/fnc_attachVehicleOxygen.sqf @@ -24,6 +24,8 @@ if (_patient getVariable [QGVAR(oxygenMaskActive), false]) exitWith { _patient setVariable [QGVAR(oxygenMaskActive), true, true]; +[QGVAR(playRespiratorTone), [_patient], _patient] call CBA_fnc_targetEvent; + [{ _this params ["_args", "_pfhID"]; _args params ["_patient"]; diff --git a/addons/breathing/functions/fnc_checkBreathing.sqf b/addons/breathing/functions/fnc_checkBreathing.sqf index 8cc5e4de0..7f5042271 100644 --- a/addons/breathing/functions/fnc_checkBreathing.sqf +++ b/addons/breathing/functions/fnc_checkBreathing.sqf @@ -28,7 +28,7 @@ private _breathing = LLSTRING(breathing_isNormal); private _breathing_log = localize ACELSTRING(medical_treatment,Check_Pulse_Normal); private _breath = ""; -if (_patient getVariable [QGVAR(pneumothorax), 0] > 0) then { +if ((_patient getVariable [QGVAR(pneumothorax), 0] > 0) || (_patient getVariable [QEGVAR(chemical,airPoisoning), false])) then { _breathing = LLSTRING(breathing_isShallow); _breathing_log = LLSTRING(breathing_shallow); }; @@ -44,6 +44,7 @@ if (_ph < 7.2) then { _output = format ["%1%2", _breathing ,_breath]; _output_log = format ["%1%2", _breathing_log, _breath]; + if (_hr == 0 || !(alive _patient) || (_patient getVariable [QEGVAR(airway,obstruction), false] && !(_patient getVariable [QEGVAR(airway,overstretch), false])) || _patient getVariable [QEGVAR(airway,occluded), false] || _patient getVariable [QGVAR(hemopneumothorax), false] || _patient getVariable [QGVAR(tensionpneumothorax), false]) then { _output = LLSTRING(breathing_none); _output_log = ACELSTRING(medical_treatment,Check_Pulse_None); diff --git a/addons/breathing/stringtable.xml b/addons/breathing/stringtable.xml index b95ed8d96..4db0415a9 100644 --- a/addons/breathing/stringtable.xml +++ b/addons/breathing/stringtable.xml @@ -2748,50 +2748,62 @@ Available Oxygen Masks 使用可能な酸素マスク + Masques à oxygène disponibles Sets which goggles can act as oxygen masks 酸素マスクとして動作させたいゴーグルを指定します + Spécifiez les masques que vous souhaitez utiliser comme masque à oxygène. Connect Personal Oxygen 個人用酸素供給機に接続 + Connecter de l'oxygène personnel Disconnect Personal Oxygen 個人用酸素供給機を切断 + Déconnexion de l'oxygène personnel Check Personal Oxygen Status 個人用酸素供給機の状態を確認 + Vérifier l'état de l'oxygène personnel Minutes Remaining 分残っています + Minutes restantes Oxygen Tank Empty 酸素ボンベは空です + Réservoir d'oxygène vide Connect to Aircraft Oxygen 航空機酸素供給機に接続 + Connexion à l'oxygène de l'aéronef Attached to Aircraft Oxygen 航空機酸素供給機に接続済 + Attaché à l'oxygène de l'aéronef Oxygen already connected 既に酸素供給機に接続済です + Oxygène déjà connecté Oxygen tank disconnected 酸素供給機から切断しました + Réservoir d'oxygène déconnecté Remove Oxygen Mask 酸素マスクを取り外す + Retirer le masque à oxygène diff --git a/addons/chemical/XEH_preInit.sqf b/addons/chemical/XEH_preInit.sqf index 24ffb6cdb..fbcb62f72 100644 --- a/addons/chemical/XEH_preInit.sqf +++ b/addons/chemical/XEH_preInit.sqf @@ -64,4 +64,14 @@ PREP_RECOMPILE_END; [0, 3600, 60], true ] call CBA_Settings_fnc_init; + +// Shows poisioning image +[ + QGVAR(showPoisoning), + "CHECKBOX", + [LLSTRING(SETTING_showPoisoning), LLSTRING(SETTING_showPoisoning_DESC)], + CBA_SETTINGS_CHEM, + [true], + true +] call CBA_Settings_fnc_init; ADDON = true; diff --git a/addons/chemical/functions/fnc_gui_updateBodyImage.sqf b/addons/chemical/functions/fnc_gui_updateBodyImage.sqf index 193f93035..4dfc12897 100644 --- a/addons/chemical/functions/fnc_gui_updateBodyImage.sqf +++ b/addons/chemical/functions/fnc_gui_updateBodyImage.sqf @@ -20,7 +20,7 @@ params ["_ctrlGroup", "_target", "_selectionN"]; private _ctrlAirInfected = _ctrlGroup controlsGroupCtrl IDC_BODY_TORSO_I; -if (_target getVariable [QGVAR(airPoisoning), false]) then { +if ((_target getVariable [QGVAR(airPoisoning), false]) && (missionNamespace getVariable [QGVAR(showPoisoning), true])) then { _ctrlAirInfected ctrlShow true; } else { _ctrlAirInfected ctrlShow false; diff --git a/addons/chemical/functions/fnc_gui_updateInjuryListGeneral.sqf b/addons/chemical/functions/fnc_gui_updateInjuryListGeneral.sqf index 75dfa6985..aef0ab087 100644 --- a/addons/chemical/functions/fnc_gui_updateInjuryListGeneral.sqf +++ b/addons/chemical/functions/fnc_gui_updateInjuryListGeneral.sqf @@ -21,6 +21,7 @@ params ["_ctrl", "_target", "_selectionN", "_entries"]; private _poisontype = _target getVariable [QGVAR(poisonType),""]; -if (_target getVariable [QGVAR(airPoisoning),false]) then{ + +if (_target getVariable [QGVAR(airPoisoning),false] && (missionNamespace getVariable [QGVAR(showPoisoning), true])) then{ _entries pushBack [LLSTRING(Intoxication), [0.4,0,0.5,1]]; }; diff --git a/addons/chemical/functions/fnc_poison.sqf b/addons/chemical/functions/fnc_poison.sqf index d483a91d5..1d9b58459 100644 --- a/addons/chemical/functions/fnc_poison.sqf +++ b/addons/chemical/functions/fnc_poison.sqf @@ -44,6 +44,11 @@ if (_gasLevel == 0) exitWith { }; }; +// We assume that oxygen masks only cover the mouth and nose, leaving the eyes exposed to CS gas +if ((_unit getVariable [QEGVAR(breathing,oxygenMaskActive), false])) exitWith { + TRACE_1("unit has oxygen mask",_unit); +}; + private _currentInfectionArray = _unit getVariable [QGVAR(infectionArray), []]; if ((_currentInfectionArray findIf { _x isEqualTo _infectedObject}) == -1) then { diff --git a/addons/chemical/stringtable.xml b/addons/chemical/stringtable.xml index 2acab5c11..b2243d322 100644 --- a/addons/chemical/stringtable.xml +++ b/addons/chemical/stringtable.xml @@ -121,6 +121,12 @@ Определяет, влияет ли GAS на искусственный интеллект (если вы запускаете его на локальном сервере, это может вызвать проблемы с производительностью). Bepaald of KI/AI beïnvloed wordt door gas (als je dit doet op een lokale server kan dit leiden tot prestatieproblemen) + + Show Poisoning + + + Determines if poisoning and intoxication is shown in the medical menu + Gas mask filter Filtro de la mascara de gas @@ -793,7 +799,7 @@ Put on gas mask ガスマスクを装着 - Mettre le masque à gaz + Mettre le masque à gaz Take off gas mask @@ -814,9 +820,11 @@ Drop Weapon Chance + Chance de lâcher l'arme Determines chance for dropping weapon while in tear gas + Détermine les chances de lâcher l'arme en cas d'exposition aux gaz lacrymogènes. - + \ No newline at end of file diff --git a/addons/circulation/CfgVehicles.hpp b/addons/circulation/CfgVehicles.hpp index 932e1a86a..2caa43f7a 100644 --- a/addons/circulation/CfgVehicles.hpp +++ b/addons/circulation/CfgVehicles.hpp @@ -235,6 +235,15 @@ class CfgVehicles { class LandVehicle; class Car: LandVehicle { + class ACE_SelfActions { + class KAT_ArterialTest { + displayName = CSTRING(Arterial_Test_Action); + condition = QUOTE(_target call ACEFUNC(medical_treatment,isMedicalVehicle)); + statement = ""; + insertChildren = QUOTE([ARR_2(_target,_player)] call FUNC(addArterialTestActions)); + icon = QACEPATHTOF(medical_gui,ui\cross.paa); + }; + }; class ACE_Actions { class ACE_MainActions { class KAT_ArterialTest { @@ -250,6 +259,15 @@ class CfgVehicles { class Car_F: Car {}; class Quadbike_01_base_F: Car_F { + class ACE_SelfActions { + class KAT_ArterialTest { + displayName = CSTRING(Arterial_Test_Action); + condition = QUOTE(_target call ACEFUNC(medical_treatment,isMedicalVehicle)); + statement = ""; + insertChildren = QUOTE([ARR_2(_target,_player)] call FUNC(addArterialTestActions)); + icon = QACEPATHTOF(medical_gui,ui\cross.paa); + }; + }; class ACE_Actions: ACE_Actions { class ACE_MainActions: ACE_MainActions { class KAT_ArterialTest { @@ -264,6 +282,15 @@ class CfgVehicles { }; class Kart_01_Base_F: Car_F { + class ACE_SelfActions { + class KAT_ArterialTest { + displayName = CSTRING(Arterial_Test_Action); + condition = QUOTE(_target call ACEFUNC(medical_treatment,isMedicalVehicle)); + statement = ""; + insertChildren = QUOTE([ARR_2(_target,_player)] call FUNC(addArterialTestActions)); + icon = QACEPATHTOF(medical_gui,ui\cross.paa); + }; + }; class ACE_Actions: ACE_Actions { class ACE_MainActions: ACE_MainActions { class KAT_ArterialTest { @@ -278,6 +305,15 @@ class CfgVehicles { }; class Tank: LandVehicle { + class ACE_SelfActions { + class KAT_ArterialTest { + displayName = CSTRING(Arterial_Test_Action); + condition = QUOTE(_target call ACEFUNC(medical_treatment,isMedicalVehicle)); + statement = ""; + insertChildren = QUOTE([ARR_2(_target,_player)] call FUNC(addArterialTestActions)); + icon = QACEPATHTOF(medical_gui,ui\cross.paa); + }; + }; class ACE_Actions { class ACE_MainActions { class KAT_ArterialTest { @@ -292,6 +328,15 @@ class CfgVehicles { }; class Motorcycle: LandVehicle { + class ACE_SelfActions { + class KAT_ArterialTest { + displayName = CSTRING(Arterial_Test_Action); + condition = QUOTE(_target call ACEFUNC(medical_treatment,isMedicalVehicle)); + statement = ""; + insertChildren = QUOTE([ARR_2(_target,_player)] call FUNC(addArterialTestActions)); + icon = QACEPATHTOF(medical_gui,ui\cross.paa); + }; + }; class ACE_Actions { class ACE_MainActions { class KAT_ArterialTest { @@ -307,6 +352,15 @@ class CfgVehicles { class Air; class Helicopter: Air { + class ACE_SelfActions { + class KAT_ArterialTest { + displayName = CSTRING(Arterial_Test_Action); + condition = QUOTE(_target call ACEFUNC(medical_treatment,isMedicalVehicle)); + statement = ""; + insertChildren = QUOTE([ARR_2(_target,_player)] call FUNC(addArterialTestActions)); + icon = QACEPATHTOF(medical_gui,ui\cross.paa); + }; + }; class ACE_Actions { class ACE_MainActions { class KAT_ArterialTest { @@ -321,6 +375,15 @@ class CfgVehicles { }; class Plane: Air { + class ACE_SelfActions { + class KAT_ArterialTest { + displayName = CSTRING(Arterial_Test_Action); + condition = QUOTE(_target call ACEFUNC(medical_treatment,isMedicalVehicle)); + statement = ""; + insertChildren = QUOTE([ARR_2(_target,_player)] call FUNC(addArterialTestActions)); + icon = QACEPATHTOF(medical_gui,ui\cross.paa); + }; + }; class ACE_Actions { class ACE_MainActions { class KAT_ArterialTest { @@ -336,6 +399,15 @@ class CfgVehicles { class Ship; class Ship_F: Ship { + class ACE_SelfActions { + class KAT_ArterialTest { + displayName = CSTRING(Arterial_Test_Action); + condition = QUOTE(_target call ACEFUNC(medical_treatment,isMedicalVehicle)); + statement = ""; + insertChildren = QUOTE([ARR_2(_target,_player)] call FUNC(addArterialTestActions)); + icon = QACEPATHTOF(medical_gui,ui\cross.paa); + }; + }; class ACE_Actions { class ACE_MainActions { class KAT_ArterialTest { @@ -354,12 +426,12 @@ class CfgVehicles { class ACE_Actions { class ACE_MainActions { class KAT_ApplyBloodTest { - displayName = CSTRING(Arterial_Test); - condition = "true"; - statement = "true"; - insertChildren = QUOTE([ARR_2(_target,_player)] call FUNC(addArterialApplyActions)); - icon = QACEPATHTOF(medical_gui,ui\cross.paa); - }; + displayName = CSTRING(Arterial_Test); + condition = QUOTE(GVAR(abgEnable)); + statement = "true"; + insertChildren = QUOTE([ARR_2(_target,_player)] call FUNC(addArterialApplyActions)); + icon = QACEPATHTOF(medical_gui,ui\cross.paa); + }; }; class ACE_Head { class CheckBloodPressure {}; // Remove the ability to check blood pressure at the head diff --git a/addons/circulation/functions/fnc_addArterialApplyActions.sqf b/addons/circulation/functions/fnc_addArterialApplyActions.sqf index 2e469d019..c75861697 100644 --- a/addons/circulation/functions/fnc_addArterialApplyActions.sqf +++ b/addons/circulation/functions/fnc_addArterialApplyActions.sqf @@ -30,9 +30,9 @@ private _fnc_getActions = { if (_idNumber > 0) then { private _resultSampleMap = missionNamespace getVariable [QEGVAR(circulation,resultSampleMap), []]; - _resultSampleMap = _resultSampleMap get _idNumber; - _resultSampleMap = _resultSampleMap select 1; - private _patient = _resultSampleMap select 0; + _resultSampleArray = _resultSampleMap get _idNumber; + _resultSampleActual = _resultSampleArray select 1; + private _patient = _resultSampleArray select 0; _actions pushBack [ [ @@ -45,7 +45,7 @@ private _fnc_getActions = { [] ] call ACEFUNC(interact_menu,createAction), [], - [_resultSampleMap, _target, _idNumber, _player] + [_resultSampleActual, _target, _idNumber, _player] ]; }; } forEach ([_player, 0] call ACEFUNC(common,uniqueItems)); @@ -54,4 +54,4 @@ private _fnc_getActions = { }; -[[], _fnc_getActions, _player, QGVAR(actionsCache), 9999, "cba_events_loadoutEvent"] call ACEFUNC(common,cachedCall); \ No newline at end of file +[[], _fnc_getActions, _player, QGVAR(actionsCache), 9999, "cba_events_loadoutEvent"] call ACEFUNC(common,cachedCall); diff --git a/addons/circulation/functions/fnc_addArterialTestActions.sqf b/addons/circulation/functions/fnc_addArterialTestActions.sqf index 2631a67d9..b73ce230b 100644 --- a/addons/circulation/functions/fnc_addArterialTestActions.sqf +++ b/addons/circulation/functions/fnc_addArterialTestActions.sqf @@ -56,4 +56,4 @@ private _fnc_getActions = { }; -[[], _fnc_getActions, _player, QGVAR(actionsCache), 9999, "cba_events_loadoutEvent"] call ACEFUNC(common,cachedCall); \ No newline at end of file +[[], _fnc_getActions, _player, QGVAR(actionsCache), 9999, "cba_events_loadoutEvent"] call ACEFUNC(common,cachedCall); diff --git a/addons/circulation/functions/fnc_attachBloodGas.sqf b/addons/circulation/functions/fnc_attachBloodGas.sqf index cb974d473..8205f01be 100644 --- a/addons/circulation/functions/fnc_attachBloodGas.sqf +++ b/addons/circulation/functions/fnc_attachBloodGas.sqf @@ -16,8 +16,7 @@ */ params ["_entries"]; _entries params ["_bloodGas", "_patient", "_idNumber", "_player"]; -_bloodGas params ["_patientName", "_bloodGasArray"]; -_patient setVariable [QGVAR(testedBloodGas), _bloodGasArray, true]; +_patient setVariable [QGVAR(testedBloodGas), _bloodGas, true]; _player removeItem (format ["KAT_bloodResult_%1",_idNumber]); \ No newline at end of file diff --git a/addons/circulation/functions/fnc_showBloodGas.sqf b/addons/circulation/functions/fnc_showBloodGas.sqf index d683e904b..808636bdc 100644 --- a/addons/circulation/functions/fnc_showBloodGas.sqf +++ b/addons/circulation/functions/fnc_showBloodGas.sqf @@ -28,7 +28,7 @@ private _resultSampleMap = missionNamespace getVariable [QEGVAR(circulation,resu _resultCounter = [_resultCounter +1, 1] select (_resultCounter == 20); missionNamespace setVariable [QEGVAR(circulation,resultCounter), _resultCounter, true]; -_resultSampleMap set [_resultCounter, [name(_patient), _bloodGas]]; +_resultSampleMap set [_resultCounter, [_patientName, _bloodGasArray]]; missionNamespace setVariable [QEGVAR(circulation,resultSampleMap), _resultSampleMap, true]; private _itemStr = format ["KAT_bloodResult_%1", _resultCounter]; diff --git a/addons/circulation/stringtable.xml b/addons/circulation/stringtable.xml index 91860e75e..c8e8f400d 100644 --- a/addons/circulation/stringtable.xml +++ b/addons/circulation/stringtable.xml @@ -2593,6 +2593,7 @@ Change Monitoring Device モニタリングする装置を変更 + Changer le dispositif de surveillance CPR Started diff --git a/addons/compat_rhs_usf3/$PBOPREFIX$ b/addons/compat_rhs_usf3/$PBOPREFIX$ new file mode 100644 index 000000000..e40cfec20 --- /dev/null +++ b/addons/compat_rhs_usf3/$PBOPREFIX$ @@ -0,0 +1 @@ +x\kat\addons\compat_rhs_usf3 diff --git a/addons/compat_rhs_usf3/CfgVehicles.hpp b/addons/compat_rhs_usf3/CfgVehicles.hpp new file mode 100644 index 000000000..d26f53925 --- /dev/null +++ b/addons/compat_rhs_usf3/CfgVehicles.hpp @@ -0,0 +1,46 @@ +class CfgVehicles { + class Truck_01_base_F; + class rhsusf_fmtv_base: Truck_01_base_F {}; + class rhsusf_M1078A1P2_fmtv_usarmy: rhsusf_fmtv_base {}; + class rhsusf_M1078A1P2_D_fmtv_usarmy: rhsusf_M1078A1P2_fmtv_usarmy { + kat_stretcherPos[] = {0,-1,-0.4}; + kat_stretcherVector[] = {{0, 0, 0}, {0, 0, 0}}; + }; + class rhsusf_M1083A1P2_fmtv_usarmy: rhsusf_M1078A1P2_fmtv_usarmy {}; + class rhsusf_M1083A1P2_B_fmtv_usarmy: rhsusf_M1083A1P2_fmtv_usarmy {}; + class rhsusf_M1085A1P2_B_Medical_fmtv_usarmy: rhsusf_M1083A1P2_B_fmtv_usarmy { + kat_stretcherPos[] = {-0.9,3,0.67}; + kat_stretcherVector[] = {{0,0,0},{0,0,0}}; + }; + + class Heli_Transport_01_base_F; + class RHS_UH60_Base: Heli_Transport_01_base_F { + kat_stretcherPos[] = {0,1.25,-1.86}; + kat_stretcherVector[] = {{1, 0, 0}, {0, 0, 1}}; + }; + + class Heli_Transport_02_base_F; + class RHS_CH_47F_base: Heli_Transport_02_base_F { + kat_stretcherPos[] = {0,-0.43,-2.63}; + kat_stretcherVector[] = {{0, 0, 0}, {0, 0, 0}}; + }; + + class MRAP_01_base_F; + class rhsusf_hmmwe_base: MRAP_01_base_F { + kat_stretcherPos[] = {0,-0.5,-0.85}; + kat_stretcherVector[] = {{0, 0, 0}, {0, 0, 0}}; + }; + + class APC_Tracked_03_base_F; + class RHS_M2A2_Base: APC_Tracked_03_base_F { + kat_stretcherPos[] = {-1.19,-0.6,-0.45}; + kat_stretcherVector[] = {{0,0,0},{0,0,0}}; + }; + + class Tank_F; + class APC_Tracked_02_base_F: Tank_F {}; + class rhsusf_m113tank_base: APC_Tracked_02_base_F { + kat_stretcherPos[] = {0,-0.5,-2.05}; + kat_stretcherVector[] = {{0,0,0},{0,0,0}}; + }; +}; diff --git a/optionals/usaf/config.cpp b/addons/compat_rhs_usf3/config.cpp similarity index 66% rename from optionals/usaf/config.cpp rename to addons/compat_rhs_usf3/config.cpp index c09f257f7..98edf92af 100644 --- a/optionals/usaf/config.cpp +++ b/addons/compat_rhs_usf3/config.cpp @@ -3,19 +3,17 @@ class CfgPatches { class ADDON { name = COMPONENT_NAME; - requiredVersion = REQUIRED_VERSION; units[] = {}; weapons[] = {}; - magazines[] = {}; - requiredAddons[] = { - "kat_misc", - "rhsusf_main" - }; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"kat_main", "rhsusf_main_loadorder"}; + skipWhenMissingDependencies = 1; author = "Katalam"; - authors[] = {"Katalam"}; + authors[] = {"MiszczuZPolski", "Katalam"}; url = ECSTRING(main,URL); VERSION_CONFIG; }; }; #include "CfgVehicles.hpp" + diff --git a/addons/compat_rhs_usf3/script_component.hpp b/addons/compat_rhs_usf3/script_component.hpp new file mode 100644 index 000000000..14741af1f --- /dev/null +++ b/addons/compat_rhs_usf3/script_component.hpp @@ -0,0 +1,5 @@ +#define COMPONENT compat_rhs_usf3 +#define COMPONENT_BEAUTIFIED RHS USAF Compatibility + +#include "\x\kat\addons\main\script_mod.hpp" +#include "\x\kat\addons\main\script_macros.hpp" diff --git a/addons/main/script_version.hpp b/addons/main/script_version.hpp index da0e91aa9..5f6090b80 100644 --- a/addons/main/script_version.hpp +++ b/addons/main/script_version.hpp @@ -1,4 +1,4 @@ #define MAJOR 3 #define MINOR 0 #define PATCH 4 -#define BUILD 59 +#define BUILD 60 diff --git a/addons/stretcher/functions/fnc_attachStretcher.sqf b/addons/stretcher/functions/fnc_attachStretcher.sqf index 3924e372a..3fa8bb147 100644 --- a/addons/stretcher/functions/fnc_attachStretcher.sqf +++ b/addons/stretcher/functions/fnc_attachStretcher.sqf @@ -18,14 +18,14 @@ params [["_target", objNull, [objNull]]]; if !(isNull attachedTo _target) exitWith {}; -private _vehicles = nearestObjects [_target, ["Car", "Helicopter"], 20]; +private _vehicles = nearestObjects [_target, ["Car", "Helicopter", "Tank"], 20]; private _actions = []; { private _type = typeOf _x; private _name = getText (configFile >> "CfgVehicles" >> _type >> "displayName"); private _uniqueName = format ["kat_stretcher_%1", _type]; - if (isArray (configFile >> "CfgVehicles" >> _type >> "stretcherPos")) then { + if (isArray (configFile >> "CfgVehicles" >> _type >> "kat_stretcherPos")) then { _actions pushBack [ [ _uniqueName, @@ -33,8 +33,8 @@ private _actions = []; "", { params ["_target", "", "_parameter"]; - private _pos = getArray (configFile >> "CfgVehicles" >> typeOf (_parameter select 0) >> "stretcherPos"); - private _vector = getArray (configFile >> "CfgVehicles" >> typeOf (_parameter select 0) >> "stretcherVector"); + private _pos = getArray (configFile >> "CfgVehicles" >> typeOf (_parameter select 0) >> "kat_stretcherPos"); + private _vector = getArray (configFile >> "CfgVehicles" >> typeOf (_parameter select 0) >> "kat_stretcherVector"); _target attachTo [(_parameter select 0), _pos]; _target setVectorDirAndUp _vector; }, diff --git a/addons/stretcher/vehicle_stretcher.hpp b/addons/stretcher/vehicle_stretcher.hpp index 2434507ad..d99242cab 100644 --- a/addons/stretcher/vehicle_stretcher.hpp +++ b/addons/stretcher/vehicle_stretcher.hpp @@ -1,33 +1,33 @@ class LSV_01_unarmed_base_F; class B_LSV_01_unarmed_F: LSV_01_unarmed_base_F { - stretcherPos[] = {0.08,-1.5,-0.69}; - stretcherVector[] = {{1, 0, 0}, {0, 0, 1}}; + kat_stretcherPos[] = {0.08,-1.5,-0.69}; + kat_stretcherVector[] = {{1, 0, 0}, {0, 0, 1}}; }; class Heli_Transport_01_base_F; class B_Heli_Transport_01_F: Heli_Transport_01_base_F { - stretcherPos[] = {0,1.6,-1.55}; - stretcherVector[] = {{1, 0, 0}, {0, 0, 1}}; + kat_stretcherPos[] = {0,1.6,-1.55}; + kat_stretcherVector[] = {{1, 0, 0}, {0, 0, 1}}; }; class B_Truck_01_transport_F; class B_Truck_01_medical_F: B_Truck_01_transport_F { - stretcherPos[] = {-0.15,-4.7,0}; - stretcherVector[] = {{1, 0, 0}, {0, 0, 1}}; + kat_stretcherPos[] = {-0.15,-4.7,0}; + kat_stretcherVector[] = {{1, 0, 0}, {0, 0, 1}}; }; class B_APC_Wheeled_01_base_F; class B_APC_Wheeled_01_cannon_F: B_APC_Wheeled_01_base_F { - stretcherPos[] = {0.85,1.7,-0.41}; - stretcherVector[] = {{0,0.78,-0.22},{0,0.22,0.78}}; + kat_stretcherPos[] = {0.85,1.7,-0.41}; + kat_stretcherVector[] = {{0,0.78,-0.22},{0,0.22,0.78}}; }; class Heli_Transport_03_base_F; class B_Heli_Transport_03_F: Heli_Transport_03_base_F { - stretcherPos[] = {0,-0.4,-2.08}; - stretcherVector[] = {{0, 0, 0}, {0, 0, 0}}; + kat_stretcherPos[] = {0,-0.4,-2.08}; + kat_stretcherVector[] = {{0, 0, 0}, {0, 0, 0}}; }; class LandVehicle; class Car: LandVehicle {}; class Car_F: Car {}; class Quadbike_01_base_F: Car_F { - stretcherPos[] = {0,0.8,-0.56}; - stretcherVector[] = {{1, 0, 0}, {0, 0, 1}}; + kat_stretcherPos[] = {0,0.8,-0.56}; + kat_stretcherVector[] = {{1, 0, 0}, {0, 0, 1}}; }; diff --git a/addons/watch/XEH_PREP.hpp b/addons/watch/XEH_PREP.hpp index d97090421..eeb625ae7 100644 --- a/addons/watch/XEH_PREP.hpp +++ b/addons/watch/XEH_PREP.hpp @@ -1,4 +1,3 @@ -PREP(closeWatchTimer); PREP(handleRespawn); PREP(hideKWatch); PREP(hideCWatch); @@ -8,4 +7,5 @@ PREP(init); PREP(showKWatch); PREP(showCWatch); PREP(showSWatch); -PREP(showRWatch); \ No newline at end of file +PREP(showRWatch); +PREP(startWatchTimer); \ No newline at end of file diff --git a/addons/watch/XEH_postInit.sqf b/addons/watch/XEH_postInit.sqf index fc4683fb8..2d8de495e 100644 --- a/addons/watch/XEH_postInit.sqf +++ b/addons/watch/XEH_postInit.sqf @@ -2,7 +2,7 @@ if (!hasInterface) exitWith {}; -[QGVAR(closeWatchTimer), LINKFUNC(closeWatchTimer)] call CBA_fnc_addEventHandler; +[QGVAR(startWatchTimer), LINKFUNC(startWatchTimer)] call CBA_fnc_addEventHandler; [QEGVAR(misc,handleRespawn), LINKFUNC(handleRespawn)] call CBA_fnc_addEventHandler; [QGVAR(playWatchTone), { @@ -51,7 +51,7 @@ if (!hasInterface) exitWith {}; [ACE_player] call FUNC(showRWatch); } else { call FUNC(hideRWatch); - }; + }; }; }; @@ -96,11 +96,8 @@ if (!hasInterface) exitWith {}; if (_timerActive) then { ACE_player setVariable [QGVAR(rangerStart), false, false]; } else { - if !(GETMVAR(GVAR(RangerActive),false)) then { - [QGVAR(closeWatchTimer), [ACE_player], ACE_player] call CBA_fnc_targetEvent; - }; - ACE_player setVariable [QGVAR(rangerStart), true, false]; + [QGVAR(startWatchTimer), [ACE_player], ACE_player] call CBA_fnc_targetEvent; }; }; diff --git a/addons/watch/functions/fnc_handleRespawn.sqf b/addons/watch/functions/fnc_handleRespawn.sqf index ed450e087..eb6257b23 100644 --- a/addons/watch/functions/fnc_handleRespawn.sqf +++ b/addons/watch/functions/fnc_handleRespawn.sqf @@ -20,5 +20,5 @@ params ["_unit","_dead"]; TRACE_2("handleRespawn",_unit,_dead); -_unit setVariable [QGVAR(RangerStart), false, true]; -_unit setVariable [QGVAR(RangerTimer), 0, true]; \ No newline at end of file +_unit setVariable [QGVAR(rangerStart), false, true]; +_unit setVariable [QGVAR(rangerTimer), 0, true]; \ No newline at end of file diff --git a/addons/watch/functions/fnc_showRWatch.sqf b/addons/watch/functions/fnc_showRWatch.sqf index d2cb346e7..cb74c897f 100644 --- a/addons/watch/functions/fnc_showRWatch.sqf +++ b/addons/watch/functions/fnc_showRWatch.sqf @@ -82,23 +82,8 @@ private _o2 = _display displayCtrl 22810; _second ctrlSetAngle [(linearConversion [0, 60, _seconds, 0, 360]), 0.5, 0.5, true]; private _timeValue = _unit getVariable [QGVAR(rangerTimer), 0]; - private _active = _unit getVariable [QGVAR(rangerStart), false]; _timer ctrlSetText ([_timeValue, 2, 0] call CBA_fnc_formatNumber); - - if (_active) then { - _timeValue = (_timeValue - 1) max 0; - - _timer ctrlSetText ([_timeValue, 2, 0] call CBA_fnc_formatNumber); - _unit setVariable [QGVAR(rangerTimer), _timeValue, false]; - - if (_timeValue == 0) then { - _unit setVariable [QGVAR(rangerStart), false, false]; - [QGVAR(playWatchTone), [_unit, QGVAR(watchAlarm)], _unit] call CBA_fnc_targetEvent; - }; - } else { - _timer ctrlSetText ([_timeValue, 2, 0] call CBA_fnc_formatNumber); - }; }, 1, [ _unit, _hour, @@ -109,4 +94,4 @@ private _o2 = _display displayCtrl 22810; _altitude, _hr, _o2 -]] call CBA_fnc_addPerFrameHandler; \ No newline at end of file +]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/watch/functions/fnc_closeWatchTimer.sqf b/addons/watch/functions/fnc_startWatchTimer.sqf similarity index 96% rename from addons/watch/functions/fnc_closeWatchTimer.sqf rename to addons/watch/functions/fnc_startWatchTimer.sqf index 657ec0cbb..e8dc43a67 100644 --- a/addons/watch/functions/fnc_closeWatchTimer.sqf +++ b/addons/watch/functions/fnc_startWatchTimer.sqf @@ -21,10 +21,6 @@ params ["_unit"]; _this params ["_args", "_pfhID"]; _args params ["_unit"]; - if (GVAR(RangerActive)) exitWith { - _pfhID call CBA_fnc_removePerFrameHandler; - }; - if !(alive _unit) exitWith { _pfhID call CBA_fnc_removePerFrameHandler; }; @@ -47,5 +43,7 @@ params ["_unit"]; _pfhID call CBA_fnc_removePerFrameHandler; }; + } else { + _pfhID call CBA_fnc_removePerFrameHandler; }; }, 1, [_unit]] call CBA_fnc_addPerFrameHandler; \ No newline at end of file diff --git a/optionals/usaf/$PBOPREFIX$ b/optionals/usaf/$PBOPREFIX$ deleted file mode 100644 index 150d9eacb..000000000 --- a/optionals/usaf/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -x\kat\addons\usaf diff --git a/optionals/usaf/CfgVehicles.hpp b/optionals/usaf/CfgVehicles.hpp deleted file mode 100644 index e71cbe56d..000000000 --- a/optionals/usaf/CfgVehicles.hpp +++ /dev/null @@ -1,42 +0,0 @@ -class CfgVehicles { - class rhsusf_M1078A1P2_fmtv_usarmy; - class rhsusf_M1078A1P2_D_fmtv_usarmy: rhsusf_M1078A1P2_fmtv_usarmy { - stretcherPos[] = {0,-1,-0.4}; - stretcherVector[] = {{0, 0, 0}, {0, 0, 0}}; - }; - class Heli_Transport_01_base_F; - class RHS_UH60_Base: Heli_Transport_01_base_F { - stretcherPos[] = {0,1.25,-1.86}; - stretcherVector[] = {{1, 0, 0}, {0, 0, 1}}; - }; - class Heli_Transport_02_base_F; - class RHS_CH_47F_base: Heli_Transport_02_base_F { - stretcherPos[] = {0,-0.43,-2.63}; - stretcherVector[] = {{0, 0, 0}, {0, 0, 0}}; - }; - class MRAP_01_base_F; - class rhsusf_hmmwe_base: MRAP_01_base_F { - stretcherPos[] = {0,-0.5,-0.85}; - stretcherVector[] = {{0, 0, 0}, {0, 0, 0}}; - }; - class Truck_01_base_F; - class rhsusf_M1220_usarmy_d: Truck_01_base_F { - stretcherPos[] = {-0.05,-2.1,-1.5}; - stretcherVector[] = {{0,0,0},{0,0,0}}; - }; - class APC_Tracked_03_base_F; - class RHS_M2A2_Base: APC_Tracked_03_base_F { - stretcherPos[] = {-1.19,-0.6,-0.45}; - stretcherVector[] = {{0,0,0},{0,0,0}}; - }; - class APC_Tracked_02_base_F; - class rhsusf_m113tank_base: APC_Tracked_02_base_F { - stretcherPos[] = {0,-0.5,-2.05}; - stretcherVector[] = {{0,0,0},{0,0,0}}; - }; - class rhsusf_M1083A1P2_B_fmtv_usarmy; - class rhsusf_M1085A1P2_B_Medical_fmtv_usarmy: rhsusf_M1083A1P2_B_fmtv_usarmy { - stretcherPos[] = {-0.9,3,0.67}; - stretcherVector[] = {{0,0,0},{0,0,0}}; - }; -}; diff --git a/optionals/usaf/script_component.hpp b/optionals/usaf/script_component.hpp deleted file mode 100644 index 21bd5dce7..000000000 --- a/optionals/usaf/script_component.hpp +++ /dev/null @@ -1,17 +0,0 @@ -#define COMPONENT usaf -#define COMPONENT_BEAUTIFIED KAT USAF -#include "\x\kat\addons\main\script_mod.hpp" - -// #define DEBUG_MODE_FULL -// #define DISABLE_COMPILE_CACHE -// #define ENABLE_PERFORMANCE_COUNTERS - -#ifdef DEBUG_ENABLED_USAF - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_SETTINGS_USAF - #define DEBUG_SETTINGS DEBUG_SETTINGS_USAF -#endif - -#include "\x\kat\addons\main\script_macros.hpp"