mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Updated embedded and escort
This commit is contained in:
parent
07ee6b189a
commit
42dea077c2
@ -6726,9 +6726,33 @@ function CLIENT:Alive( CallBack )
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Is Functions
|
||||||
|
|
||||||
|
--- Checks if the CLIENT is a multi-seated UNIT.
|
||||||
|
-- @param #CLIENT self
|
||||||
|
-- @return #boolean true if multi-seated.
|
||||||
|
function CLIENT:IsMultiSeated()
|
||||||
|
self:F( self.ClientName )
|
||||||
|
|
||||||
|
local ClientMultiSeatedTypes = {
|
||||||
|
["Mi-8MT"] = "Mi-8MT",
|
||||||
|
["UH-1H"] = "UH-1H",
|
||||||
|
["P-51B"] = "P-51B"
|
||||||
|
}
|
||||||
|
|
||||||
|
if self:IsAlive() then
|
||||||
|
local ClientTypeName = self:GetClientGroupUnit():GetTypeName()
|
||||||
|
if ClientMultiSeatedTypes[ClientTypeName] then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
--- Checks if client is alive and returns true or false.
|
--- Checks if client is alive and returns true or false.
|
||||||
-- @param #CLIENT self
|
-- @param #CLIENT self
|
||||||
-- @param #boolean Returns true if client is alive.
|
-- @returns #boolean Returns true if client is alive.
|
||||||
function CLIENT:IsAlive()
|
function CLIENT:IsAlive()
|
||||||
self:F( self.ClientName )
|
self:F( self.ClientName )
|
||||||
|
|
||||||
@ -7097,7 +7121,7 @@ function MESSAGE:New( MessageText, MessageCategory, MessageDuration, MessageID )
|
|||||||
|
|
||||||
-- When no messagecategory is given, we don't show it as a title...
|
-- When no messagecategory is given, we don't show it as a title...
|
||||||
if MessageCategory and MessageCategory ~= "" then
|
if MessageCategory and MessageCategory ~= "" then
|
||||||
self.MessageCategory = MessageCategory .. ":"
|
self.MessageCategory = MessageCategory .. ": "
|
||||||
else
|
else
|
||||||
self.MessageCategory = ""
|
self.MessageCategory = ""
|
||||||
end
|
end
|
||||||
@ -7409,9 +7433,9 @@ function STAGESTART:Execute( Mission, Client, Task )
|
|||||||
self:F()
|
self:F()
|
||||||
local Valid = BASE:Inherited(self):Execute( Mission, Client, Task )
|
local Valid = BASE:Inherited(self):Execute( Mission, Client, Task )
|
||||||
if Task.TaskBriefing then
|
if Task.TaskBriefing then
|
||||||
Client:Message( Task.TaskBriefing, 30, Mission.Name .. "/Stage", "Mission Command: Tasking" )
|
Client:Message( Task.TaskBriefing, 30, Mission.Name .. "/Stage", "Command" )
|
||||||
else
|
else
|
||||||
Client:Message( 'Task ' .. Task.TaskNumber .. '.', 30, Mission.Name .. "/Stage", "Mission Command: Tasking" )
|
Client:Message( 'Task ' .. Task.TaskNumber .. '.', 30, Mission.Name .. "/Stage", "Command" )
|
||||||
end
|
end
|
||||||
self.StageStartTime = timer.getTime()
|
self.StageStartTime = timer.getTime()
|
||||||
return Valid
|
return Valid
|
||||||
@ -7522,16 +7546,27 @@ function STAGEROUTE:New()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- Execute the routing.
|
||||||
|
-- @param #STAGEROUTE self
|
||||||
|
-- @param Mission#MISSION Mission
|
||||||
|
-- @param Client#CLIENT Client
|
||||||
|
-- @param Task#TASK Task
|
||||||
function STAGEROUTE:Execute( Mission, Client, Task )
|
function STAGEROUTE:Execute( Mission, Client, Task )
|
||||||
self:F()
|
self:F()
|
||||||
local Valid = BASE:Inherited(self):Execute( Mission, Client, Task )
|
local Valid = BASE:Inherited(self):Execute( Mission, Client, Task )
|
||||||
|
|
||||||
local RouteMessage = "Fly to "
|
local RouteMessage = "Fly to: "
|
||||||
self:T( Task.LandingZones )
|
self:T( Task.LandingZones )
|
||||||
for LandingZoneID, LandingZoneName in pairs( Task.LandingZones.LandingZoneNames ) do
|
for LandingZoneID, LandingZoneName in pairs( Task.LandingZones.LandingZoneNames ) do
|
||||||
RouteMessage = RouteMessage .. LandingZoneName .. ' at ' .. routines.getBRStringZone( { zone = LandingZoneName, ref = Client:GetClientGroupDCSUnit():getPoint(), true, true } ) .. ' km. '
|
RouteMessage = RouteMessage .. "\n " .. LandingZoneName .. ' at ' .. routines.getBRStringZone( { zone = LandingZoneName, ref = Client:GetClientGroupDCSUnit():getPoint(), true, true } ) .. ' km.'
|
||||||
end
|
end
|
||||||
Client:Message( RouteMessage, self.MSG.TIME, Mission.Name .. "/StageRoute", "Co-Pilot: Route", 20 )
|
|
||||||
|
if Client:IsMultiSeated() then
|
||||||
|
Client:Message( RouteMessage, self.MSG.TIME, Mission.Name .. "/StageRoute", "Co-Pilot", 20 )
|
||||||
|
else
|
||||||
|
Client:Message( RouteMessage, self.MSG.TIME, Mission.Name .. "/StageRoute", "Command", 20 )
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
if Mission.MissionReportFlash and Client:IsTransport() then
|
if Mission.MissionReportFlash and Client:IsTransport() then
|
||||||
Client:ShowCargo()
|
Client:ShowCargo()
|
||||||
@ -7581,10 +7616,19 @@ function STAGELANDING:New()
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Execute the landing coordination.
|
||||||
|
-- @param #STAGELANDING self
|
||||||
|
-- @param Mission#MISSION Mission
|
||||||
|
-- @param Client#CLIENT Client
|
||||||
|
-- @param Task#TASK Task
|
||||||
function STAGELANDING:Execute( Mission, Client, Task )
|
function STAGELANDING:Execute( Mission, Client, Task )
|
||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
Client:Message( "We have arrived at the landing zone.", self.MSG.TIME, Mission.Name .. "/StageArrived", "Co-Pilot: Arrived", 10 )
|
if Client:IsMultiSeated() then
|
||||||
|
Client:Message( "We have arrived at the landing zone.", self.MSG.TIME, Mission.Name .. "/StageArrived", "Co-Pilot", 10 )
|
||||||
|
else
|
||||||
|
Client:Message( "You have arrived at the landing zone.", self.MSG.TIME, Mission.Name .. "/StageArrived", "Command", 10 )
|
||||||
|
end
|
||||||
|
|
||||||
Task.HostUnit = Task.CurrentCargoZone:GetHostUnit()
|
Task.HostUnit = Task.CurrentCargoZone:GetHostUnit()
|
||||||
|
|
||||||
@ -7628,7 +7672,7 @@ function STAGELANDING:Execute( Mission, Client, Task )
|
|||||||
HostMessage = "Use the Radio menu and F6 to find the cargo, then fly or land near the cargo and " .. Task.TEXT[1] .. " " .. Task.CargoNames .. "."
|
HostMessage = "Use the Radio menu and F6 to find the cargo, then fly or land near the cargo and " .. Task.TEXT[1] .. " " .. Task.CargoNames .. "."
|
||||||
end
|
end
|
||||||
|
|
||||||
Client:Message( HostMessage, self.MSG.TIME, Mission.Name .. "/STAGELANDING.EXEC." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" .. ":", 10 )
|
Client:Message( HostMessage, self.MSG.TIME, Mission.Name .. "/STAGELANDING.EXEC." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")", 10 )
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -7687,8 +7731,8 @@ function STAGELANDED:Execute( Mission, Client, Task )
|
|||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
if Task.IsLandingRequired then
|
if Task.IsLandingRequired then
|
||||||
Client:Message( 'We have landed within the landing zone. Use the radio menu (F10) to ' .. Task.TEXT[1] .. ' the ' .. Task.CargoType .. '.',
|
Client:Message( 'You have landed within the landing zone. Use the radio menu (F10) to ' .. Task.TEXT[1] .. ' the ' .. Task.CargoType .. '.',
|
||||||
self.MSG.TIME, Mission.Name .. "/STAGELANDED.EXEC." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" .. ":" )
|
self.MSG.TIME, Mission.Name .. "/STAGELANDED.EXEC." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" )
|
||||||
if not self.MenusAdded then
|
if not self.MenusAdded then
|
||||||
Task.Cargo = nil
|
Task.Cargo = nil
|
||||||
Task:RemoveCargoMenus( Client )
|
Task:RemoveCargoMenus( Client )
|
||||||
@ -7738,10 +7782,21 @@ function STAGEUNLOAD:New()
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Coordinate UnLoading
|
||||||
|
-- @param #STAGEUNLOAD self
|
||||||
|
-- @param Mission#MISSION Mission
|
||||||
|
-- @param Client#CLIENT Client
|
||||||
|
-- @param Task#TASK Task
|
||||||
function STAGEUNLOAD:Execute( Mission, Client, Task )
|
function STAGEUNLOAD:Execute( Mission, Client, Task )
|
||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
|
if Client:IsMultiSeated() then
|
||||||
Client:Message( 'The ' .. Task.CargoType .. ' are being ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.',
|
Client:Message( 'The ' .. Task.CargoType .. ' are being ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.',
|
||||||
self.MSG.TIME, Mission.Name .. "/StageUnLoad", "Co-Pilot: Unload" )
|
self.MSG.TIME, Mission.Name .. "/StageUnLoad", "Co-Pilot" )
|
||||||
|
else
|
||||||
|
Client:Message( 'You are unloading the ' .. Task.CargoType .. ' ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.',
|
||||||
|
self.MSG.TIME, Mission.Name .. "/StageUnLoad", "Command" )
|
||||||
|
end
|
||||||
Task:RemoveCargoMenus( Client )
|
Task:RemoveCargoMenus( Client )
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -7765,6 +7820,11 @@ function STAGEUNLOAD:Executing( Mission, Client, Task )
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Validate UnLoading
|
||||||
|
-- @param #STAGEUNLOAD self
|
||||||
|
-- @param Mission#MISSION Mission
|
||||||
|
-- @param Client#CLIENT Client
|
||||||
|
-- @param Task#TASK Task
|
||||||
function STAGEUNLOAD:Validate( Mission, Client, Task )
|
function STAGEUNLOAD:Validate( Mission, Client, Task )
|
||||||
self:F()
|
self:F()
|
||||||
env.info( 'STAGEUNLOAD:Validate()' )
|
env.info( 'STAGEUNLOAD:Validate()' )
|
||||||
@ -7773,8 +7833,13 @@ function STAGEUNLOAD:Validate( Mission, Client, Task )
|
|||||||
else
|
else
|
||||||
Task.ExecuteStage = _TransportExecuteStage.FAILED
|
Task.ExecuteStage = _TransportExecuteStage.FAILED
|
||||||
Task:RemoveCargoMenus( Client )
|
Task:RemoveCargoMenus( Client )
|
||||||
|
if Client:IsMultiSeated() then
|
||||||
Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.',
|
Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.',
|
||||||
_TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Co-Pilot: Unload" )
|
_TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Co-Pilot" )
|
||||||
|
else
|
||||||
|
Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.',
|
||||||
|
_TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Command" )
|
||||||
|
end
|
||||||
return 1
|
return 1
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -7782,13 +7847,22 @@ function STAGEUNLOAD:Validate( Mission, Client, Task )
|
|||||||
else
|
else
|
||||||
Task.ExecuteStage = _TransportExecuteStage.FAILED
|
Task.ExecuteStage = _TransportExecuteStage.FAILED
|
||||||
Task:RemoveCargoMenus( Client )
|
Task:RemoveCargoMenus( Client )
|
||||||
|
if Client:IsMultiSeated() then
|
||||||
Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.',
|
Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.',
|
||||||
_TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Co-Pilot: Unload" )
|
_TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Co-Pilot" )
|
||||||
|
else
|
||||||
|
Client:Message( 'The ' .. Task.CargoType .. " haven't been successfully " .. Task.TEXT[3] .. ' within the landing zone. Task and mission has failed.',
|
||||||
|
_TransportStageMsgTime.DONE, Mission.Name .. "/StageFailure", "Command" )
|
||||||
|
end
|
||||||
return 1
|
return 1
|
||||||
end
|
end
|
||||||
|
|
||||||
if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then
|
if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then
|
||||||
Client:Message( 'The ' .. Task.CargoType .. ' have been sucessfully ' .. Task.TEXT[3] .. ' within the landing zone.', _TransportStageMsgTime.DONE, Mission.Name .. "/Stage", "Co-Pilot: Unload" )
|
if Client:IsMultiSeated() then
|
||||||
|
Client:Message( 'The ' .. Task.CargoType .. ' have been sucessfully ' .. Task.TEXT[3] .. ' within the landing zone.', _TransportStageMsgTime.DONE, Mission.Name .. "/Stage", "Co-Pilot" )
|
||||||
|
else
|
||||||
|
Client:Message( 'The ' .. Task.CargoType .. ' have been sucessfully ' .. Task.TEXT[3] .. ' within the landing zone.', _TransportStageMsgTime.DONE, Mission.Name .. "/Stage", "Command" )
|
||||||
|
end
|
||||||
Task:RemoveCargoMenus( Client )
|
Task:RemoveCargoMenus( Client )
|
||||||
Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.CargoName, 1 ) -- We set the cargo as one more goal completed in the mission.
|
Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.CargoName, 1 ) -- We set the cargo as one more goal completed in the mission.
|
||||||
return 1
|
return 1
|
||||||
@ -7815,7 +7889,7 @@ function STAGELOAD:Execute( Mission, Client, Task )
|
|||||||
|
|
||||||
if not Task.IsSlingLoad then
|
if not Task.IsSlingLoad then
|
||||||
Client:Message( 'The ' .. Task.CargoType .. ' are being ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.',
|
Client:Message( 'The ' .. Task.CargoType .. ' are being ' .. Task.TEXT[2] .. ' within the landing zone. Wait until the helicopter is ' .. Task.TEXT[3] .. '.',
|
||||||
_TransportStageMsgTime.EXECUTING, Mission.Name .. "/STAGELOAD.EXEC." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" .. ":" )
|
_TransportStageMsgTime.EXECUTING, Mission.Name .. "/STAGELOAD.EXEC." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" )
|
||||||
|
|
||||||
-- Route the cargo to the Carrier
|
-- Route the cargo to the Carrier
|
||||||
Task.Cargo:OnBoard( Client, Task.CurrentCargoZone, Task.OnBoardSide )
|
Task.Cargo:OnBoard( Client, Task.CurrentCargoZone, Task.OnBoardSide )
|
||||||
@ -7841,14 +7915,14 @@ function STAGELOAD:Executing( Mission, Client, Task )
|
|||||||
|
|
||||||
-- Message to the pilot that cargo has been loaded.
|
-- Message to the pilot that cargo has been loaded.
|
||||||
Client:Message( "The cargo " .. Task.Cargo.CargoName .. " has been loaded in our helicopter.",
|
Client:Message( "The cargo " .. Task.Cargo.CargoName .. " has been loaded in our helicopter.",
|
||||||
20, Mission.Name .. "/STAGELANDING.LOADING1." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" .. ":" )
|
20, Mission.Name .. "/STAGELANDING.LOADING1." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" )
|
||||||
Task.ExecuteStage = _TransportExecuteStage.SUCCESS
|
Task.ExecuteStage = _TransportExecuteStage.SUCCESS
|
||||||
|
|
||||||
Client:ShowCargo()
|
Client:ShowCargo()
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
Client:Message( "Hook the " .. Task.CargoNames .. " onto the helicopter " .. Task.TEXT[3] .. " within the landing zone.",
|
Client:Message( "Hook the " .. Task.CargoNames .. " onto the helicopter " .. Task.TEXT[3] .. " within the landing zone.",
|
||||||
_TransportStageMsgTime.EXECUTING, Mission.Name .. "/STAGELOAD.LOADING.1." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" .. ":", 10 )
|
_TransportStageMsgTime.EXECUTING, Mission.Name .. "/STAGELOAD.LOADING.1." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")", 10 )
|
||||||
for CargoID, Cargo in pairs( CARGOS ) do
|
for CargoID, Cargo in pairs( CARGOS ) do
|
||||||
self:T( "Cargo.CargoName = " .. Cargo.CargoName )
|
self:T( "Cargo.CargoName = " .. Cargo.CargoName )
|
||||||
|
|
||||||
@ -7864,7 +7938,7 @@ function STAGELOAD:Executing( Mission, Client, Task )
|
|||||||
Cargo:StatusLoaded()
|
Cargo:StatusLoaded()
|
||||||
Task.Cargo = Cargo
|
Task.Cargo = Cargo
|
||||||
Client:Message( 'The Cargo has been successfully hooked onto the helicopter and is now being sling loaded. Fly outside the landing zone.',
|
Client:Message( 'The Cargo has been successfully hooked onto the helicopter and is now being sling loaded. Fly outside the landing zone.',
|
||||||
self.MSG.TIME, Mission.Name .. "/STAGELANDING.LOADING.2." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" .. ":" )
|
self.MSG.TIME, Mission.Name .. "/STAGELANDING.LOADING.2." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" )
|
||||||
Task.ExecuteStage = _TransportExecuteStage.SUCCESS
|
Task.ExecuteStage = _TransportExecuteStage.SUCCESS
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
@ -7888,7 +7962,7 @@ function STAGELOAD:Validate( Mission, Client, Task )
|
|||||||
Task.ExecuteStage = _TransportExecuteStage.FAILED
|
Task.ExecuteStage = _TransportExecuteStage.FAILED
|
||||||
Task.CargoName = nil
|
Task.CargoName = nil
|
||||||
Client:Message( "The " .. Task.CargoType .. " loading has been aborted. You flew outside the pick-up zone while loading. ",
|
Client:Message( "The " .. Task.CargoType .. " loading has been aborted. You flew outside the pick-up zone while loading. ",
|
||||||
self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.1." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" .. ":" )
|
self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.1." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" )
|
||||||
return -1
|
return -1
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -7899,14 +7973,14 @@ function STAGELOAD:Validate( Mission, Client, Task )
|
|||||||
Task.ExecuteStage = _TransportExecuteStage.NONE
|
Task.ExecuteStage = _TransportExecuteStage.NONE
|
||||||
Task.CargoName = nil
|
Task.CargoName = nil
|
||||||
Client:Message( "The " .. Task.CargoType .. " loading has been aborted. Re-start the " .. Task.TEXT[3] .. " process. Don't fly outside the pick-up zone.",
|
Client:Message( "The " .. Task.CargoType .. " loading has been aborted. Re-start the " .. Task.TEXT[3] .. " process. Don't fly outside the pick-up zone.",
|
||||||
self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.2." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" .. ":" )
|
self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.2." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" )
|
||||||
return -1
|
return -1
|
||||||
end
|
end
|
||||||
|
|
||||||
if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then
|
if Task.ExecuteStage == _TransportExecuteStage.SUCCESS then
|
||||||
Task:RemoveCargoMenus( Client )
|
Task:RemoveCargoMenus( Client )
|
||||||
Client:Message( "Good Job. The " .. Task.CargoType .. " has been sucessfully " .. Task.TEXT[3] .. " within the landing zone.",
|
Client:Message( "Good Job. The " .. Task.CargoType .. " has been sucessfully " .. Task.TEXT[3] .. " within the landing zone.",
|
||||||
self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.3." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" .. ":" )
|
self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.3." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" )
|
||||||
Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.CargoName, 1 )
|
Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.CargoName, 1 )
|
||||||
return 1
|
return 1
|
||||||
end
|
end
|
||||||
@ -7916,7 +7990,7 @@ function STAGELOAD:Validate( Mission, Client, Task )
|
|||||||
CargoStatic = StaticObject.getByName( Task.Cargo.CargoStaticName )
|
CargoStatic = StaticObject.getByName( Task.Cargo.CargoStaticName )
|
||||||
if CargoStatic and not routines.IsStaticInZones( CargoStatic, Task.CurrentLandingZoneName ) then
|
if CargoStatic and not routines.IsStaticInZones( CargoStatic, Task.CurrentLandingZoneName ) then
|
||||||
Client:Message( "Good Job. The " .. Task.CargoType .. " has been sucessfully " .. Task.TEXT[3] .. " and flown outside of the landing zone.",
|
Client:Message( "Good Job. The " .. Task.CargoType .. " has been sucessfully " .. Task.TEXT[3] .. " and flown outside of the landing zone.",
|
||||||
self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.4." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" .. ":" )
|
self.MSG.TIME, Mission.Name .. "/STAGELANDING.VALIDATE.4." .. Task.HostUnitName, Task.HostUnitName .. " (" .. Task.HostUnitTypeName .. ")" )
|
||||||
Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.Cargo.CargoName, 1 )
|
Task.MissionTask:AddGoalCompletion( Task.MissionTask.GoalVerb, Task.Cargo.CargoName, 1 )
|
||||||
return 1
|
return 1
|
||||||
end
|
end
|
||||||
@ -7968,13 +8042,23 @@ function STAGEARRIVE:New()
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- Execute Arrival
|
||||||
|
-- @param #STAGEARRIVE self
|
||||||
|
-- @param Mission#MISSION Mission
|
||||||
|
-- @param Client#CLIENT Client
|
||||||
|
-- @param Task#TASK Task
|
||||||
function STAGEARRIVE:Execute( Mission, Client, Task )
|
function STAGEARRIVE:Execute( Mission, Client, Task )
|
||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
Client:Message( 'We have arrived at ' .. Task.CurrentLandingZoneName .. ".", self.MSG.TIME, Mission.Name .. "/Stage", "Co-Pilot: Arrived" )
|
if Client:IsMultiSeated() then
|
||||||
|
Client:Message( 'We have arrived at ' .. Task.CurrentLandingZoneName .. ".", self.MSG.TIME, Mission.Name .. "/Stage", "Co-Pilot" )
|
||||||
|
else
|
||||||
|
Client:Message( 'We have arrived at ' .. Task.CurrentLandingZoneName .. ".", self.MSG.TIME, Mission.Name .. "/Stage", "Command" )
|
||||||
end
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
function STAGEARRIVE:Validate( Mission, Client, Task )
|
function STAGEARRIVE:Validate( Mission, Client, Task )
|
||||||
self:F()
|
self:F()
|
||||||
|
|
||||||
@ -11682,6 +11766,64 @@ function SEAD:EventShot( event )
|
|||||||
end
|
end
|
||||||
--- Taking the lead of AI escorting your flight.
|
--- Taking the lead of AI escorting your flight.
|
||||||
-- The ESCORT class allows you to interact with escorting AI on your flight and take the lead.
|
-- The ESCORT class allows you to interact with escorting AI on your flight and take the lead.
|
||||||
|
-- Each escorting group can be commanded with a whole set of radio commands (radio menu in your flight, and then F10).
|
||||||
|
--
|
||||||
|
-- The radio commands will vary according the category of the group. The richest set of commands are with Helicopters and AirPlanes.
|
||||||
|
-- Ships and Ground troops will have a more limited set, but they can provide support through the bombing of targets designated by the other escorts.
|
||||||
|
--
|
||||||
|
-- Find a summary below of the current available commands:
|
||||||
|
--
|
||||||
|
-- **1. Navigation ...:** Escort group navigation functions:
|
||||||
|
--
|
||||||
|
-- * **"Hold Position and Stay Low":** Stops the escort group and they will hover 30 meters above the ground at the position they stopped.
|
||||||
|
-- * **"Join-Up and Hold Position NearBy":** The escort group will stop nearby you, and then the group will hover.
|
||||||
|
-- * **"Join-Up and Follow at 100":** The escort group fill follow you at about 100 meters, and they will follow you.
|
||||||
|
-- * **"Join-Up and Follow at 200":** The escort group fill follow you at about 200 meters, and they will follow you.
|
||||||
|
-- * **"Join-Up and Follow at 400":** The escort group fill follow you at about 400 meters, and they will follow you.
|
||||||
|
-- * **"Join-Up and Follow at 800":** The escort group fill follow you at about 800 meters, and they will follow you.
|
||||||
|
-- * **"Flare":** Provides menu commands to let the escort group shoot a flare in the air in a color.
|
||||||
|
-- * **"Smoke":** Provides menu commands to let the escort group smoke the air in a color. Note that smoking is only available for ground and naval troops.
|
||||||
|
--
|
||||||
|
-- **2. Report targets ...:** Report targets will make the escort group to report any target that it identifies within a 8km range. Any detected target can be attacked using the 4. Attack nearby targets function. (see below).
|
||||||
|
--
|
||||||
|
-- * **"Report now":** Will report the current detected targets.
|
||||||
|
-- * **"Report targets on":** Will make the escort group to report detected targets and will fill the "Attack nearby targets" menu list.
|
||||||
|
-- * **"Report targets off":** Will stop detecting targets.
|
||||||
|
--
|
||||||
|
-- **3. Scan targets ...:** Menu items to pop-up the escort group for target scanning. After scanning, the escort group will resume with the mission or defined task.
|
||||||
|
--
|
||||||
|
-- * **"Scan targets 30 seconds":** Scan 30 seconds for targets.
|
||||||
|
-- * **"Scan targets 60 seconds":** Scan 60 seconds for targets.
|
||||||
|
--
|
||||||
|
-- **4. Attack nearby targets ...:** This menu item will list all detected targets within an 8km range. Depending on the level of detection (known/unknown) and visuality, the targets type will also be listed.
|
||||||
|
--
|
||||||
|
-- **5. ROE ...:** Defines the Rules of Engagement of the escort group when in flight.
|
||||||
|
--
|
||||||
|
-- * **"Hold Fire":** The escort group will hold fire.
|
||||||
|
-- * **"Return Fire":** The escort group will return fire.
|
||||||
|
-- * **"Open Fire":** The escort group will open fire on designated targets.
|
||||||
|
-- * **"Weapon Free":** The escort group will engage with any target.
|
||||||
|
--
|
||||||
|
-- **6. Evasion ...:** Will define the evasion techniques that the escort group will perform during flight or combat.
|
||||||
|
--
|
||||||
|
-- * **"Fight until death":** The escort group will have no reaction to threats.
|
||||||
|
-- * **"Use flares, chaff and jammers":** The escort group will use passive defense using flares and jammers. No evasive manoeuvres are executed.
|
||||||
|
-- * **"Evade enemy fire":** The rescort group will evade enemy fire before firing.
|
||||||
|
-- * **"Go below radar and evade fire":** The escort group will perform evasive vertical manoeuvres.
|
||||||
|
--
|
||||||
|
-- **7. Resume Mission ...:** Escort groups can have their own mission. This menu item will allow the escort group to resume their Mission from a given waypoint. Note that this is really fantastic, as you now have the dynamic of taking control of the escort groups, and allowing them to resume their path or mission.
|
||||||
|
--
|
||||||
|
-- 1. ESCORT object construction methods.
|
||||||
|
-- --------------------------------------
|
||||||
|
-- Create a new SPAWN object with the @{#ESCORT.New} method:
|
||||||
|
--
|
||||||
|
-- * @{#ESCORT.New}: Creates a new ESCORT object from a @{Group#GROUP} for a @{Client#CLIENT}, with an optional briefing text.
|
||||||
|
--
|
||||||
|
-- 2. ESCORT object initialization methods.
|
||||||
|
-- ----------------------------------------
|
||||||
|
-- None.
|
||||||
|
--
|
||||||
|
--
|
||||||
-- @module Escort
|
-- @module Escort
|
||||||
-- @author FlightControl
|
-- @author FlightControl
|
||||||
|
|
||||||
@ -11753,12 +11895,14 @@ function ESCORT:New( EscortClient, EscortGroup, EscortName, EscortBriefing )
|
|||||||
self.EscortMenuFlareWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.White, ParamMessage = "Released a white flare!" } )
|
self.EscortMenuFlareWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.White, ParamMessage = "Released a white flare!" } )
|
||||||
self.EscortMenuFlareYellow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release yellow flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Yellow, ParamMessage = "Released a yellow flare!" } )
|
self.EscortMenuFlareYellow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release yellow flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Yellow, ParamMessage = "Released a yellow flare!" } )
|
||||||
|
|
||||||
|
if EscortGroup:IsGround() or EscortGroup:IsShip() then
|
||||||
self.EscortMenuSmoke = MENU_CLIENT:New( self.EscortClient, "Smoke", self.EscortMenuReportNavigation, ESCORT._Smoke, { ParamSelf = self } )
|
self.EscortMenuSmoke = MENU_CLIENT:New( self.EscortClient, "Smoke", self.EscortMenuReportNavigation, ESCORT._Smoke, { ParamSelf = self } )
|
||||||
self.EscortMenuSmokeGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Green, ParamMessage = "Releasing green smoke!" } )
|
self.EscortMenuSmokeGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Green, ParamMessage = "Releasing green smoke!" } )
|
||||||
self.EscortMenuSmokeRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Red, ParamMessage = "Releasing red smoke!" } )
|
self.EscortMenuSmokeRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Red, ParamMessage = "Releasing red smoke!" } )
|
||||||
self.EscortMenuSmokeWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.White, ParamMessage = "Releasing white smoke!" } )
|
self.EscortMenuSmokeWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.White, ParamMessage = "Releasing white smoke!" } )
|
||||||
self.EscortMenuSmokeOrange = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release orange smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Orange, ParamMessage = "Releasing orange smoke!" } )
|
self.EscortMenuSmokeOrange = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release orange smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Orange, ParamMessage = "Releasing orange smoke!" } )
|
||||||
self.EscortMenuSmokeBlue = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release blue smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Blue, ParamMessage = "Releasing blue smoke!" } )
|
self.EscortMenuSmokeBlue = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release blue smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Blue, ParamMessage = "Releasing blue smoke!" } )
|
||||||
|
end
|
||||||
|
|
||||||
if EscortGroup:IsHelicopter() or EscortGroup:IsAirPlane() or EscortGroup:IsGround() or EscortGroup:IsShip() then
|
if EscortGroup:IsHelicopter() or EscortGroup:IsAirPlane() or EscortGroup:IsGround() or EscortGroup:IsShip() then
|
||||||
-- Report Targets
|
-- Report Targets
|
||||||
@ -11771,8 +11915,8 @@ function ESCORT:New( EscortClient, EscortGroup, EscortName, EscortBriefing )
|
|||||||
if EscortGroup:IsHelicopter() then
|
if EscortGroup:IsHelicopter() then
|
||||||
-- Scanning Targets
|
-- Scanning Targets
|
||||||
self.EscortMenuScanForTargets = MENU_CLIENT:New( self.EscortClient, "Scan targets", self.EscortMenu )
|
self.EscortMenuScanForTargets = MENU_CLIENT:New( self.EscortClient, "Scan targets", self.EscortMenu )
|
||||||
self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Scan targets 30 seconds", self.EscortMenuScanForTargets, ESCORT._ScanTargets30Seconds, { ParamSelf = self, ParamScanDuration = 30 } )
|
self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Scan targets 30 seconds", self.EscortMenuScanForTargets, ESCORT._ScanTargets, { ParamSelf = self, ParamScanDuration = 30 } )
|
||||||
self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Scan targets 60 seconds", self.EscortMenuScanForTargets, ESCORT._ScanTargets60Seconds, { ParamSelf = self, ParamScanDuration = 60 } )
|
self.EscortMenuReportNearbyTargetsOn = MENU_CLIENT_COMMAND:New( self.EscortClient, "Scan targets 60 seconds", self.EscortMenuScanForTargets, ESCORT._ScanTargets, { ParamSelf = self, ParamScanDuration = 60 } )
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Attack Targets
|
-- Attack Targets
|
||||||
@ -11965,41 +12109,24 @@ function ESCORT._SwitchReportNearbyTargets( MenuParam )
|
|||||||
end
|
end
|
||||||
|
|
||||||
--- @param #MENUPARAM MenuParam
|
--- @param #MENUPARAM MenuParam
|
||||||
function ESCORT._ScanTargets30Seconds( MenuParam )
|
function ESCORT._ScanTargets( MenuParam )
|
||||||
MenuParam.ParamSelf:T()
|
|
||||||
|
|
||||||
local self = MenuParam.ParamSelf
|
local self = MenuParam.ParamSelf
|
||||||
local EscortGroup = self.EscortGroup
|
local EscortGroup = self.EscortGroup
|
||||||
local EscortClient = self.EscortClient
|
local EscortClient = self.EscortClient
|
||||||
|
|
||||||
|
local ScanDuration = MenuParam.ParamScanDuration
|
||||||
|
|
||||||
routines.removeFunction( self.FollowScheduler )
|
routines.removeFunction( self.FollowScheduler )
|
||||||
|
self.FollowScheduler = nil
|
||||||
|
|
||||||
EscortGroup:PushTask(
|
EscortGroup:PushTask(
|
||||||
EscortGroup:TaskControlled(
|
EscortGroup:TaskControlled(
|
||||||
EscortGroup:TaskOrbitCircle( 200, 20 ),
|
EscortGroup:TaskOrbitCircle( 200, 20 ),
|
||||||
EscortGroup:TaskCondition( nil, nil, nil, nil, 30, nil )
|
EscortGroup:TaskCondition( nil, nil, nil, nil, ScanDuration, nil )
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
EscortGroup:MessageToClient( "Scanning targets for 30 seconds.", 10, EscortClient )
|
EscortGroup:MessageToClient( "Scanning targets for " .. ScanDuration .. " seconds.", ScanDuration, EscortClient )
|
||||||
end
|
|
||||||
|
|
||||||
--- @param #MENUPARAM MenuParam
|
|
||||||
function ESCORT._ScanTargets60Seconds( MenuParam )
|
|
||||||
MenuParam.ParamSelf:T()
|
|
||||||
|
|
||||||
local self = MenuParam.ParamSelf
|
|
||||||
local EscortGroup = self.EscortGroup
|
|
||||||
local EscortClient = self.EscortClient
|
|
||||||
|
|
||||||
routines.removeFunction( self.FollowScheduler )
|
|
||||||
|
|
||||||
EscortGroup:PushTask(
|
|
||||||
EscortGroup:TaskControlled(
|
|
||||||
EscortGroup:TaskOrbitCircle( 200, 20 ),
|
|
||||||
EscortGroup:TaskCondition( nil, nil, nil, nil, 60, nil )
|
|
||||||
)
|
|
||||||
)
|
|
||||||
EscortGroup:MessageToClient( "Scanning targets for 60 seconds.", 10, EscortClient )
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--- @param #MENUPARAM MenuParam
|
--- @param #MENUPARAM MenuParam
|
||||||
|
|||||||
@ -1,5 +1,63 @@
|
|||||||
--- Taking the lead of AI escorting your flight.
|
--- Taking the lead of AI escorting your flight.
|
||||||
-- The ESCORT class allows you to interact with escorting AI on your flight and take the lead.
|
-- The ESCORT class allows you to interact with escorting AI on your flight and take the lead.
|
||||||
|
-- Each escorting group can be commanded with a whole set of radio commands (radio menu in your flight, and then F10).
|
||||||
|
--
|
||||||
|
-- The radio commands will vary according the category of the group. The richest set of commands are with Helicopters and AirPlanes.
|
||||||
|
-- Ships and Ground troops will have a more limited set, but they can provide support through the bombing of targets designated by the other escorts.
|
||||||
|
--
|
||||||
|
-- Find a summary below of the current available commands:
|
||||||
|
--
|
||||||
|
-- **1. Navigation ...:** Escort group navigation functions:
|
||||||
|
--
|
||||||
|
-- * **"Hold Position and Stay Low":** Stops the escort group and they will hover 30 meters above the ground at the position they stopped.
|
||||||
|
-- * **"Join-Up and Hold Position NearBy":** The escort group will stop nearby you, and then the group will hover.
|
||||||
|
-- * **"Join-Up and Follow at 100":** The escort group fill follow you at about 100 meters, and they will follow you.
|
||||||
|
-- * **"Join-Up and Follow at 200":** The escort group fill follow you at about 200 meters, and they will follow you.
|
||||||
|
-- * **"Join-Up and Follow at 400":** The escort group fill follow you at about 400 meters, and they will follow you.
|
||||||
|
-- * **"Join-Up and Follow at 800":** The escort group fill follow you at about 800 meters, and they will follow you.
|
||||||
|
-- * **"Flare":** Provides menu commands to let the escort group shoot a flare in the air in a color.
|
||||||
|
-- * **"Smoke":** Provides menu commands to let the escort group smoke the air in a color. Note that smoking is only available for ground and naval troops.
|
||||||
|
--
|
||||||
|
-- **2. Report targets ...:** Report targets will make the escort group to report any target that it identifies within a 8km range. Any detected target can be attacked using the 4. Attack nearby targets function. (see below).
|
||||||
|
--
|
||||||
|
-- * **"Report now":** Will report the current detected targets.
|
||||||
|
-- * **"Report targets on":** Will make the escort group to report detected targets and will fill the "Attack nearby targets" menu list.
|
||||||
|
-- * **"Report targets off":** Will stop detecting targets.
|
||||||
|
--
|
||||||
|
-- **3. Scan targets ...:** Menu items to pop-up the escort group for target scanning. After scanning, the escort group will resume with the mission or defined task.
|
||||||
|
--
|
||||||
|
-- * **"Scan targets 30 seconds":** Scan 30 seconds for targets.
|
||||||
|
-- * **"Scan targets 60 seconds":** Scan 60 seconds for targets.
|
||||||
|
--
|
||||||
|
-- **4. Attack nearby targets ...:** This menu item will list all detected targets within an 8km range. Depending on the level of detection (known/unknown) and visuality, the targets type will also be listed.
|
||||||
|
--
|
||||||
|
-- **5. ROE ...:** Defines the Rules of Engagement of the escort group when in flight.
|
||||||
|
--
|
||||||
|
-- * **"Hold Fire":** The escort group will hold fire.
|
||||||
|
-- * **"Return Fire":** The escort group will return fire.
|
||||||
|
-- * **"Open Fire":** The escort group will open fire on designated targets.
|
||||||
|
-- * **"Weapon Free":** The escort group will engage with any target.
|
||||||
|
--
|
||||||
|
-- **6. Evasion ...:** Will define the evasion techniques that the escort group will perform during flight or combat.
|
||||||
|
--
|
||||||
|
-- * **"Fight until death":** The escort group will have no reaction to threats.
|
||||||
|
-- * **"Use flares, chaff and jammers":** The escort group will use passive defense using flares and jammers. No evasive manoeuvres are executed.
|
||||||
|
-- * **"Evade enemy fire":** The rescort group will evade enemy fire before firing.
|
||||||
|
-- * **"Go below radar and evade fire":** The escort group will perform evasive vertical manoeuvres.
|
||||||
|
--
|
||||||
|
-- **7. Resume Mission ...:** Escort groups can have their own mission. This menu item will allow the escort group to resume their Mission from a given waypoint. Note that this is really fantastic, as you now have the dynamic of taking control of the escort groups, and allowing them to resume their path or mission.
|
||||||
|
--
|
||||||
|
-- 1. ESCORT object construction methods.
|
||||||
|
-- --------------------------------------
|
||||||
|
-- Create a new SPAWN object with the @{#ESCORT.New} method:
|
||||||
|
--
|
||||||
|
-- * @{#ESCORT.New}: Creates a new ESCORT object from a @{Group#GROUP} for a @{Client#CLIENT}, with an optional briefing text.
|
||||||
|
--
|
||||||
|
-- 2. ESCORT object initialization methods.
|
||||||
|
-- ----------------------------------------
|
||||||
|
-- None.
|
||||||
|
--
|
||||||
|
--
|
||||||
-- @module Escort
|
-- @module Escort
|
||||||
-- @author FlightControl
|
-- @author FlightControl
|
||||||
|
|
||||||
@ -71,12 +129,14 @@ function ESCORT:New( EscortClient, EscortGroup, EscortName, EscortBriefing )
|
|||||||
self.EscortMenuFlareWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.White, ParamMessage = "Released a white flare!" } )
|
self.EscortMenuFlareWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.White, ParamMessage = "Released a white flare!" } )
|
||||||
self.EscortMenuFlareYellow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release yellow flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Yellow, ParamMessage = "Released a yellow flare!" } )
|
self.EscortMenuFlareYellow = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release yellow flare", self.EscortMenuFlare, ESCORT._Flare, { ParamSelf = self, ParamColor = UNIT.FlareColor.Yellow, ParamMessage = "Released a yellow flare!" } )
|
||||||
|
|
||||||
|
if EscortGroup:IsGround() or EscortGroup:IsShip() then
|
||||||
self.EscortMenuSmoke = MENU_CLIENT:New( self.EscortClient, "Smoke", self.EscortMenuReportNavigation, ESCORT._Smoke, { ParamSelf = self } )
|
self.EscortMenuSmoke = MENU_CLIENT:New( self.EscortClient, "Smoke", self.EscortMenuReportNavigation, ESCORT._Smoke, { ParamSelf = self } )
|
||||||
self.EscortMenuSmokeGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Green, ParamMessage = "Releasing green smoke!" } )
|
self.EscortMenuSmokeGreen = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release green smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Green, ParamMessage = "Releasing green smoke!" } )
|
||||||
self.EscortMenuSmokeRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Red, ParamMessage = "Releasing red smoke!" } )
|
self.EscortMenuSmokeRed = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release red smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Red, ParamMessage = "Releasing red smoke!" } )
|
||||||
self.EscortMenuSmokeWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.White, ParamMessage = "Releasing white smoke!" } )
|
self.EscortMenuSmokeWhite = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release white smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.White, ParamMessage = "Releasing white smoke!" } )
|
||||||
self.EscortMenuSmokeOrange = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release orange smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Orange, ParamMessage = "Releasing orange smoke!" } )
|
self.EscortMenuSmokeOrange = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release orange smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Orange, ParamMessage = "Releasing orange smoke!" } )
|
||||||
self.EscortMenuSmokeBlue = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release blue smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Blue, ParamMessage = "Releasing blue smoke!" } )
|
self.EscortMenuSmokeBlue = MENU_CLIENT_COMMAND:New( self.EscortClient, "Release blue smoke", self.EscortMenuSmoke, ESCORT._Smoke, { ParamSelf = self, ParamColor = UNIT.SmokeColor.Blue, ParamMessage = "Releasing blue smoke!" } )
|
||||||
|
end
|
||||||
|
|
||||||
if EscortGroup:IsHelicopter() or EscortGroup:IsAirPlane() or EscortGroup:IsGround() or EscortGroup:IsShip() then
|
if EscortGroup:IsHelicopter() or EscortGroup:IsAirPlane() or EscortGroup:IsGround() or EscortGroup:IsShip() then
|
||||||
-- Report Targets
|
-- Report Targets
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user