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"