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..84e117e8f 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)])) 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/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