feat: add defend task module with configurable parameters and attributes
This commit is contained in:
parent
d7018742b5
commit
3668223f11
@ -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 {
|
class FORGE_Module_Defuse: Module_F {
|
||||||
scope = 2;
|
scope = 2;
|
||||||
displayName = "Defuse Task";
|
displayName = "Defuse Task";
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user