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