Compare commits

...

10 Commits

Author SHA1 Message Date
fedc6f1432 Merge pull request 'wip' (#51) from flag_simpleshape_variety into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 37s
Reviewed-on: #51
2024-06-16 15:45:24 -05:00
b34928c0c3 wip 2024-06-16 15:45:12 -05:00
2d9e5aabef Merge pull request 'Campaign-Updates-6-9-2024' (#50) from Campaign-Updates-6-9-2024 into develop
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 38s
Reviewed-on: #50
2024-06-16 15:41:23 -05:00
87ebbae31c Update defines/ApprovedAssets.hpp
Updated Approved assets.
2024-06-16 15:41:06 -05:00
408228f07b Added Black Hornet Restricted Item 2024-06-16 15:41:06 -05:00
736e90e305 Removed SMA Resupply Items
Removed the following Items from resupply
{"SMA_30Rnd_762x35_BLK_EPR",25}, 
{"SMA_20Rnd_762x51mm_M80A1_EPR",25},
{"SMA_20Rnd_762x51mm_M80A1_EPR_Tracer",25},
{"SMA_20Rnd_762x51mm_Mk316_Mod_0_Special_Long_Range",25},
{"SMA_20Rnd_762x51mm_Mk316_Mod_0_Special_Long_Range_Tracer",25},
2024-06-16 15:41:06 -05:00
f17fff8363 Asset Change
Removed Athena and Homer, Changed Armed VTOL callsign
2024-06-16 15:41:06 -05:00
64bc303893 Update defines/BattalionInfo.hpp
Updated ECO Callsign
2024-06-16 15:41:06 -05:00
80247a01d0 Update defines/BattalionInfo.hpp
Updated ACO and BCO Callsign
2024-06-16 15:41:06 -05:00
7322799b78 add custom sounds support
All checks were successful
Generate testing snapshot / Create testing release (push) Successful in 42s
2024-06-15 16:43:56 -07:00
37 changed files with 340 additions and 119 deletions

2
.gitignore vendored
View File

@@ -2,3 +2,5 @@
# Notepad++ backups # # Notepad++ backups #
*.bak *.bak
.vscode/

8
custom_sounds.hpp Normal file
View File

@@ -0,0 +1,8 @@
// EXAMPLE
// class uncon_alarm
// {
// name = "uncon_alarm";
// sound[] = {"AJ_CBRN_V2\sounds\AJ_warning_1.ogg", 0.9, 1, 5}; //directory, volume, pitch, range
// titles[]={};
// };

View File

@@ -1,22 +1,74 @@
// Lists approved fixed-wing and rotary vehicle types that mission makers can use in their missions. // Lists approved fixed-wing and rotary vehicle types that mission makers can use in their missions.
class ApprovedAssets { class ApprovedAssets {
// Fixed-wing aircraft // APC
class USAF_A10 {callsign = "Ares";}; class rhsusf_stryker_m1126_m2_d {callsign = "Katana"; category = "APC";};
class RHSGREF_A29B_HIDF {callsign = "Odyssey";}; class rhsusf_stryker_m1126_mk19_d {callsign = "Katana"; category = "APC";};
class USAF_C130J {callsign = "Hercules";}; class rhsusf_stryker_m1127_m2_wd {callsign = "Katana"; category = "APC";};
// Rotary aircraft class rhsusf_stryker_m1132_m2_wd {callsign = "Katana"; category = "APC";};
class RHS_MELB_MH6M {callsign = "Apollo";}; class rhsusf_stryker_m1134_wd {callsign = "Katana"; category = "APC";};
class RHS_MELB_AH6M {callsign = "Artemis";}; class B_APC_Wheeled_01_cannon_F {callsign = "Rapier"; category = "APC";};
class RHS_MELB_H6M {callsign = "Icarus";}; class B_APC_Tracked_01_CRV_F {callsign = "DuctTape"; category = "APC";};
class RHS_CH_47F {callsign = "Achilles";}; // Rotary
class ej_MH60MDAP4 {callsign = "Hades";}; class TF373_SOAR_MH47G_No_Rear_Guns {callsign = "Achilles"; category = "Rotary";};
class RHS_UH60M {callsign = "Griffin";}; class TF373_SOAR_MH47G_No_Rear_Guns_EasyActions {callsign = "Achilles"; category = "Rotary";};
class RHS_UH60M_MEV2 {callsign = "Dustoff";}; class TF373_SOAR_MH47G {callsign = "Achilles"; category = "Rotary";};
class B_T_VTOL_01_INFANTRY_F {callsign = "Pegasus";}; class TF373_SOAR_MH47G_EasyActions {callsign = "Achilles"; category = "Rotary";};
class B_T_VTOL_01_ARMED_F {callsign = "Spartan";}; class RHS_CH_47F_10 {callsign = "Achilles"; category = "Rotary";};
class RHS_AH64D {callsign = "Orion";}; class RHS_MELB_AH6M {callsign = "Artemis"; category = "Rotary";};
class RHS_AH1Z {callsign = "Athena";}; class RHS_MELB_MH6M {callsign = "Apollo"; category = "Rotary";};
class RHS_UH1Y {callsign = "Homer";}; class RHS_MELB_H6M {callsign = "Icarus"; category = "Rotary";};
class rhsusf_CH53E_USMC {callsign = "Atlas";}; class RHS_UH60M {callsign = "Griffin"; category = "Rotary";};
class RHS_UH60M2 {callsign = "Griffin"; category = "Rotary";};
class RHS_UH60M_MEV {callsign = "Dustoff"; category = "Rotary";};
class ej_MH60MDAP {callsign = "Hades"; category = "Rotary";};
class ej_MH60MDAP16H {callsign = "Hades"; category = "Rotary";};
class ej_MH60MDAP8H {callsign = "Hades"; category = "Rotary";};
class ej_MH60MDAP4 {callsign = "Hades"; category = "Rotary";};
class RHS_AH64DGrey {callsign = "Orion"; category = "Rotary";};
// Air
// Truck
class rhsusf_M1078A1R_SOV_M2_D_fmtv_socom {callsign = "DuctTape"; category = "Truck";};
class rhsusf_M1084A1R_SOV_M2_D_fmtv_socom {callsign = "DuctTape"; category = "Truck";};
class rhsusf_M1078A1P2_B_WD_CP_fmtv_usarmy {callsign = ""; category = "Truck";};
// Boats
class rhsusf_mkvsoc {callsign = "Poseidon"; category = "Boats";};
class B_Boat_Armed_01_minigun_F {callsign = "Neptune"; category = "Boats";};
// MRAP
class rhsusf_M1238A1_M2_socom_d {callsign = "Tanto"; category = "MRAP";};
class rhsusf_M1238A1_Mk19_socom_d {callsign = "Tanto"; category = "MRAP";};
class rhsusf_M1239_M2_socom_d {callsign = "DuctTape"; category = "MRAP";};
class rhsusf_M1239_MK19_socom_d {callsign = "DuctTape"; category = "MRAP";};
class rhsusf_m1245_m2crows_socom_d {callsign = "Dagger"; category = "MRAP";};
class rhsusf_m1245_mk19crows_socom_d {callsign = "Dagger"; category = "MRAP";};
class rhsusf_M1239_M2_Deploy_socom_d {callsign = "DuctTape"; category = "MRAP";};
// TiltRotor
class B_T_VTOL_01_infantry_F {callsign = "Pegasus"; category = "TiltRotor";};
class B_T_VTOL_01_armed_F {callsign = "Chimera"; category = "TiltRotor";};
// Water
// Ground Vehicle
// Cars
class rhsusf_m1165a1_gmv_m134d_m240_socom_d {callsign = "Dagger"; category = "Cars";};
class rhsusf_m1165a1_gmv_m2_m240_socom_d {callsign = "Dagger"; category = "Cars";};
class rhsusf_m1165a1_gmv_mk19_m240_socom_d {callsign = "Dagger"; category = "Cars";};
class rhsusf_mrzr4_d {callsign = ""; category = "Cars";};
class UK3CB_B_M1030_NATO {callsign = ""; category = "Cars";};
class B_T_LSV_01_AT_F {callsign = ""; category = "Cars";};
class B_T_LSV_01_armed_F {callsign = ""; category = "Cars";};
class C_Quadbike_01_F {callsign = ""; category = "Cars";};
// Fixed-Wing
class B_Plane_CAS_01_dynamicLoadout_F {callsign = "Ares"; category = "Fixed-Wing";};
class RHS_A10 {callsign = "Ares"; category = "Fixed-Wing";};
class USAF_AC130U {callsign = "Odin"; category = "Fixed-Wing";};
class USAF_C130J {callsign = "Hercules"; category = "Fixed-Wing";};
class B_Plane_Fighter_01_F {callsign = "Xerxes"; category = "Fixed-Wing";};
// Artillery
class rhsusf_M142_usarmy_WD {callsign = "Halberd"; category = "Artillery";};
class UK3CB_B_M270_MLRS_HE_DES {callsign = "Halberd"; category = "Artillery";};
class rhsusf_m109d_usarmy {callsign = "Glaive"; category = "Artillery";};
class RHS_M119_D {callsign = "Mailman"; category = "Artillery";};
class B_Mortar_01_F {callsign = "Hammer"; category = "Artillery";};
// Armor
class B_AFV_Wheeled_01_cannon_F {callsign = "Gladius"; category = "Armor";};
class B_AFV_Wheeled_01_up_cannon_F {callsign = "Gladius"; category = "Armor";};
}; };

View File

@@ -4,11 +4,11 @@
// Define the callsigns for the Battalion // Define the callsigns for the Battalion
#define COMMAND_CALLSIGN SPARTAN #define COMMAND_CALLSIGN STORMSURGE
#define RRC_CALLSIGN TIGER #define RRC_CALLSIGN TIGER
#define MEDIC_CALLSIGN LIFELINE #define MEDIC_CALLSIGN LIFELINE
#define ALPHA_CALLSIGN ROGUE #define ALPHA_CALLSIGN SAVAGE
#define ECHO_CALLSIGN FIREBRAND #define ECHO_CALLSIGN NIGHTFALL
#define WPN_CALLSIGN BLACKFOOT #define WPN_CALLSIGN BLACKFOOT
// Define the frequencies for the Battalion // Define the frequencies for the Battalion

View File

@@ -140,7 +140,8 @@ class DisallowedEquipment {
"Tier1_ATACR18_Geissele_Docter_Black_Vanilla", //Nightforce Series Optic "Tier1_ATACR18_Geissele_Docter_Black_Vanilla", //Nightforce Series Optic
"Tier1_ATACR18_Geissele_Docter_Black", //Nightforce Series Optic "Tier1_ATACR18_Geissele_Docter_Black", //Nightforce Series Optic
"Tier1_ATACR18_Geissele_Docter_Desert_Vanilla", //Nightforce Series Optic "Tier1_ATACR18_Geissele_Docter_Desert_Vanilla", //Nightforce Series Optic
"Tier1_ATACR18_Geissele_Docter_Desert" //Nightforce Series Optic "Tier1_ATACR18_Geissele_Docter_Desert", //Nightforce Series Optic
"sps_black_hornet_01_F" // Black Hornet Drone Mod
}; };
}; };

