- Track runtime catalog entries and status locally - Fall back to cached entries when backend catalog/status lookups fail - Clear cached runtime task state when tasks are removed
Task Objects
This folder documents the active createHashMapObject task instances and entity
controllers. Their source lives under functions/objects/, and each class is
initialized directly from XEH_preInit.sqf.
Current task objects:
TaskInstanceBaseClassEntityControllerBaseClassTargetEntityControllerShooterEntityControllerAttackTaskBaseClassHostageTaskBaseClassHostageEntityControllerHVTEntityControllerCargoEntityControllerProtectedEntityControllerIEDEntityControllerDefenseEnemyControllerDefuseTaskBaseClassDestroyTaskBaseClassDeliveryTaskBaseClassHVTTaskBaseClassDefendTaskBaseClass
Source entry points:
- fnc_TaskInstanceBaseClass.sqf
- fnc_EntityControllerBaseClass.sqf
- fnc_TargetEntityController.sqf
- fnc_ShooterEntityController.sqf
- fnc_AttackTaskBaseClass.sqf
- fnc_HostageTaskBaseClass.sqf
- fnc_HostageEntityController.sqf
- fnc_HVTEntityController.sqf
- fnc_CargoEntityController.sqf
- fnc_ProtectedEntityController.sqf
- fnc_IEDEntityController.sqf
- fnc_DefenseEnemyController.sqf
- fnc_DefuseTaskBaseClass.sqf
- fnc_DestroyTaskBaseClass.sqf
- fnc_DeliveryTaskBaseClass.sqf
- fnc_HVTTaskBaseClass.sqf
- fnc_DefendTaskBaseClass.sqf
Purpose:
- keep per-task instance state in task objects
- keep per-entity behavior in controller objects
- separate state ownership from long procedural function flows
- keep shared lifecycle and reward initialization in
TaskInstanceBaseClass - so concrete task objects only define task-specific state
- keep heartbeat-style AI/object behavior in separate entity controllers instead of mixing it into task outcome loops
Important design choice:
- these objects use explicit
markSucceeded,markFailed, andcleanupmethods instead of relying on#delete - task loops that use
sleeporwaitUntilwithsleepmust be started from scheduled code, typically viaspawn
That is intentional. createHashMapObject destructor timing is reference-based,
so #delete is not a good primitive for mission-critical task completion or
reward flow.