58 Print(
"ScenarioFramework: Task Deliver trigger is set with empty attribute SetDeliveryTrigger",
LogLevel.ERROR);
85 if (triggerName.IsEmpty())
87 Print(
"ScenarioFramework: Task Deliver trigger is set with empty attribute SetTriggerNameToDeliver",
LogLevel.ERROR);
108 array<IEntity> entitiesInside = {};
109 array<SCR_ChimeraCharacter> chimeraCharacters = {};
110 trigger.GetEntitiesInside(entitiesInside);
111 foreach (
IEntity entity : entitiesInside)
113 if (entity == m_Asset)
120 if (SCR_ChimeraCharacter.Cast(entity))
121 chimeraCharacters.Insert(SCR_ChimeraCharacter.Cast(entity))
124 foreach (SCR_ChimeraCharacter character : chimeraCharacters)
127 if (!inventoryComponent)
130 if (inventoryComponent.Contains(m_Asset))
145 if(!item || item != m_Asset)
162 if(!item || item != m_Asset)
174 if (iPossessed == -1)
220 SCR_ScenarioFrameworkSlotTask subject = m_LayerTask.GetSlotTask();
239 SCR_ScenarioFrameworkLayerTaskDeliver layerTaskDeliver = SCR_ScenarioFrameworkLayerTaskDeliver.Cast(m_LayerTask);
240 if (!layerTaskDeliver)
242 Print(
"ScenarioFramework: Task Deliver failed to access LayerTask",
LogLevel.ERROR);
256 m_LayerTask.m_TaskSystem.MoveTask(
this, m_Asset.GetOrigin());
258 Print(
"ScenarioFramework: Task Deliver does not have m_Asset properly assigned for MoveTaskMarkerPosition",
LogLevel.ERROR);
267 EventHandlerManagerComponent eventHandlerMgr;
273 owner = oldSlot.GetOwner();
274 rootOwner = oldSlot.GetOwner().GetRootParent();
277 eventHandlerMgr = EventHandlerManagerComponent.Cast(owner.
FindComponent(EventHandlerManagerComponent));
279 eventHandlerMgr.RemoveScriptHandler(
"OnDestroyed",
this,
OnDestroyed);
282 if (owner != rootOwner)
284 eventHandlerMgr = EventHandlerManagerComponent.Cast(rootOwner.
FindComponent(EventHandlerManagerComponent));
286 eventHandlerMgr.RemoveScriptHandler(
"OnDestroyed",
this,
OnDestroyed);
301 if (inventoryComponent)
307 owner = newSlot.GetOwner();
308 rootOwner = newSlot.GetOwner().GetRootParent();
311 eventHandlerMgr = EventHandlerManagerComponent.Cast(owner.
FindComponent(EventHandlerManagerComponent));
313 eventHandlerMgr.RegisterScriptHandler(
"OnDestroyed",
this,
OnDestroyed);
316 if (owner != rootOwner)
318 eventHandlerMgr = EventHandlerManagerComponent.Cast(rootOwner.
FindComponent(EventHandlerManagerComponent));
320 eventHandlerMgr.RegisterScriptHandler(
"OnDestroyed",
this,
OnDestroyed);
331 if (inventoryComponent)
346 if (garbageSystem.IsInserted(entity))
351 garbageSystem.UpdateBlacklist(entity,
true);
361 garbageSystem.UpdateBlacklist(entity,
false);
362 garbageSystem.Insert(entity);
370 if (!destroyedEntity)
385 if (!inventoryComponent)
388 if (!inventoryComponent.Contains(m_Asset))
391 inventoryComponent.TryRemoveItemFromStorage(m_Asset, parentSlot.GetStorage());
394 array<IEntity> excludedEntities = {};
395 excludedEntities.Insert(destroyedEntity);
396 excludedEntities.Insert(m_Asset);
399 if (character && character.IsInVehicle())
401 CompartmentAccessComponent compartmentAccess = character.GetCompartmentAccessComponent();
402 if (compartmentAccess)
407 IEntity vehicle = compartmentSlot.GetOwner();
408 excludedEntities.Insert(vehicle);
423 IEntity player =
GetGame().GetPlayerManager().GetPlayerControlledEntity(iPlayerID);
436 IEntity player =
GetGame().GetPlayerManager().GetPlayerControlledEntity(iPlayerID);
440 SCR_InventoryStorageManagerComponent inventoryComponent = SCR_InventoryStorageManagerComponent.Cast(player.
FindComponent(SCR_InventoryStorageManagerComponent));
441 if (!inventoryComponent)
447 EventHandlerManagerComponent EventHandlerMgr = EventHandlerManagerComponent.Cast(player.
FindComponent(EventHandlerManagerComponent));
449 EventHandlerMgr.RegisterScriptHandler(
"OnDestroyed",
this,
OnDestroyed);
460 super.HookTaskAsset(
object);
471 array<int> aPlayerIDs = {};
472 int iNrOfPlayersConnected =
GetGame().GetPlayerManager().GetPlayers(aPlayerIDs);
474 foreach (
int i : aPlayerIDs)
ArmaReforgerScripted GetGame()
enum SCR_EAICombatMoveRequestState UNDEFINED
SCR_BaseGameMode GetGameMode()
void OnDestroyed(IEntity owner)
void OnDisconnected(int playerID)
string GetTaskDescription()
void UpdateTaskTitleAndDescription()
Updates task title and description if provided.
void OnDeliveryTriggerActivated(notnull SCR_ScenarioFrameworkTriggerEntity trigger)
bool m_bDeliveryItemFound
SCR_BaseTriggerEntity m_TriggerDeliver
void SetDeliveryTrigger()
Sets delivery trigger by name if it exists in the world.
void SetTriggerNameToDeliver(string triggerName)
void RegisterPlayer(int iPlayerID, IEntity playerEntity)
void MoveTaskMarkerPosition()
Updates task position, moves marker if asset exists, logs error if asset not assigned.
bool m_bTaskPositionUpdated
void OnObjectDropped(IEntity item, BaseInventoryStorageComponent pStorageOwner)
string GetTriggerNameToDeliver()
enum SCR_EScenarioFrameworkItemGCState m_sDeliveryTriggerName
int GetTaskDeliverState()
void HandleNewSlotGC(IEntity entity)
Handles the cases where GarbageSystem might delete new slot entity.
void OnObjectPossessed(IEntity item, BaseInventoryStorageComponent pStorageOwner)
void OnItemCarrierChanged(InventoryStorageSlot oldSlot, InventoryStorageSlot newSlot)
void UpdateDroppedTaskMarker()
Updates dropped task marker position, checks if it's a deliver task, schedules marker position update...
void InvokedSetDeliveryTrigger()
Sets delivery trigger for an event.
void HandleOldSlotGC(IEntity entity)
Handles possible revert of case prevention where GarbageSystem might delete root entity.
SCR_EScenarioFrameworkItemGCState m_eGarbageCollectionStatus
SCR_EScenarioFrameworkItemGCState
void SetTaskDescription(LocalizedString taskDesc, array< LocalizedString > taskDescParams=null)
void SetTaskName(LocalizedString taskName, array< LocalizedString > taskNameParams=null)
void SetTaskUIVisibility(SCR_ETaskUIVisibility visibility)
string GetTaskName(SCR_Task task)
proto external Managed FindComponent(typename typeName)
proto external BaseWorld GetWorld()
ScriptInvokerBase< SCR_BaseGameMode_OnPlayerDisconnected > GetOnPlayerDisconnected()
ScriptInvokerBase< SCR_BaseGameMode_PlayerIdAndEntity > GetOnPlayerSpawned()
Script entry for garbage system modding.
static SCR_GarbageSystem GetByEntityWorld(IEntity entity)
static ScriptCallQueue GetCallQueuePausable()
void HookTaskAsset(IEntity object)
static void SnapToGeometry(out vector newPosition, vector currentPosition, array< IEntity > excludedEntities, BaseWorld world=null, TraceParam traceParam=null, out vector surfaceNormal=vector.Zero)
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
Enum with severity of the logging message.