View File

@@ -28,11 +28,6 @@ class SupplyCrates {
{"1Rnd_SmokeYellow_Grenade_shell",12}, {"1Rnd_SmokeYellow_Grenade_shell",12},
{"rhs_mag_30Rnd_556x45_M855A1_Stanag",25}, {"rhs_mag_30Rnd_556x45_M855A1_Stanag",25},
{"ACE_30Rnd_556x45_Stanag_M995_AP_mag",75}, {"ACE_30Rnd_556x45_Stanag_M995_AP_mag",75},
{"SMA_30Rnd_762x35_BLK_EPR",25},
{"SMA_20Rnd_762x51mm_M80A1_EPR",25},
{"SMA_20Rnd_762x51mm_M80A1_EPR_Tracer",25},
{"SMA_20Rnd_762x51mm_Mk316_Mod_0_Special_Long_Range",25},
{"SMA_20Rnd_762x51mm_Mk316_Mod_0_Special_Long_Range_Tracer",25},
{"Tier1_250Rnd_762x51_Belt_M993_AP",15}, {"Tier1_250Rnd_762x51_Belt_M993_AP",15},
{"ACE_20Rnd_762x51_Mag_Tracer",25}, {"ACE_20Rnd_762x51_Mag_Tracer",25},
{"ACE_20Rnd_762x51_M993_AP_Mag",25}, {"ACE_20Rnd_762x51_M993_AP_Mag",25},

View File

@@ -84,30 +84,159 @@ class VehicleFlags {
actionID = "flag_simpleshape"; actionID = "flag_simpleshape";
actionTitle = "Simple Shapes"; actionTitle = "Simple Shapes";
class GreenOctagon { class Blue {
actionID = "flag_simpleshape_greenoctagon"; actionID = "flags_simpleshape_blue";
actionTitle = "Green Octagon"; actionTitle = "Blue";
texture = "textures\simple_shape\flag_simpleshape_greenoctagon_co.paa";
class BlueCircle {
actionID = "flag_simpleshape_bluecircle";
actionTitle = "Blue Circle";
texture = "textures\simple_shape\flag_simpleshape_bluecircle_co.paa";
};
class BlueOctagon {
actionID = "flag_simpleshape_blueoctagon";
actionTitle = "Blue Octagon";
texture = "textures\simple_shape\flag_simpleshape_blueoctagon_co.paa";
};
class BluePentagon {
actionID = "flag_simpleshape_bluepentagon";
actionTitle = "Blue Pentagon";
texture = "textures\simple_shape\flag_simpleshape_bluepentagon_co.paa";
};
class BlueSquare {
actionID = "flag_simpleshape_bluesquare";
actionTitle = "Blue Square";
texture = "textures\simple_shape\flag_simpleshape_bluesquare_co.paa";
};
class BlueTriangle {
actionID = "flag_simpleshape_bluetriangle";
actionTitle = "Blue Triangle";
texture = "textures\simple_shape\flag_simpleshape_bluetriangle_co.paa";
};
}; };
class BlueCircle {
actionID = "flag_simpleshape_bluecircle"; class Green {
actionTitle = "Blue Circle"; actionID = "flags_simpleshape_green";
texture = "textures\simple_shape\flag_simpleshape_bluecircle_co.paa"; actionTitle = "Green";
class GreenCircle {
actionID = "flag_simpleshape_greencircle";
actionTitle = "Green Circle";
texture = "textures\simple_shape\flag_simpleshape_greencircle_co.paa";
};
class GreenOctagon {
actionID = "flag_simpleshape_greenoctagon";
actionTitle = "Green Octagon";
texture = "textures\simple_shape\flag_simpleshape_greenoctagon_co.paa";
};
class GreenPentagon {
actionID = "flag_simpleshape_greenpentagon";
actionTitle = "Green Pentagon";
texture = "textures\simple_shape\flag_simpleshape_greenpentagon_co.paa";
};
class GreenSquare {
actionID = "flag_simpleshape_greensquare";
actionTitle = "Green Square";
texture = "textures\simple_shape\flag_simpleshape_greensquare_co.paa";
};
class GreenTriangle {
actionID = "flag_simpleshape_greentriangle";
actionTitle = "Green Triangle";
texture = "textures\simple_shape\flag_simpleshape_greentriangle_co.paa";
};
}; };
class OrangeSquare {
actionID = "flag_simpleshape_orangesquare"; class Orange {
actionTitle = "Orange Square"; actionID = "flags_simpleshape_orange";
texture = "textures\simple_shape\flag_simpleshape_orangesquare_co.paa"; actionTitle = "Orange";
class OrangeCircle {
actionID = "flag_simpleshape_orangecircle";
actionTitle = "Orange Circle";
texture = "textures\simple_shape\flag_simpleshape_orangecircle_co.paa";
};
class OrangeOctagon {
actionID = "flag_simpleshape_orangeoctagon";
actionTitle = "Orange Octagon";
texture = "textures\simple_shape\flag_simpleshape_orangeoctagon_co.paa";
};
class OrangePentagon {
actionID = "flag_simpleshape_orangepentagon";
actionTitle = "Orange Pentagon";
texture = "textures\simple_shape\flag_simpleshape_orangepentagon_co.paa";
};
class OrangeSquare {
actionID = "flag_simpleshape_orangesquare";
actionTitle = "Orange Square";
texture = "textures\simple_shape\flag_simpleshape_orangesquare_co.paa";
};
class OrangeTriangle {
actionID = "flag_simpleshape_orangetriangle";
actionTitle = "Orange Triangle";
texture = "textures\simple_shape\flag_simpleshape_orangetriangle_co.paa";
};
}; };
class PinkTriangle {
actionID = "flag_simpleshape_pinktriangle"; class Pink {
actionTitle = "Pink Triangle"; actionID = "flags_simpleshape_pink";
texture = "textures\simple_shape\flag_simpleshape_pinktriangle_co.paa"; actionTitle = "Pink";
class PinkCircle {
actionID = "flag_simpleshape_pinkcircle";
actionTitle = "Pink Circle";
texture = "textures\simple_shape\flag_simpleshape_pinkcircle_co.paa";
};
class PinkOctagon {
actionID = "flag_simpleshape_pinkoctagon";
actionTitle = "Pink Octagon";
texture = "textures\simple_shape\flag_simpleshape_pinkoctagon_co.paa";
};
class PinkPentagon {
actionID = "flag_simpleshape_pinkpentagon";
actionTitle = "Pink Pentagon";
texture = "textures\simple_shape\flag_simpleshape_pinkpentagon_co.paa";
};
class PinkSquare {
actionID = "flag_simpleshape_pinksquare";
actionTitle = "Pink Square";
texture = "textures\simple_shape\flag_simpleshape_pinksquare_co.paa";
};
class PinkTriangle {
actionID = "flag_simpleshape_pinktriangle";
actionTitle = "Pink Triangle";
texture = "textures\simple_shape\flag_simpleshape_pinktriangle_co.paa";
};
}; };
class RedPentagon {
actionID = "flag_simpleshape_redpentagon"; class Red {
actionTitle = "Red Pentagon"; actionID = "flags_simpleshape_red";
texture = "textures\simple_shape\flag_simpleshape_redpentagon_co.paa"; actionTitle = "Red";
class RedCircle {
actionID = "flag_simpleshape_redcircle";
actionTitle = "Red Circle";
texture = "textures\simple_shape\flag_simpleshape_redcircle_co.paa";
};
class RedOctagon {
actionID = "flag_simpleshape_redoctagon";
actionTitle = "Red Octagon";
texture = "textures\simple_shape\flag_simpleshape_redoctagon_co.paa";
};
class RedPentagon {
actionID = "flag_simpleshape_redpentagon";
actionTitle = "Red Pentagon";
texture = "textures\simple_shape\flag_simpleshape_redpentagon_co.paa";
};
class RedSquare {
actionID = "flag_simpleshape_redsquare";
actionTitle = "Red Square";
texture = "textures\simple_shape\flag_simpleshape_redsquare_co.paa";
};
class RedTriangle {
actionID = "flag_simpleshape_redtriangle";
actionTitle = "Red Triangle";
texture = "textures\simple_shape\flag_simpleshape_redtriangle_co.paa";
};
}; };
}; };

