diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index b34403148e..24a638ac5f 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -1,10 +1,9 @@ class ACE_Medical_Actions { class Basic { - // @todo: localization class Bandage { - displayName = "Bandage"; - displayNameProgress = "Bandaging ..."; + displayName = "$STR_ACE_Medical_Bandage"; + displayNameProgress = "$STR_ACE_Medical_Bandaging"; treatmentLocations[] = {"All"}; requiredMedic = 0; @@ -25,25 +24,25 @@ class ACE_Medical_Actions { animationCallerSelfProne = "AinvPpneMstpSlayW[wpn]Dnon_medic"; }; class Morphine: Bandage { - displayName = "Morphine"; - displayNameProgress = "Injecting Morphine ..."; + displayName = "$STR_ACE_Medical_Inject_Morphine"; + displayNameProgress = "$STR_ACE_Medical_Injecting_Morphine"; treatmentTime = 2; items[] = {QGVAR(morphine)}; callbackSuccess = QUOTE(DFUNC(treatmentBasic_morphine)); animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; }; - class Epipen: Bandage { - displayName = "Epinephrine"; - displayNameProgress = "Injecting Epinephrine ..."; + class Epinephrine: Bandage { + displayName = "$STR_ACE_Medical_Inject_Epinephrine"; + displayNameProgress = "$STR_ACE_Medical_Injecting_Epinephrine"; requiredMedic = 1; treatmentTime = 3; - items[] = {QGVAR(epipen)}; + items[] = {QGVAR(epinephrine)}; callbackSuccess = QUOTE(DFUNC(treatmentBasic_epipen)); animationCaller = "AinvPknlMstpSnonWnonDnon_medic1"; }; - class Bloodbag: Bandage { - displayName = "Blood Bag"; - displayNameProgress = "Transfusing Blood ..."; + class BloodIV: Bandage { + displayName = "$STR_ACE_Medical_Transfuse_Blood"; + displayNameProgress = "$STR_ACE_Medical_Transfusing_Blood"; requiredMedic = 1; treatmentTime = 20; items[] = {{QGVAR(bloodIV), QGVAR(bloodIV_500), QGVAR(bloodIV_250)}}; diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index a15167f820..ad9302a2e8 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -350,8 +350,8 @@ class CfgVehicles { runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); - class Bandage_Head { - displayName = "Bandage Head"; + class Bandage { + displayName = "$STR_ACE_Medical_Bandage_HitHead"; distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(treatment)); @@ -413,8 +413,9 @@ class CfgVehicles { priority = 2; hotkey = "M"; enableInside = 1; - class Bandage_Torso { - displayName = "Bandage Torso"; + + class Bandage { + displayName = "$STR_ACE_Medical_Bandage_HitBody"; distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment)); @@ -451,7 +452,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment)); }; class Morphine: fieldDressing { - displayName = "Morphine"; + displayName = "$STR_ACE_Medical_Inject_Morphine"; condition = QUOTE([ARR_4(_player, _target, 'body', 'Morphine')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'body', 'Morphine')] call DFUNC(treatment)); }; @@ -461,7 +462,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'body', 'Atropine')] call DFUNC(treatment)); }; class Epinephrine: Morphine { - displayName = "Epinephrine"; + displayName = "$STR_ACE_Medical_Inject_Epinephrine"; condition = QUOTE([ARR_4(_player, _target, 'body', 'Epinephrine')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'body', 'Epinephrine')] call DFUNC(treatment)); }; @@ -486,8 +487,8 @@ class CfgVehicles { runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation)); - class Bandage_LeftArm { - displayName = "Bandage Left Arm"; + class Bandage { + displayName = "$STR_ACE_Medical_Bandage_HitLeftArm"; distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(treatment)); @@ -529,7 +530,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(treatment)); }; class Morphine: fieldDressing { - displayName = "Morphine"; + displayName = "$STR_ACE_Medical_Inject_Morphine"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Morphine')] call DFUNC(treatment)); }; @@ -539,7 +540,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(treatment)); }; class Epinephrine: Morphine { - displayName = "Epinephrine"; + displayName = "$STR_ACE_Medical_Inject_Epinephrine"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Epinephrine')] call DFUNC(treatment)); }; @@ -607,8 +608,8 @@ class CfgVehicles { class ACE_ArmRight { runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation)); - class Bandage_RightArm { - displayName = "Bandage Right Arm"; + class Bandage { + displayName = "$STR_ACE_Medical_Bandage_HitRightArm"; distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(treatment)); @@ -650,7 +651,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(treatment)); }; class Morphine: fieldDressing { - displayName = "Morphine"; + displayName = "$STR_ACE_Medical_Inject_Morphine"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Morphine')] call DFUNC(treatment)); }; @@ -660,7 +661,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(treatment)); }; class Epinephrine: Morphine { - displayName = "Epinephrine"; + displayName = "$STR_ACE_Medical_Inject_Epinephrine"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(treatment)); }; @@ -729,8 +730,8 @@ class CfgVehicles { class ACE_LegLeft { runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation)); - class Bandage_LeftLeg { - displayName = "Bandage Left Leg"; + class Bandage { + displayName = "$STR_ACE_Medical_Bandage_HitLeftLeg"; distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(treatment)); @@ -773,7 +774,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(treatment)); }; class Morphine: fieldDressing { - displayName = "Morphine"; + displayName = "$STR_ACE_Medical_Inject_Morphine"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment)); }; @@ -783,7 +784,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(treatment)); }; class Epinephrine: Morphine { - displayName = "Epinephrine"; + displayName = "$STR_ACE_Medical_Inject_Epinephrine"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(treatment)); }; @@ -841,8 +842,8 @@ class CfgVehicles { class ACE_LegRight { runOnHover = 1; statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation)); - class Bandage_RightLeg { - displayName = "Bandage Right Leg"; + class Bandage { + displayName = "$STR_ACE_Medical_Bandage_HitRightLeg"; distance = 2.0; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(treatment)); @@ -885,7 +886,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(treatment)); }; class Morphine: fieldDressing { - displayName = "Morphine"; + displayName = "$STR_ACE_Medical_Inject_Morphine"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Morphine')] call DFUNC(treatment)); }; @@ -895,7 +896,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(treatment)); }; class Epinephrine: Morphine { - displayName = "Epinephrine"; + displayName = "$STR_ACE_Medical_Inject_Epinephrine"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(canTreat)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(treatment)); }; diff --git a/addons/medical/CfgWeapons.hpp b/addons/medical/CfgWeapons.hpp index 3eb30929d7..81d9491d78 100644 --- a/addons/medical/CfgWeapons.hpp +++ b/addons/medical/CfgWeapons.hpp @@ -1,25 +1,25 @@ class CfgWeapons { - class ItemCore; - class InventoryItem_Base_F; - class InventoryFirstAidKitItem_Base_F; - class MedikitItem; - - // ITEMS - class FirstAidKit: ItemCore { - type = 0; - class ItemInfo: InventoryFirstAidKitItem_Base_F { - mass = 4; - type = 201; + class ItemCore; + class InventoryItem_Base_F; + class InventoryFirstAidKitItem_Base_F; + class MedikitItem; + + // ITEMS + class FirstAidKit: ItemCore { + type = 0; + class ItemInfo: InventoryFirstAidKitItem_Base_F { + mass = 4; + type = 201; + }; }; - }; - class Medikit: ItemCore { - type = 0; - class ItemInfo: MedikitItem { - mass = 60; - type = 201; + class Medikit: ItemCore { + type = 0; + class ItemInfo: MedikitItem { + mass = 60; + type = 201; + }; }; - }; // @todo localize class ACE_ItemCore; diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index d23a02225f..bddd1893d8 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -217,7 +217,7 @@ if (isNil QGVAR(level)) then { }, 0, []] call CBA_fnc_addPerFrameHandler; // broadcast injuries to JIP clients in a MP session -if (isMultiplayer) then { +if (isMultiplayer and GVAR(level) >= 2) then { [QGVAR(onPlayerConnected), "onPlayerConnected", { if (isNil QGVAR(InjuredCollection)) then { GVAR(InjuredCollection) = []; diff --git a/addons/medical/functions/fnc_canTreat.sqf b/addons/medical/functions/fnc_canTreat.sqf index 0c48222977..6a49652301 100644 --- a/addons/medical/functions/fnc_canTreat.sqf +++ b/addons/medical/functions/fnc_canTreat.sqf @@ -39,19 +39,16 @@ if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exi _locations = getArray (_config >> "treatmentLocations"); _return = true; -if (isText (_config >> "Condition")) then { - _condition = getText(_config >> "condition"); - if (_condition != "") then { - if (isnil _condition) then { - _condition = compile _condition; - } else { - _condition = missionNamespace getvariable _condition; - }; - if (typeName _condition == "BOOL") then { - _return = _condition; - } else { - _return = [_caller, _target, _selectionName, _className] call _condition; - }; +if (getText (_config >> "condition") != "") then { + if (isnil _condition) then { + _condition = compile _condition; + } else { + _condition = missionNamespace getvariable _condition; + }; + if (typeName _condition == "BOOL") then { + _return = _condition; + } else { + _return = [_caller, _target, _selectionName, _className] call _condition; }; }; if (!_return) exitwith {false}; diff --git a/addons/medical/functions/fnc_displayPatientInformation.sqf b/addons/medical/functions/fnc_displayPatientInformation.sqf index 36a1e39511..0387547720 100644 --- a/addons/medical/functions/fnc_displayPatientInformation.sqf +++ b/addons/medical/functions/fnc_displayPatientInformation.sqf @@ -75,9 +75,17 @@ if (_show) then { }; }foreach _openWounds; } else { - // TODO handle basic medical colors for body part selections here - + { + _selectionBloodLoss set [_forEachIndex, _target getHitPointDamage _x]; + if (_target getHitPointDamage _x > 0.1) then { + // @todo localize + _allInjuryTexts pushBack format ["%1 %2", + ["Lightly wounded", "Heavily wounded"] select (_target getHitPointDamage _x > 0.5), + ["head", "torso", "left arm", "right arm", "left leg", "right leg"] select _forEachIndex + ]; + }; + } forEach ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]; }; // Handle the body image coloring diff --git a/addons/medical/functions/fnc_handleDamage_basic.sqf b/addons/medical/functions/fnc_handleDamage_basic.sqf index f31c9f186d..600101e7eb 100644 --- a/addons/medical/functions/fnc_handleDamage_basic.sqf +++ b/addons/medical/functions/fnc_handleDamage_basic.sqf @@ -112,8 +112,20 @@ if (_selection == "") then { }; -// Assign orphan structural damage to torso; -// @todo +// Assign orphan structural damage to torso +[{ + private ["_unit", "_damagesum"]; + _unit = _this select 0; + _damagesum = (_unit getHitPointDamage "HitHead") + + (_unit getHitPointDamage "HitBody") + + (_unit getHitPointDamage "HitLeftArm") + + (_unit getHitPointDamage "HitRightArm") + + (_unit getHitPointDamage "HitLeftLeg") + + (_unit getHitPointDamage "HitRightLeg"); + if (_damagesum < 0.06 and damage _unit > 0.06 and alive _unit) then { + _unit setHitPointDamage ["HitBody", damage _unit]; + }; +}, [_unit], 2, 0.1] call EFUNC(common,waitAndExecute); if (_selection == "") then { @@ -137,7 +149,7 @@ if (_legdamage >= LEGDAMAGETRESHOLD1) then { } else { if (_unit getHitPointDamage "HitLegs" != 0) then {_unit setHitPointDamage ["HitLegs", 0]}; }; -// @ŧodo: force prone for completely fucked up legs. +// @todo: force prone for completely fucked up legs. // Arm Damage @@ -171,9 +183,8 @@ if (_selection == "" and _damageReturn < 1 and !(_unit getVariable [QGVAR(isUnconscious), False] )) then { - // random chance to kill AI instead of knocking them out - if (_unit getVariable [QGVAR(allowUnconscious), ([_unit] call EFUNC(common,isPlayer)) or random 1 > 0.5]) then { - hint "unconscious"; // @todo + if (_unit getVariable [QGVAR(allowUnconscious), ([_unit] call EFUNC(common,isPlayer)) or random 1 > 0.3]) then { + [_unit, true] call FUNC(setUnconscious); } else { _damageReturn = 1; }; diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index e7c55d5d08..fc8522b93c 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -16,6 +16,11 @@ private ["_unit", "_heartRate","_bloodPressure","_bloodVolume","_painStatus", "_lastTimeValuesSynced", "_syncValues"]; _unit = _this select 0; +_interval = time - (_unit getVariable [QGVAR(lastMomentVitalsHandled), 0]); +_unit setVariable [QGVAR(lastMomentVitalsHandled), time]; + +if (_interval == 0) exitWith {}; + _lastTimeValuesSynced = _unit getvariable [QGVAR(lastMomentValuesSynced), 0]; _syncValues = time - _lastTimeValuesSynced >= (10 + floor(random(10))); if (_syncValues) then { @@ -60,24 +65,47 @@ if (_painStatus > 0) then { }; }; +if (GVAR(level) == 1) then { + // reduce pain + if (_unit getVariable [QGVAR(pain), 0] > 0) then { + _unit setVariable [QGVAR(pain), ((_unit getVariable QGVAR(pain)) - 0.001 * _interval) max 0, _syncValues]; + }; -if (_bloodVolume < 30) exitwith { - [_unit] call FUNC(setDead); -}; + // reduce painkillers + if (_unit getVariable [QGVAR(morphine), 0] > 0) then { + _unit setVariable [QGVAR(morphine), ((_unit getVariable QGVAR(morphine)) - 0.0015 * _interval) max 0, _syncValues]; + }; -if ([_unit] call EFUNC(common,isAwake)) then { - if (_bloodVolume < 60) then { - if (random(1) > 0.9) then { - [_unit] call FUNC(setUnconscious); + // bleeding + _blood = _unit getVariable [QGVAR(bloodVolume), 100]; + _blood = (_blood - 0.4 * (damage _unit) * _interval) max 0; + if (_blood != (_unit getVariable [QGVAR(bloodVolume), 100])) then { + _unit setVariable [QGVAR(bloodVolume), _blood, _syncValues]; + if (_blood <= 35 and !(_unit getVariable [QGVAR(isUnconscious), false])) then { + [_unit, true] call FUNC(setUnconscious); + }; + if (_blood == 0) then { + [_unit] call FUNC(setDead); }; }; }; // handle advanced medical, with vitals if (GVAR(level) >= 2) then { + if (_bloodVolume < 30) exitwith { + [_unit] call FUNC(setDead); + }; + + if ([_unit] call EFUNC(common,isAwake)) then { + if (_bloodVolume < 60) then { + if (random(1) > 0.9) then { + [_unit] call FUNC(setUnconscious); + }; + }; + }; // Set the vitals - _heartRate = (_unit getvariable [QGVAR(heartRate), 0]) + ([_unit] call FUNC(getHeartRateChange)); + _heartRate = (_unit getvariable [QGVAR(heartRate), 0]) + ([_unit] call FUNC(getHeartRateChange)) * _interval; _unit setvariable [QGVAR(heartRate), _heartRate, _syncValues]; _bloodPressure = [_unit] call FUNC(getBloodPressure); @@ -88,12 +116,12 @@ if (GVAR(level) >= 2) then { _airwayStatus = _unit getvariable [QGVAR(airwayStatus), 100]; if (((_unit getvariable [QGVAR(airwayOccluded), false]) || (_unit getvariable [QGVAR(airwayCollapsed), false])) && !((_unit getvariable [QGVAR(airwaySecured), false]))) then { if (_airwayStatus >= 0.5) then { - _unit setvariable [QGVAR(airwayStatus), _airwayStatus - 0.5, _syncValues]; + _unit setvariable [QGVAR(airwayStatus), _airwayStatus - 0.5 * _interval, _syncValues]; }; } else { if !((_unit getvariable [QGVAR(airwayOccluded), false]) || (_unit getvariable [QGVAR(airwayCollapsed), false])) then { if (_airwayStatus < 100) then { - _unit setvariable [QGVAR(airwayStatus), (_airwayStatus + 1.5) min 100, _syncValues]; + _unit setvariable [QGVAR(airwayStatus), (_airwayStatus + 1.5 * _interval) min 100, _syncValues]; }; }; }; @@ -108,7 +136,7 @@ if (GVAR(level) >= 2) then { // Check vitals for medical status // TODO check for in revive state instead of variable // TODO Implement cardiac arrest. - _bloodPressureL = _bloodPressure select 0; + _bloodPressureL = _bloodPressure select 0; _bloodPressureH = _bloodPressure select 1; if (!(_unit getvariable [QGVAR(inCardiacArrest),false])) then { diff --git a/addons/medical/functions/fnc_isInMedicalVehicle.sqf b/addons/medical/functions/fnc_isInMedicalVehicle.sqf new file mode 100644 index 0000000000..e610a5cf3f --- /dev/null +++ b/addons/medical/functions/fnc_isInMedicalVehicle.sqf @@ -0,0 +1,23 @@ +/* + * Author: KoffeinFlummi + * Checks if a unit is in a medical vehicle. + * + * Arguments: + * 0: unit to be checked + * + * Return Value: + * Is unit in medical vehicle? + * + * Public: Yes + */ + +private ["_unit", "_vehicle"]; + +_unit = _this select 0; +_vehicle = vehicle _unit; + +if (_unit == _vehicle) exitWith {false}; +if (_unit in [driver _vehicle, gunner _vehicle, commander _vehicle]) exitWith {false}; + +// @todo: variable names standard? +_vehicle getVariable [QGVAR(isMedic), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "attendant") == 1] diff --git a/addons/medical/functions/fnc_isMedic.sqf b/addons/medical/functions/fnc_isMedic.sqf index d3ece4c8b0..cc07948f4b 100644 --- a/addons/medical/functions/fnc_isMedic.sqf +++ b/addons/medical/functions/fnc_isMedic.sqf @@ -1,5 +1,5 @@ /* - * Author: Glowbal + * Author: Glowbal, KoffeinFlummi * Check if a unit is any medical class * * Arguments: @@ -18,18 +18,7 @@ private ["_unit","_class","_return"]; _unit = _this select 0; _medicN = if (count _this > 1) then {_this select 1} else {1}; -_return = false; -if (GVAR(medicSetting) >= 1) then { - _class = _unit getvariable [QGVAR(medicClass), 0]; - if (GVAR(medicSetting) == 1) then { - _return = _class > 0; - } else { - if (_class >= _medicN) then { - _return = true; - }; - }; -} else { - _return = true; -}; +_class = _unit getVariable [QGVAR(medicClass), + getNumber (configFile >> "CfgVehicles" >> typeOf _unit >> "attendant")]; -_return; +_class >= _medicN min GVAR(medicSetting) diff --git a/addons/medical/functions/fnc_setHitPointDamage.sqf b/addons/medical/functions/fnc_setHitPointDamage.sqf index 473852b159..a9505b2150 100644 --- a/addons/medical/functions/fnc_setHitPointDamage.sqf +++ b/addons/medical/functions/fnc_setHitPointDamage.sqf @@ -1,6 +1,6 @@ /* * Author: KoffeinFlummi - * My very own setHitPointDamage since BIS's one is buggy when affecting a remote unit. + * My very own setHitPointDamage since BIS' one is buggy when affecting a remote unit. * It also doesn't change the overall damage. This does. * * Arguments: @@ -16,6 +16,10 @@ */ #include "script_component.hpp" +#define LEGDAMAGETRESHOLD1 1 +#define LEGDAMAGETRESHOLD2 1.7 +#define ARMDAMAGETRESHOLD1 1 +#define ARMDAMAGETRESHOLD2 1.7 private ["_unit", "_selection", "_damage", "_selections", "_damages", "_damageOld", "_damageSumOld", "_damageNew", "_damageSumNew", "_damageFinal"]; @@ -76,3 +80,22 @@ _unit setDamage _damageNew; _damageFinal = (_damages select _forEachIndex); _unit setHitPointDamage [_x, _damageFinal]; } forEach _selections; + +// Leg Damage +_legdamage = (_unit getHitPointDamage "HitLeftLeg") + (_unit getHitPointDamage "HitRightLeg"); +if (_legdamage >= LEGDAMAGETRESHOLD1) then { + if (_unit getHitPointDamage "HitLegs" != 1) then {_unit setHitPointDamage ["HitLegs", 1]}; +} else { + if (_unit getHitPointDamage "HitLegs" != 0) then {_unit setHitPointDamage ["HitLegs", 0]}; +}; +// @ŧodo: force prone for completely fucked up legs. + + +// Arm Damage +_armdamage = (_unit getHitPointDamage "HitLeftArm") + (_unit getHitPointDamage "HitRightArm"); +if (_armdamage >= ARMDAMAGETRESHOLD1) then { + if (_unit getHitPointDamage "HitHands" != 1) then {_unit setHitPointDamage ["HitHands", 1]}; +} else { + if (_unit getHitPointDamage "HitHands" != 0) then {_unit setHitPointDamage ["HitHands", 0]}; +}; +// @todo: Drop weapon for full damage. diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf index 890f4d2787..e27d7f21f7 100644 --- a/addons/medical/functions/fnc_setUnconscious.sqf +++ b/addons/medical/functions/fnc_setUnconscious.sqf @@ -35,6 +35,12 @@ if (!local _unit) exitwith { _unit setvariable ["ACE_isUnconscious", true, true]; _unit setUnconscious true; +// @todo: mute player? +if (_unit == ACE_player) then { + if (visibleMap) then {openMap false}; + closeDialog 0; +}; + // If a unit has the launcher out, it will sometimes start selecting the primairy weapon while unconscious, // therefor we force it to select the primairy weapon before going unconscious if ((vehicle _unit) isKindOf "StaticWeapon") then { diff --git a/addons/medical/functions/fnc_treatmentBasic_bandage.sqf b/addons/medical/functions/fnc_treatmentBasic_bandage.sqf index 39b910d6e4..4b07e989aa 100644 --- a/addons/medical/functions/fnc_treatmentBasic_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_bandage.sqf @@ -32,6 +32,4 @@ if (_selection == "all") then { _damage = ((_target getHitPointDamage _point) - BANDAGEHEAL) max 0; [_target, _point, _damage] call FUNC(setHitPointDamage); - - // @todo: leg/arm damage - in setHitPointDamage? }; diff --git a/addons/medical/functions/fnc_treatmentBasic_epipen.sqf b/addons/medical/functions/fnc_treatmentBasic_epipen.sqf index e616327673..644e98c390 100644 --- a/addons/medical/functions/fnc_treatmentBasic_epipen.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_epipen.sqf @@ -15,7 +15,6 @@ */ #include "script_component.hpp" -#define BLOODBAGHEAL 70 private ["_caller", "_target","_className"]; _caller = _this select 0; diff --git a/addons/medical/functions/fnc_treatmentBasic_morphine.sqf b/addons/medical/functions/fnc_treatmentBasic_morphine.sqf index 30c87b6f05..d8d793d0bc 100644 --- a/addons/medical/functions/fnc_treatmentBasic_morphine.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_morphine.sqf @@ -23,11 +23,9 @@ _target = _this select 1; _className = _this select 3; // reduce pain, pain sensitivity -_morphine = (_target getVariable [QGVAR(morphine), 0] + MORPHINEHEAL) min 1; +_morphine = ((_target getVariable [QGVAR(morphine), 0]) + MORPHINEHEAL) min 1; _target setVariable [QGVAR(morphine), _morphine, true]; _pain = ((_target getVariable [QGVAR(pain), 0]) - MORPHINEHEAL) max 0; _target setVariable [QGVAR(pain), _pain, true]; // @todo overdose - -// @todo pain, painkiller reduction diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 6b63aaa416..6317f97b06 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1,73 +1,243 @@ + + + Inject Morphine + Morphin injizieren + Inyectar Morfina + Wstrzyknij morfinę + Aplikovat Morfin + Ввести морфин + Morphine + Morfium + Injetar Morfina + Inietta Morfina + + + Inject Epinephrine + Epinephrine injizieren + Inyectar Epinefrina + Wtrzyknij adrenalinę + Aplikovat Adrenalin + Ввести андреналил + Adrénaline + Adrenalin + Injetar Epinefrina + Inietta Epinefrina + + + Transfuse Blood + Bluttransfusion + Transfundir sangre + Przetocz krew + Transfúze krve + Перелить кровь + Transfusion + Infúzió + Transfundir Sangue + Effettua Trasfusione + + + Bandage + Verbinden + Venda + Bandaż + Obvázat + Pansement + Benda + Kötözés + Atadura + Перевязать + + + Bandage Head + Kopf verbinden + Vendar la cabeza + Bandażuj głowę + Obvázat hlavu + Перевязать голову + Pansement Tête + Fej kötözése + Atar Cabeça + Benda la testa + + + Bandage Torso + Torso verbinden + Vendar el torso + Bandażuj tors + Obvázat hruď + Перевязать торс + Pansement Torse + Felsőtest kötözése + Atar Tronco + Benda il torso + + + Bandage Left Arm + Arm links verbinden + Vendar el brazo izquierdo + Bandażuj lewe ramię + Obvázat levou ruku + Перевязать левую руку + Pansement Bras Gauche + Bal kar kötözése + Atar Braço Esquerdo + Benda il braccio sinistro + + + Bandage Right Arm + Arm rechts verbinden + Vendar el brazo derecho + Bandażuj prawe ramię + Obvázat pravou ruku + Перевязать правую руку + Pansement Bras Droit + Jobb kar kötözése + Atar Braço Direito + Benda il braccio destro + + + Bandage Left Leg + Bein links verbinden + Vendar la pierna izquierda + Bandażuj lewą nogę + Obvázat levou nohu + Перевязать левую ногу + Pansement Jambe Gauche + Bal láb kötözése + Atar Perna Esquerda + Benda la gamba sinistra + + + Bandage Right Leg + Bein rechts verbinden + Vendar la pierna derecha + Bandażuj prawą nogę + Obvázat pravou nohu + Перевязать правую ногу + Pansement Jambe Droite + Jobb láb kötözése + Atar Perna Direita + Benda la gamba destra + + + Injecting Morphine ... + Morphin injizieren ... + Inyectando Morfina ... + Wstrzykiwanie morfiny ... + Aplikuju Morfin ... + Введение морфина... + Injection de Morphine... + Morfium beadása... + Injetando Morfina ... + Inietto la morfina ... + + + Injecting Epinephrine ... + Epinephrine injizieren ... + Inyectando Epinefrina ... + Wstrzykiwanie adrenaliny ... + Aplikuju Adrenalin ... + Введение андреналина + Injection d'Adrénaline ... + Adrenalin beadása... + Injetando Epinefrina ... + Inietto l'epinefrina ... + + + Transfusing Blood ... + Bluttransfusion ... + Realizando transfusión ... + Przetaczanie krwi ... + Probíhá transfúze krve ... + Переливание крови... + Transfusion Sanguine ... + Infúzió... + Transfundindo Sangue ... + Effettuo la trasfusione ... + + + Bandaging ... + Verbinden ... + Vendando ... + Bandażowanie ... + Obvazuji ... + Pansement ... + Sto applicando la benda ... + Bekötözés... + Atando ... + Перевязывание.... + + - Minor + Minor - Delayed + Delayed - Immediate + Immediate - Deceased + Deceased - None + None - Normal breathing + Normal breathing Дыхание в норме Respiración normal Respiration Normale Normalny oddech - No breathing + No breathing Дыхания нет No respira Apnée Brak oddechu - Difficult breathing + Difficult breathing Дыхание затруднено Dificultad para respirar Difficultée Respiratoire Trudności z oddychaniem - Almost no breathing + Almost no breathing Дыхания почти нет Casi sin respirar Respiration Faible Prawie brak oddechu - Bleeding + Bleeding Кровотечение Sangrando Seignement Krwawienie zewnętrzne - In Pain + In Pain Испытывает боль Con Dolor A De La Douleur W bólu - Lost a lot of Blood + Lost a lot of Blood Большая кровопотеря Mucha Sangre perdida A Perdu Bcp de Sang Stracił dużo krwi - Tourniquet [CAT] + Tourniquet [CAT] Жгут Torniquete [CAT] Garot [CAT] @@ -76,487 +246,486 @@ - Bandage (Basic) + Bandage (Basic) Повязка (обычная) Vendaje (Básico) Bandage (Standard) Bandaż (jałowy) - Used to cover a wound + Used to cover a wound Для перевязки ран Utilizado para cubrir una herida Utilisé Pour Couvrir Une Blessure Używany w celu przykrycia i ochrony miejsca zranienia - A dressing, that is a particular material used to cover a wound, which is applied over the wound once bleeding has been stemmed. + A dressing, that is a particular material used to cover a wound, which is applied over the wound once bleeding has been stemmed. Повязка, накладываемая поверх раны после остановки кровотечения. Un apósito, material específico utilizado para cubrir una herida, se aplica sobre la herida una vez ha dejado de sangrar. C'est un bandage, qui est fait d'un matériel spécial utiliser pour couvrir une blessure, qui peut etre appliquer des que le seignement as ete stopper. Opatrunek materiałowy, używany do przykrywania ran, zakładany na ranę po zatamowaniu krwawienia. - Packing Bandage + Packing Bandage Тампонирующая повязка Vendaje Compresivo Bandage Mèche Bandaż (uciskowy) - Used to pack medium to large wounds and stem the bleeding + Used to pack medium to large wounds and stem the bleeding Для тампонирования ран среднего и большого размера и остановки кровотечения. Se utiliza para vendar heridas medianas y grandes y detener el sangrado Utiliser pour remplire la cavité créé dans une blessure moyenne et grande. Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. - A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries. + A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries. Повязка для тампонирования раны, остановки кровотечения и лучшего заживления. При тяжелых сочетанных ранениях возможно тампонирование раны. Se utiliza para detener la hemorragia de una herida y favorecer su cicatrización. Se usa en grandes lesiones o politraumatismos. Un bandage servent a etre inseré dans les blessure pour éponger le seignement et faciliter la guerrison. Ce bandage est une option pour soigner les lession de politrauma. Opatrunek stosowany w celu zatrzymania krwawienia i osłony większych ran. - Bandage (Elastic) + Bandage (Elastic) Повязка (давящая) Vendaje (Elástico) Bandage (Élastique) Bandaż (elastyczny) - Bandage kit, Elastic + Bandage kit, Elastic Давящая повязка Vendaje (Elástico) Bandage Compressif Élastique Zestaw bandaży elastycznych. - + Ce bandage peut etre utiliser pour compresser la plaie afin de ralentire le seignement et assurer la tenue du bandage lors de mouvment. Elastyczna opaska podtrzymująca opatrunek oraz usztywniająca okolice stawów. Brinda una compresión uniforme y ofrece soporte extra a una zona lesionada - Tourniquet (CAT) + Tourniquet (CAT) Жгут Torniquete (CAT) Garot (CAT) Staza (typ. CAT) - Slows down blood loss when bleeding + Slows down blood loss when bleeding Уменьшает кровопотерю при кровотечении. Reduce la velocidad de pérdida de sangre Ralentit le seignement Zmniejsza ubytek krwi z kończyn w przypadku krwawienia. - A constricting device used to compress venous and arterial circulation in effect inhibiting or slowing blood flow and therefore decreasing loss of blood. + A constricting device used to compress venous and arterial circulation in effect inhibiting or slowing blood flow and therefore decreasing loss of blood. Жгут используется для прижатия сосудов, приводящего к остановке или значительному уменьшению кровотечения и сокращению кровопотери. Dispositivo utilizado para eliminar el pulso distal y de ese modo controlar la pérdida de sangre Un appareil servent a compresser les artères et veines afin de reduire la perte de sang. Opaska zaciskowa CAT służy do tamowanie krwotoków w sytuacji zranienia kończyn z masywnym krwawieniem tętniczym lub żylnym. - Morphine auto-injector + Morphine auto-injector Морфин в автоматическом шприце Morfina auto-inyectable Auto-injecteur de Morphine Autostrzykawka z morfiną - Used to combat moderate to severe pain experiences + Used to combat moderate to severe pain experiences Для снятия средних и сильных болевых ощущений. Usado para combatir los estados dolorosos moderados a severos Utiliser pour contrer les douleurs modéré à severes. Morfina. Ma silne działanie przeciwbólowe. - An analgesic used to combat moderate to severe pain experiences. + An analgesic used to combat moderate to severe pain experiences. Анальгетик для снятия средних и сильных болевых ощущений. Analgésico usado para combatir los estados dolorosos de moderado a severo. Un Analgésique puissant servant a contrer les douleur modéré a severe. Organiczny związek chemiczny z grupy alkaloidów. Ma silne działanie przeciwbólowe. - Atropin auto-injector + Atropin auto-injector Атропин в автоматическом шприце Atropina auto-inyectable Auto-injecteur d'Atropine Autostrzykawka AtroPen - Used in NBC scenarios + Used in NBC scenarios Применяется для защиты от ОМП Usado en escenarios NBQ Utiliser en cas d'attaque CBRN Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. - A drug used by the Military in NBC scenarios. + A drug used by the Military in NBC scenarios. Препарат, используемый в войсках для защиты от оружия массового поражения. Medicamento usado por Militares en escenarios NBQ Médicament utilisé par l'armée en cas d'attaque CBRN Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. Środek stosowany w przypadku zagrożeń NBC. - Epinephrine auto-injector + Epinephrine auto-injector Адреналин в автоматическом шприце Epinefrina auto-inyectable Auto-injecteur d'épinéphrine Autostrzykawka EpiPen - Increase heart rate and counter effects given by allergic reactions + Increase heart rate and counter effects given by allergic reactions Стимулирует работу сердца и купирует аллергические реакции. Aumenta la frecuencia cardiaca y contraresta los efectos de las reacciones alérgicas Augmente la Fréquance cadiaque et contré les effet d'une reaction Anaphylactique Adrenalina. Zwiększa puls i przeciwdziała efektom wywołanym przez reakcje alergiczne - A drug that works on a sympathetic response to dilate the bronchi, increase heart rate and counter such effects given by allergic reactions (anaphylaxis). Used in sudden cardiac arrest scenarios with decreasing positive outcomes. + A drug that works on a sympathetic response to dilate the bronchi, increase heart rate and counter such effects given by allergic reactions (anaphylaxis). Used in sudden cardiac arrest scenarios with decreasing positive outcomes. Препарат, вызывающий симпатическую реакцию, приводящую к расширению бронхов, увеличению частоты сердечных сокращений и купированию аллергических реакций (анафилактического шока). Применяется при остановке сердца с уменьшением вероятности благоприятного исхода. Medicamento que dilata los bronquios, aumenta la frecuencia cardiaca y contrarresta los efectos de las reacciones alérgicas (anafilaxis). Se utiliza en caso de paros cardiacos repentinos. Un medicament qui fonctione sur le systeme sympatique créan une dilatation des bronches, augmente la fréquance cardiaque et contre les effet d'une reaction alergique (anaphylaxie). Utiliser lors d'arret cardio-respiratoire pour augmenté les chances retrouver un ryhtme. EpiPen z adrenaliną ma działanie sympatykomimetyczne, tj. pobudza receptory alfa- i beta-adrenergiczne. Pobudzenie układu współczulnego prowadzi do zwiększenia częstotliwości pracy serca, zwiększenia pojemności wyrzutowej serca i przyśpieszenia krążenia wieńcowego. Pobudzenie oskrzelowych receptorów beta-adrenergicznych wywołuje rozkurcz mięśni gładkich oskrzeli, co w efekcie zmniejsza towarzyszące oddychaniu świsty i duszności. - Plasma IV (1000ml) + Plasma IV (1000ml) Плазма для в/в вливания (1000 мл) Plasma Intravenoso (1000ml) Plasma Sanguin IV (1000ml) Osocze IV (1000ml) - A volume-expanding blood supplement. + A volume-expanding blood supplement. Дополнительный препарат, применяемый при возмещении объема крови. Suplemento para expandir el volumen sanguíneo. Supplement visant a remplacer les volume sanguin Składnik krwi, używany do zwiększenia jej objętości. - A volume-expanding blood supplement. + A volume-expanding blood supplement. Дополнительный препарат, применяемый при возмещении объема крови. Suplemento para expandir el volumen sanguíneo. Supplement visant a remplacer le volume sanguin et remplace les plaquettes. Składnik krwi, używany do zwiększenia jej objętości. - Plasma IV (500ml) + Plasma IV (500ml) Плазма для в/в вливания (500 мл) Plasma Intravenoso (500ml) Plasma Sanguin IV (500ml) Osocze IV (500ml) - Plasma IV (250ml) + Plasma IV (250ml) Плазма для в/в вливания (250 мл) Plasma Intravenoso (250ml) Plasma Sanguin (250ml) Osocze IV (250ml) - Blood IV (1000ml) + Blood IV (1000ml) Кровь для переливания (1000 мл) Sangre Intravenosa (1000ml) Cullot Sanguin IV (1000ml) Krew IV (1000ml) - Blood IV, for restoring a patients blood (keep cold) + Blood IV, for restoring a patients blood (keep cold) Пакет крови для возмещения объема потерянной крови (хранить в холодильнике) Sangre Intravenosa, para restarurar el volumen sanguíneo (mantener frío) Cullot Sanguin IV, pour remplacer le volume sanguin (garder Réfrigeré) Krew IV, używana do uzupełnienia krwi u pacjenta, trzymać w warunkach chłodniczych - O Negative infusion blood used in strict and rare events to replenish blood supply usually conducted in the transport phase of medical care. + O Negative infusion blood used in strict and rare events to replenish blood supply usually conducted in the transport phase of medical care. Кровь I группы, резус-отрицательная, применяется по жизненным показаниям для возмещения объема потерянной крови на догоспитальном этапе оказания медицинской помощи. Cullot Sanguin O- ,utiliser seulement lors de perte sanguine majeur afin de remplacer le volume sanguin perdu. Habituelment utiliser lors du transport ou dans un etablisement de soin. Krew 0 Rh-, używana w rzadkich i szczególnych przypadkach do uzupełnienia krwi u pacjenta, zazwyczaj w trakcie fazie transportu rannej osoby do szpitala. Utilice sólo durante gran pérdida de sangre para reemplazar el volumen de sangre perdido. Uso habitual durante el transporte de heridos. - Blood IV (500ml) + Blood IV (500ml) Кровь для переливания (500 мл) Sangre Intravenosa (500ml) Cullot Sanguin IV (500ml) Krew IV (500ml) - Blood IV (250ml) + Blood IV (250ml) Кровь для переливания (250 мл) Sangre Intravenosa (250ml) Cullot Sanguin IV (250ml) Krew IV (250ml) - Saline IV (1000ml) + Saline IV (1000ml) Физраствор для в/в вливания (1000 мл) Solución Salina Intravenosa (1000ml) solution Saline 0.9% IV (1000ml) Solanka 0,9% IV (1000ml) - Saline IV, for restoring a patients blood + Saline IV, for restoring a patients blood Пакет физраствора для возмещения объема потерянной крови Solución Salina Intravenosa, para restaurar el volumen sanguíneo Solution Saline 0.9% IV, pour retablir temporairement la tention arteriel Solanka 0,9%, podawana dożylnie (IV), używana w celu uzupełnienia krwi u pacjenta - A medical volume-replenishing agent introduced into the blood system through an IV infusion. + A medical volume-replenishing agent introduced into the blood system through an IV infusion. Пакет физиологического раствора для возмещения объема потерянной крови путем внутривенного вливания. Suero fisiológico inoculado al torrente sanguíneo de forma intravenosa. Un remplacment temporaire pour rétablir la tention artériel lors de perte sanguine, étant ajouter par intraveineuse Używany w medycynie w formie płynu infuzyjnego jako środek nawadniający i uzupełniający niedobór elektrolitów, podawany dożylnie (IV). - Saline IV (500ml) + Saline IV (500ml) Физраствор для в/в вливания (500 мл) Solución Salina Intravenosa (500ml) Solution Saline 0.9% IV (500ml) Solanka 0,9% IV (500ml) - Saline IV (250ml) + Saline IV (250ml) Физраствор для в/в вливания (250 мл) Solución Salina Intravenosa (250ml) Solution Saline 0.9% IV (250ml) Solanka 0,9% IV (250ml) - Basic Field Dressing (QuikClot) + Basic Field Dressing (QuikClot) Первичный перевязочный пакет (QuikClot) Vendaje Básico (Coagulante) Bandage Regulier (Coagulant) Opatrunek QuikClot - QuikClot bandage + QuikClot bandage Гемостатический пакет QuikClot Venda Coagulante Bandage coagulant Podstawowy opatrunek stosowany na rany - + Un bandage servant a coaguler les seignements mineur à moyen. Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. Vendaje Hemostático con coagulante que detiene el sangrado. - Personal Aid Kit + Personal Aid Kit Аптечка Kit de Soporte Vital Avanzado Équipement de support Vitale Apteczka osobista - Includes various treatment kit needed for stitching or advanced treatment + Includes various treatment kit needed for stitching or advanced treatment Содержит различные материалы и инструменты для зашивания ран и оказания специальной медпомощи. Incluye material médico para tratamientos avanzados Inclue du matériel medical pour les traitement avancé, tel les point de suture. Zestaw środków medycznych do opatrywania ran i dodatkowego leczenia po-urazowego - + - Surgical Kit + Surgical Kit Хирургический набор Kit Quirúrgico - Surgical Kit for in field advanced medical treatment + Surgical Kit for in field advanced medical treatment Набор для хирургической помощи в полевых условиях Kit Quirúrgico para el tratamiento avanzado en el campo de batalla - Surgical Kit for in field advanced medical treatment + Surgical Kit for in field advanced medical treatment Набор для хирургической помощи в полевых условиях Kit Quirúrgico para el tratamiento avanzado en el campo de batalla - Bodybag + Bodybag Мешок для трупов Bolsa para cadáveres - A bodybag for dead bodies + A bodybag for dead bodies Мешок для упаковки трупов Bolsa para cadáveres - A bodybag for dead bodies + A bodybag for dead bodies Мешок для упаковки трупов Bolsa para cadáveres - Blood Pressure + Blood Pressure Артериальное давление Presión Arterial - Checking Blood Pressure.. + Checking Blood Pressure.. Проверка артериального давления... Comprobando Presión Arterial... - You checked %1 + You checked %1 Вы осмотрели раненого %1 Examinando a %1 - You find a blood pressure of %2/%3 + You find a blood pressure of %2/%3 Артериальное давление %2/%3 La Presión Arterial es %2/%3 - You find a low blood pressure + You find a low blood pressure Давление низкое La Presión Arterial es baja - You find a normal blood pressure + You find a normal blood pressure Давление нормальное La Presión Arterial es normal - You find a high blood pressure + You find a high blood pressure Давление высокое La Presión Arterial es alta - You find no blood pressure + You find no blood pressure Давления нет No hay Presión Arterial - You fail to find a blood pressure + You fail to find a blood pressure Артериальное давление не определяется No puedes encontrar Presión Arterial - Pulse + Pulse Пульс Pulso - Checking Heart Rate.. + Checking Heart Rate.. Проверка пульса... Comprobando Pulso... - You checked %1 + You checked %1 Вы осмотрели раненого %1 Examinando a %1 - You find a Heart Rate of %2 + You find a Heart Rate of %2 Пульс %2 уд./мин. El Pulso es %2 - You find a weak Heart Rate + You find a weak Heart Rate Пульс слабый El Pulso es débil - You find a strong Heart Rate + You find a strong Heart Rate Пульс учащенный El Pulso está acelerado - You find a normal Heart Rate + You find a normal Heart Rate Пульс в норме El Pulso es bueno - You find no Heart Rate + You find no Heart Rate Пульс не прощупывается No tiene Pulso - Response + Response Реакция Reacciona - You check response of patient + You check response of patient Вы проверяете реакцию раненого Compruebas si el paciente reacciona - %1 is responsive + %1 is responsive %1 реагирует на раздражители %1 ha reaccionado - - %1 is not responsive + %1 is not responsive %1 не реагирует %1 no reacciona - You checked %1 + You checked %1 Вы осмотрели раненого %1 Examinas a %1 - Bandaging + Bandaging Перевязка... Vendando - Bandaged + Bandaged Повязка наложена Vendado - You bandage %1 (%2) + You bandage %1 (%2) Вы перевязали раненого %1 (%2) Aplicas vendaje a %1 en %2 - %1 is bandaging you + %1 is bandaging you %1 перевязывает вас %1 te está vendando - You start stitching injures from %1 (%2) + You start stitching injures from %1 (%2) Вы зашиваете ранения от %1 (%2) Estás suturando heridas de %1 en %2 - Stitching + Stitching Наложение швов Suturando - You treat the airway of %1 + You treat the airway of %1 Вы интубируете раненого %1 Estás intubando a %1 - Airway + Airway Дыхательные пути Vías Aéreas - %1 is treating your airway + %1 is treating your airway %1 проводит вам интубацию %1 te está intubando - +