From a3c9182fa1643568940905b9c5c01feb41fb8a57 Mon Sep 17 00:00:00 2001 From: DartRuffian Date: Tue, 3 Sep 2024 10:07:46 -0500 Subject: [PATCH 1/5] Any item, weapon, or backpack can be fortify tool --- addons/fortify/CfgWeapons.hpp | 1 + addons/fortify/XEH_preInit.sqf | 4 ++++ addons/fortify/functions/fnc_canFortify.sqf | 6 +++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/addons/fortify/CfgWeapons.hpp b/addons/fortify/CfgWeapons.hpp index 66ff7f52d88..82396288721 100644 --- a/addons/fortify/CfgWeapons.hpp +++ b/addons/fortify/CfgWeapons.hpp @@ -10,6 +10,7 @@ class CfgWeapons { picture = QPATHTOF(UI\hammer_ca.paa); scope = 2; ACE_isTool = 1; + GVAR(fortifyTool) = 1; class ItemInfo: CBA_MiscItem_ItemInfo { mass = 0; }; diff --git a/addons/fortify/XEH_preInit.sqf b/addons/fortify/XEH_preInit.sqf index 382fc805660..eeab747f0e7 100644 --- a/addons/fortify/XEH_preInit.sqf +++ b/addons/fortify/XEH_preInit.sqf @@ -13,6 +13,10 @@ GVAR(locations) = []; // Custom deploy handlers GVAR(deployHandlers) = []; +GVAR(fortifyTools) = (QUOTE(getNumber (_x >> QQGVAR(fortifyTool)) > 0) configClasses (configFile >> "CfgWeapons") apply {configName _x}); +GVAR(fortifyTools) append (QUOTE(getNumber (_x >> QQGVAR(fortifyTool)) > 0) configClasses (configFile >> "CfgVehicles") apply {configName _x}); +TRACE_1("",_fortifyTools); + #include "initSettings.inc.sqf" ADDON = true; diff --git a/addons/fortify/functions/fnc_canFortify.sqf b/addons/fortify/functions/fnc_canFortify.sqf index 3a382bc98c9..35181343aed 100644 --- a/addons/fortify/functions/fnc_canFortify.sqf +++ b/addons/fortify/functions/fnc_canFortify.sqf @@ -19,8 +19,12 @@ params ["_player", ["_cost", 0]]; (missionNamespace getVariable [QGVAR(fortifyAllowed), true]) && -{"ACE_Fortify" in (_player call EFUNC(common,uniqueItems))} && { + private _items = _player call EFUNC(common,uniqueItems); + _items append weapons _player; + _items pushBack backpack _player; + GVAR(fortifyTools) findIf {_x in _items} != -1 +} && { private _budget = [side group _player] call FUNC(getBudget); ((_budget == -1) || {_budget >= _cost}) } && { From 67f7263266c4d45489341f3add99284e937e2256 Mon Sep 17 00:00:00 2001 From: DartRuffian Date: Tue, 3 Sep 2024 10:12:37 -0500 Subject: [PATCH 2/5] Doc changes --- docs/wiki/framework/fortify-framework.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/wiki/framework/fortify-framework.md b/docs/wiki/framework/fortify-framework.md index 9de0fab35b3..19cdf45e6b9 100644 --- a/docs/wiki/framework/fortify-framework.md +++ b/docs/wiki/framework/fortify-framework.md @@ -109,10 +109,22 @@ The Fortify budget can be updated for any side using the function. * [west, -250, false] call ace_fortify_fnc_updateBudget ``` +## 2. Config Values -## 2. Events +### 2.1 Enabling fortify tools on an item or backpack +```cpp +class CfgWeapons { // same config also works on backpacks (CfgVehicles) + class yourBaseClass; + class yourFortifyToolClass: yourBaseClass { + ace_fortify_fortifyTool = 1; + }; +}; +``` + + +## 3. Events -### 2.1 Listenable +### 3.1 Listenable | Event Name | Passed Parameter(s) | Locality | Description | | ---------- | ----------- | ------------------- | -------- | From d737d530e9ddfa4dac0ea4bb7a671a0a2c987576 Mon Sep 17 00:00:00 2001 From: DartRuffian Date: Tue, 3 Sep 2024 10:18:48 -0500 Subject: [PATCH 3/5] Cache on preStart --- addons/fortify/XEH_preInit.sqf | 4 +--- addons/fortify/XEH_preStart.sqf | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/fortify/XEH_preInit.sqf b/addons/fortify/XEH_preInit.sqf index eeab747f0e7..fe6895c7ebc 100644 --- a/addons/fortify/XEH_preInit.sqf +++ b/addons/fortify/XEH_preInit.sqf @@ -13,9 +13,7 @@ GVAR(locations) = []; // Custom deploy handlers GVAR(deployHandlers) = []; -GVAR(fortifyTools) = (QUOTE(getNumber (_x >> QQGVAR(fortifyTool)) > 0) configClasses (configFile >> "CfgWeapons") apply {configName _x}); -GVAR(fortifyTools) append (QUOTE(getNumber (_x >> QQGVAR(fortifyTool)) > 0) configClasses (configFile >> "CfgVehicles") apply {configName _x}); -TRACE_1("",_fortifyTools); +GVAR(fortifyTools) = call (uiNamespace getVariable QGVAR(fortifyTools)); #include "initSettings.inc.sqf" diff --git a/addons/fortify/XEH_preStart.sqf b/addons/fortify/XEH_preStart.sqf index 022888575ed..b6034a52945 100644 --- a/addons/fortify/XEH_preStart.sqf +++ b/addons/fortify/XEH_preStart.sqf @@ -1,3 +1,9 @@ #include "script_component.hpp" #include "XEH_PREP.hpp" + +private _fortifyTools = (QUOTE(getNumber (_x >> QQGVAR(fortifyTool)) > 0) configClasses (configFile >> "CfgWeapons") apply {configName _x}); +_fortifyTools append (QUOTE(getNumber (_x >> QQGVAR(fortifyTool)) > 0) configClasses (configFile >> "CfgVehicles") apply {configName _x}); +TRACE_1("",_fortifyTools); + +uiNamespace setVariable [QGVAR(fortifyTools), compileFinal str _fortifyTools]; From 108fa81dff791881a2783846926fb0418adbe54e Mon Sep 17 00:00:00 2001 From: DartRuffian Date: Tue, 3 Sep 2024 12:14:45 -0500 Subject: [PATCH 4/5] Use hashMap in uiNamespace --- addons/fortify/XEH_preInit.sqf | 2 +- addons/fortify/XEH_preStart.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/fortify/XEH_preInit.sqf b/addons/fortify/XEH_preInit.sqf index fe6895c7ebc..50f641f9cf7 100644 --- a/addons/fortify/XEH_preInit.sqf +++ b/addons/fortify/XEH_preInit.sqf @@ -13,7 +13,7 @@ GVAR(locations) = []; // Custom deploy handlers GVAR(deployHandlers) = []; -GVAR(fortifyTools) = call (uiNamespace getVariable QGVAR(fortifyTools)); +GVAR(fortifyTools) = keys (uiNamespace getVariable QGVAR(fortifyTools)); #include "initSettings.inc.sqf" diff --git a/addons/fortify/XEH_preStart.sqf b/addons/fortify/XEH_preStart.sqf index b6034a52945..4da9eeb40da 100644 --- a/addons/fortify/XEH_preStart.sqf +++ b/addons/fortify/XEH_preStart.sqf @@ -6,4 +6,4 @@ private _fortifyTools = (QUOTE(getNumber (_x >> QQGVAR(fortifyTool)) > 0) config _fortifyTools append (QUOTE(getNumber (_x >> QQGVAR(fortifyTool)) > 0) configClasses (configFile >> "CfgVehicles") apply {configName _x}); TRACE_1("",_fortifyTools); -uiNamespace setVariable [QGVAR(fortifyTools), compileFinal str _fortifyTools]; +uiNamespace setVariable [QGVAR(fortifyTools), compileFinal (_fortifyTools createHashMapFromArray [])]; From ac840cec562ead5fe8050acd70beb18c3a2269e3 Mon Sep 17 00:00:00 2001 From: Dart <59131299+DartRuffian@users.noreply.github.com> Date: Wed, 4 Sep 2024 12:37:40 -0500 Subject: [PATCH 5/5] Update addons/fortify/functions/fnc_canFortify.sqf Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> --- addons/fortify/functions/fnc_canFortify.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/fortify/functions/fnc_canFortify.sqf b/addons/fortify/functions/fnc_canFortify.sqf index 35181343aed..ad676a91031 100644 --- a/addons/fortify/functions/fnc_canFortify.sqf +++ b/addons/fortify/functions/fnc_canFortify.sqf @@ -23,7 +23,7 @@ params ["_player", ["_cost", 0]]; private _items = _player call EFUNC(common,uniqueItems); _items append weapons _player; _items pushBack backpack _player; - GVAR(fortifyTools) findIf {_x in _items} != -1 + GVAR(fortifyTools) findAny _items != -1 } && { private _budget = [side group _player] call FUNC(getBudget); ((_budget == -1) || {_budget >= _cost})