diff --git a/arma/server/addons/task/CfgVehicles.hpp b/arma/server/addons/task/CfgVehicles.hpp index dcd25c4..534b2ed 100644 --- a/arma/server/addons/task/CfgVehicles.hpp +++ b/arma/server/addons/task/CfgVehicles.hpp @@ -267,6 +267,128 @@ class CfgVehicles { }; }; + class FORGE_Module_Defend: Module_F { + scope = 2; + displayName = "Defend Task"; + category = "FORGE_Modules"; + + function = QFUNC(defendModule); + functionPriority = 1; + isGlobal = 1; + isTriggerActivated = 1; + isDisposable = 1; + is3DEN = 0; + + canSetArea = 0; + canSetAreaShape = 0; + canSetAreaHeight = 0; + + class AttributeValues {}; + class Attributes: AttributesBase { + class TaskID: Edit { + property = "FORGE_Module_Defend_TaskID"; + displayName = "Task ID"; + tooltip = "Unique identifier for this task"; + typeName = "STRING"; + }; + class DefenseZone: Edit { + property = "FORGE_Module_Defend_DefenseZone"; + displayName = "Defense Zone Marker"; + tooltip = "Name of the marker defining the defense zone"; + typeName = "STRING"; + }; + class DefendTime: Edit { + property = "FORGE_Module_Defend_DefendTime"; + displayName = "Defend Time"; + tooltip = "Time in seconds the zone must be held"; + typeName = "NUMBER"; + defaultValue = 600; + }; + class WaveCount: Edit { + property = "FORGE_Module_Defend_WaveCount"; + displayName = "Wave Count"; + tooltip = "Number of enemy waves to spawn"; + typeName = "NUMBER"; + defaultValue = 3; + }; + class WaveCooldown: Edit { + property = "FORGE_Module_Defend_WaveCooldown"; + displayName = "Wave Cooldown"; + tooltip = "Time in seconds between enemy waves"; + typeName = "NUMBER"; + defaultValue = 300; + }; + class MinBlufor: Edit { + property = "FORGE_Module_Defend_MinBlufor"; + displayName = "Minimum BLUFOR"; + tooltip = "Minimum number of BLUFOR units that must remain in the zone"; + typeName = "NUMBER"; + defaultValue = 1; + }; + class CompanyFunds: Edit { + property = "FORGE_Module_Defend_CompanyFunds"; + displayName = "Reward Funds"; + tooltip = "Amount of funds awarded on success"; + typeName = "NUMBER"; + defaultValue = 0; + }; + class RatingFail: Edit { + property = "FORGE_Module_Defend_RatingFail"; + displayName = "Rating Loss"; + tooltip = "Amount of rating lost on failure"; + typeName = "NUMBER"; + defaultValue = 0; + }; + class RatingSuccess: Edit { + property = "FORGE_Module_Defend_RatingSuccess"; + displayName = "Rating Gain"; + tooltip = "Amount of rating gained on success"; + typeName = "NUMBER"; + defaultValue = 0; + }; + class EndSuccess: Combo { + property = "FORGE_Module_Defend_EndSuccess"; + displayName = "End on Success"; + tooltip = "End mission when task is completed successfully"; + typeName = "BOOL"; + defaultValue = 0; + + class Values { + class EnableEndSuccess { name = "Enable"; value = 1; }; + class DisableEndSuccess { name = "Disable"; value = 0; }; + }; + }; + class EndFail: Combo { + property = "FORGE_Module_Defend_EndFail"; + displayName = "End on Failure"; + tooltip = "End mission when task fails"; + typeName = "BOOL"; + defaultValue = 0; + + class Values { + class EnableEndFail { name = "Enable"; value = 1; }; + class DisableEndFail { name = "Disable"; value = 0; }; + }; + }; + }; + + class ModuleDescription: ModuleDescription { + description = "Creates a defend task with configurable defense zone and enemy wave parameters"; + sync[] = { "Anything" }; + + class Anything { + description[] = { + "Defend task module", + "Enemy waves are spawned automatically; no synced entities are required" + }; + position = 1; + direction = 1; + optional = 1; + duplicate = 1; + }; + }; + }; + class FORGE_Module_Defuse: Module_F { scope = 2; displayName = "Defuse Task";