From 2eb914836c9ed65f22ccc74d9df1a89f8cc24885 Mon Sep 17 00:00:00 2001 From: amsteadrayle <2516219+amsteadrayle@users.noreply.github.com> Date: Thu, 12 Oct 2023 12:44:13 -0400 Subject: [PATCH 01/24] Medical GUI - Add R and L labels on body image (#9480) Add R and L labels on body image --- addons/medical_gui/gui.hpp | 17 +++++++++++++++++ addons/medical_gui/stringtable.xml | 6 ++++++ 2 files changed, 23 insertions(+) diff --git a/addons/medical_gui/gui.hpp b/addons/medical_gui/gui.hpp index cb7ba0f402..fb2e06c152 100644 --- a/addons/medical_gui/gui.hpp +++ b/addons/medical_gui/gui.hpp @@ -432,6 +432,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(16.5)); + 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/stringtable.xml b/addons/medical_gui/stringtable.xml index 3224c0fc43..531b34607a 100644 --- a/addons/medical_gui/stringtable.xml +++ b/addons/medical_gui/stringtable.xml @@ -1343,5 +1343,11 @@ Chronisches Trauma 심각한 외상 + + L + + + R + From bd377c49fce7c185445f4674568f68d35565908c Mon Sep 17 00:00:00 2001 From: Tim Beswick Date: Thu, 12 Oct 2023 17:45:56 +0100 Subject: [PATCH 02/24] Repair - Allow setting spare wheels/tracks count in config (#9481) * Allow setting spare wheels/tracks count in config * Update repair framework docs --- addons/repair/XEH_postInit.sqf | 6 ++++-- docs/wiki/framework/repair-framework.md | 25 ++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) 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/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 From 58cedab493a2eb7eb8af6e7894c5609d5c6fd83e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 12 Oct 2023 11:47:59 -0500 Subject: [PATCH 03/24] Repair - Fix script error if vehicle is null (#9479) --- addons/repair/functions/fnc_addRepairActions.sqf | 1 + 1 file changed, 1 insertion(+) 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); From e52594112d6981c2e44ac17645020312fe2c27f7 Mon Sep 17 00:00:00 2001 From: amsteadrayle <2516219+amsteadrayle@users.noreply.github.com> Date: Thu, 12 Oct 2023 12:50:48 -0400 Subject: [PATCH 04/24] Medical GUI - Add keybinds to navigate the Medical Menu (#9477) * Add keybinds to select categories and body parts * Add some comments, rearrange, remove debug prints * Remove unneeded escape key handling * Replace function with inline code --- addons/medical_gui/XEH_PREP.hpp | 1 + .../medical_gui/functions/fnc_onKeyDown.sqf | 84 +++++++++++++++++++ addons/medical_gui/gui.hpp | 1 + 3 files changed, 86 insertions(+) create mode 100644 addons/medical_gui/functions/fnc_onKeyDown.sqf diff --git a/addons/medical_gui/XEH_PREP.hpp b/addons/medical_gui/XEH_PREP.hpp index 857e72315b..de73cba109 100644 --- a/addons/medical_gui/XEH_PREP.hpp +++ b/addons/medical_gui/XEH_PREP.hpp @@ -10,6 +10,7 @@ PREP(handleTriageSelect); PREP(menuPFH); PREP(modifyAction); PREP(modifyActionTriageLevel); +PREP(onKeyDown); PREP(onMenuClose); PREP(onMenuOpen); PREP(openMenu); 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/gui.hpp b/addons/medical_gui/gui.hpp index fb2e06c152..ef92c67a4c 100644 --- a/addons/medical_gui/gui.hpp +++ b/addons/medical_gui/gui.hpp @@ -206,6 +206,7 @@ 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; From 1e3d9cc22ab4caad02357cd192d465330dcd89f1 Mon Sep 17 00:00:00 2001 From: amsteadrayle <2516219+amsteadrayle@users.noreply.github.com> Date: Thu, 12 Oct 2023 22:39:23 -0400 Subject: [PATCH 05/24] Medical GUI - Show number of available treatment items in medical menu (#9474) * Initial implementation of item count display * Put everything inside function, add padding * Extract and explain null string * Fix tab in config file * Add function header * Use ACE item counting function * Extract column width to variable * Move constants declaration closer to usage * Add special case for sutures * Add setting to enable/disable * Expand to allow showing in tooltip * Split into counting and formatting function * Fix incorrect check for case with no items * Remove ineffective padding from tooltip * Check for surgical kit item instead of display name * Update return description in header Co-authored-by: PabstMirror * Add `private` keyword for inline functions Co-authored-by: PabstMirror * capitalization/vars Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> * nil checks, localize macro Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> * Remove button text mode and setting * possessive * Update addons/medical_gui/functions/fnc_formatItemCounts.sqf --------- Co-authored-by: PabstMirror Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> --- addons/medical_gui/XEH_PREP.hpp | 2 + .../functions/fnc_collectActions.sqf | 3 +- .../functions/fnc_countTreatmentItems.sqf | 53 +++++++++++++++++++ .../functions/fnc_formatItemCounts.sqf | 32 +++++++++++ .../functions/fnc_updateActions.sqf | 12 ++++- addons/medical_gui/stringtable.xml | 9 ++++ 6 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 addons/medical_gui/functions/fnc_countTreatmentItems.sqf create mode 100644 addons/medical_gui/functions/fnc_formatItemCounts.sqf diff --git a/addons/medical_gui/XEH_PREP.hpp b/addons/medical_gui/XEH_PREP.hpp index de73cba109..3d1ace8b4e 100644 --- a/addons/medical_gui/XEH_PREP.hpp +++ b/addons/medical_gui/XEH_PREP.hpp @@ -2,9 +2,11 @@ PREP(addTreatmentActions); PREP(bloodLossToRGBA); PREP(canOpenMenu); PREP(collectActions); +PREP(countTreatmentItems); PREP(damageToRGBA); PREP(displayPatientInformation); PREP(displayTriageCard); +PREP(formatItemCounts); PREP(handleToggle); PREP(handleTriageSelect); PREP(menuPFH); 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_updateActions.sqf b/addons/medical_gui/functions/fnc_updateActions.sqf index 43141b9c10..ca5ca373eb 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,16 @@ 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 ctrlSetTooltip _countText; + _ctrl ctrlSetText _displayName; _ctrl ctrlShow true; diff --git a/addons/medical_gui/stringtable.xml b/addons/medical_gui/stringtable.xml index 531b34607a..3c0d2bc113 100644 --- a/addons/medical_gui/stringtable.xml +++ b/addons/medical_gui/stringtable.xml @@ -1349,5 +1349,14 @@ R + + in your inventory + + + in patient's inventory + + + in vehicle's inventory + From 5a2fd7007510492da055706481a4a713f0b3796e Mon Sep 17 00:00:00 2001 From: Grim <69561145+LinkIsGrim@users.noreply.github.com> Date: Thu, 12 Oct 2023 23:19:07 -0400 Subject: [PATCH 06/24] Field Manual - Add Medical Menu entry (#9482) * add medical menu * add R/L note * Translate display name Co-authored-by: PabstMirror --------- Co-authored-by: PabstMirror --- addons/fieldmanual/CfgHints.hpp | 22 ++++++++++++++-------- addons/fieldmanual/stringtable.xml | 22 ++++++++++++++++++++++ 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/addons/fieldmanual/CfgHints.hpp b/addons/fieldmanual/CfgHints.hpp index 7b86ba89b6..64b8022bfc 100644 --- a/addons/fieldmanual/CfgHints.hpp +++ b/addons/fieldmanual/CfgHints.hpp @@ -272,55 +272,61 @@ class CfgHints { tip = "Medical Wiki"; }; - class ACE_Adenosine: ACE_Medical_Treatment_Base { + class ACE_MedicalMenu: ACE_Medical_Treatment_Base { logicalOrder = 1; + 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[] += {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; + logicalOrder = 5; arguments[] += {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; + logicalOrder = 6; arguments[] += {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; + logicalOrder = 7; arguments[] += {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; + logicalOrder = 8; arguments[] += {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; + logicalOrder = 9; arguments[] += {QUOTE('ACE_tourniquet' call FUNC(getItemName))}; displayName = "%15"; displayNameShort = CSTRING(Medical_Treatment_CAT_ShortName); diff --git a/addons/fieldmanual/stringtable.xml b/addons/fieldmanual/stringtable.xml index 73bff03d1c..24f735ff72 100644 --- a/addons/fieldmanual/stringtable.xml +++ b/addons/fieldmanual/stringtable.xml @@ -87,6 +87,28 @@ 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. + + Medical Menu + Sanitätsmenü + Menu medyczne + Menu Médico + Медицинское меню + Menú médico + Zdravotnická nabídka + Menù Medico + Menu médical + 治療メニュー + 의료 메뉴 + 医疗菜单 + 醫療選單 + Medikal Menü + + + Treatment, Simplified + + + The %3Medical Menu%4 is a dedicated %3interface%4 to facilitate %3medical treatment%4. The %3R%4 and %3L%4 letters indicate the side of the patient's body being treated.<br/><br/>%3Usage:%4<br/>%2Use [%3%14%4] while looking at a patient to open the Medical Menu. Opening the menu without a patient allows for self-treatment.<br/>%2Alternatively, use [%3%12%4] or [%3%13%4] and select %3Medical Menu%4.<br/><br/>%3Keybinds:%4<br/>%2Use [%3W, A, S, D, X, and Z%4] to select body parts.<br/>%2Use your %3number keys%4 to select treatment categories. + Portable, Precise, Rugged From 503373bb83f8e9dfbf4be341a56d8ff764a49805 Mon Sep 17 00:00:00 2001 From: amsteadrayle <2516219+amsteadrayle@users.noreply.github.com> Date: Fri, 13 Oct 2023 07:46:42 -0400 Subject: [PATCH 07/24] Medical GUI - Improve toggle button icon and tooltip (#9485) Improve toggle button icon and tooltip --- .../data/categories/toggle_self.paa | Bin 5625 -> 0 bytes .../data/categories/toggle_to_other.paa | Bin 0 -> 5625 bytes .../data/categories/toggle_to_self.paa | Bin 0 -> 5625 bytes .../medical_gui/functions/fnc_onMenuOpen.sqf | 10 +++++++++ addons/medical_gui/gui.hpp | 3 +-- addons/medical_gui/stringtable.xml | 20 +++++------------- 6 files changed, 16 insertions(+), 17 deletions(-) delete mode 100644 addons/medical_gui/data/categories/toggle_self.paa create mode 100644 addons/medical_gui/data/categories/toggle_to_other.paa create mode 100644 addons/medical_gui/data/categories/toggle_to_self.paa 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 73108e5a98db9dc4605577ba63de35ceee58acd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5625 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 Avj6}9 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..653a6bbdb456c66eaff48db92dd66ea0eb16ef1e GIT binary patch literal 5625 zcmeGgeNYtF{XMt^!4eL=r6dNqC8-I7jBtd_OcBn`beySa zdI(X5N!k;}V$u+4<5$v|bS~;_(y580PNHbg)JY>kLv1z0+8TumDD^Je-|xL$kRvTH zI!XTMo7sim{=Prodnf2cMfvXgi&o@Y2qD2>u!zAc^Oqs4!$PLM2#ZfBGH>E7BEsSP_+bz$6UlzUPS5RMh9_JUu@4isD7r7C}CMi1@2zUEJX$XTlG~v3IwN$H~ z+4R+N<1p_+@18s@(s2;=xu_US>V zeszQ&WlUv7XN`@o8l5DQC?c8m%urpwl6T(IW!NoQ?wg<0ZrCSDikPe}h5T+A@pr!3 zlwjH~gZ=R*A)YJVX5J|xCHBsLd++oOaBm@ja*tlx)xot%G9e{rLHLI7any(Xv=Q@P zc#!ielvMsH7dHCQElm^)=-;Y5hv#TRv3no>_OehDKwc71OfIIAV>LOi%n z9%21m$NNQ5+|gSLYZf}5VD(F>Al?d4ylo$67xgnyC(X7HOUelneF>GgNTCX$jLW!&- zG(WfY{U#i%^ZLVJJrxlTdhh0ngGPN=3lt^m^!xrM1I7qGG(11&9TS!ypb;zOrw-37 z11~_qJ$Ak`vD%~u{tLu<{9ZPnfKeL99wBW!D3Hb`vz`S=Xe?Qa^P1&T23X%sC1Q~$ zU5~<@4dHHonAH!)Z@k9q`vU#fY=IVJ^(TtT9Zwer+CoR2W<4N2z1XZr_k{VM$eN_u zVZYwzW&I2lB1G2TCLQ!$Gyfhq{`$!L!}&dt{Hfxj?uL1)RkHm+5k>LQ{a1GTLR(jl z`d>VfKTtnq{i!>&>iW;xKpa#j)VqI&)@eiG2!pZ9wv|2D!eAbW)op<#83rDM{p}aD z)IaK1IlV+kOGH0R2_ z|4pQqWUDptgjQYAexwg!QGmI#@KuSz4uK&@NnSm!wR^)VHt%3uPr2VNz~SP|x|%a6 z4cx!s{(n4hAav3fV)>L{H6GH+gU7rVnLm`$=5`qO&XA9LBa!0neV))U@23b`u-^u6 zMmIZ6e>3~^U~J+&=6shk$@SHHM((^IC#|O6wdR^SprbcBvoq^?F(SalVwjl{3%{CBXP$e*TVpu+5yu1o)ZM zuke+vudKM=+;70(r(e|ln@kuwlyv$I$ALY}Uf91frkIZf5$7r5c5aR~=kXI+WiX5lwcde5)v58 z4u6ryiTYeE7EUjUPY_GYrIk^cT$&`$Ro7O;I@a(ur1?tp;GXhDA6@(c@iu`{ea=Tw zyzDv0oFQ#hHe6bmJkU{h{#+}bTydf5`VMVLPeZti;qh4c5L`R7s#yrbwj<`&@6GDj z6MY$BS+-fkUM=e#AKnci{t_W+gMHpb8a3<@+-@9*OUpToJG1V3BnR?}^dM0YjsSjH zWi*G0ko1;+l{tp6t)e2@ZpZ0$HJ>_a{($rr+y)v^4zYt2Cb6LT_0*n#c`bF1j3GM^ znKX>SfPZ$vQMT7nwHvu%%2PO&)tO^VfpgL0$FROeuk~}Eea|>m06oZ%fBxJhl#2`H zW_-9O-0lmlMu_dA>+x$mgc$2n6jI)V_`dO@g$$OhWcHrkf3}AE*|7lRNl1;$4iCy) zaapU#(|G*g6s2Syz^{I|W^jG{J?h(!FX;Vg&Qz8^5Fy`krf+*|Va;4lM}_p@d4Fij zS~DN+`2AzYKJc(*hqtK%KbUaV*0I|{=@D1CxlLdL#z&0R=@I$+FanRVaoOSdGJRJ3 zDUcEi{MrF&V7Ffk;}3{yMrK3e%Pfo!Lm^!T{LcQB3|6e9{%-(pG|E_!L{2i#KUT8xv^b=dZb~Ls+MgX;>S#tkMJE zwSb@5-MeAal`8h576g拖 / 背 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 + + + Switch to target Head From f774eaf787f32670926259f470abd5b0303d0357 Mon Sep 17 00:00:00 2001 From: amsteadrayle <2516219+amsteadrayle@users.noreply.github.com> Date: Fri, 13 Oct 2023 16:33:19 -0400 Subject: [PATCH 08/24] Medical GUI - Fix asymmetry in the medical menu (#9486) * Fix assymmetry in the medical menu * Add center divider in Activity/Quick View panel --- .../medical_gui/functions/fnc_onMenuOpen.sqf | 2 +- addons/medical_gui/gui.hpp | 57 +++++++++++-------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/addons/medical_gui/functions/fnc_onMenuOpen.sqf b/addons/medical_gui/functions/fnc_onMenuOpen.sqf index d7351804ec..9785313739 100644 --- a/addons/medical_gui/functions/fnc_onMenuOpen.sqf +++ b/addons/medical_gui/functions/fnc_onMenuOpen.sqf @@ -59,7 +59,7 @@ 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.75) + 0.5 * (POS_X(12) - POS_X(_countEnabled * 1.5)); { _x params ["_idc", "_enabled"]; private _ctrl = _display displayCtrl _idc; diff --git a/addons/medical_gui/gui.hpp b/addons/medical_gui/gui.hpp index 1539ddd5ed..b2e83efcaa 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)); @@ -235,7 +235,7 @@ 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)); @@ -244,11 +244,12 @@ class ACE_Medical_Menu { }; class StatusHeader: TreatmentHeader { text = CSTRING(STATUS); - x = QUOTE(POS_X(13.33)); + 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; @@ -263,7 +264,7 @@ 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)); + x = QUOTE(POS_X(1.75)); y = QUOTE(POS_Y(2.73)); w = QUOTE(POS_W(1.5)); h = QUOTE(POS_H(1.5)); @@ -279,42 +280,42 @@ 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; @@ -326,7 +327,7 @@ class ACE_Medical_Menu { 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 +341,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 +349,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 +360,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 +368,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 +376,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 +389,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 +405,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)); @@ -437,7 +444,7 @@ class ACE_Medical_Menu { style = ST_RIGHT; text = CSTRING(BodyLabelLeft); font = "RobotoCondensedBold"; - x = QUOTE(POS_X(16.5)); + x = QUOTE(POS_X(17.0)); y = QUOTE(POS_Y(10.5)); w = QUOTE(POS_W(6.0)); h = QUOTE(POS_H(2.0)); From b54be029df352a75ba901d944540f770f30b7687 Mon Sep 17 00:00:00 2001 From: amsteadrayle <2516219+amsteadrayle@users.noreply.github.com> Date: Sat, 14 Oct 2023 19:27:57 -0400 Subject: [PATCH 09/24] Medical GUI - Move target name to middle header (#9483) * Switch "status" header to player name * Set title to "Medical Menu" * Remove unused STATUS strings * Switch to existing MedicalMenu string Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> * Revert "Remove unused STATUS strings" This reverts commit 62c1ced06a47826f7d05ce99c3ea518fc6cb4170. --------- Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> --- addons/medical_gui/functions/fnc_onMenuOpen.sqf | 4 ++-- addons/medical_gui/gui.hpp | 5 +++-- addons/medical_gui/script_component.hpp | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/medical_gui/functions/fnc_onMenuOpen.sqf b/addons/medical_gui/functions/fnc_onMenuOpen.sqf index 9785313739..e5d507907e 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 diff --git a/addons/medical_gui/gui.hpp b/addons/medical_gui/gui.hpp index b2e83efcaa..872366ad24 100644 --- a/addons/medical_gui/gui.hpp +++ b/addons/medical_gui/gui.hpp @@ -210,6 +210,7 @@ class ACE_Medical_Menu { 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)); @@ -242,8 +243,8 @@ class ACE_Medical_Menu { sizeEx = QUOTE(POS_H(1.2)); colorText[] = {1, 1, 1, 0.9}; }; - class StatusHeader: TreatmentHeader { - text = CSTRING(STATUS); + class NameHeader: TreatmentHeader { + idc = IDC_NAME; x = QUOTE(POS_X(13.83)); }; class OverviewHeader: TreatmentHeader { diff --git a/addons/medical_gui/script_component.hpp b/addons/medical_gui/script_component.hpp index eb46b19aed..1887ed02a1 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 From c54a26cc42f7236b74d1103fb73a8fd46b04704c Mon Sep 17 00:00:00 2001 From: amsteadrayle <2516219+amsteadrayle@users.noreply.github.com> Date: Sat, 14 Oct 2023 19:28:22 -0400 Subject: [PATCH 10/24] Medical GUI - Show warning if tourniquet will interfere with medical menu action (#9475) * Warn if tourniquet will interfere with medical action * Add setting to enable, default to off * Tweak tooltip message * Tweak code style, missing semicolon Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> * Use localize macro Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> --------- Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com> --- addons/medical_gui/functions/fnc_updateActions.sqf | 11 +++++++++++ addons/medical_gui/initSettings.sqf | 9 +++++++++ addons/medical_gui/stringtable.xml | 9 +++++++++ 3 files changed, 29 insertions(+) diff --git a/addons/medical_gui/functions/fnc_updateActions.sqf b/addons/medical_gui/functions/fnc_updateActions.sqf index ca5ca373eb..6d52b8ccdf 100644 --- a/addons/medical_gui/functions/fnc_updateActions.sqf +++ b/addons/medical_gui/functions/fnc_updateActions.sqf @@ -58,8 +58,19 @@ private _shownIndex = 0; 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/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/stringtable.xml b/addons/medical_gui/stringtable.xml index b1629a7399..52c7307146 100644 --- a/addons/medical_gui/stringtable.xml +++ b/addons/medical_gui/stringtable.xml @@ -1348,5 +1348,14 @@ in vehicle's inventory + + No effect until tourniquet removed + + + Show Tourniquet Warning + + + Show a warning tooltip when a tourniquet will interfere with a medical action. + From 8104c8f465ed561a079c2c17330dae074183c319 Mon Sep 17 00:00:00 2001 From: Grim <69561145+LinkIsGrim@users.noreply.github.com> Date: Sat, 14 Oct 2023 20:21:08 -0400 Subject: [PATCH 11/24] Common - Increase sway update frequency (#9490) increase sway update frequency --- addons/common/functions/fnc_swayLoop.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 863d88ff419bc09e85d021bddd83d4686e53da2b Mon Sep 17 00:00:00 2001 From: amsteadrayle <2516219+amsteadrayle@users.noreply.github.com> Date: Sun, 15 Oct 2023 18:45:45 -0400 Subject: [PATCH 12/24] Medical GUI - Add divider bars for triage and toggle category buttons (#9496) * Add divider bars for triage and toggle category buttons * Tweak vertical position of category icons * Fix spacing --- .../medical_gui/functions/fnc_onMenuOpen.sqf | 18 +++++++++++++++++- addons/medical_gui/gui.hpp | 13 ++++++++++++- addons/medical_gui/script_component.hpp | 2 ++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/addons/medical_gui/functions/fnc_onMenuOpen.sqf b/addons/medical_gui/functions/fnc_onMenuOpen.sqf index e5d507907e..e77d92bddd 100644 --- a/addons/medical_gui/functions/fnc_onMenuOpen.sqf +++ b/addons/medical_gui/functions/fnc_onMenuOpen.sqf @@ -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.75) + 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; diff --git a/addons/medical_gui/gui.hpp b/addons/medical_gui/gui.hpp index 872366ad24..58d98199f9 100644 --- a/addons/medical_gui/gui.hpp +++ b/addons/medical_gui/gui.hpp @@ -266,7 +266,7 @@ class ACE_Medical_Menu { text = QPATHTOF(data\categories\triage_card.paa); tooltip = CSTRING(ViewTriageCard); x = QUOTE(POS_X(1.75)); - y = QUOTE(POS_Y(2.73)); + y = QUOTE(POS_Y(2.75)); w = QUOTE(POS_W(1.5)); h = QUOTE(POS_H(1.5)); color[] = {1, 1, 1, 1}; @@ -324,6 +324,17 @@ class ACE_Medical_Menu { 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)); diff --git a/addons/medical_gui/script_component.hpp b/addons/medical_gui/script_component.hpp index 1887ed02a1..d69fb65434 100644 --- a/addons/medical_gui/script_component.hpp +++ b/addons/medical_gui/script_component.hpp @@ -46,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 From 9ecb35250d8b34c49b1fe472469349e22f576195 Mon Sep 17 00:00:00 2001 From: amsteadrayle <2516219+amsteadrayle@users.noreply.github.com> Date: Sun, 15 Oct 2023 18:45:52 -0400 Subject: [PATCH 13/24] Medical GUI - Use selected color when triage category selected (#9495) Show selected color for triage category --- addons/medical_gui/functions/fnc_updateCategories.sqf | 2 ++ 1 file changed, 2 insertions(+) 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"], From f2ae068e9fc49a99339a70c9295e0b2f0c7723d9 Mon Sep 17 00:00:00 2001 From: amsteadrayle <2516219+amsteadrayle@users.noreply.github.com> Date: Sun, 15 Oct 2023 18:58:48 -0400 Subject: [PATCH 14/24] Medical GUI - Fix action button width (#9497) Fix action button width --- addons/medical_gui/gui.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical_gui/gui.hpp b/addons/medical_gui/gui.hpp index 58d98199f9..07ccd554f0 100644 --- a/addons/medical_gui/gui.hpp +++ b/addons/medical_gui/gui.hpp @@ -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 { From 2f2c253c39a8f01d518ac261af13b9080fe5afb9 Mon Sep 17 00:00:00 2001 From: amsteadrayle <2516219+amsteadrayle@users.noreply.github.com> Date: Sun, 15 Oct 2023 20:45:02 -0400 Subject: [PATCH 15/24] Medical GUI - Remake drag/carry category icon (#9498) Remake carry icon --- addons/medical_gui/data/categories/carry.paa | Bin 26983 -> 27993 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/addons/medical_gui/data/categories/carry.paa b/addons/medical_gui/data/categories/carry.paa index 7ebb830b03da850cdb029f69eed4cf6bef4bbe28..27a9185d29e20ea3c93dd82d4340b116c68ace53 100644 GIT binary patch literal 27993 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�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 YNL0Y*I&|<}Pf~xs?t;)bs06})1G;Iv`2YX_ literal 26983 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 qBInhc_O=BzNc?BLo|cP&$8eULCj1O Date: Mon, 16 Oct 2023 07:21:02 +0200 Subject: [PATCH 16/24] Translations - Add Polish Translations (#9489) * Translations - Add Polish Translations **When merged this pull request will:** - Add missing polish translations - Remove russian translation from polish - ace_common ### 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/). - [x] [Development Guidelines](https://ace3.acemod.org/wiki/development/) are read, understood and applied. - [x] Title of this PR uses our standard template `Component - Add|Fix|Improve|Change|Make|Remove {changes}`. * Update addons/fieldmanual/stringtable.xml Co-authored-by: PabstMirror * Update addons/fieldmanual/stringtable.xml Co-authored-by: PabstMirror * Update addons/fieldmanual/stringtable.xml Co-authored-by: PabstMirror * Update stringtable.xml * Update addons/fieldmanual/stringtable.xml Co-authored-by: PabstMirror * Apply suggestions from code review --------- Co-authored-by: PabstMirror Co-authored-by: Filip Maciejewski --- addons/common/stringtable.xml | 2 +- addons/fieldmanual/stringtable.xml | 87 ++++++++++++++++++++++++ addons/medical_ai/stringtable.xml | 1 + addons/medical_gui/stringtable.xml | 22 ++++++ addons/medical_treatment/stringtable.xml | 8 +++ addons/reloadlaunchers/stringtable.xml | 1 + addons/zeus/stringtable.xml | 2 + 7 files changed, 122 insertions(+), 1 deletion(-) 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/fieldmanual/stringtable.xml b/addons/fieldmanual/stringtable.xml index 24f735ff72..240ebc106e 100644 --- a/addons/fieldmanual/stringtable.xml +++ b/addons/fieldmanual/stringtable.xml @@ -20,72 +20,95 @@ 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. Medical Menu @@ -105,171 +128,227 @@ Treatment, Simplified + Leczenie, Uproszczone The %3Medical Menu%4 is a dedicated %3interface%4 to facilitate %3medical treatment%4. The %3R%4 and %3L%4 letters indicate the side of the patient's body being treated.<br/><br/>%3Usage:%4<br/>%2Use [%3%14%4] while looking at a patient to open the Medical Menu. Opening the menu without a patient allows for self-treatment.<br/>%2Alternatively, use [%3%12%4] or [%3%13%4] and select %3Medical Menu%4.<br/><br/>%3Keybinds:%4<br/>%2Use [%3W, A, S, D, X, and Z%4] to select body parts.<br/>%2Use your %3number keys%4 to select treatment categories. + %3Menu Medyczne%4 jest dedykowanym %3interfejsem%4 ułatwiającym %3zabiegi medyczne%4. Litery %3P%4 i %3L%4 wskazują, która część ciała pacjenta jest opatrywana.<br/><br/>%3Użycie:%4<br/>%2Użyj [%3%14%4] podczas patrzenia na pacjenta aby otworzyć Menu Medyczne. Otwarcie menu bez patrzenia na pacjenta otwiera menu leczenia własnej postaci.<br/>%2Alternatywnie, użyj [%3%12%4] lub [%3%13%4] i wybierz %3Menu Medyczne%4.<br/><br/>%3Przypisanie Klawiszy:%4<br/>%2Użyj [%3W, A, S, D, X, i Z%4] aby wybrać części ciała.<br/>%2Użyj %3klawiszy numerycznych%4 do wybrania kategorii leczenia. 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 @@ -289,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/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/stringtable.xml b/addons/medical_gui/stringtable.xml index 52c7307146..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 @@ -536,9 +539,11 @@ Switch to self + Zmień na siebie Switch to target + Zmień na pacjenta Head @@ -958,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 @@ -1037,6 +1047,7 @@ No blood loss + Brak utraty krwi @@ -1269,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 @@ -1297,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 @@ -1335,18 +1352,23 @@ 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 diff --git a/addons/medical_treatment/stringtable.xml b/addons/medical_treatment/stringtable.xml index 0c0a20e2f8..2cbecc3da8 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 @@ -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/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/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) From 124baca84b7ea74f81c765fb01605a0d564a3696 Mon Sep 17 00:00:00 2001 From: Psycool <104776717+Psycool3695@users.noreply.github.com> Date: Mon, 16 Oct 2023 15:48:08 +0900 Subject: [PATCH 17/24] Korean translation improved (#9500) * KoreanTranslation Someone has returned all the translations in Korean to English. there is no need to return them. * koreantranslation * Korean Typo Fix * Korean Translation * Update stringtable.xml * Korean Translation Added Added Korean translation related to Cargo Refuel * Merge branch 'master' of https://github.com/Psycool3695/ACE3 * Korean translation Add/Updated * Fixed wrong strings * Korean translation improved --- addons/chemlights/stringtable.xml | 2 +- addons/dragging/stringtable.xml | 4 ++-- addons/explosives/stringtable.xml | 16 ++++++++-------- addons/medical_treatment/stringtable.xml | 8 ++++---- addons/mx2a/stringtable.xml | 2 +- addons/realisticnames/stringtable.xml | 2 +- 6 files changed, 17 insertions(+), 17 deletions(-) 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/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/medical_treatment/stringtable.xml b/addons/medical_treatment/stringtable.xml index 2cbecc3da8..1dbb876418 100644 --- a/addons/medical_treatment/stringtable.xml +++ b/addons/medical_treatment/stringtable.xml @@ -1752,7 +1752,7 @@ Autoiniettore di morfina Auto-injetor de morfina モルヒネ注射器 - 모르핀 자동주사기 + 자동주사기 (모르핀) 吗啡自动注射器 嗎啡自動注射器 Morfin otomatik enjektör @@ -1800,7 +1800,7 @@ Auto-injetor de Adenosina Аденозин в пневмошприце アデノシン注射器 - 아데노신 자동주사기 + 자동주사기 (아데노신) 腺苷自动注射器 腺苷自動注射器 Adenosin otomatik enjektörü @@ -1847,7 +1847,7 @@ Autoiniettore di atropina Auto-injetor de Atropina アトロピン注射器 - 아트로핀 자동주사기 + 자동주사기 (아트로핀) 阿托品自动注射器 阿托品自動注射器 Atropin otomatik enjektör @@ -1896,7 +1896,7 @@ Autoiniettore di adrenalina Auto-injetor de epinefrina アドレナリン注射器 - 에피네프린 자동주사기 + 자동주사기 (에피네프린) 肾上腺素自动注射器 腎上腺素自動注射器 Epinefrin otomatik enjektör 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) From 9873bf566ca06f5f88538a216ac0d8fb61f22245 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 16 Oct 2023 01:49:23 -0500 Subject: [PATCH 18/24] Field Manual - Remove all use of `+=`, cleanup magwell capitlization (#9494) * Field Manual - Cleanup toml * Fix magwell capitilization * asc - skip fnc_zeusAttributes as it's hardcoded to be blocked * Eliminate all use of += in fieldmanual * Update sqfc.json --- .hemtt/project.toml | 1 + addons/compat_rhs_usf3/CfgMagazineWells.hpp | 2 +- addons/fieldmanual/CfgHints.hpp | 83 +++++++++++---------- addons/fieldmanual/addon.toml | 2 - addons/grenades/CfgMagazineWells.hpp | 4 +- optionals/tracers/CfgMagazineWells.hpp | 8 +- sqfc.json | 3 +- 7 files changed, 52 insertions(+), 51 deletions(-) delete mode 100644 addons/fieldmanual/addon.toml 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/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/fieldmanual/CfgHints.hpp b/addons/fieldmanual/CfgHints.hpp index 64b8022bfc..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,10 +269,7 @@ 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"; }; @@ -280,7 +281,7 @@ class CfgHints { }; class ACE_Adenosine: ACE_Medical_Treatment_Base { logicalOrder = 2; - arguments[] += {QUOTE('ACE_adenosine' call FUNC(getItemName))}; + 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); @@ -299,35 +300,35 @@ class CfgHints { }; class ACE_Epinephrine: ACE_Medical_Treatment_Base { logicalOrder = 5; - arguments[] += {QUOTE('ACE_epinephrine' call FUNC(getItemName))}; + 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 = 6; - arguments[] += {QUOTE('ACE_personalAidKit' call FUNC(getItemName))}; + 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 = 7; - arguments[] += {QUOTE('ACE_splint' call FUNC(getItemName))}; + 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 = 8; - arguments[] += {QUOTE('ACE_surgicalKit' call FUNC(getItemName))}; + 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 = 9; - arguments[] += {QUOTE('ACE_tourniquet' call FUNC(getItemName))}; + 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/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/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 From 60f0249161c738a7b5366b8b85305d199f053ac0 Mon Sep 17 00:00:00 2001 From: Bob-Murphy <50651578+Bob-Murphy@users.noreply.github.com> Date: Tue, 17 Oct 2023 11:55:52 +0200 Subject: [PATCH 19/24] SPE Compat - Add Spearhead 1944 fuel drums to refuel system (#9505) * Create land.hpp * Update CfgVehicles.hpp --- addons/compat_spe/CfgVehicles.hpp | 1 + addons/compat_spe/CfgVehicles/land.hpp | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 addons/compat_spe/CfgVehicles/land.hpp diff --git a/addons/compat_spe/CfgVehicles.hpp b/addons/compat_spe/CfgVehicles.hpp index 9ed470ec58..62da370549 100644 --- a/addons/compat_spe/CfgVehicles.hpp +++ b/addons/compat_spe/CfgVehicles.hpp @@ -4,4 +4,5 @@ class CfgVehicles { #include "CfgVehicles\spe_boxes.hpp" #include "CfgVehicles\tracked.hpp" #include "CfgVehicles\wheeled.hpp" + #include "CfgVehicles\land.hpp" }; diff --git a/addons/compat_spe/CfgVehicles/land.hpp b/addons/compat_spe/CfgVehicles/land.hpp new file mode 100644 index 0000000000..68ec9d4d89 --- /dev/null +++ b/addons/compat_spe/CfgVehicles/land.hpp @@ -0,0 +1,13 @@ +// fuel objects + +class SPE_items_base; +class Land_SPE_Fuel_Barrel_German: SPE_items_base { + transportFuel = 0; + EGVAR(refuel,hooks)[] = {{0, 0, 0.5}}; // reference is Land_FlexibleTank_01_F + EGVAR(refuel,fuelCargo) = 300; // reference is Land_FlexibleTank_01_F +}; +class Land_SPE_Fuel_Barrel_US: SPE_items_base { + transportFuel = 0; + EGVAR(refuel,hooks)[] = {{0, 0, 0.5}}; // reference is Land_FlexibleTank_01_F + EGVAR(refuel,fuelCargo) = 300; // reference is Land_FlexibleTank_01_F +}; From 5686647b57cc8ccdf34bebe07e5b16f04d903a73 Mon Sep 17 00:00:00 2001 From: BrettMayson Date: Tue, 17 Oct 2023 03:58:43 -0600 Subject: [PATCH 20/24] Docs - use draft PR over WIP (#9504) docs: use draft pr over wip --- .github/CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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/). From ed1ef14749f90b7c9105951751594521091c6219 Mon Sep 17 00:00:00 2001 From: Bob-Murphy <50651578+Bob-Murphy@users.noreply.github.com> Date: Tue, 17 Oct 2023 16:37:18 +0200 Subject: [PATCH 21/24] SPE Compat - Fix Spearhead 1944 fuel drums for refuel system (#9507) --- addons/compat_spe/CfgVehicles.hpp | 1 - addons/compat_spe/CfgVehicles/land.hpp | 13 ------------- addons/compat_spe/CfgVehicles/spe_boxes.hpp | 12 ++++++++++++ 3 files changed, 12 insertions(+), 14 deletions(-) delete mode 100644 addons/compat_spe/CfgVehicles/land.hpp diff --git a/addons/compat_spe/CfgVehicles.hpp b/addons/compat_spe/CfgVehicles.hpp index 62da370549..9ed470ec58 100644 --- a/addons/compat_spe/CfgVehicles.hpp +++ b/addons/compat_spe/CfgVehicles.hpp @@ -4,5 +4,4 @@ class CfgVehicles { #include "CfgVehicles\spe_boxes.hpp" #include "CfgVehicles\tracked.hpp" #include "CfgVehicles\wheeled.hpp" - #include "CfgVehicles\land.hpp" }; diff --git a/addons/compat_spe/CfgVehicles/land.hpp b/addons/compat_spe/CfgVehicles/land.hpp deleted file mode 100644 index 68ec9d4d89..0000000000 --- a/addons/compat_spe/CfgVehicles/land.hpp +++ /dev/null @@ -1,13 +0,0 @@ -// fuel objects - -class SPE_items_base; -class Land_SPE_Fuel_Barrel_German: SPE_items_base { - transportFuel = 0; - EGVAR(refuel,hooks)[] = {{0, 0, 0.5}}; // reference is Land_FlexibleTank_01_F - EGVAR(refuel,fuelCargo) = 300; // reference is Land_FlexibleTank_01_F -}; -class Land_SPE_Fuel_Barrel_US: SPE_items_base { - transportFuel = 0; - EGVAR(refuel,hooks)[] = {{0, 0, 0.5}}; // reference is Land_FlexibleTank_01_F - EGVAR(refuel,fuelCargo) = 300; // reference is Land_FlexibleTank_01_F -}; 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}}; }; From 6e8a27c9a6615a57d5a775d4a1b82d5ec1183007 Mon Sep 17 00:00:00 2001 From: amsteadrayle <2516219+amsteadrayle@users.noreply.github.com> Date: Tue, 17 Oct 2023 10:43:44 -0400 Subject: [PATCH 22/24] Medical GUI - Remake body outline textures (#9503) Co-authored-by: jonpas --- .../data/body_image/arm_left_s.paa | Bin 27247 -> 27942 bytes .../data/body_image/arm_right_s.paa | Bin 27209 -> 27923 bytes addons/medical_gui/data/body_image/head_s.paa | Bin 25893 -> 26369 bytes .../data/body_image/leg_left_s.paa | Bin 28342 -> 29129 bytes .../data/body_image/leg_right_s.paa | Bin 28406 -> 28771 bytes .../medical_gui/data/body_image/torso_s.paa | Bin 27341 -> 27987 bytes extras/scripts/medical_dummy_outline.bat | 31 ++++++++++++++++++ 7 files changed, 31 insertions(+) create mode 100644 extras/scripts/medical_dummy_outline.bat 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 58682a5a73cdd090071f698c78925e5df50540f8..4c55e6143ea150de197ba8d5bfa819272888426c 100644 GIT binary patch literal 27942 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 TB(vi8jtXyVXTpRDeM;~@w2T_4 literal 27247 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 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 613ff387ffab4eae098962ba0dff909618a7c895..daff9d099e133bc10c3588e5d7015ed562265124 100644 GIT binary patch literal 27923 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 diff --git a/addons/medical_gui/data/body_image/head_s.paa b/addons/medical_gui/data/body_image/head_s.paa index f4daa0a9b6113a855e0e7c4c0d17fdda6063d5e0..9acf69a15581c8ec5eace1b01f6189e4aaf22c15 100644 GIT binary patch literal 26369 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 literal 25893 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 EHz4fT&Hw-a 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 1b9bf0ba64c3419f12e0618f17f5859f64dc6ad4..4fcace26ed1f1940262ef2ba151a972955126b2f 100644 GIT binary patch literal 28771 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 literal 28406 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 Date: Tue, 17 Oct 2023 10:17:22 -0500 Subject: [PATCH 23/24] Github - Remove tasks from PR template (#9501) * Github - Remove doc task from PR template * Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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}`. From 7b418b7731b52d6c5549922175594e4bdebdbde3 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 17 Oct 2023 13:40:24 -0500 Subject: [PATCH 24/24] Tools - Update publisher for compats moving to main (#9339) Co-authored-by: jonpas --- tools/publish.py | 60 +++++++++--------------------------------------- 1 file changed, 11 insertions(+), 49 deletions(-) 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)