View File

@@ -96,6 +96,10 @@ class CfgFunctions {
#include "custom_scripts.hpp" #include "custom_scripts.hpp"
}; };
class CfgSounds {
#include "custom_sounds.hpp"
};
class CfgLeaflets { class CfgLeaflets {
#include "custom_leaflets.hpp" #include "custom_leaflets.hpp"
}; };

View File

@@ -175,6 +175,8 @@ class DOUBLES(PREFIX,vehicleFlags) {
class addFlagActions {}; class addFlagActions {};
class draw3D {}; class draw3D {};
class getActionsFlagCategories {}; class getActionsFlagCategories {};
class compileFlagAction {};
class compileFlagCategoryAction {};
class getVehicleFlagsCfg {}; class getVehicleFlagsCfg {};
class isClassExcluded {}; class isClassExcluded {};
}; };

View File

@@ -0,0 +1,38 @@
params ["_target", "_player", "_params", "_flagOptionCfg"];
_params params ["_rootActionID", "_flagCategoryActionID", "_flagSubclassesCfgs"];
private _flagOptionID = getText(_flagOptionCfg >> "actionID");
private _flagOptionTitle = getText(_flagOptionCfg >> "actionTitle");
private _flagOptionTexture = getText(_flagOptionCfg >> "texture");
// if the texture doesn't exist at the config path, skip this flag option
if (not (fileExists _flagOptionTexture)) then {
diag_log format ["WARN: Flag option texture not found: %1", _flagOptionTexture];
continue
};
// diag_log format ["NewFlagOption: %1 %2", _flagOptionID, _flagOptionData];
private _newFlagOption = [
_rootActionID + "_" + _flagCategoryActionID + "_" + _flagOptionID, // id
_flagOptionTitle, // displayed title
_flagOptionTexture, // flag icon
{
params ["_target", "_player", "_params"];
_params params ["_flagOptionTexture"];
_target forceFlagTexture _flagOptionTexture;
}, // statement
{
params ["_target", "_player", "_params"];
alive _target;
// true;
}, // condition
nil, // child code
[_flagOptionTexture], // params
nil, // position
4, // distance
[false, false, false, false, false] // other params
] call ace_interact_menu_fnc_createAction;
_newFlagOption;

