mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2026-08-22 06:45:20 +00:00
#AUFTRAG/#OPS/#RESCUEHELO - make the NewRescueHelo AUFTRAG use Ops.Rescuehelo as basis. #2199
This commit is contained in:
@@ -2037,7 +2037,7 @@ function AUFTRAG:NewRESCUEHELO(Carrier)
|
|||||||
|
|
||||||
-- Mission options:
|
-- Mission options:
|
||||||
mission.missionTask=ENUMS.MissionTask.NOTHING
|
mission.missionTask=ENUMS.MissionTask.NOTHING
|
||||||
mission.missionFraction=0.5
|
mission.missionFraction=0.9
|
||||||
mission.optionROE=ENUMS.ROE.WeaponHold
|
mission.optionROE=ENUMS.ROE.WeaponHold
|
||||||
mission.optionROT=ENUMS.ROT.NoReaction
|
mission.optionROT=ENUMS.ROT.NoReaction
|
||||||
|
|
||||||
|
|||||||
@@ -4303,6 +4303,26 @@ function OPSGROUP:_UpdateTask(Task, Mission)
|
|||||||
|
|
||||||
if Task.dcstask.id==AUFTRAG.SpecialTask.FORMATION then
|
if Task.dcstask.id==AUFTRAG.SpecialTask.FORMATION then
|
||||||
|
|
||||||
|
if Mission.type == AUFTRAG.Type.RESCUEHELO then
|
||||||
|
self:T("**********")
|
||||||
|
self:T("** RESCUEHELO USED")
|
||||||
|
self:T("**********")
|
||||||
|
local param=Task.dcstask.params
|
||||||
|
local followUnit=UNIT:FindByName(param.unitname)
|
||||||
|
local helogroupname = self:GetGroup():GetName()
|
||||||
|
Task.formation = RESCUEHELO:New(followUnit,helogroupname)
|
||||||
|
Task.formation:SetRespawnOnOff(false)
|
||||||
|
Task.formation.respawninair=false
|
||||||
|
Task.formation:SetTakeoffCold()
|
||||||
|
Task.formation:SetHomeBase(followUnit)
|
||||||
|
Task.formation.helo = self:GetGroup()
|
||||||
|
-- Start formation FSM.
|
||||||
|
Task.formation:Start()
|
||||||
|
if self:IsFlightgroup() then
|
||||||
|
self:SetDespawnAfterLanding()
|
||||||
|
end
|
||||||
|
else
|
||||||
|
|
||||||
-- Set of group(s) to follow Mother.
|
-- Set of group(s) to follow Mother.
|
||||||
local followSet=SET_GROUP:New():AddGroup(self.group)
|
local followSet=SET_GROUP:New():AddGroup(self.group)
|
||||||
|
|
||||||
@@ -4320,11 +4340,13 @@ function OPSGROUP:_UpdateTask(Task, Mission)
|
|||||||
Task.formation:SetFollowTimeInterval(param.dtFollow)
|
Task.formation:SetFollowTimeInterval(param.dtFollow)
|
||||||
|
|
||||||
-- Formation mode.
|
-- Formation mode.
|
||||||
Task.formation:SetFlightModeFormation(self.group)
|
--Task.formation:SetFlightModeFormation(self.group)
|
||||||
|
|
||||||
-- Start formation FSM.
|
-- Start formation FSM.
|
||||||
Task.formation:Start()
|
Task.formation:Start()
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
elseif Task.dcstask.id==AUFTRAG.SpecialTask.PATROLZONE then
|
elseif Task.dcstask.id==AUFTRAG.SpecialTask.PATROLZONE then
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -8021,12 +8043,15 @@ function OPSGROUP:onafterDead(From, Event, To)
|
|||||||
local asset=self.legion:GetAssetByName(self.groupname)
|
local asset=self.legion:GetAssetByName(self.groupname)
|
||||||
|
|
||||||
if asset then
|
if asset then
|
||||||
-- Get request.
|
|
||||||
local request=self.legion:GetRequestByID(asset.rid)
|
|
||||||
|
|
||||||
-- Trigger asset dead event.
|
-- Get request.
|
||||||
self.legion:AssetDead(asset, request)
|
local request=self.legion:GetRequestByID(asset.rid)
|
||||||
|
|
||||||
|
-- Trigger asset dead event.
|
||||||
|
self.legion:AssetDead(asset, request)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Stop in 5 sec to give possible respawn attempts a chance.
|
-- Stop in 5 sec to give possible respawn attempts a chance.
|
||||||
@@ -12719,7 +12744,7 @@ end
|
|||||||
-- @return #OPSGROUP self
|
-- @return #OPSGROUP self
|
||||||
function OPSGROUP:SetDefaultCallsign(CallsignName, CallsignNumber)
|
function OPSGROUP:SetDefaultCallsign(CallsignName, CallsignNumber)
|
||||||
|
|
||||||
self:T(self.lid..string.format("Setting Default callsing %s-%s", tostring(CallsignName), tostring(CallsignNumber)))
|
self:T(self.lid..string.format("Setting Default callsign %s-%s", tostring(CallsignName), tostring(CallsignNumber)))
|
||||||
|
|
||||||
self.callsignDefault={} --#OPSGROUP.Callsign
|
self.callsignDefault={} --#OPSGROUP.Callsign
|
||||||
self.callsignDefault.NumberSquad=CallsignName
|
self.callsignDefault.NumberSquad=CallsignName
|
||||||
@@ -13478,8 +13503,8 @@ function OPSGROUP:GetAmmoUnit(unit, display)
|
|||||||
if ammotable then
|
if ammotable then
|
||||||
local weapons=#ammotable
|
local weapons=#ammotable
|
||||||
|
|
||||||
--self:I(ammotable)
|
--self:I(ammotable)
|
||||||
--UTILS.PrintTableToLog(ammotable)
|
--UTILS.PrintTableToLog(ammotable)
|
||||||
|
|
||||||
-- Loop over all weapons.
|
-- Loop over all weapons.
|
||||||
for w=1,weapons do
|
for w=1,weapons do
|
||||||
@@ -13487,9 +13512,9 @@ function OPSGROUP:GetAmmoUnit(unit, display)
|
|||||||
-- Number of current weapon.
|
-- Number of current weapon.
|
||||||
local Nammo=ammotable[w]["count"]
|
local Nammo=ammotable[w]["count"]
|
||||||
|
|
||||||
-- Range in meters. Seems only to exist for missiles (not shells).
|
-- Range in meters. Seems only to exist for missiles (not shells).
|
||||||
local rmin=ammotable[w]["desc"]["rangeMin"] or 0
|
local rmin=ammotable[w]["desc"]["rangeMin"] or 0
|
||||||
local rmax=ammotable[w]["desc"]["rangeMaxAltMin"] or 0
|
local rmax=ammotable[w]["desc"]["rangeMaxAltMin"] or 0
|
||||||
|
|
||||||
-- Type name of current weapon.
|
-- Type name of current weapon.
|
||||||
local Tammo=ammotable[w]["desc"]["typeName"]
|
local Tammo=ammotable[w]["desc"]["typeName"]
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ _RESCUEHELOID=0
|
|||||||
|
|
||||||
--- Class version.
|
--- Class version.
|
||||||
-- @field #string version
|
-- @field #string version
|
||||||
RESCUEHELO.version="1.1.0"
|
RESCUEHELO.version="1.2.0"
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- TODO list
|
-- TODO list
|
||||||
@@ -247,6 +247,7 @@ RESCUEHELO.version="1.1.0"
|
|||||||
-- DONE: Possibility to add already present/spawned aircraft, e.g. for warehouse.
|
-- DONE: Possibility to add already present/spawned aircraft, e.g. for warehouse.
|
||||||
-- DONE: Add rescue event when aircraft crashes.
|
-- DONE: Add rescue event when aircraft crashes.
|
||||||
-- DONE: Make offset input parameter.
|
-- DONE: Make offset input parameter.
|
||||||
|
-- DONE: Make useable for AUFTRAG
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- Constructor
|
-- Constructor
|
||||||
@@ -337,6 +338,9 @@ function RESCUEHELO:New(carrierunit, helogroupname)
|
|||||||
self:AddTransition("*", "Stop", "Stopped")
|
self:AddTransition("*", "Stop", "Stopped")
|
||||||
|
|
||||||
|
|
||||||
|
self:I(self.lid.."Started.")
|
||||||
|
|
||||||
|
|
||||||
--- Triggers the FSM event "Start" that starts the rescue helo. Initializes parameters and starts event handlers.
|
--- Triggers the FSM event "Start" that starts the rescue helo. Initializes parameters and starts event handlers.
|
||||||
-- @function [parent=#RESCUEHELO] Start
|
-- @function [parent=#RESCUEHELO] Start
|
||||||
-- @param #RESCUEHELO self
|
-- @param #RESCUEHELO self
|
||||||
@@ -871,14 +875,24 @@ function RESCUEHELO:onafterStart(From, Event, To)
|
|||||||
-- Delay before formation is started.
|
-- Delay before formation is started.
|
||||||
local delay=120
|
local delay=120
|
||||||
|
|
||||||
-- Spawn helo. We need to introduce an alias in case this class is used twice. This would confuse the spawn routine.
|
local UsesAliveGroup=false
|
||||||
local Spawn=SPAWN:NewWithAlias(self.helogroupname, self.alias)
|
local Spawn = GROUP:FindByName(self.helogroupname)
|
||||||
|
if Spawn and Spawn:IsAlive() then
|
||||||
|
self.helo=Spawn
|
||||||
|
UsesAliveGroup = true
|
||||||
|
delay = 1
|
||||||
|
else
|
||||||
|
|
||||||
-- Set modex for spawn.
|
-- Spawn helo. We need to introduce an alias in case this class is used twice. This would confuse the spawn routine.
|
||||||
Spawn:InitModex(self.modex)
|
local Spawn=SPAWN:NewWithAlias(self.helogroupname, self.alias)
|
||||||
|
|
||||||
|
-- Set modex for spawn.
|
||||||
|
Spawn:InitModex(self.modex)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
-- Spawn in air or at airbase.
|
-- Spawn in air or at airbase.
|
||||||
if self.takeoff==SPAWN.Takeoff.Air then
|
if UsesAliveGroup==false and self.takeoff==SPAWN.Takeoff.Air then
|
||||||
|
|
||||||
-- Carrier heading
|
-- Carrier heading
|
||||||
local hdg=self.carrier:GetHeading()
|
local hdg=self.carrier:GetHeading()
|
||||||
@@ -898,7 +912,7 @@ function RESCUEHELO:onafterStart(From, Event, To)
|
|||||||
-- Start formation in 1 seconds
|
-- Start formation in 1 seconds
|
||||||
delay=1
|
delay=1
|
||||||
|
|
||||||
else
|
elseif UsesAliveGroup==false and self.uncontrolledac then
|
||||||
|
|
||||||
-- Check if an uncontrolled helo group was requested.
|
-- Check if an uncontrolled helo group was requested.
|
||||||
if self.uncontrolledac then
|
if self.uncontrolledac then
|
||||||
@@ -920,7 +934,7 @@ function RESCUEHELO:onafterStart(From, Event, To)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
else
|
elseif UsesAliveGroup==false then
|
||||||
|
|
||||||
-- Spawn at airbase.
|
-- Spawn at airbase.
|
||||||
self.helo=Spawn:SpawnAtAirbase(self.airbase, self.takeoff, nil, AIRBASE.TerminalType.HelicopterUsable)
|
self.helo=Spawn:SpawnAtAirbase(self.airbase, self.takeoff, nil, AIRBASE.TerminalType.HelicopterUsable)
|
||||||
|
|||||||
Reference in New Issue
Block a user