diff --git a/.gitignore b/.gitignore index 751ea54..fdf6c63 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ Thumbs.db arma/ui/map-viewer/ arma/server/surrealdb/forge.db/ promo/ +arma/forge_pmc_simulator.Tanoa/ diff --git a/arma/server/addons/extension/functions/fnc_extCall.sqf b/arma/server/addons/extension/functions/fnc_extCall.sqf index 595e42d..0ec3c69 100644 --- a/arma/server/addons/extension/functions/fnc_extCall.sqf +++ b/arma/server/addons/extension/functions/fnc_extCall.sqf @@ -26,7 +26,8 @@ params [["_function", "", [""]], ["_arguments", [], [[]]]]; private _quietFunctionLogs = [ "task:defuse:get", - "task:catalog:get" + "task:catalog:get", + "task:status:get" ]; private _functionLower = toLower _function; if !(_functionLower in _quietFunctionLogs) then { diff --git a/arma/server/addons/task/functions/fnc_missionManager.sqf b/arma/server/addons/task/functions/fnc_missionManager.sqf index 698444b..72a6e4d 100644 --- a/arma/server/addons/task/functions/fnc_missionManager.sqf +++ b/arma/server/addons/task/functions/fnc_missionManager.sqf @@ -24,6 +24,7 @@ if (isNil QGVAR(AttackMissionGeneratorBaseClass)) then { call FUNC(attackMission GVAR(MissionManagerBaseClass) = compileFinal createHashMapFromArray [ ["#type", "MissionManagerBaseClass"], ["#create", compileFinal { + _self set ["lastMissionGenerationAt", -1e10]; _self set ["recentLocationRegistry", []]; _self set ["activeMissionRegistry", createHashMap]; _self set ["generators", [createHashMapObject [GVAR(AttackMissionGeneratorBaseClass)]]]; @@ -155,6 +156,13 @@ if (GVAR(enableGenerator)) then { GVAR(MissionManagerPFH) = [{ GVAR(MissionManager) call ["cleanupCompletedMissions", []]; + private _now = diag_tickTime; + private _interval = GVAR(MissionManager) call ["getMissionInterval", []]; + private _lastMissionGenerationAt = GVAR(MissionManager) getOrDefault ["lastMissionGenerationAt", -1e10]; + if ((_now - _lastMissionGenerationAt) < _interval) exitWith {}; + + GVAR(MissionManager) set ["lastMissionGenerationAt", _now]; + private _taskID = GVAR(MissionManager) call ["startAvailableMissions", []]; if (_taskID isEqualTo "") exitWith {}; diff --git a/arma/server/addons/task/functions/objects/fnc_AttackTaskBaseClass.sqf b/arma/server/addons/task/functions/objects/fnc_AttackTaskBaseClass.sqf index e640dd2..9487a72 100644 --- a/arma/server/addons/task/functions/objects/fnc_AttackTaskBaseClass.sqf +++ b/arma/server/addons/task/functions/objects/fnc_AttackTaskBaseClass.sqf @@ -37,8 +37,8 @@ #pragma hemtt ignore_variables ["_self"] -GVAR(AttackTaskBaseClass) = createHashMapFromArray [ - ["#base", GVAR(TaskInstanceBaseClass)], +GVAR(AttackTaskBaseClass) = +GVAR(TaskInstanceBaseClass); +GVAR(AttackTaskBaseClass) merge [createHashMapFromArray [ ["#type", "AttackTaskBaseClass"], ["#create", compileFinal { params [ @@ -224,4 +224,4 @@ GVAR(AttackTaskBaseClass) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_CargoEntityController.sqf b/arma/server/addons/task/functions/objects/fnc_CargoEntityController.sqf index 6d4b922..1b615db 100644 --- a/arma/server/addons/task/functions/objects/fnc_CargoEntityController.sqf +++ b/arma/server/addons/task/functions/objects/fnc_CargoEntityController.sqf @@ -5,8 +5,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(CargoEntityController) = createHashMapFromArray [ - ["#base", GVAR(EntityControllerBaseClass)], +GVAR(CargoEntityController) = +GVAR(EntityControllerBaseClass); +GVAR(CargoEntityController) merge [createHashMapFromArray [ ["#type", "CargoEntityController"], ["#create", compileFinal { params [ @@ -77,4 +77,4 @@ GVAR(CargoEntityController) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_DefendTaskBaseClass.sqf b/arma/server/addons/task/functions/objects/fnc_DefendTaskBaseClass.sqf index 9631335..6e29abe 100644 --- a/arma/server/addons/task/functions/objects/fnc_DefendTaskBaseClass.sqf +++ b/arma/server/addons/task/functions/objects/fnc_DefendTaskBaseClass.sqf @@ -5,8 +5,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(DefendTaskBaseClass) = createHashMapFromArray [ - ["#base", GVAR(TaskInstanceBaseClass)], +GVAR(DefendTaskBaseClass) = +GVAR(TaskInstanceBaseClass); +GVAR(DefendTaskBaseClass) merge [createHashMapFromArray [ ["#type", "DefendTaskBaseClass"], ["#create", compileFinal { params [ @@ -213,4 +213,4 @@ GVAR(DefendTaskBaseClass) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_DefenseEnemyController.sqf b/arma/server/addons/task/functions/objects/fnc_DefenseEnemyController.sqf index 8d589d6..8e54c7b 100644 --- a/arma/server/addons/task/functions/objects/fnc_DefenseEnemyController.sqf +++ b/arma/server/addons/task/functions/objects/fnc_DefenseEnemyController.sqf @@ -5,8 +5,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(DefenseEnemyController) = createHashMapFromArray [ - ["#base", GVAR(EntityControllerBaseClass)], +GVAR(DefenseEnemyController) = +GVAR(EntityControllerBaseClass); +GVAR(DefenseEnemyController) merge [createHashMapFromArray [ ["#type", "DefenseEnemyController"], ["#create", compileFinal { params [ @@ -49,4 +49,4 @@ GVAR(DefenseEnemyController) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_DefuseTaskBaseClass.sqf b/arma/server/addons/task/functions/objects/fnc_DefuseTaskBaseClass.sqf index 7ec5bc3..b024e60 100644 --- a/arma/server/addons/task/functions/objects/fnc_DefuseTaskBaseClass.sqf +++ b/arma/server/addons/task/functions/objects/fnc_DefuseTaskBaseClass.sqf @@ -37,8 +37,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(DefuseTaskBaseClass) = createHashMapFromArray [ - ["#base", GVAR(TaskInstanceBaseClass)], +GVAR(DefuseTaskBaseClass) = +GVAR(TaskInstanceBaseClass); +GVAR(DefuseTaskBaseClass) merge [createHashMapFromArray [ ["#type", "DefuseTaskBaseClass"], ["#create", compileFinal { params [ @@ -274,4 +274,4 @@ GVAR(DefuseTaskBaseClass) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_DeliveryTaskBaseClass.sqf b/arma/server/addons/task/functions/objects/fnc_DeliveryTaskBaseClass.sqf index 37ae6b5..15272dc 100644 --- a/arma/server/addons/task/functions/objects/fnc_DeliveryTaskBaseClass.sqf +++ b/arma/server/addons/task/functions/objects/fnc_DeliveryTaskBaseClass.sqf @@ -5,8 +5,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(DeliveryTaskBaseClass) = createHashMapFromArray [ - ["#base", GVAR(TaskInstanceBaseClass)], +GVAR(DeliveryTaskBaseClass) = +GVAR(TaskInstanceBaseClass); +GVAR(DeliveryTaskBaseClass) merge [createHashMapFromArray [ ["#type", "DeliveryTaskBaseClass"], ["#create", compileFinal { params [ @@ -201,4 +201,4 @@ GVAR(DeliveryTaskBaseClass) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_DestroyTaskBaseClass.sqf b/arma/server/addons/task/functions/objects/fnc_DestroyTaskBaseClass.sqf index 54961d0..29dd41f 100644 --- a/arma/server/addons/task/functions/objects/fnc_DestroyTaskBaseClass.sqf +++ b/arma/server/addons/task/functions/objects/fnc_DestroyTaskBaseClass.sqf @@ -5,8 +5,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(DestroyTaskBaseClass) = createHashMapFromArray [ - ["#base", GVAR(TaskInstanceBaseClass)], +GVAR(DestroyTaskBaseClass) = +GVAR(TaskInstanceBaseClass); +GVAR(DestroyTaskBaseClass) merge [createHashMapFromArray [ ["#type", "DestroyTaskBaseClass"], ["#create", compileFinal { params [ @@ -181,4 +181,4 @@ GVAR(DestroyTaskBaseClass) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_HVTEntityController.sqf b/arma/server/addons/task/functions/objects/fnc_HVTEntityController.sqf index 1c162cd..cd758c8 100644 --- a/arma/server/addons/task/functions/objects/fnc_HVTEntityController.sqf +++ b/arma/server/addons/task/functions/objects/fnc_HVTEntityController.sqf @@ -5,8 +5,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(HVTEntityController) = createHashMapFromArray [ - ["#base", GVAR(EntityControllerBaseClass)], +GVAR(HVTEntityController) = +GVAR(EntityControllerBaseClass); +GVAR(HVTEntityController) merge [createHashMapFromArray [ ["#type", "HVTEntityController"], ["#create", compileFinal { params [ @@ -69,4 +69,4 @@ GVAR(HVTEntityController) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_HVTTaskBaseClass.sqf b/arma/server/addons/task/functions/objects/fnc_HVTTaskBaseClass.sqf index a93fdf7..142d9a0 100644 --- a/arma/server/addons/task/functions/objects/fnc_HVTTaskBaseClass.sqf +++ b/arma/server/addons/task/functions/objects/fnc_HVTTaskBaseClass.sqf @@ -5,8 +5,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(HVTTaskBaseClass) = createHashMapFromArray [ - ["#base", GVAR(TaskInstanceBaseClass)], +GVAR(HVTTaskBaseClass) = +GVAR(TaskInstanceBaseClass); +GVAR(HVTTaskBaseClass) merge [createHashMapFromArray [ ["#type", "HVTTaskBaseClass"], ["#create", compileFinal { params [ @@ -237,4 +237,4 @@ GVAR(HVTTaskBaseClass) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_HostageEntityController.sqf b/arma/server/addons/task/functions/objects/fnc_HostageEntityController.sqf index 9d007db..0d70b34 100644 --- a/arma/server/addons/task/functions/objects/fnc_HostageEntityController.sqf +++ b/arma/server/addons/task/functions/objects/fnc_HostageEntityController.sqf @@ -32,8 +32,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(HostageEntityController) = createHashMapFromArray [ - ["#base", GVAR(EntityControllerBaseClass)], +GVAR(HostageEntityController) = +GVAR(EntityControllerBaseClass); +GVAR(HostageEntityController) merge [createHashMapFromArray [ ["#type", "HostageEntityController"], ["#create", compileFinal { params [ @@ -120,4 +120,4 @@ GVAR(HostageEntityController) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_HostageTaskBaseClass.sqf b/arma/server/addons/task/functions/objects/fnc_HostageTaskBaseClass.sqf index db7fb13..c8193aa 100644 --- a/arma/server/addons/task/functions/objects/fnc_HostageTaskBaseClass.sqf +++ b/arma/server/addons/task/functions/objects/fnc_HostageTaskBaseClass.sqf @@ -40,8 +40,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(HostageTaskBaseClass) = createHashMapFromArray [ - ["#base", GVAR(TaskInstanceBaseClass)], +GVAR(HostageTaskBaseClass) = +GVAR(TaskInstanceBaseClass); +GVAR(HostageTaskBaseClass) merge [createHashMapFromArray [ ["#type", "HostageTaskBaseClass"], ["#create", compileFinal { params [ @@ -364,4 +364,4 @@ GVAR(HostageTaskBaseClass) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_IEDEntityController.sqf b/arma/server/addons/task/functions/objects/fnc_IEDEntityController.sqf index 5ad3efd..2613431 100644 --- a/arma/server/addons/task/functions/objects/fnc_IEDEntityController.sqf +++ b/arma/server/addons/task/functions/objects/fnc_IEDEntityController.sqf @@ -5,8 +5,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(IEDEntityController) = createHashMapFromArray [ - ["#base", GVAR(EntityControllerBaseClass)], +GVAR(IEDEntityController) = +GVAR(EntityControllerBaseClass); +GVAR(IEDEntityController) merge [createHashMapFromArray [ ["#type", "IEDEntityController"], ["#create", compileFinal { params [ @@ -85,4 +85,4 @@ GVAR(IEDEntityController) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_ProtectedEntityController.sqf b/arma/server/addons/task/functions/objects/fnc_ProtectedEntityController.sqf index 1195a65..5de2f15 100644 --- a/arma/server/addons/task/functions/objects/fnc_ProtectedEntityController.sqf +++ b/arma/server/addons/task/functions/objects/fnc_ProtectedEntityController.sqf @@ -5,8 +5,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(ProtectedEntityController) = createHashMapFromArray [ - ["#base", GVAR(EntityControllerBaseClass)], +GVAR(ProtectedEntityController) = +GVAR(EntityControllerBaseClass); +GVAR(ProtectedEntityController) merge [createHashMapFromArray [ ["#type", "ProtectedEntityController"], ["#create", compileFinal { params [ @@ -38,4 +38,4 @@ GVAR(ProtectedEntityController) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_ShooterEntityController.sqf b/arma/server/addons/task/functions/objects/fnc_ShooterEntityController.sqf index b3d1e40..06a8fdc 100644 --- a/arma/server/addons/task/functions/objects/fnc_ShooterEntityController.sqf +++ b/arma/server/addons/task/functions/objects/fnc_ShooterEntityController.sqf @@ -5,8 +5,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(ShooterEntityController) = createHashMapFromArray [ - ["#base", GVAR(EntityControllerBaseClass)], +GVAR(ShooterEntityController) = +GVAR(EntityControllerBaseClass); +GVAR(ShooterEntityController) merge [createHashMapFromArray [ ["#type", "ShooterEntityController"], ["#create", compileFinal { params [ @@ -38,4 +38,4 @@ GVAR(ShooterEntityController) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true]; diff --git a/arma/server/addons/task/functions/objects/fnc_TargetEntityController.sqf b/arma/server/addons/task/functions/objects/fnc_TargetEntityController.sqf index b7b85e7..bb965e9 100644 --- a/arma/server/addons/task/functions/objects/fnc_TargetEntityController.sqf +++ b/arma/server/addons/task/functions/objects/fnc_TargetEntityController.sqf @@ -5,8 +5,8 @@ */ #pragma hemtt ignore_variables ["_self"] -GVAR(TargetEntityController) = createHashMapFromArray [ - ["#base", GVAR(EntityControllerBaseClass)], +GVAR(TargetEntityController) = +GVAR(EntityControllerBaseClass); +GVAR(TargetEntityController) merge [createHashMapFromArray [ ["#type", "TargetEntityController"], ["#create", compileFinal { params [ @@ -38,4 +38,4 @@ GVAR(TargetEntityController) = createHashMapFromArray [ _self call ["cleanup", []]; true }] -]; +], true];