diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index af6ab70854..a2e6e53c4d 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -36,7 +36,7 @@ We welcome anyone to contribute to this repository. Issues that we are actively
When contributing to this repository, please first discuss the change you wish to make via issue or [Discord](https://acemod.org/discord) with the [ACE3 project maintainers](https://ace3.acemod.org/team.html) before making a change. This may not be necessary if you are contributing for something which has an existing issue in our repository already.
-1. Please make a pull request (PR) as early as possible. This lets use help you in the proces of developing it. When opening a work in progress pull request, mark your PR with a `WIP:` prefix.
+1. Please make a pull request (PR) as early as possible. This lets use help you in the proces of developing it. When opening a work in progress pull request, use GitHub's draft feature. This will mark the PR as a work in progress and will prevent it from being merged until you mark it as ready for review.
2. Describe what this pull request will do and how it solves this in the description of your PR. A clear intent and description of the way the issue is resolved will help us to review the PR more efficiently.
3. Please follow our [Development Guidelines](https://ace3.acemod.org/wiki/development/).
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 5f42f937fe..5bdf51df2a 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -4,6 +4,6 @@
### IMPORTANT
-- [ ] If the contribution affects [the documentation](https://github.com/acemod/ACE3/tree/master/docs), please include your changes in this pull request so the documentation will appear on the [website](https://ace3.acemod.org/).
-- [ ] [Development Guidelines](https://ace3.acemod.org/wiki/development/) are read, understood and applied.
-- [ ] Title of this PR uses our standard template `Component - Add|Fix|Improve|Change|Make|Remove {changes}`.
+- If the contribution affects [the documentation](https://github.com/acemod/ACE3/tree/master/docs), please include your changes in this pull request so the documentation will appear on the [website](https://ace3.acemod.org/).
+- [Development Guidelines](https://ace3.acemod.org/wiki/development/) are read, understood and applied.
+- Title of this PR uses our standard template `Component - Add|Fix|Improve|Change|Make|Remove {changes}`.
diff --git a/.hemtt/project.toml b/.hemtt/project.toml
index 793ff11c23..bdb2beb67b 100644
--- a/.hemtt/project.toml
+++ b/.hemtt/project.toml
@@ -27,6 +27,7 @@ exclude = [
"/dev/",
"medical_ai/statemachine.sqf",
"common/functions/fnc_dummy.sqf",
+ "zeus/functions/fnc_zeusAttributes.sqf",
]
[hemtt.config]
diff --git a/addons/chemlights/stringtable.xml b/addons/chemlights/stringtable.xml
index ce31e952ab..3454acd9d8 100644
--- a/addons/chemlights/stringtable.xml
+++ b/addons/chemlights/stringtable.xml
@@ -70,7 +70,7 @@
ケミライト (オレンジ)
Świetlik (pomarańczowy)
Knicklicht (orange)
- 켐라이트 (주황)
+ 화학조명 (주황)
Cyalume (orange)
Luce chimica (Arancione)
螢光棒 (橘色)
diff --git a/addons/common/functions/fnc_swayLoop.sqf b/addons/common/functions/fnc_swayLoop.sqf
index ec12f3f0aa..069d908d1a 100644
--- a/addons/common/functions/fnc_swayLoop.sqf
+++ b/addons/common/functions/fnc_swayLoop.sqf
@@ -27,4 +27,4 @@ if (GVAR(swayFactorsMultiplier) isNotEqualTo []) then {
ACE_player setCustomAimCoef (_baseline * _multiplier);
-[FUNC(swayLoop), [], 1] call CBA_fnc_waitAndExecute
+[FUNC(swayLoop), [], 0.5] call CBA_fnc_waitAndExecute
diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml
index 9cb581b91f..1b014d8a9a 100644
--- a/addons/common/stringtable.xml
+++ b/addons/common/stringtable.xml
@@ -1359,7 +1359,7 @@
Toggle
- переключить
+ Przełącz
переключить
Basculer
Cambiar
diff --git a/addons/compat_rhs_usf3/CfgMagazineWells.hpp b/addons/compat_rhs_usf3/CfgMagazineWells.hpp
index a5d8f8c58d..01223ec141 100644
--- a/addons/compat_rhs_usf3/CfgMagazineWells.hpp
+++ b/addons/compat_rhs_usf3/CfgMagazineWells.hpp
@@ -6,6 +6,6 @@ class CfgMagazineWells {
ADDON[] = {QGVAR(pylon_mag_2rnd_hellfire_n)};
};
class ace_hellfire_L {
- ADDON[] = {QGVAR(pylon_mag_2rnd_hellfire_L)};
+ ADDON[] = {QGVAR(pylon_mag_2rnd_hellfire_l)};
};
};
diff --git a/addons/compat_spe/CfgVehicles/spe_boxes.hpp b/addons/compat_spe/CfgVehicles/spe_boxes.hpp
index 2d6afc9b4a..ebf70f5518 100644
--- a/addons/compat_spe/CfgVehicles/spe_boxes.hpp
+++ b/addons/compat_spe/CfgVehicles/spe_boxes.hpp
@@ -31,5 +31,17 @@ class SPE_Fuel_Barrel_US_01: SPE_Fuel_Barrel_base {
EGVAR(refuel,hooks)[] = {{0.2,0,0.22}};
};
class SPE_Fuel_Barrel_German_01: SPE_Fuel_Barrel_base {
+ EGVAR(cargo,size) = 2; //reference SPE_Fuel_Barrel_US_01
+ EGVAR(cargo,canLoad) = 1; //reference SPE_Fuel_Barrel_US_01
+
+ EGVAR(dragging,canCarry) = 1; //reference SPE_Fuel_Barrel_US_01
+ EGVAR(dragging,carryPosition)[] = {0,1,1}; //reference SPE_Fuel_Barrel_US_01
+ EGVAR(dragging,carryDirection) = 0; //reference SPE_Fuel_Barrel_US_01
+
+ EGVAR(dragging,canDrag) = 1; //reference SPE_Fuel_Barrel_US_01
+ EGVAR(dragging,dragPosition)[] = {0,1.2,0}; //reference SPE_Fuel_Barrel_US_01
+ EGVAR(dragging,dragDirection) = 0; //reference SPE_Fuel_Barrel_US_01
+
+ EGVAR(refuel,fuelCargo) = 208; //reference SPE_Fuel_Barrel_US_01
EGVAR(refuel,hooks)[] = {{0.32,0,-0.3}};
};
diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml
index ba76b7f87a..11d2ae62ec 100644
--- a/addons/dragging/stringtable.xml
+++ b/addons/dragging/stringtable.xml
@@ -133,7 +133,7 @@
Pozwól na strzelanie podczas przeciągania
搬送中に射撃許可
允许在拖动时开火
- 사격 중 끌기 가능하게 하기
+ 끌기 중 사격 가능하게 하기
Allow the player to fire their gun while dragging.
@@ -145,7 +145,7 @@
Pozwala graczom strzelać z broni podczas przeciągania obiektów.
プレイヤーが引きずっている最中でも射撃できるようにします。
允许玩家在拖动时开火。
- 플레이어가 무기를 끄는 동안에 무기를 사용할 수 있게합니다.
+ 플레이어가 뭔가를 끌고 있는 동안에 무기를 사용할 수 있게 합니다.
Allow Running with Lightweight Objects
diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml
index c38c226d17..a886a153d8 100644
--- a/addons/explosives/stringtable.xml
+++ b/addons/explosives/stringtable.xml
@@ -249,7 +249,7 @@
M57 Dispositivo de Detonação
Взрыватель M57
M57 起爆装置
- M57 격발기
+ 격발기 (M57)
M57 引爆装置
M57 引爆裝置
M57 Ateşleme Cihazı
@@ -283,7 +283,7 @@
M152 Dispositivo de Detonação
Взрыватель M152
M152 起爆装置
- M152 격발기
+ 격발기 (M152)
M152 引爆装置
M152 引爆裝置
M152 Ateşleme Cihazı
@@ -504,7 +504,7 @@
Desarmando Explosivo...
Обезвреживание...
爆発物を無力化しています・・・
- 폭발물 해체중...
+ 폭발물 해체 중...
正在拆除爆炸物...
炸彈拆除中...
Patlayıcı Imha Ediliyor...
@@ -933,7 +933,7 @@
IED Grande (Urbano, Placa de pressão)
Большое СВУ (городское, нажимного действия)
大きな IED (市街地用、圧力感知)
- 대형 급조폭발물 (시가지, 압력식)
+ 급조폭발물 (대형, 시가지, 압력식)
大型 IED(地表上,压力盘)
大型簡易爆炸裝置 (地表上, 壓力盤)
@@ -948,7 +948,7 @@
IED Grande (Enterrado, Placa de pressão)
Большое СВУ (закопанное, нажимного действия)
大きな IED (埋め込み型、圧力感知)
- 대형 급조폭발물 (묻힘, 압력식)
+ 급조폭발물 (대형, 묻힘, 압력식)
大型 IED(地表下,压力盘)
大型簡易爆炸裝置 (地表下, 壓力盤)
@@ -963,7 +963,7 @@
IED Pequeno(Urbano, Placa de pressão)
Малое СВУ (городское, нажимного действия)
小さな IED (市街地用、圧力感知)
- 소형 급조폭발물 (시가지, 압력식)
+ 급조폭발물 (소형, 시가지, 압력식)
小型 IED(地表上,压力盘)
小型簡易爆炸裝置 (地表上, 壓力盤)
@@ -978,7 +978,7 @@
IED Pequeno (Enterrado, Placa de pressão)
Малое СВУ (закопанное, нажимного действия)
小さな IED (埋め込み型、圧力感知)
- 소형 급조폭발물 (묻힘, 압력식)
+ 급조폭발물 (소형, 묻힘, 압력식)
小型 IED(地表下,压力盘)
小型簡易爆炸裝置 (地表下, 壓力盤)
@@ -994,7 +994,7 @@
Collega a %1
Conectar à %1
%1 へ接続
- %1에 연결중
+ %1에 연결 중
连接到%1
連接到%1
Bağlandı %1
diff --git a/addons/fieldmanual/CfgHints.hpp b/addons/fieldmanual/CfgHints.hpp
index 7b86ba89b6..26d7a14805 100644
--- a/addons/fieldmanual/CfgHints.hpp
+++ b/addons/fieldmanual/CfgHints.hpp
@@ -6,16 +6,20 @@
- Size = '9'
*/
+// INDENT - %11
+// SELF INTERACT KEYBIND - %12
+// INTERACT KEYBIND - %13
+#define BASE_ARGUMENTS "' '", \
+QUOTE([ARR_2('ACE3 Common', QQEGVAR(interact_menu,selfInteractKey))] call FUNC(getKeybindName)), \
+QUOTE([ARR_2('ACE3 Common', QQEGVAR(interact_menu,interactKey))] call FUNC(getKeybindName))
+
+// MEDCIAL MENU KEYBIND - %14
+#define MEDICAL_MENU_KEYBIND QUOTE([ARR_2('ACE3 Common', QQEGVAR(medical_gui,openMedicalMenuKey))] call FUNC(getKeybindName))
+
+
class CfgHints {
class ACE_FieldManual_Base {
- arguments[] = {
- // INDENT - %11
- "' '",
- // SELF INTERACT KEYBIND - %12
- QUOTE([ARR_2('ACE3 Common', QQEGVAR(interact_menu,selfInteractKey))] call FUNC(getKeybindName)),
- // INTERACT KEYBIND - %13
- QUOTE([ARR_2('ACE3 Common', QQEGVAR(interact_menu,interactKey))] call FUNC(getKeybindName))
- };
+ arguments[] = {BASE_ARGUMENTS};
image = "\z\ace\addons\common\data\logo_ace3_ca.paa";
tip = "ACE Wiki";
};
@@ -25,7 +29,7 @@ class CfgHints {
class ACE_ATragMX: ACE_FieldManual_Base {
logicalOrder = 1;
- arguments[] += {QUOTE('ACE_ATragMX' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_ATragMX' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_ATragMX_ShortName);
description = CSTRING(Items_ATragMX_Description);
@@ -33,14 +37,14 @@ class CfgHints {
};
class ACE_BodyBag: ACE_FieldManual_Base {
logicalOrder = 2;
- arguments[] += {QUOTE('ACE_BodyBag' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_BodyBag' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_BodyBag_ShortName);
description = CSTRING(Items_BodyBag_Description);
};
class ACE_CableTie: ACE_FieldManual_Base {
logicalOrder = 3;
- arguments[] += {QUOTE('ACE_CableTie' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_CableTie' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_CableTie_ShortName);
description = CSTRING(Items_CableTie_Description);
@@ -48,7 +52,7 @@ class CfgHints {
};
class ACE_Cellphone: ACE_FieldManual_Base {
logicalOrder = 4;
- arguments[] += {QUOTE('ACE_Cellphone' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Cellphone' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_Cellphone_ShortName);
description = CSTRING(Items_Cellphone_Description);
@@ -56,7 +60,7 @@ class CfgHints {
};
class ACE_Chemlight_Shield: ACE_FieldManual_Base {
logicalOrder = 5;
- arguments[] += {QUOTE('ACE_Chemlight_Shield' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Chemlight_Shield' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_Chemlight_Shield_ShortName);
description = CSTRING(Items_Chemlight_Shield_Description);
@@ -64,7 +68,7 @@ class CfgHints {
};
class ACE_Clackers: ACE_FieldManual_Base {
logicalOrder = 6;
- arguments[] += {QUOTE('ACE_Clacker' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Clacker' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_Clackers_ShortName);
description = CSTRING(Items_Clackers_Description);
@@ -72,7 +76,7 @@ class CfgHints {
};
class ACE_DAGR: ACE_FieldManual_Base {
logicalOrder = 7;
- arguments[] += {QUOTE('ACE_DAGR' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_DAGR' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_DAGR_ShortName);
description = CSTRING(Items_DAGR_Description);
@@ -80,7 +84,7 @@ class CfgHints {
};
class ACE_DeadManSwitch: ACE_FieldManual_Base {
logicalOrder = 8;
- arguments[] += {QUOTE('ACE_DeadManSwitch' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_DeadManSwitch' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_DeadManSwitch_ShortName);
description = CSTRING(Items_DeadManSwitch_Description);
@@ -88,7 +92,7 @@ class CfgHints {
};
class ACE_DefusalKit: ACE_FieldManual_Base {
logicalOrder = 9;
- arguments[] += {QUOTE('ACE_DefusalKit' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_DefusalKit' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_DefusalKit_ShortName);
description = CSTRING(Items_DefusalKit_Description);
@@ -96,7 +100,7 @@ class CfgHints {
};
class ACE_EarPlugs: ACE_FieldManual_Base {
logicalOrder = 10;
- arguments[] += {QUOTE('ACE_EarPlugs' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_EarPlugs' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_EarPlugs_ShortName);
description = CSTRING(Items_EarPlugs_Description);
@@ -104,7 +108,7 @@ class CfgHints {
};
class ACE_EntrenchingTool: ACE_FieldManual_Base {
logicalOrder = 11;
- arguments[] += {QUOTE('ACE_EntrenchingTool' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_EntrenchingTool' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_EntrenchingTool_ShortName);
description = CSTRING(Items_EntrenchingTool_Description);
@@ -118,7 +122,7 @@ class CfgHints {
};
class ACE_FortifyTool: ACE_FieldManual_Base {
logicalOrder = 13;
- arguments[] += {QUOTE('ACE_HuntIR_Monitor' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_HuntIR_Monitor' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_FortifyTool_ShortName);
description = CSTRING(Items_FortifyTool_Description);
@@ -126,7 +130,7 @@ class CfgHints {
};
class ACE_HuntIR_Monitor: ACE_FieldManual_Base {
logicalOrder = 14;
- arguments[] += {QUOTE('ACE_CableTie' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_CableTie' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_HuntIR_Monitor_ShortName);
description = CSTRING(Items_HuntIR_Monitor_Description);
@@ -134,14 +138,14 @@ class CfgHints {
};
class ACE_IR_Strobe: ACE_FieldManual_Base {
logicalOrder = 15;
- arguments[] += {QUOTE('ACE_IR_Strobe_Item' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_IR_Strobe_Item' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_IR_Strobe_ShortName);
description = CSTRING(Items_IR_Strobe_Description);
};
class ACE_Kestrel4500: ACE_FieldManual_Base {
logicalOrder = 16;
- arguments[] += {QUOTE('ACE_Kestrel4500' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Kestrel4500' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_Kestrel4500_ShortName);
description = CSTRING(Items_Kestrel4500_Description);
@@ -149,7 +153,7 @@ class CfgHints {
};
class ACE_Lockpick: ACE_FieldManual_Base {
logicalOrder = 17;
- arguments[] += {QUOTE('ACE_key_lockpick' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_key_lockpick' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_Lockpick_ShortName);
description = CSTRING(Items_Lockpick_Description);
@@ -157,14 +161,14 @@ class CfgHints {
};
class ACE_MapTools: ACE_FieldManual_Base {
logicalOrder = 18;
- arguments[] += {QUOTE('ACE_MapTools' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_MapTools' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_MapTools_ShortName);
description = CSTRING(Items_MapTools_Description);
};
class ACE_MicroDAGR: ACE_FieldManual_Base {
logicalOrder = 19;
- arguments[] += {QUOTE('ACE_microDAGR' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_microDAGR' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_MicroDAGR_ShortName);
description = CSTRING(Items_MicroDAGR_Description);
@@ -186,7 +190,7 @@ class CfgHints {
};
class ACE_Sandbag: ACE_FieldManual_Base {
logicalOrder = 22;
- arguments[] += {QUOTE('ACE_Sandbag_empty' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Sandbag_empty' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_Sandbag_ShortName);
description = CSTRING(Items_Sandbag_Description);
@@ -194,7 +198,7 @@ class CfgHints {
};
class ACE_SpareBarrels: ACE_FieldManual_Base {
logicalOrder = 23;
- arguments[] += {QUOTE('ACE_SpareBarrel_Item' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_SpareBarrel_Item' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_SpareBarrels_ShortName);
description = CSTRING(Items_SpareBarrels_Description);
@@ -209,7 +213,7 @@ class CfgHints {
};
class ACE_Tripod: ACE_FieldManual_Base {
logicalOrder = 25;
- arguments[] += {QUOTE('ACE_Tripod' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_Tripod' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_Tripod_ShortName);
description = CSTRING(Items_Tripod_Description);
@@ -217,7 +221,7 @@ class CfgHints {
};
class ACE_UAVBattery: ACE_FieldManual_Base {
logicalOrder = 26;
- arguments[] += {QUOTE('ACE_UAVBattery' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_UAVBattery' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_UAVBattery_ShortName);
description = CSTRING(Items_UAVBattery_Description);
@@ -232,7 +236,7 @@ class CfgHints {
};
class ACE_Wirecutter: ACE_FieldManual_Base {
logicalOrder = 28;
- arguments[] += {QUOTE('ACE_wirecutter' call FUNC(getItemName))};
+ arguments[] = {BASE_ARGUMENTS, QUOTE('ACE_wirecutter' call FUNC(getItemName))};
displayName = "%14";
displayNameShort = CSTRING(Items_Wirecutter_ShortName);
description = CSTRING(Items_Wirecutter_Description);
@@ -265,63 +269,66 @@ class CfgHints {
category = "ACE_FieldManual";
class ACE_Medical_Treatment_Base: ACE_FieldManual_Base {
- arguments[] += {
- // MEDICAL MENU KEYBIND - %14
- QUOTE([ARR_2('ACE3 Common', QQEGVAR(medical_gui,openMedicalMenuKey))] call FUNC(getKeybindName))
- };
+ arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND};
tip = "Medical Wiki";
};
- class ACE_Adenosine: ACE_Medical_Treatment_Base {
+ class ACE_MedicalMenu: ACE_Medical_Treatment_Base {
logicalOrder = 1;
- arguments[] += {QUOTE('ACE_adenosine' call FUNC(getItemName))};
+ displayName = CSTRING(Medical_Treatment_MedicalMenu_DisplayName);
+ displayNameShort = CSTRING(Medical_Treatment_MedicalMenu_ShortName);
+ description = CSTRING(Medical_Treatment_MedicalMenu_Description);
+ };
+ class ACE_Adenosine: ACE_Medical_Treatment_Base {
+ logicalOrder = 2;
+ arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND, QUOTE('ACE_adenosine' call FUNC(getItemName))};
displayName = "%15";
displayNameShort = CSTRING(Medical_Treatment_Adenosine_ShortName);
description = CSTRING(Medical_Treatment_Adenosine_Description);
};
class ACE_Bandages: ACE_Medical_Treatment_Base {
- logicalOrder = 2;
+ logicalOrder = 3;
displayName = CSTRING(Medical_Treatment_Bandages_DisplayName);
displayNameShort = CSTRING(Medical_Treatment_Bandages_ShortName);
description = CSTRING(Medical_Treatment_Bandages_Description);
};
class ACE_Fluids: ACE_Medical_Treatment_Base {
- logicalOrder = 3;
+ logicalOrder = 4;
displayName = CSTRING(Medical_Treatment_IVFluids_DisplayName);
displayNameShort = CSTRING(Medical_Treatment_IVFluids_ShortName);
description = CSTRING(Medical_Treatment_IVFluids_Description);
};
class ACE_Epinephrine: ACE_Medical_Treatment_Base {
- logicalOrder = 4;
- arguments[] += {QUOTE('ACE_epinephrine' call FUNC(getItemName))};
+ logicalOrder = 5;
+ arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND, QUOTE('ACE_epinephrine' call FUNC(getItemName))};
displayName = "%15";
displayNameShort = CSTRING(Medical_Treatment_Epinephrine_ShortName);
description = CSTRING(Medical_Treatment_Epinephrine_Description);
};
class ACE_PAK: ACE_Medical_Treatment_Base {
- logicalOrder = 5;
- arguments[] += {QUOTE('ACE_personalAidKit' call FUNC(getItemName))};
+ logicalOrder = 6;
+ arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND, QUOTE('ACE_personalAidKit' call FUNC(getItemName))};
displayName = "%15";
displayNameShort = CSTRING(Medical_Treatment_PAK_ShortName);
description = CSTRING(Medical_Treatment_PAK_Description);
};
class ACE_Splint: ACE_Medical_Treatment_Base {
- logicalOrder = 6;
- arguments[] += {QUOTE('ACE_splint' call FUNC(getItemName))};
+ logicalOrder = 7;
+ arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND, QUOTE('ACE_splint' call FUNC(getItemName))};
displayName = "%15";
displayNameShort = CSTRING(Medical_Treatment_Splint_ShortName);
description = CSTRING(Medical_Treatment_Splint_Description);
};
class ACE_SurgicalKit: ACE_Medical_Treatment_Base {
- logicalOrder = 7;
- arguments[] += {QUOTE('ACE_surgicalKit' call FUNC(getItemName))};
+ logicalOrder = 8;
+ arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND, QUOTE('ACE_surgicalKit' call FUNC(getItemName))};
displayName = "%15";
displayNameShort = CSTRING(Medical_Treatment_SurgicalKit_ShortName);
description = CSTRING(Medical_Treatment_SurgicalKit_Description);
};
class ACE_Tourniquet: ACE_Medical_Treatment_Base {
- logicalOrder = 8;
- arguments[] += {QUOTE('ACE_tourniquet' call FUNC(getItemName))};
+ logicalOrder = 9;
+ arguments[] = {BASE_ARGUMENTS, MEDICAL_MENU_KEYBIND, QUOTE('ACE_tourniquet' call FUNC(getItemName))};
displayName = "%15";
displayNameShort = CSTRING(Medical_Treatment_CAT_ShortName);
description = CSTRING(Medical_Treatment_CAT_Description);
diff --git a/addons/fieldmanual/addon.toml b/addons/fieldmanual/addon.toml
deleted file mode 100644
index 7cfef775ee..0000000000
--- a/addons/fieldmanual/addon.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-[preprocess]
-enabled = false
diff --git a/addons/fieldmanual/stringtable.xml b/addons/fieldmanual/stringtable.xml
index 73bff03d1c..240ebc106e 100644
--- a/addons/fieldmanual/stringtable.xml
+++ b/addons/fieldmanual/stringtable.xml
@@ -20,234 +20,335 @@
Hunger
+ Głód
%3Hunger%4 increases linearly with soldier's movement speed. Restore by eating food.<br/><br/>%3Usage:%4<br/>%2Pick up food.<br/>%2Use [%3%12%4] and select %3Survival%4.<br/>%2Choose an item to consume.
+ %3Głód%4 zwiększa się liniowo wraz z prędkością ruchu. Odnawiany przez spożywanie jedzenia.<br/><br/>%3Użycie:%4<br/>%2Podnieś jedzenie.<br/>%2Użyj [%3%12%4] i wybierz %3Surwiwal%4.<br/>%2Wybierz pokarm do zjedzenia
Thirst
+ Pragnienie
%3Thirst%4 increases linearly with soldier's movement speed. Restore by drinking liquids.<br/><br/>%3Usage:%4<br/>%2Pick up a drink.<br/>%2Use [%3%12%4] and select %3Survival%4.<br/>%2Choose an item to consume.
+ %3Pragnienie%4 zwiększa się liniowo wraz z prędkością ruchu. Odnawiane przez spożywanie napojów.<br/><br/>%3Użycie:%4<br/>%2Podnieś napój.<br/>%2Użyj [%3%12%4] i wybierz %3Surwiwal%4.<br/>%2Wybierz napój do wypicia.
Medical Treatment
+ Opieka Medyczna
Decrease Heart Rate
+ Obniża Tętno
%3Adenosine%4 is used to decrease heart rate.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an appendage.<br/>%2Inject %3Adenosine%4.
+ %3Adenozyna%4 jest używana do obniżenia tętna.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę.<br/>%2Wstrzyknij %3Adenozynę%4.
Bandages
+ Bandaże
Close Wounds
+ Zamykają Rany
%3Bandages%4 stop bleeding and close wounds. Depending on your settings, bandages may reopen if surgery is not performed.<br/><br/>%2%3Field Dressing:%4<br/>%11<t color='#D9D900'>Average</t> In All Categories<br/>%2%3Packing Bandage:%4<br/>%11<t color='#D9D900'>Average</t> Treatment<br/>%11<t color='#E60000'>Higher</t> Reopen Chance<br/>%11<t color='#00CC00'>Longer</t> Reopen Delay<br/>%2%3Elastic Bandage:%4<br/>%11<t color='#00CC00'>Higher</t> Treatment<br/>%11<t color='#E60000'>Higher</t> Reopen Chance<br/>%11<t color='#E60000'>Shorter</t> Reopen Delay<br/>%2%3Quickclot:%4<br/>%11<t color='#E60000'>Lower</t> Treatment<br/>%11<t color='#00CC00'>Lower</t> Reopen Chance<br/>%11<t color='#00CC00'>Longer</t> Reopening Delay<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select a injured body part.<br/>%2Bandage body part by selecting desired %3Bandage%4 type.
+ %3Bandaże%4 zatrzymają krwawienie i zamykają rany. W zależności od twoich ustawień, bandaże mogą się otwierać, jeżeli rany nie są zaszyte. <br/><br/>%2%3Bandaż Jałowy:%4<br/>%11<t color='#D9D900'>Przeciętne</t> We wszystkich kategoriach<br/>%2%3Bandaż Uciskowy: %4<br/>%11<t color='#D9D900'>Przeciętne</t> Leczenie<br/>%11<t color='#E60000'>Wyższa</t> Szansa Otwarcia<br/>%11<t color='#00CC00'>Dłuższe</t> Opóźnienie Otwarcia<br/>%2%3Bandaż Elastyczny: %4<br/>%11<t color='#00CC00'>Lepsze</t> Leczenie<br/>%11<t color='#E60000'>Wyższa</t> Szansa Otwarcia<br/>%11<t color='#E60000'>Krótsze</t> Opóźnienie Otwarcia<br/>%2%3Quickclot: %4<br/>%11<t color='#E60000'>Gorsze</t> Leczenie<br/>%11<t color='#00CC00'>Niższa</t> Szansa Otwarcia<br/>%11<t color='#00CC00'>Dłuższe</t> Opóźnienie Otwarcia<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz zranioną część ciała. <br/>%2Zabandażuj ranę wybierając typ %3Bandażu%4.
IV Fluids
+ Płyny IV
Restore Blood Volume
+ Przywracają Krew
%3IV fluids%4 restore lost blood volume. Blood, Plasma, and Saline are functionally the same.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an appendage.<br/>%2Restore blood volume by selecting desired %3IV Fluid%4 type.
+ %3Płyny IV%4 przywracają poziom krwi. Krew, Osocze, i Sól Fizjologiczna są takie same pod względem funkcjonalności.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę.<br/>%2Przywróć poziom krwi przez podanie wybrego %3Płynu IV%4.
Increase Heart Rate | Wake Up Faster
+ Zwiększ Tętno | Obudź się Szybciej
%3Epinephrine%4 increases a patient's pulse as well as potentially decreasing the time between consciousnesss checks (effectively reducing the time needed for the patient to wake up).<br/><br/>%3Usage%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an appendage.<br/>%2Inject %3Epinephrine%4.
+ %3Adrenalina%4 zwiększa tętno pacjenta, zmniejszając czas pomiędzy sprawdzeniami przytomności (efektywnie redukując czas potrzebny do przebudzenia się pacjenta).<br/><br/>%3Użycie%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę.<br/>%2Wstrzyknij %3Adrenalinę%4.
Restore Like New
+ Jak Nowo Narodzony
The %3Personal Aid Kit%4 is an item that allows a soldier to be fully healed. Independent of %3ACE Settings%4, it requires that the patient is in %3Stable Condition%4 before use.<br/><br/>%3Stable Condition%4 qualifies as:<br/>%2Unit is %3Alive%4.<br/>%2Unit is %3Conscious%4.<br/>%2Unit has no active %3Bleeding%4.<br/>%2Heart Rate >= 40.<br/>%2Systolic BP >= 60.<br/>%2Diastolic BP >= 50.<br/><br/>%3Usage:%4<br/>%2Move to appropriate location depending on %3ACE Settings%4.<br/>%2Use [%3%13%4] or [%3%14%4] and select %3Advanced Treatments%4<br/>%2Select %3Use Personal Aid Kit%4.
+ %3Apteczka Osobista%4 jest przedmiotem pozwalającym na pełne uleczenie gracza. Niezależnie od %3Ustawień ACE%4, wymagane jest, aby pacjent był w%3Stanie Stabilnym%4 przed jej użyciem.<br/><br/>%3Stan Stabilny%4 występuje gdy:<br/>%2Jednostka jest %3Żywa%4.<br/>%2Jednostka jest %3Przytomna%4.<br/>%2Jednostka nie%3Krwawu%4.<br/>%2Tętno>= 40. <br/>%2Ciśnienie Skurczowe >= 60.<br/>%2Ciśnienie Rozkurczowe >= 50.<br/><br/>%3Użycie:%4<br/>%2Udaj się do właściwej lokacji żależnej od %3Ustawień ACE%4.<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz %3Zaawansowane Zabiegi%4.<br/>%2Wybierz %3Użyj Apteczki Osobistej%4.
Fix Fractures
+ Opatrywanie Złamań
A %3Splint%4 is used to fix fractures. The %3Splint%4 is consumed when used.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an affected appendage.<br/>%2Select %3Apply Splint%4.
+ %3Szyna%4 jest używana do leczenie złamań. %3Szyna%4 jest zużywana po wykorzystaniu.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę, na którą ma być założona.<br/>%2Wybierz %3Załóż Szynę%4.
Prevent Wounds From Reopening
+ Zapobiegaj Ponownemu Otwieraniu się Ran
A %3Surgical Kit%4 is used to prevent wounds from reopening after being bandaged. Depending on settings, it can also clear trauma.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select %3Advanced Treatment%4.<br/>%2Select %3Use Surgical Kit%4.
+ %3Zestaw do Szycia%4 jest używany do zapobiegania otwieraniu się ran po ich zabandażowaniu. W zależności od ustawień może także je leczyć.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz %3Zaawansowane Zabiegi%4.<br/>%2Wybierz %3Użyj Zestawu do Szycia%4.
Stop Bleeding
+ Zatamuj Krwawienie
A %3Tourniquet%4 stops bleeding temporarily so that a wound(s) can be bandaged. Can only be used on limbs.<br/><br/>%3Usage:%4<br/>%2Use [%3%13%4] or [%3%14%4] and select an affected appendage.<br/>%2Select %3Apply Tourniquet%4.
+ %3Staza%4 czasowo zatrzymuje krwawienie pozwalając na zabandażowanie ran. Może być użyta tylko na kończynach.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz kończynę.<br/>%2Wybierz %3Załóż Stazę%4.
+
+
+
+
Portable, Precise, Rugged
+ Przenośny, Precyzyjny, Wytrzymały
The %3Horus ATragMX%4 considers atmospheric conditions, gun data, ammunition, range, speed, and muzzle velocity to calculate precise aiming solutions with %3Come-Up%4 results - and even accounts for %3Coriolis%4 and %3Spin Drift%4 effects. %3ATragMX%4, loaded on a handheld computer made by %3TDS Recon%4, is easy to use and lightning fast. The %3Recon%4 meets the rigorous %3MIL-STD-810F%4 military standard for drops, vibration, humidity, altitude and extreme temperatures.<br/><br/>%3Usage:%4<br/>Please visit the wiki page for more information.
+ %3Horus ATragMX%4 uwzględnia warunki atmosferyczne, dane broni, amunicję, zasięg, prędkość wylotową do wyliczenia precyzyjnych nastaw - ponadto uwzględnia %3Efekt Coriolisa%4 oraz %3Efekt Spinowy%4. %3ATragMX%4, załadowany na komputer przenośny wyprodukowany przez %3TDS Recon%4, jest łatwy i prosty w użyciu. %3Recon%4 spełnia rygorystyczne wymagania %3MIL-STD-810F%4 pod względem odporności na upadek, wibracje, wilgotność, wyskość oraz ekstremalne temperatury.<br/><br/>%3Użycie:%4<br/>Wejdź na wiki po więcej informacji.
Bring Out Your Dead
+ Przyprowadź Swoich Zmarłych
%3Body Bags%4 are used to transport dead bodies. They can be dragged and loaded into vehicles.<br/><br/>%3Usage:%4<br/>%2Approach a dead body.<br/>%2Use [%3%13%4] or [%3%14%4] and select %3Place Body In Bodybag%4.
+ %3Worki na Zwłoki%4 są używane do transportu ciał. Worki mogą być przeciągane i ładowanie do pojazdów.<br/><br/>%3Użycie:%4<br/>%2Podejdź do martwego ciała.<br/>%2Użyj [%3%13%4] lub [%3%14%4] i wybierz %3Umieść Ciało w Worku na Zwłoki%4.
Take Prisoners
+ Weź Więźniów
%3Cable Ties%4 enable a soldier to capture and detain another soldier. Once apprehended, the captor gains the ability to inspect the prisoner's belongings, set them free, or accompany them to an alternate area. Transporting escorted prisoners is also possible, including loading them into vehicles if needed. Depending on your settings, units may need to surrender before being taken captive.<br/><br/>%3Usage:%4<br/>%2Approach the unit and use the [%3%13%4].<br/>%2The interaction is located around the hands in the form of a handcuffs icon.<br/>%2Repeat to release.
+ %3Opaski Zaciskowe%4 umożliwiają żołnierzowi pojmanie i zatrzymanie innego żołnierza, a po zatrzymaniu pozwalają na sprawdzenia ekwipunku więźnia, uwolnienia go lub przeniesienia w inne miejsce, a także załadowania go do pojazdu, jeśli zajdzie taka potrzeba. W zależności od ustawień, jednostka może wymagać poddania się przed wzięciem do niewoli.<br/><br/>%3Użycie:%4<br/>%2Podejdź do jednostki i użyj [%3%13%4].<br/>%2Interakcja jest zlokalizowana na rękach pod postacią ikony kajdanek.<br/>%2Użyj ponownie aby uwolnić.
Phone In An Explosion
+ Zadzwoń po Eksplozję
The %3Cellphone%4 is functionally a %3Clacker%4. Use it to connect and detonate an explosive device. Multiple devices can be linked to the cellphone and called within the phonebook.<br/><br/>%3Usage:%4<br/>%2Place an explosive.<br/>%2Use [%3%13%4], select %3Explosives%4, and select %3Cellphone%4.<br/>%2Open the cellphone interface with [%3%12%4].<br/>%2Navigate the phone book with the arrows and select your calling number.<br/>%2Call the number to detonate.
+ %3Telefon%4 jest funkcjonalnie %3Detonatorem%4. Użyj go, aby podłączyć i zdetonować ładunek wybuchowy. Wiele urządzeń może być połączonych z jednym telefonem komórkowym i wywoływanych za pomocą książki telefonicznej.<br/><br/>%3Użycie:%4<br/>%2Połóż ładunek wybuchowy<br/>%2Użyj [%3%13%4], wybierz %3Ładunki Wybuchowe%4, i wybierz %3Telefon%4. <br/>%2Otwórz interfejs telefonu za pomocą [%3%12%4].<br/>%2Nawiguj po książce telefonicznej za pomocą strzałek i wybierz żądany numer.<br/>%2Zadzwoń pod niego aby wywołać wybuch.
Portable Reading Lights
+ Przenośne Lampki do Czytania
%3Chemlight Shields%4 give you the ability to read your map, even in dark environments. However, when using %3Chemlight Shields%4, you will have a slight glow around you.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2elect %3Chemlights%4 and %3Prepare Chemlight Shield (Color)%4.<br/>%2Open %3Map%4.<br/>%2Use [%3%12%4] and select %3Flashlights%4 where you will find your chemlight shield.
+ %3Osłony na Świetliki%4 dają ci możliwość czytania mapy nawet w najciemniejszym otoczeniu. Jednak podczas korzystania z %3Świetlików%4, wokół ciebie będzie widoczna lekka poświata<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4. <br/>%2Wybierz %3Świetlik%4 i %3Przygotuj Osłonę Świetlika (Kolor)%4.<br/>%2Otwórz%3Mapę%4.<br/>%2Użyj [%3%12%4] i wybierz %3Latarki%4 gdzie znajdziesz twoją osłonę na świetlik.
Remote Detonation
+ Zdalna Detonacja
Use %3Clackers%4 to connect and detonate an explosive device. Multiple devices can be linked to a clacker and detonated on different channels.<br/><br/>%3Usage:%4<br/>%2Place an explosive.<br/>%2Use [%3%13%4], select %3Explosives%4, and select the %3Clacker%4 you wish to link to.<br/>%2Open the ACE interface with [%3%12%4].<br/>%2Select %3Explosives%4 and select a %3Clacker%4.<br/>%2Select the %3Explosive%4 you wish to detonate.
+ Użyj%3Detonatora%4 do podłączenia i wysadzenia ładunku. Do jednego ładunku może być podłączonych wiele ładunków na różnych kanałach.<br/><br/>%3Użycie:%4<br/>%2Połóż ładunek wybuchowy.<br/>%2Użyj [%3%13%4], wybierz%3Mat. Wybuchowe%4, i wybierz %3Detonator%4, do którego chcesz go podłączyć.<br/>%2Otwórz menu interakcji ACE [%3%12%4].<br/>%2Wybierz %3Mat. Wybuchowe%4 i wybierz %3Detonator%4.<br/>%2Wybierz %3Ładunek%4 który chcesz wysadzić.
Navigate
+ Nawigacja
The %3DAGR%4 is a simpler version of the %3MicroDAGR GPS%4. It has similar features but lacks the topographic and satellite imaging functions of the %3MicroDAGR GPS%4.<br/><br/>%3Usage:%4<br/>%2Equip a %3DAGR%4.<br/>%2Use [%3%12%4] and select %3Configure%4 or %3Toggle%4.<br/><br/>The following menus are available when configuring your %3DAGR:%4<br/>%11%2Data View: WIP<br/>%11%2GoTo WP: Select a waypoint to track.<br/>%11%2WP List: Add/Edit/Remove waypoints.<br/>%11%2Connect To: Connect %3DAGR%4 to the %3Vector 21 Rangefinder%4.<br/>%11%2Options
+ %3DAGR%4 jest uproszczoną wersją%3MicroDAGR GPS%4. Posiada podobne funkcje, ale brakuje mu map dostępnych w %3MicroDAGR GPS%4.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3DAGR%4.<br/>%2Użyj [%3%12%4] i wybierz %3Konfiguruj%4 lub %3Przełącz%4.<br/><br/>Poniższe menu są dostępne podczas konfiguracji %3DAGR:%4<br/>%11%2Widok Danych: WIP<br/>%11%2GoTo WP: Wybierz waypoint do śledzenia.<br/>%11%2WP List: Dodaj/Edytuj/Usuń waypointy.<br/>%11%2Połącz do: Połącz %3DAGR%4 do dalmierza %3Vector 21%4.<br/>%11%2Opcje
Explosive Revenge
+ Wybuchowa Zemsta
The %3Dead Man's Switch%4 is a device that allows a soldier to detonate an %3Explosive%4 when the soldier dies.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Explosives%4.<br/>%2Select %3Dead Man's Switch%4 and connect the desired %3Explosive%4.<br/>%2Repeat the process and disconnect to reverse.
+ %3Czuwak%4 jest urządzeniem pozwalającym wysadzić %3Ładunek Wybuchowy%4 gdy żołnierz zginie.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%12%4] i wybierz %3Mat. Wybuchowe%4.<br/>%2Wybierz %3Czuwak%4 i połącz wybrany %3Ładunek Wybuchowy%4.<br/>%2W celu odłączenia powtórz czynności i wybierz odłącz.
The %3Defusal Kit%4 allows defusal of explosives.<br/><br/>%3Usage:%4<br/>%2Equip a %3Defusal Kit%4.<br/>%2Safely approach an %3Explosive%4.<br/>%2Use [%3%13%4] and select %3Defuse%4.
+ %3Zestaw do Rozbrajania%4 pozwala rozbrajać ładunki wybuchowe.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Zestaw do Rozbrajania%4.<br/>%2Ostrożnie podejdź pod %3Ładunek Wybuchowy%4.<br/>%2Użyj [%3%13%4] i wybierz %3Rozbrój%4.
Defuse Explosives
+ Rozbrajanie Ładunków
Protect Your Hearing
+ Dbaj o Swój Słuch
%3Ear Plugs%4 help prevent hearing damage from repeat loud noises near a soldier. Insert %3Ear Plugs%4 to lower volume of a soldier's environment and prevent %3Combat Deafness%4.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Insert %3Ear Plugs%4.
+ %3Stopery do Uszu%4 zapobiegają uszkodzeniom słuchu na skutek wybuchów i strzałów w pobliżu żołnierza. Włóż %3Stopery do Uszu%4 w celu wyciszenia otoczenia i uniknięcia %3Głuchoty Bojowej%4.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4.<br/>%2Włóż %3Stopery do Uszu%4.
Get To Cover
+ Łap Osłonę
The %3Entrenching Tool%4 allows soldiers to dig trenches to help defend their position. The soldier must be on soil in order to dig a trench.<br/><br/>%3Usage:%4<br/>%2Equip an %3Entrenching Tool%4.<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Select the type of trench you wish to build.
+ %3Saperka%4 pozwala żołnierzowi kopać okopy w celu obrony swoich pozycji. Żołnierz musi być na glebie, aby wykopać okop.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Saperkę%4.<br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4.<br/>%2Wybierz rodzaj okopu, który chcesz wykopać.
Flashlights
+ Latarki
Illuminate Your Map
+ Rozświetlij Swoją Mapę
%3Flashlights%4 give you the ability to read your map, even in dark environments. However, when using %3Flashlights%4, you will have a slight glow around you.<br/><br/>%3Usage:%4<br/>%2On the map screen, use [%3%12%4] and select %3Flashlights%4.<br/>%2Select the %3Flashlight%4 you want to use and select %3On%4.<br/><br/>%3Available Flashlight Items%4:<br/>%2 Fulton MX-991<br/>%2 KSF-1<br/>%2 Maglite XL50<br/><br/>%3NOTE:%4<br/>Flashlight states are persistent.
+ %3Latarki%4 pozwalają czytać mapę, nawet w ciemnościach. Jednakże podczas używani %3Latarki%4, będziesz miał wokół siebie delikatną poświatę.<br/><br/>%3Użycie:%4<br/>%2W widoku mapy użyj [%3%12%4] i wybierz %3Latarki%4.<br/>%2Wybierz %3Latarkę%4, którą chcesz użyć i wybierz %3Włącz%4.<br/><br/>%3Dostępne latarki%4:<br/>%2 Fulton MX-991<br/>%2 KSF-1<br/>%2 Maglite XL50<br/><br/>%3NOTE:%4<br/>Stan latarki jest trwały.
Observe From The Skies
+ Obserwuj Świat z Góry
The %3High-Altitude Unit Navigated Tactical Imaging Round (HuntIR)%4 is designed to be fired from a grenade launcher. After being fired in the air, the built-in parachute will be deployed and the IR CMOS camera will activate, providing a video stream until it touches the ground or is shot down.<br/><br/>%3Usage:%4<br/>%2Equip a %3HuntIR Monitor%4 and compatible ammunition.<br/>%2Fire the %3HuntIR Round%4 as high as possible over the area you want to observe.<br/>%2Open the %3HuntIR Monitor%4.<br/>%2Use [%3%12%4], select %3Equipment%4.<br/>%2Select %3Activate HuntIR Monitor%4.
+ %3High-Altitude Unit Navigated Tactical Imaging Round (HuntIR)%4 przeznaczony jest do wystrzeliwania z granatnika. Po wystrzeleniu, wbudowany spadochron zostanie otwarty i uruchomi się kamera IR CMOS, zapewniająca obraz wideo do momentu zetknięcia się z ziemią lub zestrzelenia.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Monitor HuntIR%4 i kompatybilną amunicję.<br/>%2Wystrzel %3Pocisk HuntIR%4 najwyżej jak to tylko możliwe nad teren, który chcesz obserwować.<br/>%2Otwórz%3Monitor HuntIR%4.<br/>%2Użyj [%3%12%4], wybierz %3Ekwipunek%4.<br/>%2Wybierz %3Aktywuj Monitor HuntIR%4.
Track Your Team With Stealth
+ Śledź Swój Zespół w Ciszy
The %3IR Strobe%4 is a throwable that emits an IR light pulse intermittently. The %3IR Strobe%4 can also be attached to a soldier, making it useful for tracking teammates under night vision devices.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Select %3Attach%4 and select the %3IR Strobe%4.
+ %3Stroboskop IR%4 jest rzucanym przedmiotem emitującym pulsujące światło podczerwone. %3Stroboskop IR%4 może być także przypięty do munduru, tworząc z niego użyteczne urządzenie do śledzenia żołnierzy z użyciem noktowizji.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4.<br/>%2Wybierz %3Przyczep%4 i wybierz %3Stroboskop IR%4.
Pocket Weatherstation
+ Przenośna Pogodynka
The %3Kestrel 4500 Pocket Weather Tracker%4 is a mini weather station useful for collecting the the following weather data:<br/>%2Heading and wind direction<br/>%2Crosswind and headwind<br/>%2Altitude and barometric pressure<br/>%2Wet bulb temperature<br/>%2Humidity and dewpoint<br/>%2Density altitude<br/>%2Wind chill and temperature<br/>%2Time and date<br/>%2Minimum, maximum, and average values<br/><br/>%3Usage:%4<br/>%2Equip a %3Kestrel%4.<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Select %3Open%4.
+ %3Kestrel 4500 Pocket Weather Tracker%4 jest przenośną stacją pogodową pozwalającą zbierać takie dane jak: <br/>%2Kurs i kierunek wiatru<br/>%2Wiatr boczny i czołowy<br/>%2Wysokość i ciśnienie barometryczne<br/>%2Temperatua mokrego termometru<br/>%2Wilgotność i punkt rosy<br/>%2Gęstość powietrza<br/>%2Temperatura i temperatura odczuwalna<br/>%2Czas i data<br/>%2Wartości minimalne, maksymalne oraz średnie<br/><br/>%3Użycie: %4<br/>%2Wyekwipuj %3Kestrela%4. <br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4.<br/>%2Wybierz %3Otwórz%4.
Triangulate Your Position
+ Trianguluj Swoją Pozycję
The %3Map Tools%4 are a set of tools that allows a soldier to measure distances and angles. Useful for land, and calculating firing solutions for artillery.<br/><br/>%3Usage:%4<br/>%2Open %3Map%4.<br/>%2Use [%3%12%4] and select %3Map Tools%4.<br/>%2 The Tool can be moved by dragging with [%3Left-Click%4] while holding [%3ALT%4].
+ %3Narzędzia Nawigacyjne%4 są zestawem narzędzi pozwalającym mierzyć dystans i kąt. Użyteczne do wyliczania parametrów strzałów dla artylerii.<br/><br/>%3Użycie:%4<br/>%2Otwórz%3Mapę%4.<br/>%2Użyj [%3%12%4] i wybierz %3Narzędzia Nawigacyjne%4.<br/>%2 Narzędzia mogą być przeciągane za pomocą [%3LPM%4] trzymając [%3ALT%4].
Advanced DAGR
+ Zaawansowany DAGR
The %3MicroDAGR GPS%4 is an advanced version of the %3DAGR%4. It provides position, navigation, and timing (PNT) data to include:<br/>%2Compass and heading<br/>%2Date and hour synced to the mission<br/>%2Elevation (relative to sea level)<br/>%2Current speed<br/>%2GPS with topographic and satellite view<br/>%2Creating, naming, and deleting waypoints<br/>%2Friendly identification (Requires ACE BLUFOR Tracker Setting)<br/>Connection to the Vector-21 Rangefinder for data import (waypoint creation and grid reference of ranged targets)<br/><br/>%3Usage:%4<br/>%2For usage instructions, please visit the dedicated %3MicroDAGR%4 wiki.
+ %3MicroDAGR GPS%4 jest zaawansowaną wersją %3DAGR%4. Dostarcza dane oparte o pozycję, nawigację, i czas (PNT): <br/>%2Kompas i kierunek<br/>%2Datę i godzinę zsynchronizowaną z misją<br/>%2Elewację (relatywną do poziomu morza)<br/>%2Obecną prędkość<br/>%2GPS z widokiem topograficznym i satelitarnym<br/>%2Tworzenie, nazywanie oraz usuwanie waypointów<br/>%2Identyfikację sojuszników (Wymaga ACE BLUFOR Tracker)<br/>Połączenie do dalmierza Vector-21 w celu importu danych (waypointy i współrzędne zmierzonego celu)<br/><br/>%3Użycie: %4<br/>%2Po instrukcję użycia odwiedź %3MicroDAGR%4 wiki.
Range Tables
+ Tabele Strzelnicze
Get A Firing Solution
+ Strzelaj Celnie
%3Range Tables%4 allow for a soldier to estimate accurate shot placement on direct or indirect targets (depending on asset). The %3Range Table%4 will automatically fill depending on the soldiers selected weapon/vehicle.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Select the desired %3Range Table%4.
+ %3Tabele Strzelnicze%4 pozwalają żołnierzowi oszacować dokładne rozmieszczenie strzałów na cele bezpośrednie lub pośrednie (w zależności od zasobu). %3Tabele Strzelnicze%4 wypełnią się automatycznie w zależności od wybranej broni/pojazdu.<br/><br/>%3Użycie:%4%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4<br/>.<br/>%2Wybierz żądaną%3Tabelę Strzelniczą%4.
Ropes
+ Liny
Tow With Ease
+ Holowanie bez Wysiłku
%3Ropes%4 have multiple uses including %3Towing%4 vehicles and %3Fast Roping%4 from helicopters.<br/><br/>%3Towing:%4<br/>%2Approach a vehicle.<br/>%2Use [%3%13%4] and select %3Towing%4.<br/>%2Select rope length.<br/>%2Select attachment point on towing vehicle.<br/>%2Select attachment on towed vehicle.<br/><br/>%3Available Rope Lengths:%4<br/>%2 3.2 meters<br/>%2 6.2 meters<br/>%2 12.2 meters<br/>%2 15.2 meters<br/>%2 18.3 meters<br/>%2 27.4 meters<br/>%2 36.6 meters
+ %3Liny%4 mają wiele zastosowań, takich jak %3Holowanie%4 pojazdów czy %3Zjeżdżanie na Linach%4 z helikopterów.<br/><br/>%3Holowanie:%4<br/>%2Podejdź pod pojazd.<br/>%2Użyj [%3%13%4] i wybierz %3Holowanie%4.<br/>%2Wybierz długość liny. <br/>%2Wybierz punkt zaczepu liny na holującym pojeździe.<br/>%2Wybierz punkt zaczepu liny na holowanym pojeździe.<br/><br/>%3Dostępne Długości Liny:%4<br/>%2 3.2 metera<br/>%2 6.2 metera<br/>%2 12.2 metera<br/>%2 15.2 metera<br/>%2 18.3 metera<br/>%2 27.4 metera<br/>%2 36.6 metera
Expand Your Fortifications
+ Powiększ Swoje Fortyfikacje
%3Sandbags%4 are sacks made of sturdy material, filled with sand, used for a variety of purposes such as creating barriers or providing stability in construction projects. Useful in expanding larger placed fortifications.<br/><br/>%3Usage:%4<br/>%2Equip a %3Sandbag (Empty)%4.<br/>%2Use [%3%12%4] and select %3Deploy Sandbag%4.<br/>%2Follow on-screen instructions for placement.
+ %3Worki z Piaskiem%4 to worki wykonane z mocnego materiału, wypełnione piaskiem, używane do różnych celów, takich jak tworzenie barier lub zapewnianie stabilności w projektach budowlanych. Przydatne przy tworzeniu większych fortyfikacji.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Worek z Piaskiem (Pusty%4.<br/>%2Use [%3%12%4] i wybierz %3Rozłóż Worek z Piaskiem%4.<br/>%2Podążaj za instrukcjami na ekranie.
Lower Firearm Temperature
+ Niższa Temperatura twojej Broni
%3Spare Barrels%4 allow a soldier to reduce their weapon's heat significantly. After a short delay, the weapon's barrel will be swapped and its heat reduced. A soldier may also check the temperature of any barrels within their inventory. Not all weapons support swapping barrels.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Select %3Swap Barrel%4.<br/>%2Resume operation after barrel swap is complete.
+ %3Zapasowa Lufa%4 pozwala żołnierzowi znacznie zmniejszyć ciepło broni. Po krótkim czasie lufa broni zostanie zamieniona, a jej temperatura zostanie zmniejszona. Żołnierz może również sprawdzić temperaturę każdej lufy w swoim ekwipunku. Nie wszystkie bronie obsługują zamianę luf.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4.<br/>%2Wybierz %3Zmień Lufę%4.<br/>%2.
Spray Paint
+ Farba w Sprayu
Tag Your Territory
+ Zaznacz Swój Teren
%3Spray Paint%4 is used to tag surfaces with various symbols.<br/><br/>%3Usage:%4<br/>%2Move close to a surface (wall, vehicle, ground, etc).<br/>%2Use [%3%12%4] and select %3Tag%4.<br/>%2Choose a symbol.<br/><br/>%3Available Colors:%4<br/>%2Black<br/>%2Blue<br/>%2Green<br/>%2Red
+ %3Farba w Sprayu%4 jest używana do oznaczania powierzchni różnymi symbolami.<br/><br/>%3Użycie:%4<br/>%2Podejdź blisko powierzchni (ściany, pojazdu, ziemi, etc). <br/>%2Użyj [%3%12%4] i wybierz %3Malowanie%4.<br/>%2Wybierz Symbol.<br/><br/>%3Dostępne Kolory:%4<br/>%2Czarny<br/>%2Niebieski<br/>%2Zielony<br/>%2Czerwony
Brace From Anywhere
+ Zawsze Stabilny
The %3SSWT Kit%4 is a deployable tripod that allows a soldier to brace their aim when deployed. Use it when you need an elevated shooting position and there are no other objects around.<br/><br/>%3Usage:%4<br/>%2Use [%3%12%4] and select %3Equipment%4.<br/>%2Select %3SSWT Kit%4 and follow the on screen prompts to place.
+ %3Trójnóg Snajperski%4 jest to rozkładany statyw, który pozwala żołnierzowi dokładnie przycelować, gdy jest rozłożony. Używaj go, gdy potrzebujesz stabilnej pozycji strzeleckiej, a wokół nie ma innych obiektów.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%12%4] i wybierz %3Ekwipunek%4.<br/>%2Wybierz %3Trójnóg Snajperski%4 i podążaj za instrukcjami wyświetlanymi na ekranie.
Keep Eyes In The Sky
+ Trzymaj Głowę w Górze
%3UAV Batteries%4 are used to recharge a UAV's energy storage. Especially useful for small UAVs.<br/><br/>%3Usage:%4<br/>%2Equip a %3UAV Battery%4<br/>%2Approach a %3UAV%4 with its %3Engine Off%4.<br/>%2Use [%3%13%4] and select %3Recharge%4.
+ %3Baterie UAV%4 są używane do zasilania UAV. Zwłaszcza tych małych.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Baterię UAV%4<br/>%2Podejdź pod %3UAV%4 z %3Wyłączonym Silnikiem%4.<br/>%2Użyj [%3%13%4] i wybierz %3Naładuj%4.
Making An Entrance
+ Robienie Własnego Wejścia
%3Wirecutters%4 are a tool that allows a soldier to bypass wired fencing. Useful for creating backdoor entrances into secure areas.<br/><br/>%3Usage:%4<br/>%2Move close to a fence.<br/>%2Use [%3%12%4] and select %3Cut Fence%4.
+ %3Nożyce do Cięcia Drutu%4 są narzędziem pozwalającym pokonywać zapory z siatki oraz drutu. Użyteczne przy tworzenia tylnego wejścia do pilnownej strefy.<br/><br/>%3Użycie:%4<br/>%2Podejdź pod ogrodzenie.<br/>%2Użyj[%3%12%4] i wybierz %3Przetnij Płot%4.
Items
@@ -267,27 +368,35 @@
ACE3
+ ACE3
Build Fortifications
+ Budowanie Fortyfikacji
The %3Fortify Tool%4 allows soldiers to build fortifications provided by their mission creator.<br/><br/>%3Usage:%4<br/>%2Pick up a %3FortifyTool%4.<br/>%2Use [%3%12%4] and select %3Fortify%4.<br/>%2Select an available fortification and follow the on screen prompts for placement.
+ %3Narzędzie do fortyfikowania%4 pozwala żołnierzom budować fortyfikacje wybrane przez twórcę misji.<br/><br/>%3Użycie:%4<br/>%2Podnieś %3Narzędzie do fortyfikowania%4.<br/>%2Użyj [%3%12%4] i wybierz %3Fortyfikuj%4.<br/>%2Wybierz dostępną fortyfikację i postępuj zgodnie ze wskazówkami na ekranie.
Breaking and Entering
+ Włamywanie i Otwieranie
%3Lockpicks%4 are used to gain access to locked vehicles.<br/><br/>%3Usage:%4<br/>%2Equip a %3Lockpick%4.<br/>%2Approach a %3Locked%4 vehicle.<br/>Use [%3%13%4] and select %3Lockpick Vehicle%4.<br/><br/><t underline='1'>%3Note:%4</t> Lockpicks and keys are only available via scripting or ACE Vehicle Key modules.
+ %3Wytrychy%4 są używane w celu uzyskania dostępu do zablokowanych pojazdów.<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Wytrych%4.<br/>%2Podejdź do %3Zablokowanego%4 pojazdu. <br/>Użyj [%3%13%4] i wybierz %3Otwórz Zamek%4.<br/><br/><t underline='1'>%3Uwaga:%4</t> Klucze i wytrychy są dostępne tylko przy zastosowaniu skryptów lub użyciu modułu ACE Zamknięcie Pojazdu
Vehicle Keys
+ Kluczyki od Pojazdu
Lock/Unlock Vehicles
+ Zablokuj/Odblokuj Pojazdy
%3Vehicle Keys%4 are used to lock/unlock your vehicles. Vehicle keys can exist for the whole side, or keys can be created for a particular vehicle itself.<br/><br/>%3Usage:%4<br/>%2Equip a %3Vehicle Key%4.<br/>%2Approach the vehicle that the key belongs to.<br/>Use [%3%13%4] and select %3Lock/Unlock Vehicle%4.<br/><br/><t underline='1'>%3Note:%4</t> Lockpicks and keys are only available via scripting or ACE Vehicle Key modules.
+ %3Kluczyki od Pojazdów%4 są używane w celu ich zablokowania/odblokowania. Kluczyki mogą istnieć dla całej strony, lub być tworzone tylko dla wybranych pojazdów<br/><br/>%3Użycie:%4<br/>%2Wyekwipuj %3Kluczyk do Pojazdu%4.<br/>%2Podejdź do samochodu, do którego pasuje kluczyk. <br/>Użyj [%3%13%4] i wybierz %3Zablokuj/Odblokuj Pojazd%4.<br/><br/><t underline='1'>%3Uwaga:%4</t> Klucze i wytrychy są dostępne tylko przy zastosowaniu skryptów lub użyciu modułu ACE Zamknięcie Pojazdu
diff --git a/addons/grenades/CfgMagazineWells.hpp b/addons/grenades/CfgMagazineWells.hpp
index 7ac4a555dd..6f75fa31f7 100644
--- a/addons/grenades/CfgMagazineWells.hpp
+++ b/addons/grenades/CfgMagazineWells.hpp
@@ -1,8 +1,8 @@
class CfgMagazineWells {
class CBA_40mm_M203 {
- ADDON[] = {"ACE_40mm_flare_white", "ACE_40mm_flare_red", "ACE_40mm_flare_green", "ACE_40mm_flare_ir"};
+ ADDON[] = {"ACE_40mm_Flare_white", "ACE_40mm_Flare_red", "ACE_40mm_Flare_green", "ACE_40mm_Flare_ir"};
};
class UGL_40x36 {
- ADDON[] = {"ACE_40mm_flare_white", "ACE_40mm_flare_red", "ACE_40mm_flare_green", "ACE_40mm_flare_ir"};
+ ADDON[] = {"ACE_40mm_Flare_white", "ACE_40mm_Flare_red", "ACE_40mm_Flare_green", "ACE_40mm_Flare_ir"};
};
};
diff --git a/addons/medical_ai/stringtable.xml b/addons/medical_ai/stringtable.xml
index 0ae751dec7..480c242699 100644
--- a/addons/medical_ai/stringtable.xml
+++ b/addons/medical_ai/stringtable.xml
@@ -62,6 +62,7 @@
Auto Convert Items for AI
+ Automatyczna Konwersja Przedmiotów dla AI
diff --git a/addons/medical_gui/XEH_PREP.hpp b/addons/medical_gui/XEH_PREP.hpp
index 857e72315b..3d1ace8b4e 100644
--- a/addons/medical_gui/XEH_PREP.hpp
+++ b/addons/medical_gui/XEH_PREP.hpp
@@ -2,14 +2,17 @@ PREP(addTreatmentActions);
PREP(bloodLossToRGBA);
PREP(canOpenMenu);
PREP(collectActions);
+PREP(countTreatmentItems);
PREP(damageToRGBA);
PREP(displayPatientInformation);
PREP(displayTriageCard);
+PREP(formatItemCounts);
PREP(handleToggle);
PREP(handleTriageSelect);
PREP(menuPFH);
PREP(modifyAction);
PREP(modifyActionTriageLevel);
+PREP(onKeyDown);
PREP(onMenuClose);
PREP(onMenuOpen);
PREP(openMenu);
diff --git a/addons/medical_gui/data/body_image/arm_left_s.paa b/addons/medical_gui/data/body_image/arm_left_s.paa
index 58682a5a73..4c55e6143e 100644
Binary files a/addons/medical_gui/data/body_image/arm_left_s.paa and b/addons/medical_gui/data/body_image/arm_left_s.paa differ
diff --git a/addons/medical_gui/data/body_image/arm_right_s.paa b/addons/medical_gui/data/body_image/arm_right_s.paa
index 613ff387ff..daff9d099e 100644
Binary files a/addons/medical_gui/data/body_image/arm_right_s.paa and b/addons/medical_gui/data/body_image/arm_right_s.paa differ
diff --git a/addons/medical_gui/data/body_image/head_s.paa b/addons/medical_gui/data/body_image/head_s.paa
index f4daa0a9b6..9acf69a155 100644
Binary files a/addons/medical_gui/data/body_image/head_s.paa and b/addons/medical_gui/data/body_image/head_s.paa differ
diff --git a/addons/medical_gui/data/body_image/leg_left_s.paa b/addons/medical_gui/data/body_image/leg_left_s.paa
index 71f25cba8c..1f25d44b81 100644
Binary files a/addons/medical_gui/data/body_image/leg_left_s.paa and b/addons/medical_gui/data/body_image/leg_left_s.paa differ
diff --git a/addons/medical_gui/data/body_image/leg_right_s.paa b/addons/medical_gui/data/body_image/leg_right_s.paa
index 1b9bf0ba64..4fcace26ed 100644
Binary files a/addons/medical_gui/data/body_image/leg_right_s.paa and b/addons/medical_gui/data/body_image/leg_right_s.paa differ
diff --git a/addons/medical_gui/data/body_image/torso_s.paa b/addons/medical_gui/data/body_image/torso_s.paa
index 4af858e089..58614f277f 100644
Binary files a/addons/medical_gui/data/body_image/torso_s.paa and b/addons/medical_gui/data/body_image/torso_s.paa differ
diff --git a/addons/medical_gui/data/categories/carry.paa b/addons/medical_gui/data/categories/carry.paa
index 7ebb830b03..27a9185d29 100644
Binary files a/addons/medical_gui/data/categories/carry.paa and b/addons/medical_gui/data/categories/carry.paa differ
diff --git a/addons/medical_gui/data/categories/toggle_self.paa b/addons/medical_gui/data/categories/toggle_self.paa
deleted file mode 100644
index 73108e5a98..0000000000
Binary files a/addons/medical_gui/data/categories/toggle_self.paa and /dev/null differ
diff --git a/addons/medical_gui/data/categories/toggle_to_other.paa b/addons/medical_gui/data/categories/toggle_to_other.paa
new file mode 100644
index 0000000000..59f2096b8a
Binary files /dev/null and b/addons/medical_gui/data/categories/toggle_to_other.paa differ
diff --git a/addons/medical_gui/data/categories/toggle_to_self.paa b/addons/medical_gui/data/categories/toggle_to_self.paa
new file mode 100644
index 0000000000..653a6bbdb4
Binary files /dev/null and b/addons/medical_gui/data/categories/toggle_to_self.paa differ
diff --git a/addons/medical_gui/functions/fnc_collectActions.sqf b/addons/medical_gui/functions/fnc_collectActions.sqf
index 7a9902ad71..818decb017 100644
--- a/addons/medical_gui/functions/fnc_collectActions.sqf
+++ b/addons/medical_gui/functions/fnc_collectActions.sqf
@@ -24,8 +24,9 @@ GVAR(actions) = [];
private _category = getText (_x >> "category");
private _condition = compile format [QUOTE([ARR_4(ACE_player, GVAR(target), %1 select GVAR(selectedBodyPart), '%2')] call DEFUNC(medical_treatment,canTreatCached)), ALL_BODY_PARTS, _configName];
private _statement = compile format [QUOTE([ARR_4(ACE_player, GVAR(target), %1 select GVAR(selectedBodyPart), '%2')] call DEFUNC(medical_treatment,treatment)), ALL_BODY_PARTS, _configName];
+ private _items = getArray (_x >> "items");
- GVAR(actions) pushBack [_displayName, _category, _condition, _statement];
+ GVAR(actions) pushBack [_displayName, _category, _condition, _statement, _items];
} forEach configProperties [configFile >> QEGVAR(medical_treatment,actions), "isClass _x"];
diff --git a/addons/medical_gui/functions/fnc_countTreatmentItems.sqf b/addons/medical_gui/functions/fnc_countTreatmentItems.sqf
new file mode 100644
index 0000000000..102d996bb3
--- /dev/null
+++ b/addons/medical_gui/functions/fnc_countTreatmentItems.sqf
@@ -0,0 +1,53 @@
+#include "..\script_component.hpp"
+/*
+ * Author: AmsteadRayle
+ * Counts how many of the given items are present between the medic and patient.
+ * If medic or patient are in a vehicle then vehicle's inventory will also be checked.
+ *
+ * Arguments:
+ * 0: Items
+ *
+ * Return Value:
+ * Counts (can be nil)
+ *
+ * Example:
+ * [items] call ace_medical_gui_fnc_countTreatmentItems
+ *
+ * Public: No
+ */
+
+params ["_items"];
+
+private _medicCount = 0;
+private _patientCount = nil;
+private _vehicleCount = nil;
+
+// Medic
+{
+ _medicCount = _medicCount + ([ACE_player, _x] call EFUNC(common,getCountOfItem));
+} forEach _items;
+
+// Patient
+if (ACE_player != GVAR(target)) then {
+ _patientCount = 0;
+ {
+ _patientCount = _patientCount + ([GVAR(target), _x] call EFUNC(common,getCountOfItem));
+ } forEach _items;
+};
+
+// Vehicle
+private _medicVehicle = objectParent ACE_player;
+private _patientVehicle = objectParent GVAR(target);
+private _vehicle = if (!isNull _medicVehicle) then {_medicVehicle} else {_patientVehicle};
+
+if (!isNull _vehicle) then {
+ _vehicleCount = 0;
+ (getItemCargo _vehicle) params ["_itemTypes", "_itemCounts"];
+ {
+ private _item = _x;
+ private _index = _itemTypes find _item;
+ _vehicleCount = _vehicleCount + (_itemCounts param [_index, 0]);
+ } forEach _items;
+};
+
+[_medicCount, _patientCount, _vehicleCount]
diff --git a/addons/medical_gui/functions/fnc_formatItemCounts.sqf b/addons/medical_gui/functions/fnc_formatItemCounts.sqf
new file mode 100644
index 0000000000..7ef294f4eb
--- /dev/null
+++ b/addons/medical_gui/functions/fnc_formatItemCounts.sqf
@@ -0,0 +1,32 @@
+#include "..\script_component.hpp"
+/*
+ * Author: AmsteadRayle
+ * Format item counts to be shown in the tooltip.
+ *
+ * Arguments:
+ * 0: Medic count
+ * 1: Patient count
+ * 2: Vehicle count
+ *
+ * Return Value:
+ * Item count string
+ *
+ * Example:
+ * [medicCount, patientCount, vehicleCount] call ace_medical_gui_fnc_formatItemCounts
+ *
+ * Public: No
+ */
+
+params ["_medicCount", "_patientCount", "_vehicleCount"];
+
+private _countStrings = [format ["%1 %2", _medicCount, LLSTRING(TreatmentItemCount_Medic)]];
+
+if ((EGVAR(medical_treatment,allowSharedEquipment) != 2) && {!isNil "_patientCount"}) then {
+ _countStrings pushBack format ["%1 %2", _patientCount, LLSTRING(TreatmentItemCount_Patient)];
+};
+
+if (!isNil "_vehicleCount") then {
+ _countStrings pushBack format ["%1 %2", _vehicleCount, LLSTRING(TreatmentItemCount_Vehicle)];
+};
+
+_countStrings joinString "\n"
diff --git a/addons/medical_gui/functions/fnc_onKeyDown.sqf b/addons/medical_gui/functions/fnc_onKeyDown.sqf
new file mode 100644
index 0000000000..27496e643b
--- /dev/null
+++ b/addons/medical_gui/functions/fnc_onKeyDown.sqf
@@ -0,0 +1,84 @@
+#include "..\script_component.hpp"
+#include "\a3\ui_f\hpp\defineDIKCodes.inc"
+/*
+ * Author: AmsteadRayle
+ * Handles keyboard inputs in medical menu.
+ *
+ * Arguments:
+ * 0: Menu display
+ * 1: Key being pressed
+ * 2: Shift state
+ * 3: Ctrl state
+ * 4: Alt state
+ *
+ * Return Value:
+ * None
+ *
+ * Public: No
+*/
+// TODO: Is the airway category ever visible? Can the dynamic category stuff be removed?
+
+#define NUMBER_KEYS [DIK_1, DIK_2, DIK_3, DIK_4, DIK_5, DIK_6, DIK_7, DIK_8, DIK_9, DIK_0]
+
+params ["", "_args"];
+_args params ["_display", "_keyPressed", "_shiftState", "_ctrlState", "_altState"];
+
+private _return = true; // Override existing keybinds for keys used here
+
+private _visibleCategories = [
+ "bandage","medication","airway","advanced","drag"
+] select {
+ private _category = _x;
+ (GVAR(actions) findIf {_category == _x select 1}) > -1
+};
+
+private _allCategories = ["triage", "examine"] + _visibleCategories + ["toggle"];
+
+// Use hashmap as a shortcut to "zip" two arrays together
+// Use categories as keys in hashmap because there are fewer,
+// otherwise the hashmap is padded with nil
+private _keyCategoryPairs = _allCategories createHashMapFromArray NUMBER_KEYS;
+
+private _temp_category = "";
+
+switch (true) do {
+// Dynamically assign number keys to visible categories
+ {
+ _temp_category = _x; // _x does not exist inside case code
+ case (_keyPressed == _y): {
+ GVAR(selectedCategory) = _temp_category;
+ if (_temp_category == "toggle") then {
+ call FUNC(handleToggle);
+ }
+ };
+ } forEach _keyCategoryPairs;
+
+// Select body part through similar keyboard layout:
+// w
+// a s d
+// z x
+ case (_keyPressed == DIK_W): {
+ GVAR(selectedBodyPart) = 0;
+ };
+ case (_keyPressed == DIK_S): {
+ GVAR(selectedBodyPart) = 1;
+ };
+ case (_keyPressed == DIK_D): {
+ GVAR(selectedBodyPart) = 2;
+ };
+ case (_keyPressed == DIK_A): {
+ GVAR(selectedBodyPart) = 3;
+ };
+ case (_keyPressed == DIK_X): {
+ GVAR(selectedBodyPart) = 4;
+ };
+ case (_keyPressed == DIK_Z): {
+ GVAR(selectedBodyPart) = 5;
+ };
+
+ default {
+ _return = false; // Do not override existing keybinds for keys not used here
+ };
+};
+
+_return
diff --git a/addons/medical_gui/functions/fnc_onMenuOpen.sqf b/addons/medical_gui/functions/fnc_onMenuOpen.sqf
index bdf5ea9b06..e77d92bddd 100644
--- a/addons/medical_gui/functions/fnc_onMenuOpen.sqf
+++ b/addons/medical_gui/functions/fnc_onMenuOpen.sqf
@@ -26,8 +26,8 @@ if (EGVAR(interact_menu,menuBackground) == 2) then {0 cutRsc [QEGVAR(interact_me
[{setMousePosition _this}, _this] call CBA_fnc_execNextFrame;
}, getMousePosition] call CBA_fnc_execNextFrame;
-// Set target name as title
-private _ctrlTitle = _display displayCtrl IDC_TITLE;
+// Set middle header as target name
+private _ctrlTitle = _display displayCtrl IDC_NAME;
_ctrlTitle ctrlSetText ([GVAR(target)] call EFUNC(common,getName));
// Initially hide the triage select buttons
@@ -59,9 +59,25 @@ private _countEnabled = {
if (_category isEqualType "") then { _x set [1, (GVAR(actions) findIf {_category == _x select 1}) > -1]; };
_x select 1
} count _list;
-private _offsetX = POS_X(1.5) + 0.5 * (POS_X(12) - POS_X(_countEnabled * 1.5));
+private _offsetX = POS_X(1.5) + 0.5 * (POS_X(12.33) - POS_X(_countEnabled * 1.5) - POS_W(2 * 0.2));
+// 0.2 - divider gap size
+
+// Set divider position
+private _ctrl = _display displayCtrl IDC_TRIAGE_DIVIDER;
+_ctrl ctrlSetPositionX _offsetX + POS_W(1.5) + POS_W(0.085); // 0.085 = (0.2 - 0.03) / 2
+_ctrl ctrlCommit 0;
+
+_ctrl = _display displayCtrl IDC_TOGGLE_DIVIDER;
+_ctrl ctrlSetPositionX _offsetX + POS_W(1.5*(_countEnabled - 1)) + POS_W(0.2) + POS_W(0.085);
+_ctrl ctrlCommit 0;
+
{
_x params ["_idc", "_enabled"];
+
+ if (_forEachIndex == 1 || {_forEachIndex == count _list - 1}) then {
+ _offsetX = _offsetX + POS_W(0.2);
+ };
+
private _ctrl = _display displayCtrl _idc;
if (_enabled) then {
_ctrl ctrlSetPositionX _offsetX;
@@ -71,3 +87,13 @@ private _offsetX = POS_X(1.5) + 0.5 * (POS_X(12) - POS_X(_countEnabled * 1.5));
_ctrl ctrlShow false;
};
} forEach _list;
+
+// Set toggle button icon and tooltip
+private _ctrl = _display displayCtrl IDC_TOGGLE;
+if (GVAR(target) == ACE_player) then {
+ _ctrl ctrlSetText QPATHTOF(data\categories\toggle_to_other.paa);
+ _ctrl ctrlSetTooltip LLSTRING(ToggleToOther);
+} else {
+ _ctrl ctrlSetText QPATHTOF(data\categories\toggle_to_self.paa);
+ _ctrl ctrlSetTooltip LLSTRING(ToggleToSelf);
+};
diff --git a/addons/medical_gui/functions/fnc_updateActions.sqf b/addons/medical_gui/functions/fnc_updateActions.sqf
index 43141b9c10..6d52b8ccdf 100644
--- a/addons/medical_gui/functions/fnc_updateActions.sqf
+++ b/addons/medical_gui/functions/fnc_updateActions.sqf
@@ -38,7 +38,7 @@ if (_showTriage) exitWith {
// Show treatment options on action buttons
private _shownIndex = 0;
{
- _x params ["_displayName", "_category", "_condition", "_statement"];
+ _x params ["_displayName", "_category", "_condition", "_statement", "_items"];
// Check action category and condition
if (_category == _selectedCategory && {call _condition}) then {
@@ -50,6 +50,27 @@ private _shownIndex = 0;
_ctrl ctrlSetPositionY POS_H(1.1 * _shownIndex);
_ctrl ctrlCommit 0;
+ private _countText = "";
+ if (_items isNotEqualTo []) then {
+ if ("ACE_surgicalKit" in _items && {EGVAR(medical_treatment,consumeSurgicalKit) == 2}) then {
+ _items = ["ACE_suture"];
+ };
+ private _counts = [_items] call FUNC(countTreatmentItems);
+ _countText = _counts call FUNC(formatItemCounts);
+ };
+ _ctrl ctrlSetTooltipColorText [1, 1, 1, 1];
+ _ctrl ctrlSetTooltip _countText;
+
+ // Show warning if tourniquet will interfere with action
+ if (
+ GVAR(tourniquetWarning) &&
+ {(_category in ["examine", "medication"]) || (_items findIf {"IV" in _x}) > -1} &&
+ {HAS_TOURNIQUET_APPLIED_ON(GVAR(target),GVAR(selectedBodyPart))}
+ ) then {
+ _ctrl ctrlSetTooltipColorText [1, 1, 0, 1];
+ _ctrl ctrlSetTooltip LLSTRING(TourniquetWarning);
+ };
+
_ctrl ctrlSetText _displayName;
_ctrl ctrlShow true;
diff --git a/addons/medical_gui/functions/fnc_updateCategories.sqf b/addons/medical_gui/functions/fnc_updateCategories.sqf
index cf6498924e..c9917a8758 100644
--- a/addons/medical_gui/functions/fnc_updateCategories.sqf
+++ b/addons/medical_gui/functions/fnc_updateCategories.sqf
@@ -22,6 +22,7 @@ params ["_display"];
private _ctrl = _display displayCtrl _idc;
private _enable = GVAR(actions) findIf {_category == _x select 1 && {call (_x select 2)}} > -1;
+ if (_category isEqualTo "triage") then {_enable = true};
_ctrl ctrlEnable _enable;
private _selectedColor = [
@@ -36,6 +37,7 @@ params ["_display"];
_color set [-1, 0.8]; // Mouseover change
_ctrl ctrlSetActiveColor _color;
} forEach [
+ [IDC_TRIAGE, "triage"],
[IDC_EXAMINE, "examine"],
[IDC_BANDAGE, "bandage"],
[IDC_MEDICATION, "medication"],
diff --git a/addons/medical_gui/gui.hpp b/addons/medical_gui/gui.hpp
index cb7ba0f402..07ccd554f0 100644
--- a/addons/medical_gui/gui.hpp
+++ b/addons/medical_gui/gui.hpp
@@ -9,7 +9,7 @@ class RscControlsGroupNoScrollbars;
class GVAR(BodyImage): RscControlsGroupNoScrollbars {
idc = IDC_BODY_GROUP;
- x = QUOTE(POS_X(13.33));
+ x = QUOTE(POS_X(13.83));
y = QUOTE(POS_Y(2.73));
w = QUOTE(POS_W(12.33));
h = QUOTE(POS_H(12.33));
@@ -189,7 +189,7 @@ class ACE_Medical_Menu_ActionButton: RscButtonMenu {
style = ST_LEFT;
x = 0;
y = 0;
- w = QUOTE(POS_W(11.833));
+ w = QUOTE(POS_W(12.33));
h = QUOTE(POS_H(1));
size = QUOTE(POS_H(0.9));
class Attributes {
@@ -206,9 +206,11 @@ class ACE_Medical_Menu {
enableSimulation = 1;
onLoad = QUOTE(_this call FUNC(onMenuOpen));
onUnload = QUOTE(_this call FUNC(onMenuClose));
+ onKeyDown = QUOTE([ARR_3('onKeyDown', _this, QQGVAR(display))] call FUNC(onKeyDown));
class controlsBackground {
class Title: RscText {
idc = IDC_TITLE;
+ text = CSTRING(MedicalMenu);
x = QUOTE(POS_X(1));
y = QUOTE(POS_Y(0));
w = QUOTE(POS_W(38));
@@ -234,20 +236,21 @@ class ACE_Medical_Menu {
idc = -1;
style = ST_CENTER;
text = CSTRING(EXAMINE_TREATMENT);
- x = QUOTE(POS_X(1));
+ x = QUOTE(POS_X(1.5));
y = QUOTE(POS_Y(1.5));
w = QUOTE(POS_W(12.33));
h = QUOTE(POS_H(1));
sizeEx = QUOTE(POS_H(1.2));
colorText[] = {1, 1, 1, 0.9};
};
- class StatusHeader: TreatmentHeader {
- text = CSTRING(STATUS);
- x = QUOTE(POS_X(13.33));
+ class NameHeader: TreatmentHeader {
+ idc = IDC_NAME;
+ x = QUOTE(POS_X(13.83));
};
class OverviewHeader: TreatmentHeader {
text = CSTRING(OVERVIEW);
- x = QUOTE(POS_X(25.66));
+ w = QUOTE(POS_W(12.34)); // 12.33 + 12.33 + 12.34 = 37.00
+ x = QUOTE(POS_X(26.16));
};
class HeaderLine: RscText {
idc = -1;
@@ -262,8 +265,8 @@ class ACE_Medical_Menu {
onButtonClick = QUOTE(GVAR(selectedCategory) = 'triage');
text = QPATHTOF(data\categories\triage_card.paa);
tooltip = CSTRING(ViewTriageCard);
- x = QUOTE(POS_X(1.5));
- y = QUOTE(POS_Y(2.73));
+ x = QUOTE(POS_X(1.75));
+ y = QUOTE(POS_Y(2.75));
w = QUOTE(POS_W(1.5));
h = QUOTE(POS_H(1.5));
color[] = {1, 1, 1, 1};
@@ -278,55 +281,65 @@ class ACE_Medical_Menu {
onButtonClick = QUOTE(GVAR(selectedCategory) = 'examine');
text = QPATHTOF(data\categories\examine_patient.paa);
tooltip = CSTRING(ExaminePatient);
- x = QUOTE(POS_X(3));
+ x = QUOTE(POS_X(3.25));
};
class Bandage: Triage {
idc = IDC_BANDAGE;
onButtonClick = QUOTE(GVAR(selectedCategory) = 'bandage');
text = QPATHTOF(data\categories\bandage_fracture.paa);
tooltip = CSTRING(BandageFractures);
- x = QUOTE(POS_X(4.5));
+ x = QUOTE(POS_X(4.75));
};
class Medication: Triage {
idc = IDC_MEDICATION;
onButtonClick = QUOTE(GVAR(selectedCategory) = 'medication');
text = QPATHTOF(data\categories\medication.paa);
tooltip = CSTRING(Medication);
- x = QUOTE(POS_X(6));
+ x = QUOTE(POS_X(6.25));
};
class Airway: Triage {
idc = IDC_AIRWAY;
onButtonClick = QUOTE(GVAR(selectedCategory) = 'airway');
text = QPATHTOF(data\categories\airway_management.paa);
tooltip = CSTRING(AirwayManagement);
- x = QUOTE(POS_X(7.5));
+ x = QUOTE(POS_X(7.75));
};
class Advanced: Triage {
idc = IDC_ADVANCED;
onButtonClick = QUOTE(GVAR(selectedCategory) = 'advanced');
text = QPATHTOF(data\categories\advanced_treatment.paa);
tooltip = CSTRING(AdvancedTreatment);
- x = QUOTE(POS_X(9));
+ x = QUOTE(POS_X(9.25));
};
class Drag: Triage {
idc = IDC_DRAG;
onButtonClick = QUOTE(GVAR(selectedCategory) = 'drag');
text = QPATHTOF(data\categories\carry.paa);
tooltip = CSTRING(DragCarry);
- x = QUOTE(POS_X(10.5));
+ x = QUOTE(POS_X(10.75));
};
class Toggle: Triage {
idc = IDC_TOGGLE;
onButtonClick = QUOTE(call FUNC(handleToggle));
- text = QPATHTOF(data\categories\toggle_self.paa);
- tooltip = CSTRING(ToggleSelf);
+ text = QPATHTOF(data\categories\toggle_to_other.paa);
x = QUOTE(POS_X(12));
};
+ class TriageDivider: HeaderLine {
+ idc = IDC_TRIAGE_DIVIDER;
+ x = QUOTE(POS_X(3.265));
+ y = QUOTE(POS_Y(3.0));
+ w = QUOTE(POS_W(0.03));
+ h = QUOTE(POS_H(1.0));
+ };
+ class ToggleDivider: TriageDivider {
+ idc = IDC_TOGGLE_DIVIDER;
+ x = QUOTE(POS_X(3.265));
+ };
class TriageCard: RscListBox {
idc = IDC_TRIAGE_CARD;
x = QUOTE(POS_X(1.5));
y = QUOTE(POS_Y(4.4));
- w = QUOTE(POS_W(11.833));
+ w = QUOTE(POS_W(12.33));
h = QUOTE(POS_H(10));
sizeEx = QUOTE(POS_H(0.7));
colorSelect[] = {1, 1, 1, 1};
@@ -340,7 +353,7 @@ class ACE_Medical_Menu {
idc = IDC_ACTION_BUTTON_GROUP;
x = QUOTE(POS_X(1.5));
y = QUOTE(POS_Y(4.4));
- w = QUOTE(POS_W(11.833));
+ w = QUOTE(POS_W(12.33));
h = QUOTE(POS_H(10));
};
class BodyImage: GVAR(BodyImage) {};
@@ -348,7 +361,7 @@ class ACE_Medical_Menu {
idc = -1;
onButtonClick = QUOTE(GVAR(selectedBodyPart) = 0);
tooltip = CSTRING(SelectHead);
- x = QUOTE(POS_X(18.8));
+ x = QUOTE(POS_X(19.3));
y = QUOTE(POS_Y(3.2));
w = QUOTE(POS_W(1.4));
h = QUOTE(POS_H(1.8));
@@ -359,7 +372,7 @@ class ACE_Medical_Menu {
class SelectTorso: SelectHead {
onButtonClick = QUOTE(GVAR(selectedBodyPart) = 1);
tooltip = CSTRING(SelectTorso);
- x = QUOTE(POS_X(18.4));
+ x = QUOTE(POS_X(18.9));
y = QUOTE(POS_Y(5));
w = QUOTE(POS_W(2.2));
h = QUOTE(POS_H(3.8));
@@ -367,7 +380,7 @@ class ACE_Medical_Menu {
class SelectArmLeft: SelectHead {
onButtonClick = QUOTE(GVAR(selectedBodyPart) = 2);
tooltip = CSTRING(SelectLeftArm);
- x = QUOTE(POS_X(20.6));
+ x = QUOTE(POS_X(21.1));
y = QUOTE(POS_Y(5.1));
w = QUOTE(POS_W(1.1));
h = QUOTE(POS_H(4.6));
@@ -375,12 +388,12 @@ class ACE_Medical_Menu {
class SelectArmRight: SelectArmLeft {
onButtonClick = QUOTE(GVAR(selectedBodyPart) = 3);
tooltip = CSTRING(SelectRightArm);
- x = QUOTE(POS_X(17.4));
+ x = QUOTE(POS_X(17.8));
};
class SelectLegLeft: SelectHead {
onButtonClick = QUOTE(GVAR(selectedBodyPart) = 4);
tooltip = CSTRING(SelectLeftLeg);
- x = QUOTE(POS_X(19.5));
+ x = QUOTE(POS_X(20.0));
y = QUOTE(POS_Y(8.8));
w = QUOTE(POS_W(1.1));
h = QUOTE(POS_H(5.8));
@@ -388,11 +401,11 @@ class ACE_Medical_Menu {
class SelectLegRight: SelectLegLeft {
onButtonClick = QUOTE(GVAR(selectedBodyPart) = 5);
tooltip = CSTRING(SelectRightLeg);
- x = QUOTE(POS_X(18.4));
+ x = QUOTE(POS_X(18.9));
};
class Injuries: TriageCard {
idc = IDC_INJURIES;
- x = QUOTE(POS_X(25.66));
+ x = QUOTE(POS_X(26.17));
w = QUOTE(POS_W(12.33));
};
class ActivityHeader: TreatmentHeader {
@@ -404,27 +417,33 @@ class ACE_Medical_Menu {
};
class QuickViewHeader: ActivityHeader {
text = CSTRING(QUICK_VIEW);
- x = QUOTE(POS_X(19.5));
+ x = QUOTE(POS_X(20.0));
};
class LowerLine: HeaderLine {
y = QUOTE(POS_Y(18.5));
};
+ class LowerDivider: HeaderLine {
+ x = QUOTE(POS_X(19.985));
+ y = QUOTE(POS_Y(18.75));
+ w = QUOTE(POS_W(0.03));
+ h = QUOTE(POS_H(7.6));
+ };
class Activity: Injuries {
idc = IDC_ACTIVITY;
x = QUOTE(POS_X(1.5));
y = QUOTE(POS_Y(18.5));
w = QUOTE(POS_W(18.5));
- h = QUOTE(POS_H(6.5));
+ h = QUOTE(POS_H(7.6));
colorBackground[] = {0, 0, 0, 0};
};
class QuickView: Activity {
idc = IDC_QUICKVIEW;
- x = QUOTE(POS_X(21.5));
+ x = QUOTE(POS_X(20.0));
};
class TriageStatus: RscText {
idc = IDC_TRIAGE_STATUS;
style = ST_CENTER;
- x = QUOTE(POS_X(13.33));
+ x = QUOTE(POS_X(13.83));
y = QUOTE(POS_Y(15.5));
w = QUOTE(POS_W(12.33));
h = QUOTE(POS_H(1.1));
@@ -432,6 +451,23 @@ class ACE_Medical_Menu {
};
class TriageToggle: GVAR(TriageToggle) {};
class TriageSelect: GVAR(TriageSelect) {};
+ class BodyLabelLeft: RscText {
+ idc = -1;
+ style = ST_RIGHT;
+ text = CSTRING(BodyLabelLeft);
+ font = "RobotoCondensedBold";
+ x = QUOTE(POS_X(17.0));
+ y = QUOTE(POS_Y(10.5));
+ w = QUOTE(POS_W(6.0));
+ h = QUOTE(POS_H(2.0));
+ sizeEx = QUOTE(POS_H(1.4));
+ colorText[] = {1, 1, 1, 0.33};
+ shadow = 0;
+ };
+ class BodyLabelRight: BodyLabelLeft {
+ style = ST_LEFT;
+ text = CSTRING(BodyLabelRight);
+ };
};
};
diff --git a/addons/medical_gui/initSettings.sqf b/addons/medical_gui/initSettings.sqf
index 1d87de401e..5c9024fea5 100644
--- a/addons/medical_gui/initSettings.sqf
+++ b/addons/medical_gui/initSettings.sqf
@@ -162,3 +162,12 @@ private _categoryColors = [ELSTRING(medical,Category), format ["| %1 |", LELSTRI
[0, 5, 1],
false
] call CBA_fnc_addSetting;
+
+[
+ QGVAR(tourniquetWarning),
+ "CHECKBOX",
+ [LSTRING(TourniquetWarning_DisplayName), LSTRING(TourniquetWarning_Description)],
+ [ELSTRING(medical,Category), LSTRING(SubCategory)],
+ false,
+ false
+] call CBA_fnc_addSetting;
diff --git a/addons/medical_gui/script_component.hpp b/addons/medical_gui/script_component.hpp
index eb46b19aed..d69fb65434 100644
--- a/addons/medical_gui/script_component.hpp
+++ b/addons/medical_gui/script_component.hpp
@@ -37,6 +37,7 @@
#define IDD_MEDICAL_MENU 38580
#define IDC_TITLE 1200
+#define IDC_NAME 1210
#define IDC_TRIAGE 1300
#define IDC_EXAMINE 1310
#define IDC_BANDAGE 1320
@@ -45,6 +46,8 @@
#define IDC_ADVANCED 1350
#define IDC_DRAG 1360
#define IDC_TOGGLE 1370
+#define IDC_TRIAGE_DIVIDER 1380
+#define IDC_TOGGLE_DIVIDER 1390
#define IDC_TRIAGE_CARD 1400
#define IDC_INJURIES 1410
diff --git a/addons/medical_gui/stringtable.xml b/addons/medical_gui/stringtable.xml
index 3224c0fc43..ef08d7b26b 100644
--- a/addons/medical_gui/stringtable.xml
+++ b/addons/medical_gui/stringtable.xml
@@ -284,12 +284,15 @@
Peek Medical Info
+ Podgląd Informacji Medycznych
Medical Peek Duration
+ Czas Trwania Podglądu Medycznego
How long the medical info peek remains open after releasing the key.
+ Jak długo podgląd informacji medycznych pozostaje otwarty po zwolnieniu przycisku.
Load Patient
@@ -534,21 +537,13 @@
拖 / 背
Sürükle / Taşı
-
- Toggle (Self)
- Umschalter (Selbst)
- Лечить себя/другого раненого
- Basculer (soi-même)
- Przełącz (na siebie)
- Alternar
- Alternar (Si mesmo)
- Přepnout (na sebe)
- Attiva (Te Stesso)
- 切り替え (自分)
- 토글 (자신)
- 切换(自己)
- 切換 (自己)
- Değiştir (Şahsi)
+
+ Switch to self
+ Zmień na siebie
+
+
+ Switch to target
+ Zmień na pacjenta
Head
@@ -968,18 +963,23 @@
No bleeding
+ Brak krwawienia
Slow bleeding
+ Słabe krwawienie
Moderate bleeding
+ Umiarkowane krwawienie
Severe bleeding
+ Poważne krwawienie
Massive bleeding
+ Bardzo silne krwawienie
in Pain
@@ -1047,6 +1047,7 @@
No blood loss
+ Brak utraty krwi
@@ -1279,15 +1280,19 @@
Peek Medical Info on Hit
+ Podgląd Informacji Medycznych po Zranieniu
Temporarily show medical info when injured.
+ Tymczasowe wyświetlanie informacji medycznych po zranieniu.
Medical Peek Duration on Hit
+ Czas trwania podglądu informacji medycznych po zranieniu
How long the medical info peek remains open after being injured.
+ Jak długo podgląd informacji medycznych pozostaje otwarty po otrzymaniu obrażeń.
Show Trauma Sustained
@@ -1307,9 +1312,11 @@
Body Part Outline Color
+ Kolor Konturu Części Ciała
Color of outline around selected body part.
+ Kolor konturu wokół wybranej części ciała.
Minor Trauma
@@ -1343,5 +1350,34 @@
Chronisches Trauma
심각한 외상
+
+ L
+ L
+
+
+ R
+ P
+
+
+ in your inventory
+ w twoim ekwipunku
+
+
+ in patient's inventory
+ w ekwipunku pacjenta
+
+
+ in vehicle's inventory
+ w ekwipunku pojazdu
+
+
+ No effect until tourniquet removed
+
+
+ Show Tourniquet Warning
+
+
+ Show a warning tooltip when a tourniquet will interfere with a medical action.
+
diff --git a/addons/medical_treatment/stringtable.xml b/addons/medical_treatment/stringtable.xml
index 0c0a20e2f8..1dbb876418 100644
--- a/addons/medical_treatment/stringtable.xml
+++ b/addons/medical_treatment/stringtable.xml
@@ -415,10 +415,12 @@
Grave Digging Time
무덤 파는 시간
+ Czas Kopania Grobu
Time, in seconds, required to dig a grave for a body.
시신의 무덤을 파는 데 필요한 시간(초 단위).
+ Czas, w sekundach wymagany do wykopania grobu.
Allow Epinephrine
@@ -860,11 +862,13 @@
Create Grave Markers
Erstelle Grabmal
Crear Tumba
+ Utwórz Nagrobek
Enables the creation of grave markers when digging graves.
Erstellt Grabmale beim Graben von Gräbern.
Habilita la creación de Tumbas al cavar tumbas.
+ Umożliwia tworzenie nagrobków podczas kopania grobów.
Allow IV Transfusion
@@ -1748,7 +1752,7 @@
Autoiniettore di morfina
Auto-injetor de morfina
モルヒネ注射器
- 모르핀 자동주사기
+ 자동주사기 (모르핀)
吗啡自动注射器
嗎啡自動注射器
Morfin otomatik enjektör
@@ -1796,7 +1800,7 @@
Auto-injetor de Adenosina
Аденозин в пневмошприце
アデノシン注射器
- 아데노신 자동주사기
+ 자동주사기 (아데노신)
腺苷自动注射器
腺苷自動注射器
Adenosin otomatik enjektörü
@@ -1843,7 +1847,7 @@
Autoiniettore di atropina
Auto-injetor de Atropina
アトロピン注射器
- 아트로핀 자동주사기
+ 자동주사기 (아트로핀)
阿托品自动注射器
阿托品自動注射器
Atropin otomatik enjektör
@@ -1892,7 +1896,7 @@
Autoiniettore di adrenalina
Auto-injetor de epinefrina
アドレナリン注射器
- 에피네프린 자동주사기
+ 자동주사기 (에피네프린)
肾上腺素自动注射器
腎上腺素自動注射器
Epinefrin otomatik enjektör
@@ -3419,6 +3423,7 @@
No pain
+ Nie odczuwa bólu
In mild pain
@@ -3501,6 +3506,7 @@
No IV
+ Brak podpiętego IV
Blood Pressure
@@ -4501,10 +4507,12 @@
Dig grave for body
시체를 위해 무덤 파기
+ Wykop grób na ciało
Digging grave for body...
시체를 위한 무덤 파는 중...
+ Kopanie grobu...
%1 has bandaged patient
diff --git a/addons/mx2a/stringtable.xml b/addons/mx2a/stringtable.xml
index 390a264f3a..a16caf4075 100644
--- a/addons/mx2a/stringtable.xml
+++ b/addons/mx2a/stringtable.xml
@@ -30,7 +30,7 @@
Тепловизионный прибор
Dispositivo di visione termica
サーマル画像表示双眼鏡
- 열영상 장치
+ 열화상 장치
热成像装置
熱成像裝置
Termal Görüntüleme Aracı
diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml
index efce83a658..d624fae683 100644
--- a/addons/realisticnames/stringtable.xml
+++ b/addons/realisticnames/stringtable.xml
@@ -4327,7 +4327,7 @@
Burris XTR II (ASP-1 Kir)
Burris XTR II (ASP-1 Kir)
Burris XTR II(ASP-1 Kir)
- 버리스 XTR II (ASP-1 키르)
+ 버리스 XTR II (ASP-1 키르용)
Burris XTR II (ASP-1 Kir)
Burris XTR II (ASP-1 Kir)
diff --git a/addons/reloadlaunchers/stringtable.xml b/addons/reloadlaunchers/stringtable.xml
index 4c6430f323..4f34e00d0d 100644
--- a/addons/reloadlaunchers/stringtable.xml
+++ b/addons/reloadlaunchers/stringtable.xml
@@ -109,6 +109,7 @@
Buddy Loading
+ Ładowanie przez Asystenta
diff --git a/addons/repair/XEH_postInit.sqf b/addons/repair/XEH_postInit.sqf
index f717e56651..58bb1be6e5 100644
--- a/addons/repair/XEH_postInit.sqf
+++ b/addons/repair/XEH_postInit.sqf
@@ -64,7 +64,8 @@
private _spareTracks = _vehicle getVariable QGVAR(editorLoadedTracks);
if (isNil "_spareTracks") then {
- _spareTracks = parseNumber (_vehicle isKindOf "Tank"); // must match eden attribute default
+ private _defaultCount = parseNumber (_vehicle isKindOf "Tank"); // must match eden attribute default
+ _spareTracks = [configOf _vehicle >> QGVAR(spareTracks), "NUMBER", _defaultCount] call CBA_fnc_getConfigEntry;
};
if (_spareTracks > 0) then {
[_vehicle, _spareTracks, "ACE_Track"] call FUNC(addSpareParts);
@@ -72,7 +73,8 @@
private _spareWheels = _vehicle getVariable QGVAR(editorLoadedWheels);
if (isNil "_spareWheels") then {
- _spareWheels = parseNumber (_vehicle isKindOf "Car"); // must match eden attribute default
+ private _defaultCount = parseNumber (_vehicle isKindOf "Car"); // must match eden attribute default
+ _spareWheels = [configOf _vehicle >> QGVAR(spareWheels), "NUMBER", _defaultCount] call CBA_fnc_getConfigEntry;
};
if (_spareWheels > 0) then {
[_vehicle, _spareWheels, "ACE_Wheel"] call FUNC(addSpareParts);
diff --git a/addons/repair/functions/fnc_addRepairActions.sqf b/addons/repair/functions/fnc_addRepairActions.sqf
index d99c264123..d071f577a6 100644
--- a/addons/repair/functions/fnc_addRepairActions.sqf
+++ b/addons/repair/functions/fnc_addRepairActions.sqf
@@ -28,6 +28,7 @@ TRACE_2("addRepairActions", _vehicle,_type);
// do nothing if the class is already initialized
private _initializedClasses = GETMVAR(GVAR(initializedClasses),[]);
if (_type in _initializedClasses) exitWith {};
+if (_type == "") exitWith {};
// get selections to ignore
private _selectionsToIgnore = _vehicle call FUNC(getSelectionsToIgnore);
diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml
index b32b09692b..09e68e659c 100644
--- a/addons/zeus/stringtable.xml
+++ b/addons/zeus/stringtable.xml
@@ -1935,9 +1935,11 @@
Lay Trenchline
+ Wykop Okop
+SHIFT to force (Can only lay N/S or E/W)
+ +SHIFT aby wymusić (Można wykopać tylko N/S lub E/W)
diff --git a/docs/wiki/framework/repair-framework.md b/docs/wiki/framework/repair-framework.md
index d825aa0372..09e2686411 100644
--- a/docs/wiki/framework/repair-framework.md
+++ b/docs/wiki/framework/repair-framework.md
@@ -14,19 +14,38 @@ version:
## 1. Config Values
-### 1.2 Setting Vehicle As Repair Location
+### 1.1 Setting Vehicle As Repair Location
A vehicle will be set as a repair truck based on the config `ace_repair_canRepair`.
Setting `fullRepairLocation` needs to be enabled and is by *disabled* default.
```cpp
-class CfgVehicles: Car_F{
- class MyRepairTruck {
+class CfgVehicles {
+ class Car_F;
+ class MyTruck: Car_F {
ace_repair_canRepair = 1; // Make repair vehicle
};
};
```
+### 1.2 Setting Vehicle Spare Wheels and Tracks
+
+A vehicle can have a default count of spare wheels/tracks based on the config `ace_repair_spareWheels` and `ace_repair_spareTracks`.
+Values set in 3den for a vehicle will be used first. Vehicles with no value set in 3den or config will default to 1 spare wheel/track.
+
+```cpp
+class CfgVehicles {
+ class Car_F;
+ class MyTruck: Car_F {
+ ace_repair_spareWheels = 4;
+ };
+ class Tank_F;
+ class MyTank: Tank_F {
+ ace_repair_spareTracks = 4;
+ };
+};
+```
+
## 2. Variables
## 2.1 Make A Vehicle Into A Repair Truck
diff --git a/extras/scripts/medical_dummy_outline.bat b/extras/scripts/medical_dummy_outline.bat
new file mode 100644
index 0000000000..72cf33357e
--- /dev/null
+++ b/extras/scripts/medical_dummy_outline.bat
@@ -0,0 +1,31 @@
+@echo off
+setlocal enabledelayedexpansion
+
+@REM Loop over all arguments
+for %%x in (%*) do (
+ SET final_img=%%~nx_s%%~xx
+ SET scratch=%%~nx_scratch%%~xx
+
+ copy /Y "%%~x" "!final_img!"
+ copy /Y "%%~x" "!scratch!"
+
+@REM Scale up now and scale back down at the end to smooth everything out
+@REM Dilate a little to get the edge offset
+ magick mogrify -filter spline -resize 200%% ^
+ -morphology Dilate Octagon:3 ^
+ !scratch!
+@REM Dilate a lot to get the edge thickness
+ magick mogrify -filter spline -resize 200%% ^
+ -morphology Dilate Octagon:8 ^
+ !final_img!
+
+@REM Subtract to get just the edge
+ magick composite !scratch! !final_img! -compose difference !final_img!
+
+@REM Original picture has alpha values up to 77. Now scale it up to full 255
+ magick mogrify -channel A -level 1%%,30%% +channel ^
+ -filter Lagrange -resize 50%% ^
+ !final_img!
+
+ del !scratch!
+)
diff --git a/optionals/tracers/CfgMagazineWells.hpp b/optionals/tracers/CfgMagazineWells.hpp
index 4d0b0d5788..0552ea21a0 100644
--- a/optionals/tracers/CfgMagazineWells.hpp
+++ b/optionals/tracers/CfgMagazineWells.hpp
@@ -123,14 +123,14 @@ class CfgMagazineWells {
};
class CBA_762x51_M14 {
ADDON[] = {
- "ACE_20Rnd_762x51_Mag_Tracer_green",
- "ACE_20Rnd_762x51_Mag_Tracer_yellow"
+ "ACE_20Rnd_762x51_Mag_tracer_green",
+ "ACE_20Rnd_762x51_Mag_tracer_yellow"
};
};
class CBA_762x51_G3 {
ADDON[] = {
- "ACE_20Rnd_762x51_Mag_Tracer_green",
- "ACE_20Rnd_762x51_Mag_Tracer_yellow"
+ "ACE_20Rnd_762x51_Mag_tracer_green",
+ "ACE_20Rnd_762x51_Mag_tracer_yellow"
};
};
class CBA_762x54R_LINKS {
diff --git a/sqfc.json b/sqfc.json
index a3c2f68f4e..53209261b8 100644
--- a/sqfc.json
+++ b/sqfc.json
@@ -11,7 +11,8 @@
"xeh_prep.sqf",
"\\dev\\",
"medical_ai\\statemachine.sqf",
- "common\\functions\\fnc_dummy.sqf"
+ "common\\functions\\fnc_dummy.sqf",
+ "zeus\\functions\\fnc_zeusAttributes.sqf"
],
"outputDir": "P:/",
"workerThreads": 12
diff --git a/tools/publish.py b/tools/publish.py
index c7254fdc14..5ddc6980ae 100644
--- a/tools/publish.py
+++ b/tools/publish.py
@@ -90,71 +90,33 @@ def main(argv):
if repl.lower() != "y":
return 0
-
-
#ACE Main - http://steamcommunity.com/sharedfiles/filedetails/?id=463939057
# Note: command line publisher doesn't like our file structure, just upload this one manually
-
- #compat_r3f: r3 - https://steamcommunity.com/sharedfiles/filedetails/?id=2202404402
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_r3f"), "2202404402", changelog_path)
-
- #compat_rh_acc: - https://steamcommunity.com/sharedfiles/filedetails/?id=2202407118
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_rh_acc"), "2202407118", changelog_path)
-
- #compat_rh_de: - https://steamcommunity.com/sharedfiles/filedetails/?id=2202407963
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_rh_de"), "2202407963", changelog_path)
-
- #compat_rh_m4: - https://steamcommunity.com/sharedfiles/filedetails/?id=2202408647
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_rh_m4"), "2202408647", changelog_path)
-
- #compat_rh_pdw: - https://steamcommunity.com/sharedfiles/filedetails/?id=2202409303
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_rh_pdw"), "2202409303", changelog_path)
-
- #ace_compat_rhs_afrf3: RHS Russians - http://steamcommunity.com/sharedfiles/filedetails/?id=773131200
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_rhs_afrf3"), "773131200", changelog_path)
-
- #ace_compat_rhs_gref3: RHS GREF - http://steamcommunity.com/sharedfiles/filedetails/?id=884966711
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_rhs_gref3"), "884966711", changelog_path)
-
- #ace_compat_rhs_saf3: RHS SAF - http://steamcommunity.com/sharedfiles/filedetails/?id=2174495332
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_rhs_saf3"), "2174495332", changelog_path)
-
- #ace_compat_rhs_usf3: RHS USA - http://steamcommunity.com/sharedfiles/filedetails/?id=773125288
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_rhs_usf3"), "773125288", changelog_path)
-
- #compat_rksl_pm_ii: - https://steamcommunity.com/sharedfiles/filedetails/?id=2202410630
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_rksl_pm_ii"), "2202410630", changelog_path)
-
- #compat_sma3_iansky: - https://steamcommunity.com/sharedfiles/filedetails/?id=2202411104
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_sma3_iansky"), "2202411104", changelog_path)
-
#noactionmenu: - https://steamcommunity.com/sharedfiles/filedetails/?id=2202412030
publishFolder(os.path.join(ace_optionals_dir,"@ace_noactionmenu"), "2202412030", changelog_path)
-
+
#nocrosshair: - https://steamcommunity.com/sharedfiles/filedetails/?id=2202412481
publishFolder(os.path.join(ace_optionals_dir,"@ace_nocrosshair"), "2202412481", changelog_path)
-
+
+ #nomedical: - https://steamcommunity.com/sharedfiles/filedetails/?id=3053169823
+ publishFolder(os.path.join(ace_optionals_dir,"@ace_nomedical"), "3053169823", changelog_path)
+
+ #norealisticnames: - https://steamcommunity.com/sharedfiles/filedetails/?id=3053177117
+ publishFolder(os.path.join(ace_optionals_dir,"@ace_norealisticnames"), "3053177117", changelog_path)
+
#nouniformrestrictions: - https://steamcommunity.com/sharedfiles/filedetails/?id=2202413047
publishFolder(os.path.join(ace_optionals_dir,"@ace_nouniformrestrictions"), "2202413047", changelog_path)
-
+
#particles: - https://steamcommunity.com/sharedfiles/filedetails/?id=2202413537
publishFolder(os.path.join(ace_optionals_dir,"@ace_particles"), "2202413537", changelog_path)
-
+
#realisticdispersion: - https://steamcommunity.com/sharedfiles/filedetails/?id=2202414018
publishFolder(os.path.join(ace_optionals_dir,"@ace_realisticdispersion"), "2202414018", changelog_path)
-
+
#tracers: - https://steamcommunity.com/sharedfiles/filedetails/?id=2202414450
publishFolder(os.path.join(ace_optionals_dir,"@ace_tracers"), "2202414450", changelog_path)
- #ace_compat_gm: - https://steamcommunity.com/sharedfiles/filedetails/?id=2633534991
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_gm"), "2633534991", changelog_path)
-
- #ace_compat_sog: - https://steamcommunity.com/sharedfiles/filedetails/?id=2633537792
- publishFolder(os.path.join(ace_optionals_dir,"@ace_compat_sog"), "2633537792", changelog_path)
-
-
-
if __name__ == "__main__":
main(sys.argv)