diff --git a/Moose Development/Moose/Actions/Act_Account.lua b/Moose Development/Moose/Actions/Act_Account.lua index 8b3785dd2..b87e0af93 100644 --- a/Moose Development/Moose/Actions/Act_Account.lua +++ b/Moose Development/Moose/Actions/Act_Account.lua @@ -155,7 +155,6 @@ do -- ACT_ACCOUNT_DEADS -- @extends #ACT_ACCOUNT ACT_ACCOUNT_DEADS = { ClassName = "ACT_ACCOUNT_DEADS", - TargetSetUnit = nil, } @@ -163,13 +162,10 @@ do -- ACT_ACCOUNT_DEADS -- @param #ACT_ACCOUNT_DEADS self -- @param Set#SET_UNIT TargetSetUnit -- @param #string TaskName - function ACT_ACCOUNT_DEADS:New( TargetSetUnit, TaskName ) + function ACT_ACCOUNT_DEADS:New() -- Inherits from BASE local self = BASE:Inherit( self, ACT_ACCOUNT:New() ) -- #ACT_ACCOUNT_DEADS - self.TargetSetUnit = TargetSetUnit - self.TaskName = TaskName - self.DisplayInterval = 30 self.DisplayCount = 30 self.DisplayMessage = true @@ -181,8 +177,8 @@ do -- ACT_ACCOUNT_DEADS function ACT_ACCOUNT_DEADS:Init( FsmAccount ) - self.TargetSetUnit = FsmAccount.TargetSetUnit - self.TaskName = FsmAccount.TaskName + self.Task = self:GetTask() + self.TaskName = self.Task:GetName() end --- Process Events @@ -196,7 +192,7 @@ do -- ACT_ACCOUNT_DEADS function ACT_ACCOUNT_DEADS:onenterReport( ProcessUnit, Task, From, Event, To ) self:E( { ProcessUnit, From, Event, To } ) - self:Message( "Your group with assigned " .. self.TaskName .. " task has " .. self.TargetSetUnit:GetUnitTypesText() .. " targets left to be destroyed." ) + self:Message( "Your group with assigned " .. self.TaskName .. " task has " .. Task.TargetSetUnit:GetUnitTypesText() .. " targets left to be destroyed." ) end @@ -211,7 +207,7 @@ do -- ACT_ACCOUNT_DEADS function ACT_ACCOUNT_DEADS:onafterEvent( ProcessClient, Task, From, Event, To, EventData ) self:T( { ProcessClient:GetName(), Task:GetName(), From, Event, To, EventData } ) - if self.TargetSetUnit:FindUnit( EventData.IniUnitName ) then + if Task.TargetSetUnit:FindUnit( EventData.IniUnitName ) then local PlayerName = ProcessClient:GetPlayerName() local PlayerHit = self.PlayerHits and self.PlayerHits[EventData.IniUnitName] if PlayerHit == PlayerName then @@ -235,13 +231,13 @@ do -- ACT_ACCOUNT_DEADS local TaskGroup = ProcessClient:GetGroup() - self.TargetSetUnit:Remove( EventData.IniUnitName ) - self:Message( "You have destroyed a target. Your group assigned with task " .. self.TaskName .. " has " .. self.TargetSetUnit:Count() .. " targets ( " .. self.TargetSetUnit:GetUnitTypesText() .. " ) left to be destroyed." ) + Task.TargetSetUnit:Remove( EventData.IniUnitName ) + self:Message( "You have destroyed a target.\nYour group assigned with task " .. self.TaskName .. " has\n" .. Task.TargetSetUnit:Count() .. " targets ( " .. Task.TargetSetUnit:GetUnitTypesText() .. " ) left to be destroyed." ) local PlayerName = ProcessClient:GetPlayerName() Task:AddProgress( PlayerName, "Destroyed " .. EventData.IniTypeName, timer.getTime(), 1 ) - if self.TargetSetUnit:Count() > 0 then + if Task.TargetSetUnit:Count() > 0 then self:__More( 1 ) else self:__NoMore( 1 ) @@ -260,10 +256,10 @@ do -- ACT_ACCOUNT_DEADS self:T( { ProcessClient:GetName(), Task:GetName(), From, Event, To, EventData } ) local TaskGroup = ProcessClient:GetGroup() - self.TargetSetUnit:Remove( EventData.IniUnitName ) - self:Message( "One of the task targets has been destroyed. Your group assigned with task " .. self.TaskName .. " has " .. self.TargetSetUnit:Count() .. " targets ( " .. self.TargetSetUnit:GetUnitTypesText() .. " ) left to be destroyed." ) + Task.TargetSetUnit:Remove( EventData.IniUnitName ) + self:Message( "One of the task targets has been destroyed.\nYour group assigned with task " .. self.TaskName .. " has\n" .. Task.TargetSetUnit:Count() .. " targets ( " .. Task.TargetSetUnit:GetUnitTypesText() .. " ) left to be destroyed." ) - if self.TargetSetUnit:Count() > 0 then + if Task.TargetSetUnit:Count() > 0 then self:__More( 1 ) else self:__NoMore( 1 ) diff --git a/Moose Development/Moose/Functional/Detection.lua b/Moose Development/Moose/Functional/Detection.lua index db7041540..25275bee3 100644 --- a/Moose Development/Moose/Functional/Detection.lua +++ b/Moose Development/Moose/Functional/Detection.lua @@ -302,7 +302,7 @@ do -- DETECTION_BASE -- @field Core.Zone#ZONE_UNIT Zone -- The Zone of the detected area. -- @field #boolean Changed Documents if the detected area has changes. -- @field #table Changes A list of the changes reported on the detected area. (It is up to the user of the detected area to consume those changes). - -- @field #number ItemID -- The identifier of the detected area. + -- @field #number ID -- The identifier of the detected area. -- @field #boolean FriendliesNearBy Indicates if there are friendlies within the detected area. -- @field Wrapper.Unit#UNIT NearestFAC The nearest FAC near the Area. @@ -1073,14 +1073,14 @@ do -- DETECTION_BASE function DETECTION_BASE:AddChangeItem( DetectedItem, ChangeCode, ItemUnitType ) DetectedItem.Changed = true - local ItemID = DetectedItem.ItemID + local ID = DetectedItem.ID DetectedItem.Changes = DetectedItem.Changes or {} DetectedItem.Changes[ChangeCode] = DetectedItem.Changes[ChangeCode] or {} - DetectedItem.Changes[ChangeCode].ItemID = ItemID + DetectedItem.Changes[ChangeCode].ID = ID DetectedItem.Changes[ChangeCode].ItemUnitType = ItemUnitType - self:T( { "Change on Detection Item:", DetectedItem.ItemID, ChangeCode, ItemUnitType } ) + self:T( { "Change on Detection Item:", DetectedItem.ID, ChangeCode, ItemUnitType } ) return self end @@ -1095,15 +1095,15 @@ do -- DETECTION_BASE function DETECTION_BASE:AddChangeUnit( DetectedItem, ChangeCode, ChangeUnitType ) DetectedItem.Changed = true - local ItemID = DetectedItem.ItemID + local ID = DetectedItem.ID DetectedItem.Changes = DetectedItem.Changes or {} DetectedItem.Changes[ChangeCode] = DetectedItem.Changes[ChangeCode] or {} DetectedItem.Changes[ChangeCode][ChangeUnitType] = DetectedItem.Changes[ChangeCode][ChangeUnitType] or 0 DetectedItem.Changes[ChangeCode][ChangeUnitType] = DetectedItem.Changes[ChangeCode][ChangeUnitType] + 1 - DetectedItem.Changes[ChangeCode].ItemID = ItemID + DetectedItem.Changes[ChangeCode].ID = ID - self:T( { "Change on Detection Item:", DetectedItem.ItemID, ChangeCode, ChangeUnitType } ) + self:T( { "Change on Detection Item:", DetectedItem.ID, ChangeCode, ChangeUnitType } ) return self end @@ -1628,7 +1628,7 @@ do -- DETECTION_UNITS if ChangeCode == "AU" then local MTUT = {} for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "ItemID" then + if ChangeUnitType ~= "ID" then MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType end end @@ -1638,7 +1638,7 @@ do -- DETECTION_UNITS if ChangeCode == "RU" then local MTUT = {} for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "ItemID" then + if ChangeUnitType ~= "ID" then MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType end end @@ -1915,7 +1915,7 @@ do -- DETECTION_TYPES if ChangeCode == "AU" then local MTUT = {} for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "ItemID" then + if ChangeUnitType ~= "ID" then MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType end end @@ -1925,7 +1925,7 @@ do -- DETECTION_TYPES if ChangeCode == "RU" then local MTUT = {} for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "ItemID" then + if ChangeUnitType ~= "ID" then MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType end end @@ -2376,39 +2376,39 @@ do -- DETECTION_AREAS for ChangeCode, ChangeData in pairs( DetectedItem.Changes ) do if ChangeCode == "AA" then - MT[#MT+1] = "Detected new area " .. ChangeData.ItemID .. ". The center target is a " .. ChangeData.ItemUnitType .. "." + MT[#MT+1] = "Detected new area " .. ChangeData.ID .. ". The center target is a " .. ChangeData.ItemUnitType .. "." end if ChangeCode == "RAU" then - MT[#MT+1] = "Changed area " .. ChangeData.ItemID .. ". Removed the center target." + MT[#MT+1] = "Changed area " .. ChangeData.ID .. ". Removed the center target." end if ChangeCode == "AAU" then - MT[#MT+1] = "Changed area " .. ChangeData.ItemID .. ". The new center target is a " .. ChangeData.ItemUnitType .. "." + MT[#MT+1] = "Changed area " .. ChangeData.ID .. ". The new center target is a " .. ChangeData.ItemUnitType .. "." end if ChangeCode == "RA" then - MT[#MT+1] = "Removed old area " .. ChangeData.ItemID .. ". No more targets in this area." + MT[#MT+1] = "Removed old area " .. ChangeData.ID .. ". No more targets in this area." end if ChangeCode == "AU" then local MTUT = {} for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "ItemID" then + if ChangeUnitType ~= "ID" then MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType end end - MT[#MT+1] = "Detected for area " .. ChangeData.ItemID .. " new target(s) " .. table.concat( MTUT, ", " ) .. "." + MT[#MT+1] = "Detected for area " .. ChangeData.ID .. " new target(s) " .. table.concat( MTUT, ", " ) .. "." end if ChangeCode == "RU" then local MTUT = {} for ChangeUnitType, ChangeUnitCount in pairs( ChangeData ) do - if ChangeUnitType ~= "ItemID" then + if ChangeUnitType ~= "ID" then MTUT[#MTUT+1] = ChangeUnitCount .. " of " .. ChangeUnitType end end - MT[#MT+1] = "Removed for area " .. ChangeData.ItemID .. " invisible or destroyed target(s) " .. table.concat( MTUT, ", " ) .. "." + MT[#MT+1] = "Removed for area " .. ChangeData.ID .. " invisible or destroyed target(s) " .. table.concat( MTUT, ", " ) .. "." end end @@ -2559,7 +2559,7 @@ do -- DETECTION_AREAS local DetectedItem = DetectedItemData -- #DETECTION_BASE.DetectedItem if DetectedItem then - self:T( "Detection Area #" .. DetectedItem.ItemID ) + self:T( "Detection Area #" .. DetectedItem.ID ) local DetectedSet = DetectedItem.Set if not self:IsDetectedObjectIdentified( DetectedObject ) and DetectedUnit:IsInZone( DetectedItem.Zone ) then self:IdentifyDetectedObject( DetectedObject ) @@ -2607,7 +2607,7 @@ do -- DETECTION_AREAS --- @param Wrapper.Unit#UNIT DetectedUnit function( DetectedUnit ) if DetectedUnit:IsAlive() then - --self:T( "Detected Set #" .. DetectedItem.ItemID .. ":" .. DetectedUnit:GetName() ) + --self:T( "Detected Set #" .. DetectedItem.ID .. ":" .. DetectedUnit:GetName() ) if DETECTION_AREAS._FlareDetectedUnits or self._FlareDetectedUnits then DetectedUnit:FlareGreen() end diff --git a/Moose Development/Moose/Tasking/Task_A2A.lua b/Moose Development/Moose/Tasking/Task_A2A.lua index 8586eb6cf..cbef9d502 100644 --- a/Moose Development/Moose/Tasking/Task_A2A.lua +++ b/Moose Development/Moose/Tasking/Task_A2A.lua @@ -75,7 +75,7 @@ do -- TASK_A2A Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "Engage", "Engaging" ) Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "HoldAtRendezVous", "HoldingAtRendezVous" ) - Fsm:AddProcess ( "Engaging", "Account", ACT_ACCOUNT_DEADS:New( self.TargetSetUnit, self.TaskType ), {} ) + Fsm:AddProcess ( "Engaging", "Account", ACT_ACCOUNT_DEADS:New(), {} ) Fsm:AddTransition( "Engaging", "RouteToTarget", "Engaging" ) Fsm:AddProcess( "Engaging", "RouteToTargetZone", ACT_ROUTE_ZONE:New(), {} ) Fsm:AddProcess( "Engaging", "RouteToTargetPoint", ACT_ROUTE_POINT:New(), {} ) diff --git a/Moose Development/Moose/Tasking/Task_A2G.lua b/Moose Development/Moose/Tasking/Task_A2G.lua index d7514b466..63dba40be 100644 --- a/Moose Development/Moose/Tasking/Task_A2G.lua +++ b/Moose Development/Moose/Tasking/Task_A2G.lua @@ -75,7 +75,7 @@ do -- TASK_A2G Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "Engage", "Engaging" ) Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "HoldAtRendezVous", "HoldingAtRendezVous" ) - Fsm:AddProcess ( "Engaging", "Account", ACT_ACCOUNT_DEADS:New( self.TargetSetUnit, self.TaskType ), {} ) + Fsm:AddProcess ( "Engaging", "Account", ACT_ACCOUNT_DEADS:New(), {} ) Fsm:AddTransition( "Engaging", "RouteToTarget", "Engaging" ) Fsm:AddProcess( "Engaging", "RouteToTargetZone", ACT_ROUTE_ZONE:New(), {} ) Fsm:AddProcess( "Engaging", "RouteToTargetPoint", ACT_ROUTE_POINT:New(), {} ) @@ -165,6 +165,15 @@ do -- TASK_A2G return self end + + --- @param #TASK_A2G self + -- @param Core.Set#SET_UNIT TargetSetUnit The set of targets. + function TASK_A2G:SetTargetSetUnit( TargetSetUnit ) + + self.TargetSetUnit = TargetSetUnit + end + + --- @param #TASK_A2G self function TASK_A2G:GetPlannedMenuText() @@ -319,17 +328,23 @@ do -- TASK_A2G_SEAD "Execute a Suppression of Enemy Air Defenses.\n" ) - local TargetCoordinate = TargetSetUnit:GetFirst():GetCoordinate() - self:SetInfo( "Coordinates", TargetCoordinate, 10 ) - - self:SetInfo( "Threat", "[" .. string.rep( "■", TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 ) - local DetectedItemsCount = TargetSetUnit:Count() - local DetectedItemsTypes = TargetSetUnit:GetTypeNames() - self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 ) - + self:UpdateTaskInfo() + return self end - + + function TASK_A2G_SEAD:UpdateTaskInfo() + + local TargetCoordinate = self.TargetSetUnit:GetFirst():GetCoordinate() + self:SetInfo( "Coordinates", TargetCoordinate, 10 ) + + self:SetInfo( "Threat", "[" .. string.rep( "■", self.TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 ) + local DetectedItemsCount = self.TargetSetUnit:Count() + local DetectedItemsTypes = self.TargetSetUnit:GetTypeNames() + self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 ) + + end + function TASK_A2G_SEAD:ReportOrder( ReportGroup ) local Coordinate = self.TaskInfo.Coordinates.TaskInfoText local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) @@ -440,16 +455,22 @@ do -- TASK_A2G_BAI "Execute a Battlefield Air Interdiction of a group of enemy targets.\n" ) - local TargetCoordinate = TargetSetUnit:GetFirst():GetCoordinate() + self:UpdateTaskInfo() + + return self + end + + function TASK_A2G_BAI:UpdateTaskInfo() + + local TargetCoordinate = self.TargetSetUnit:GetFirst():GetCoordinate() self:SetInfo( "Coordinates", TargetCoordinate, 10 ) - self:SetInfo( "Threat", "[" .. string.rep( "■", TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 ) - local DetectedItemsCount = TargetSetUnit:Count() - local DetectedItemsTypes = TargetSetUnit:GetTypeNames() + self:SetInfo( "Threat", "[" .. string.rep( "■", self.TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 ) + local DetectedItemsCount = self.TargetSetUnit:Count() + local DetectedItemsTypes = self.TargetSetUnit:GetTypeNames() self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 ) - return self - end + end function TASK_A2G_BAI:ReportOrder( ReportGroup ) @@ -562,16 +583,22 @@ do -- TASK_A2G_CAS "Beware of friendlies at the vicinity!\n" ) - local TargetCoordinate = TargetSetUnit:GetFirst():GetCoordinate() - self:SetInfo( "Coordinates", TargetCoordinate, 10 ) - - self:SetInfo( "Threat", "[" .. string.rep( "■", TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 ) - local DetectedItemsCount = TargetSetUnit:Count() - local DetectedItemsTypes = TargetSetUnit:GetTypeNames() - self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 ) - + self:UpdateTaskInfo() + return self end + + function TASK_A2G_CAS:UpdateTaskInfo() + + local TargetCoordinate = self.TargetSetUnit:GetFirst():GetCoordinate() + self:SetInfo( "Coordinates", TargetCoordinate, 10 ) + + self:SetInfo( "Threat", "[" .. string.rep( "■", self.TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 ) + local DetectedItemsCount = self.TargetSetUnit:Count() + local DetectedItemsTypes = self.TargetSetUnit:GetTypeNames() + self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 ) + + end function TASK_A2G_CAS:ReportOrder( ReportGroup ) local Coordinate = self.TaskInfo.Coordinates.TaskInfoText diff --git a/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua b/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua index 30cbe8f43..1aaf6d8d0 100644 --- a/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua +++ b/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua @@ -81,7 +81,7 @@ do -- TASK_A2G_DISPATCHER --- Creates a SEAD task when there are targets for it. -- @param #TASK_A2G_DISPATCHER self -- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem - -- @return Set#SET_UNIT TargetSetUnit: The target set of units. + -- @return Core.Set#SET_UNIT TargetSetUnit: The target set of units. -- @return #nil If there are no targets to be set. function TASK_A2G_DISPATCHER:EvaluateSEAD( DetectedItem ) self:F( { DetectedItem.ItemID } ) @@ -109,7 +109,8 @@ do -- TASK_A2G_DISPATCHER --- Creates a CAS task when there are targets for it. -- @param #TASK_A2G_DISPATCHER self -- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem - -- @return Tasking.Task#TASK + -- @return Core.Set#SET_UNIT TargetSetUnit: The target set of units. + -- @return #nil If there are no targets to be set. function TASK_A2G_DISPATCHER:EvaluateCAS( DetectedItem ) self:F( { DetectedItem.ItemID } ) @@ -137,7 +138,8 @@ do -- TASK_A2G_DISPATCHER --- Creates a BAI task when there are targets for it. -- @param #TASK_A2G_DISPATCHER self -- @param Functional.Detection#DETECTION_AREAS.DetectedItem DetectedItem - -- @return Tasking.Task#TASK + -- @return Core.Set#SET_UNIT TargetSetUnit: The target set of units. + -- @return #nil If there are no targets to be set. function TASK_A2G_DISPATCHER:EvaluateBAI( DetectedItem, FriendlyCoalition ) self:F( { DetectedItem.ItemID } ) @@ -230,7 +232,8 @@ do -- TASK_A2G_DISPATCHER local TaskIndex = DetectedItem.Index local DetectedItemChanged = DetectedItem.Changed - local Task = self.Tasks[TaskIndex] + local Task = self.Tasks[TaskIndex] -- Tasking.Task_A2G#TASK_A2A + Task = self:EvaluateRemoveTask( Mission, Task, TaskIndex, DetectedItemChanged ) -- Task will be removed if it is planned and changed. -- Evaluate SEAD @@ -266,7 +269,46 @@ do -- TASK_A2G_DISPATCHER else self:E("This should not happen") end - + else + -- If there is a Task and the task was assigned, then we check if the task was changed ... If it was, we need to reevaluate the targets. + if Task:IsStateAssigned() then + if DetectedItemChanged == true then -- The detection has changed, thus a new TargetSet is to be evaluated and set + local TargetsReport = REPORT:New() + if Task:IsInstanceOf( TASK_A2G_SEAD ) then + local TargetSetUnit = self:EvaluateSEAD( DetectedItem ) -- Returns a SetUnit if there are targets to be SEADed... + if TargetSetUnit then + Task:SetTargetSetUnit( TargetSetUnit ) + Task:UpdateTaskInfo() + TargetsReport:Add( Detection:GetChangeText( DetectedItem ) ) + end + else + if Task:IsInstanceOf( TASK_A2G_CAS ) then + local TargetSetUnit = self:EvaluateCAS( DetectedItem ) -- Returns a SetUnit if there are targets to be CASed... + if TargetSetUnit then + Task:SetTargetSetUnit( TargetSetUnit ) + Task:UpdateTaskInfo() + TargetsReport:Add( Detection:GetChangeText( DetectedItem ) ) + end + else + if Task:IsInstanceOf( TASK_A2G_BAI ) then + local TargetSetUnit = self:EvaluateBAI( DetectedItem ) -- Returns a SetUnit if there are targets to be BAIed... + if TargetSetUnit then + Task:SetTargetSetUnit( TargetSetUnit ) + Task:UpdateTaskInfo() + TargetsReport:Add( Detection:GetChangeText( DetectedItem ) ) + end + end + end + end + -- Now we send to each group the changes. + for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do + local TargetsText = TargetsReport:Text(", ") + if ( Mission:IsGroupAssigned(TaskGroup) ) and TargetsText ~= "" then + Mission:GetCommandCenter():MessageToGroup( string.format( "Task %s has change of targets:\n %s", Task:GetName(), TargetsText ), TaskGroup ) + end + end + end + end end @@ -278,7 +320,6 @@ do -- TASK_A2G_DISPATCHER Mission:GetCommandCenter():SetMenu() local TaskText = TaskReport:Text(", ") - for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do if ( not Mission:IsGroupAssigned(TaskGroup) ) and TaskText ~= "" then Mission:GetCommandCenter():MessageToGroup( string.format( "%s has tasks %s. Subscribe to a task using the radio menu.", Mission:GetName(), TaskText ), TaskGroup )