Skip to content

Commit 0f43675

Browse files
committed
Added - Eden Module: Barracks Functions & Zeus Module: Full Heal
What ================= Added: Barracks Functions module to add filtered arsenal and/or full heal options to the synced objects. This is intended as a shortcut/replacement to mission makers using the command `[] call bnb_f_core_fnc_arsenal;` Added: Zeus module Barracks Functions module to replace "Filtered Arsenal" module, and also has the option to add "Full Heal" function to the same object. Issue ID: #90
1 parent aa07a22 commit 0f43675

File tree

5 files changed

+197
-11
lines changed

5 files changed

+197
-11
lines changed

addons/core/XEH_preInit.sqf

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
["2BNB Modules", "Add Filtered Arsenal",
1+
["2BNB Modules", "Add Barracks Functions",
22
{
33
// Array of position AGLS, ObjNull or the object under the module as it's placed
44
params [["_position", [0,0,0], [[]], 3], ["_objectUnderCursor", objNull, [objNull]]];
55

6-
[_position, _objectUnderCursor] call bnb_e_core_fnc_addArsenal;
6+
[_position, _objectUnderCursor] call bnb_e_core_fnc_addBarracks;
77
}] call Ares_fnc_RegisterCustomModule;
88

99
["2BNB Modules", "Add Music Radio",

addons/core/config.cpp

+14-3
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@ class CfgPatches {
22
class bnb_e_core {
33
name = "2BNB Extras - Core";
44
units[] = {
5+
// CfgSupplyCrates
56
"BNB_E_Resupply",
67
"BNB_E_Resupply_Class_A",
78
"BNB_E_Resupply_Class_B",
8-
"BNB_E_Resupply_Class_C"
9+
"BNB_E_Resupply_Class_C",
10+
11+
// CfgEdenModules
12+
"BNB_E_Supports_Module"
913
};
1014
weapons[] = {};
1115
requiredAddons[] = {
@@ -16,7 +20,8 @@ class CfgPatches {
1620
"cba_settings",
1721
"tfw_radios_rf3080",
1822
"ace_explosives",
19-
"ace_medical"
23+
"ace_medical",
24+
"A3_Modules_F"
2025
};
2126
author = "2nd Battalion, Nord Brigade";
2227
authors[] = {
@@ -36,11 +41,16 @@ class CfgFunctions {
3641

3742
class zeus_modules {
3843
file = "\x\bnb_e\core\functions\zeus_modules";
39-
class addArsenal {};
44+
class addBarracks {};
4045
class forceRespawn {};
4146
class addMusicRadio {};
4247
};
4348

49+
class eden_modules {
50+
file = "\x\bnb_e\core\functions\eden_modules";
51+
class barracksModule {};
52+
};
53+
4454
class utilities {
4555
file = "\x\bnb_e\core\functions\utilities";
4656
class log {};
@@ -65,6 +75,7 @@ class Extended_PostInit_EventHandlers {
6575
// Config features/fixes
6676
#include "configs\CfgBarrelSwaps.hpp";
6777
#include "configs\CfgDirectConnect.hpp";
78+
#include "configs\CfgEdenModules.hpp";
6879
#include "configs\CfgExplosives.hpp";
6980
#include "configs\CfgSatcom.hpp";
7081
#include "configs\CfgSupplyCrates.hpp";
+123
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
/* ----------------------------------------------------------------------------
2+
Config: Eden Modules
3+
4+
Description:
5+
Registers 3DEN Modules to be used by our mission makers to
6+
make their lives easier.
7+
8+
Author:
9+
Arend
10+
---------------------------------------------------------------------------- */
11+
class CfgFactionClasses {
12+
class NO_CATEGORY;
13+
class BNB_E_Modules : NO_CATEGORY {
14+
displayName = "2BNB Modules";
15+
};
16+
};
17+
18+
class CfgVehicles {
19+
class Logic;
20+
class Module_F : Logic {
21+
class AttributesBase {
22+
// class Default;
23+
// class Edit;
24+
class Combo;
25+
class Checkbox;
26+
// class CheckboxNumber;
27+
class ModuleDescription;
28+
// class Units;
29+
};
30+
31+
class ModuleDescription {
32+
class AnyBrain;
33+
};
34+
};
35+
36+
class BNB_E_Barracks_Module : Module_F {
37+
scope = 2;
38+
displayName = "Barracks Functions";
39+
// icon = "";
40+
category = "BNB_E_Modules";
41+
42+
function = "bnb_e_core_fnc_barracksModule";
43+
functionPriority = 2;
44+
isGlobal = 0;
45+
isTriggerActivated = 0;
46+
is3DEN = 0;
47+
48+
curatorInfoType = "RscDisplayAttributeModuleNuke";
49+
50+
class Attributes : AttributesBase {
51+
class HasArsenal : Checkbox {
52+
property = "BNB_E_Barracks_Module_HasArsenal";
53+
displayName = "Arsenal";
54+
tooltip = "Add Arsenal to the object";
55+
defaultValue = true;
56+
};
57+
58+
class ArsenalFilter : Combo {
59+
property = "BNB_E_Barracks_Module_ArsenalFilter";
60+
displayName = "Arsenal Filter";
61+
tooltip = "The filter to set on the Arsenal";
62+
typeName = "STRING";
63+
defaultValue = "";
64+
class Values {
65+
class None {
66+
name = "None";
67+
value = "";
68+
default = 1;
69+
};
70+
class West {
71+
name = "West";
72+
value = "WEST";
73+
};
74+
class East {
75+
name = "East";
76+
value = "EAST";
77+
};
78+
class Independent {
79+
name = "Independent";
80+
value = "INDEPENDENT";
81+
};
82+
class Loadouts {
83+
name = "Loadouts";
84+
value = "LOADOUTS";
85+
};
86+
class Mission {
87+
name = "Mission";
88+
value = "MISSION";
89+
};
90+
};
91+
};
92+
93+
class HasFullHeal : Checkbox {
94+
property = "BNB_E_Barracks_Module_HasFullHeal";
95+
displayName = "Full Heal";
96+
tooltip = "Add Full Heal to object";
97+
defaultValue = true;
98+
};
99+
100+
class ModuleDescription : ModuleDescription {};
101+
};
102+
103+
class ModuleDescription : ModuleDescription {
104+
description = "Add 2BNB barracks functions to synced objects";
105+
sync[] = {"LocationArea_F"};
106+
107+
class LocationArea_F {
108+
description[] = {
109+
"Add barracks functions to synced objects that give the players certain 2BNB functions to use via ACE interaction.",
110+
"",
111+
"Barracks functions include:",
112+
"- Filtered Arsenal",
113+
"- Full Heal"
114+
};
115+
position = 0;
116+
direction = 0;
117+
optional = 1;
118+
duplicate = 1;
119+
synced[] = {"AnyBrain"};
120+
};
121+
};
122+
};
123+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/* ----------------------------------------------------------------------------
2+
Function: bnb_e_core_fnc_supportsModule
3+
4+
Description:
5+
Adds support functions to synced objects.
6+
7+
Parameters:
8+
0: _logic - of the module <OBJECT>
9+
1: _objects - synced to the module <ARRAY>
10+
11+
Returns:
12+
true
13+
14+
Examples:
15+
16+
17+
Author:
18+
Arend
19+
---------------------------------------------------------------------------- */
20+
params [["_logic", objNull, [objNull]], ["_objects", [], [[]]]];
21+
22+
if (_objects isEqualTo []) exitWith {
23+
[format["Module Error: No objects synced! %1", _objects], "core\functions\eden_modules\fn_barracksModule.sqf"] call bnb_e_core_fnc_log;
24+
};
25+
26+
if (!isServer) exitWith {
27+
["Attempted to execute module not on the server.", "core\functions\eden_modules\fn_barracksModule.sqf"] call bnb_e_core_fnc_log;
28+
};
29+
30+
if (_logic getVariable ["HasArsenal", false]) then {
31+
// Add Arsenal - Remotely, since only the server has 2BNB Framework loaded
32+
[_logic getVariable ["ArsenalFilter", ""], _objects] call bnb_f_core_fnc_arsenal;
33+
};
34+
35+
if (_logic getVariable ["HasFullHeal", false]) then {
36+
[_objects] call bnb_f_core_fnc_fullHeal;
37+
};

addons/core/functions/zeus_modules/fn_addArsenal.sqf renamed to addons/core/functions/zeus_modules/fn_addBarracks.sqf

+21-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* ----------------------------------------------------------------------------
2-
Function: bnb_e_core_fnc_addArsenal
2+
Function: bnb_e_core_fnc_addBarracks
33
44
Description:
55
Adds filtered Arsenal, and other 2BNB functions such as "Full Heal", etc.
@@ -13,7 +13,7 @@ Returns:
1313
Nothing
1414
1515
Examples:
16-
[_position, _objectUnderCursor] call bnb_e_core_fnc_addArsenal;
16+
[_position, _objectUnderCursor] call bnb_e_core_fnc_addBarracks;
1717
1818
Author:
1919
Arend
@@ -22,6 +22,7 @@ params [["_position", [0,0,0], [[]], 3], ["_objectUnderCursor", objNull, [objNul
2222

2323
private _objects = [_objectUnderCursor];
2424

25+
2526
// Show Filter Dialog
2627
private _availableFilters = [
2728
"None",
@@ -46,6 +47,11 @@ if (isNull (_objects select 0)) then {
4647
_dialogControls = [["_arsenalObject", 0]] + _dialogControls;
4748
};
4849

50+
51+
// Add Full Heal?
52+
_dialogOptions = _dialogOptions + [["Add Full Heal?", ["Yes", "No"]]];
53+
_dialogControls = _dialogControls + [["_hasFullHeal", 0]];
54+
4955
private _dialogResult = ["Add Filtered Arsenal", _dialogOptions] call Ares_fnc_showChooseDialog;
5056

5157
// If the dialog was closed.
@@ -73,16 +79,25 @@ if (isNull (_objects select 0)) then {
7379

7480
if (_objects isEqualTo []) exitWith {};
7581

82+
7683
// Give server the object, so that everything in future can be applied to the object locally
77-
if (isServer) then {
84+
if (!isServer) then {
7885
{
79-
if (owner _x != 2 || owner _x != 0) then { _x setOwner 2; };
80-
[format["Changed ownership of %1 to %2", _x, owner _x], "core\functions\zeus_modules\fn_addArsenal.sqf"] call bnb_e_core_fnc_log;
86+
if (_x setOwner 2) then {
87+
[format["Changed ownership of %1 to %2", _x, owner _x], "core\functions\zeus_modules\fn_addBarracks.sqf"] call bnb_e_core_fnc_log;
88+
} else {
89+
[format["Could not change ownership of %1 to %2", _x, owner _x], "core\functions\zeus_modules\fn_addBarracks.sqf"] call bnb_e_core_fnc_log;
90+
};
8191
} foreach _objects;
8292
};
8393

94+
8495
// Add Arsenal - Remotely, since only the server has 2BNB Framework loaded
8596
[_availableFilters select _filter, _objects] remoteExec ["bnb_f_core_fnc_arsenal", 2];
8697

98+
if (_hasFullHeal isEqualTo 0) then {
99+
[_objects] remoteExec ["bnb_f_core_fnc_fullHeal", 2];
100+
};
101+
87102
// Show Message
88-
[localize "STR_AMAE_ARSENAL_ADDED"] call Ares_fnc_ShowZeusMessage;
103+
["Barracks functions added!"] call Ares_fnc_ShowZeusMessage;

0 commit comments

Comments
 (0)