View File

@@ -0,0 +1,52 @@
// diag_log format ["NewFlagCategory: %1 %2", _flagCategory, _flagOptions];
params ["_rootActionID", "_flagCategoryCfg"];
private _flagCategoryActionID = getText(_flagCategoryCfg >> "actionID");
private _flagCategoryTitle = getText(_flagCategoryCfg >> "actionTitle");
private _flagSubclassesCfgs = _flagCategoryCfg call BIS_fnc_returnChildren;
private _flagCategoryAction = [
_rootActionID + "_" + _flagCategoryActionID, // id
_flagCategoryTitle, // displayed title
getText((_flagSubclassesCfgs#0) >> "texture"), // flag icon for category - use first flag option
{true}, // statement
{
params ["_target", "_player", "_params"];
alive _target;
// true;
}, // condition
{
// generate child code under category
// this is the level where actual flag options will be displayed
params ["_target", "_player", "_params"];
// these params are passed from the parent action
_params params ["_rootActionID", "_flagCategoryActionID", "_flagSubclassesCfgs"];
private _individualFlagActions = [];
{ // forEach _flagSubclassesCfgs; // we'll generate flag options for each category
private _flagOptionCfg = _x;
// generate flag option for this flag option
private _newFlagOption = [
_target,
_player,
_params,
_flagOptionCfg
] call FUNC(compileFlagAction);
// add flag option to category subactions
_individualFlagActions pushBack [_newFlagOption, [], _target];
} forEach _flagSubclassesCfgs;
// return the generated flag options to the category as child actions
_individualFlagActions;
}, // child code
[_rootActionID, _flagCategoryActionID, _flagSubclassesCfgs], // params
nil, // position
4, // distance
[false, false, false, false, false], // other params
nil // modifier function code
] call ace_interact_menu_fnc_createAction;
_flagCategoryAction;

View File

@@ -11,80 +11,18 @@ params ["_rootActionID", "_flagCategoryCfgs"];
private _allCategoryActions = []; private _allCategoryActions = [];
{ {
// diag_log format ["NewFlagCategory: %1 %2", _flagCategory, _flagOptions]; _flagCategoryActions = [];
if (configName _x == "SimpleShapes") then {
private _flagCategoryCfg = _x;
private _flagCategoryActionID = getText(_flagCategoryCfg >> "actionID");
private _flagCategoryTitle = getText(_flagCategoryCfg >> "actionTitle");
private _flagSubclassesCfgs = _flagCategoryCfg call BIS_fnc_returnChildren;
private _flagCategoryAction = [
_rootActionID + "_" + _flagCategoryActionID, // id
_flagCategoryTitle, // displayed title
getText((_flagSubclassesCfgs#0) >> "texture"), // flag icon for category - use first flag option
{true}, // statement
{ {
params ["_target", "_player", "_params"]; _flagCategoryActions pushBack ([_rootActionID, _x] call FUNC(compileFlagCategoryAction));
alive _target; } forEach (_x call BIS_fnc_returnChildren);
// true; } else {
}, // condition _flagCategoryActions pushBack (_x call FUNC(compileFlagCategoryAction));
{ };
// generate child code under category
// this is the level where actual flag options will be displayed
params ["_target", "_player", "_params"];
_params params ["_rootActionID", "_flagCategoryActionID", "_flagSubclassesCfgs"];
private _individualFlagActions = [];
{ // forEach _flagSubclassesCfgs;
private _flagOptionCfg = _x;
private _flagOptionID = getText(_flagOptionCfg >> "actionID");
private _flagOptionTitle = getText(_flagOptionCfg >> "actionTitle");
private _flagOptionTexture = getText(_flagOptionCfg >> "texture");
// if the texture doesn't exist at the config path, skip this flag option
if (not (fileExists _flagOptionTexture)) then {continue};
// diag_log format ["NewFlagOption: %1 %2", _flagOptionID, _flagOptionData];
private _newFlagOption = [
_rootActionID + "_" + _flagCategoryActionID + "_" + _flagOptionID, // id
_flagOptionTitle, // displayed title
_flagOptionTexture, // flag icon
{
params ["_target", "_player", "_params"];
_params params ["_flagOptionTexture"];
_target forceFlagTexture _flagOptionTexture;
}, // statement
{
params ["_target", "_player", "_params"];
alive _target;
// true;
}, // condition
nil, // child code
[_flagOptionTexture], // params
nil, // position
4, // distance
[false, false, false, false, false] // other params
] call ace_interact_menu_fnc_createAction;
// add flag option to category subactions
_individualFlagActions pushBack [_newFlagOption, [], _target];
} forEach _flagSubclassesCfgs;
// return the generated flag options to the category as child actions
_individualFlagActions;
}, // child code
[_rootActionID, _flagCategoryActionID, _flagSubclassesCfgs], // params
nil, // position
4, // distance
[false, false, false, false, false], // other params
nil // modifier function code
] call ace_interact_menu_fnc_createAction;
// add category to all category actions array // add category to all category actions array
_allCategoryActions pushBack [_flagCategoryAction, [], _target]; {
_allCategoryActions pushBack [_x, [], _target];
} forEach _flagCategoryActions;
} forEach _flagCategoryCfgs; } forEach _flagCategoryCfgs;
_allCategoryActions; _allCategoryActions;