This commit is contained in:
Frank
2020-03-23 00:27:16 +01:00
parent 1ae2171885
commit e1d09bdd8b
4 changed files with 144 additions and 119 deletions
+128 -117
View File
@@ -37,9 +37,6 @@
-- @field #number orbitLeg Length of orbit leg in meters. -- @field #number orbitLeg Length of orbit leg in meters.
-- --
-- @field #AUFTRAG.TargetData engageTarget Target data to engage. -- @field #AUFTRAG.TargetData engageTarget Target data to engage.
-- @field Core.Point#COORDINATE engageCoord Coordinate of target location.
-- @field Core.Set#SET_GROUP engageTargetGroupset Set of target groups to attack.
-- @field Core.Set#SET_UNIT engageTargetUnitset Set of target units to attack.
-- --
-- @field Core.Zone#ZONE_RADIUS engageZone *Circular* engagement zone. -- @field Core.Zone#ZONE_RADIUS engageZone *Circular* engagement zone.
-- @field #table engageTargetTypes Table of target types that are engaged in the engagement zone. -- @field #table engageTargetTypes Table of target types that are engaged in the engagement zone.
@@ -220,7 +217,7 @@ AUFTRAG.TargetType={
--- ---
-- @type AUFTRAG.TargetData -- @type AUFTRAG.TargetData
-- @field Wrapper.Positionable#POSITIONABLE Target Target Object. -- @field Wrapper.Positionable#POSITIONABLE Target Target Object.
-- @field #string Type Target type: "Group", "Unit", "Static", "Vec2" -- @field #string Type Target type: "Group", "Unit", "Static", "Coordinate"
--- Mission success. --- Mission success.
-- @type AUFTRAG.Success -- @type AUFTRAG.Success
@@ -239,13 +236,13 @@ AUFTRAG.TargetType={
--- AUFTRAG class version. --- AUFTRAG class version.
-- @field #string version -- @field #string version
AUFTRAG.version="0.0.7" AUFTRAG.version="0.0.9"
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- TODO list -- TODO list
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- TODO: Mission ROE and ROT -- DONE: Mission ROE and ROT.
-- TODO: Mission formation, etc. -- TODO: Mission formation, etc.
-- DONE: FSM events. -- DONE: FSM events.
-- TODO: F10 marker functions that are updated on Status event. -- TODO: F10 marker functions that are updated on Status event.
@@ -275,7 +272,7 @@ function AUFTRAG:New(Type)
self.auftragsnummer=_AUFTRAGSNR self.auftragsnummer=_AUFTRAGSNR
-- Log id. -- Log id.
self.lid=string.format("Auftrag #%d %s | ", self.auftragsnummer, tostring(self.type)) self:_SetLogID()
-- State is planned. -- State is planned.
self.status=AUFTRAG.Status.PLANNED self.status=AUFTRAG.Status.PLANNED
@@ -284,6 +281,7 @@ function AUFTRAG:New(Type)
self:SetName() self:SetName()
self:SetPriority() self:SetPriority()
self:SetMissionTime() self:SetMissionTime()
self.engageAsGroup=true
self.missionRepeated=0 self.missionRepeated=0
self.missionRepeatMax=0 self.missionRepeatMax=0
@@ -334,22 +332,18 @@ end
--- Create an ANTI-SHIP mission. --- Create an ANTI-SHIP mission.
-- @param #AUFTRAG self -- @param #AUFTRAG self
-- @param Core.Set#SET_UNIT TargetUnitSet The set of target units. -- @param Wrapper.Positionable#POSITIONABLE Target The target to attack. Can be passed as a @{Wrapper.Group#GROUP} or @{Wrapper.Unit#UNIT} object.
-- @return #AUFTRAG self -- @return #AUFTRAG self
function AUFTRAG:NewANTISHIP(TargetUnitSet) function AUFTRAG:NewANTISHIP(Target)
if TargetUnitSet:IsInstanceOf("UNIT") then
TargetUnitSet=SET_UNIT:New():AddUnit(TargetUnitSet)
end
local mission=AUFTRAG:New(AUFTRAG.Type.ANTISHIP) local mission=AUFTRAG:New(AUFTRAG.Type.ANTISHIP)
mission.engageTargetUnitset=TargetUnitSet mission.engageTarget=mission:_TargetFromObject(Target)
mission.engageTargetUnitset:FilterDeads():FilterCrashes()
mission.missionTask=ENUMS.MissionTask.ANTISHIPSTRIKE mission.missionTask=ENUMS.MissionTask.ANTISHIPSTRIKE
mission.missionFraction=0.5
mission.optionROE=ENUMS.ROE.OpenFire mission.optionROE=ENUMS.ROE.OpenFire
mission.optionROT=ENUMS.ROT.EvadeFire
mission.DCStask=mission:GetDCSMissionTask() mission.DCStask=mission:GetDCSMissionTask()
@@ -403,6 +397,8 @@ function AUFTRAG:NewPATROL(OrbitCoordinate, OrbitSpeed, Heading, Leg, Altitude)
-- Mission type PATROL. -- Mission type PATROL.
mission.type=AUFTRAG.Type.PATROL mission.type=AUFTRAG.Type.PATROL
mission:_SetLogID()
mission.missionTask=ENUMS.MissionTask.INTERCEPT mission.missionTask=ENUMS.MissionTask.INTERCEPT
mission.optionROT=ENUMS.ROT.PassiveDefense mission.optionROT=ENUMS.ROT.PassiveDefense
@@ -426,6 +422,8 @@ function AUFTRAG:NewTANKER(OrbitCoordinate, OrbitSpeed, Heading, Leg, Altitude,
-- Mission type PATROL. -- Mission type PATROL.
mission.type=AUFTRAG.Type.TANKER mission.type=AUFTRAG.Type.TANKER
mission:_SetLogID()
mission.refuelSystem=RefuelSystem mission.refuelSystem=RefuelSystem
mission.missionTask=ENUMS.MissionTask.REFUELING mission.missionTask=ENUMS.MissionTask.REFUELING
@@ -453,6 +451,8 @@ function AUFTRAG:NewAWACS(OrbitCoordinate, OrbitSpeed, Heading, Leg, Altitude)
-- Mission type PATROL. -- Mission type PATROL.
mission.type=AUFTRAG.Type.AWACS mission.type=AUFTRAG.Type.AWACS
mission:_SetLogID()
mission.missionTask=ENUMS.MissionTask.AWACS mission.missionTask=ENUMS.MissionTask.AWACS
mission.optionROE=ENUMS.ROE.WeaponHold mission.optionROE=ENUMS.ROE.WeaponHold
mission.optionROT=ENUMS.ROT.PassiveDefense mission.optionROT=ENUMS.ROT.PassiveDefense
@@ -472,7 +472,7 @@ function AUFTRAG:NewINTERCEPT(Target)
local mission=AUFTRAG:New(AUFTRAG.Type.INTERCEPT) local mission=AUFTRAG:New(AUFTRAG.Type.INTERCEPT)
mission.engageTarget=self:_TargetFromObject(Target) mission.engageTarget=mission:_TargetFromObject(Target)
mission.missionTask=ENUMS.MissionTask.INTERCEPT mission.missionTask=ENUMS.MissionTask.INTERCEPT
mission.missionFraction=0.1 mission.missionFraction=0.1
@@ -509,6 +509,8 @@ function AUFTRAG:NewCAP(OrbitCoordinate, OrbitSpeed, Heading, Leg, ZoneCAP, Targ
mission.type=AUFTRAG.Type.CAP mission.type=AUFTRAG.Type.CAP
mission.engageZone=ZoneCAP or ZONE_RADIUS:New("CAP Zone", OrbitCoordinate:GetVec2(), mission.orbitLeg) mission.engageZone=ZoneCAP or ZONE_RADIUS:New("CAP Zone", OrbitCoordinate:GetVec2(), mission.orbitLeg)
mission.engageTargetTypes=TargetTypes or {"Air"} mission.engageTargetTypes=TargetTypes or {"Air"}
mission:_SetLogID()
mission.missionTask=ENUMS.MissionTask.CAP mission.missionTask=ENUMS.MissionTask.CAP
mission.optionROE=ENUMS.ROE.WeaponFree mission.optionROE=ENUMS.ROE.WeaponFree
@@ -544,6 +546,8 @@ function AUFTRAG:NewCAS(OrbitCoordinate, OrbitSpeed, Heading, Leg, ZoneCAS, Targ
mission.type=AUFTRAG.Type.CAS mission.type=AUFTRAG.Type.CAS
mission.engageZone=ZoneCAS or ZONE_RADIUS:New("CAS Zone", OrbitCoordinate:GetVec2(), Leg) mission.engageZone=ZoneCAS or ZONE_RADIUS:New("CAS Zone", OrbitCoordinate:GetVec2(), Leg)
mission.engageTargetTypes=TargetTypes or {"Helicopters", "Ground Units", "Light armed ships"} mission.engageTargetTypes=TargetTypes or {"Helicopters", "Ground Units", "Light armed ships"}
mission:_SetLogID()
mission.missionTask=ENUMS.MissionTask.CAS mission.missionTask=ENUMS.MissionTask.CAS
mission.optionROE=ENUMS.ROE.WeaponFree mission.optionROE=ENUMS.ROE.WeaponFree
@@ -564,12 +568,8 @@ function AUFTRAG:NewBAI(Target)
local mission=AUFTRAG:New(AUFTRAG.Type.BAI) local mission=AUFTRAG:New(AUFTRAG.Type.BAI)
mission.engageTarget=self:_TargetFromObject(Target) mission.engageTarget=mission:_TargetFromObject(Target)
mission.engageWeaponType=ENUMS.WeaponFlag.AnyAG
--mission.engageTargetUnitset=TargetGroupSet
--mission.engageTargetUnitset:FilterDeads()
mission.engageWeaponType=ENUMS.WeaponFlag.AnyAG --2956984318
mission.engageWeaponExpend=AI.Task.WeaponExpend.ALL mission.engageWeaponExpend=AI.Task.WeaponExpend.ALL
mission.engageAsGroup=true mission.engageAsGroup=true
@@ -586,16 +586,16 @@ end
--- Create a STRIKE mission. Flight will attack the closest map object to the specified coordinate. --- Create a STRIKE mission. Flight will attack the closest map object to the specified coordinate.
-- @param #AUFTRAG self -- @param #AUFTRAG self
-- @param Core.Point#COORDINATE TargetCoordinate Target coordinate. -- @param Core.Point#COORDINATE Target The target coordinate. Can also be given as a GROUP, UNIT or STATIC object.
-- @param #number Altitude Engage altitude in feet. Default 1000 ft. -- @param #number Altitude Engage altitude in feet. Default 1000 ft.
-- @return #AUFTRAG self -- @return #AUFTRAG self
function AUFTRAG:NewSTRIKE(TargetCoordinate, Altitude) function AUFTRAG:NewSTRIKE(Target, Altitude)
local mission=AUFTRAG:New(AUFTRAG.Type.STRIKE) local mission=AUFTRAG:New(AUFTRAG.Type.STRIKE)
mission.engageCoord=TargetCoordinate mission.engageTarget=mission:_TargetFromObject(Target)
mission.engageAltitude=UTILS.FeetToMeters(Altitude or 1000) mission.engageAltitude=UTILS.FeetToMeters(Altitude or 1000)
mission.engageWeaponType=ENUMS.WeaponFlag.AnyAG --2956984318 mission.engageWeaponType=ENUMS.WeaponFlag.AnyAG
mission.engageWeaponExpend=AI.Task.WeaponExpend.ALL mission.engageWeaponExpend=AI.Task.WeaponExpend.ALL
mission.missionTask=ENUMS.MissionTask.GROUNDATTACK mission.missionTask=ENUMS.MissionTask.GROUNDATTACK
@@ -609,25 +609,57 @@ function AUFTRAG:NewSTRIKE(TargetCoordinate, Altitude)
return mission return mission
end end
--- Create a BOMBING mission. Flight will attack a specified coordinate. --- Create a BOMBING mission. Flight will drop bombs a specified coordinate.
-- @param #AUFTRAG self -- @param #AUFTRAG self
-- @param Core.Point#COORDINATE TargetCoordinate Target coordinate. -- @param Core.Point#COORDINATE TargetCoordinate Target coordinate. Can also be specified as a GROUP, UNIT or STATIC object.
-- @param #number Altitude Engage altitude in feet. Default 25000. -- @param #number Altitude Engage altitude in feet. Default 25000 ft.
-- @return #AUFTRAG self -- @return #AUFTRAG self
function AUFTRAG:NewBOMBING(TargetCoordinate, Altitude) function AUFTRAG:NewBOMBING(Target, Altitude)
local mission=AUFTRAG:New(AUFTRAG.Type.BOMBING) local mission=AUFTRAG:New(AUFTRAG.Type.BOMBING)
-- DCS task options: -- DCS task options:
mission.engageCoord=TargetCoordinate mission.engageTarget=mission:_TargetFromObject(Target)
mission.engageAltitude=UTILS.FeetToMeters(Altitude or 25000) mission.engageAltitude=UTILS.FeetToMeters(Altitude or 25000)
mission.engageWeaponType=4030478 --2956984318 --ENUMS.WeaponFlag.AnyBomb mission.engageWeaponType=ENUMS.WeaponFlag.AnyBomb
mission.engageWeaponExpend=AI.Task.WeaponExpend.ALL mission.engageWeaponExpend=AI.Task.WeaponExpend.ALL
-- Mission options: -- Mission options:
mission.missionTask=ENUMS.MissionTask.GROUNDATTACK mission.missionTask=ENUMS.MissionTask.GROUNDATTACK
mission.missionAltitude=mission.engageAltitude*0.8 mission.missionAltitude=mission.engageAltitude*0.8
mission.missionFraction=0.3 mission.missionFraction=0.5
mission.optionROE=ENUMS.ROE.OpenFire
mission.optionROT=ENUMS.ROT.PassiveDefense
-- Get DCS task.
mission.DCStask=mission:GetDCSMissionTask()
return mission
end
--- Create a BOMBRUNWAY mission.
-- @param #AUFTRAG self
-- @param Wrapper.Airbase#AIRBASE Airdrome The airbase to bomb. This must be an airdrome (not a FARP or ship) as these to not have a runway.
-- @param #number Altitude Engage altitude in feet. Default 25000 ft.
-- @return #AUFTRAG self
function AUFTRAG:NewBOMBRUNWAY(Airdrome, Altitude)
if type(Airdrome)=="string" then
Airdrome=AIRBASE:FindByName(Airdrome)
end
local mission=AUFTRAG:New(AUFTRAG.Type.BOMBRUNWAY)
-- DCS task options:
mission.engageAirbase=Airdrome
mission.engageAltitude=UTILS.FeetToMeters(Altitude or 25000)
mission.engageWeaponType=ENUMS.WeaponFlag.AnyBomb
mission.engageWeaponExpend=AI.Task.WeaponExpend.ALL
-- Mission options:
mission.missionTask=ENUMS.MissionTask.RUNWAYATTACK
mission.missionAltitude=mission.engageAltitude*0.8
mission.missionFraction=0.5
mission.optionROE=ENUMS.ROE.OpenFire mission.optionROE=ENUMS.ROE.OpenFire
mission.optionROT=ENUMS.ROT.PassiveDefense mission.optionROT=ENUMS.ROT.PassiveDefense
@@ -657,7 +689,7 @@ function AUFTRAG:NewESCORT(EscortGroup, OffsetVector, EngageMaxDistance, TargetT
mission.missionTask=ENUMS.MissionTask.ESCORT mission.missionTask=ENUMS.MissionTask.ESCORT
mission.missionFraction=0.1 mission.missionFraction=0.1
-- TODO: what's the best ROE here? -- TODO: what's the best ROE here? Make dependent on ESCORT or FOLLOW!
mission.optionROE=ENUMS.ROE.OpenFire mission.optionROE=ENUMS.ROE.OpenFire
mission.optionROT=ENUMS.ROT.PassiveDefense mission.optionROT=ENUMS.ROT.PassiveDefense
@@ -684,11 +716,19 @@ function AUFTRAG:NewAUTO(EngageGroup)
local threatlevel=group:GetThreatLevel() local threatlevel=group:GetThreatLevel()
if category==Group.Category.AIRPLANE or category==Group.Category.HELICOPTER then if category==Group.Category.AIRPLANE or category==Group.Category.HELICOPTER then
---
-- AIR
---
mission=AUFTRAG:NewINTERCEPT(group) mission=AUFTRAG:NewINTERCEPT(group)
elseif category==Group.Category.GROUND then elseif category==Group.Category.GROUND then
---
-- GROUND
---
--TODO: action depends on type --TODO: action depends on type
-- AA/SAM ==> SEAD -- AA/SAM ==> SEAD
-- Tanks ==> -- Tanks ==>
@@ -707,24 +747,13 @@ function AUFTRAG:NewAUTO(EngageGroup)
elseif category==Group.Category.SHIP then elseif category==Group.Category.SHIP then
---
-- NAVAL
---
--TODO: ANTISHIP --TODO: ANTISHIP
mission=AUFTRAG:NewANTISHIP(group) mission=AUFTRAG:NewANTISHIP(group)
--[[
local TargetUnitSet=SET_UNIT:New()
for _,_unit in pairs(group:GetUnits()) do
local unit=_unit --Wrapper.Unit#UNIT
if unit and unit:IsAlive() and unit:GetThreatLevel()>0 then
TargetUnitSet:AddUnit(unit)
end
end
if TargetUnitSet:Count()>0 then
mission=AUFTRAG:NewANTISHIP(TargetUnitSet)
end
]]
end end
end end
@@ -789,6 +818,15 @@ function AUFTRAG:SetPriority(Prio, Urgent)
return self return self
end end
--- Set how many times the mission is repeated if it fails.
-- @param #AUFTRAG self
-- @param #number Nrepeat Number of repeats. Default 0.
-- @return #AUFTRAG self
function AUFTRAG:SetRepeatOnFailure(Nrepeat)
self.missionRepeatMax=Nrepeat or 0
return self
end
--- Set mission name. --- Set mission name.
-- @param #AUFTRAG self -- @param #AUFTRAG self
-- @param #string Name Name of the mission. -- @param #string Name Name of the mission.
@@ -814,7 +852,7 @@ end
--- Set number of weapons to expend. --- Set number of weapons to expend.
-- @param #AUFTRAG self -- @param #AUFTRAG self
-- @param #number WeaponType Weapon type. Default is ENUMS.WeaponFlag.Auto -- @param #number WeaponExpend How much of the weapon load is expended during the attack, e.g. `AI.Task.WeaponExpend.ALL`. Default "Auto".
-- @return #AUFTRAG self -- @return #AUFTRAG self
function AUFTRAG:SetWeaponExpend(WeaponExpend) function AUFTRAG:SetWeaponExpend(WeaponExpend)
@@ -826,6 +864,24 @@ function AUFTRAG:SetWeaponExpend(WeaponExpend)
return self return self
end end
--- Set number of weapons to expend.
-- @param #AUFTRAG self
-- @param #boolean Switch If true or nil, engage as group. If false, not.
-- @return #AUFTRAG self
function AUFTRAG:SetEngageAsGroup(Switch)
if Switch==nil then
Switch=true
end
self.engageAsGroup=Switch
-- Update the DCS task parameter.
self.DCStask=self:GetDCSMissionTask()
return self
end
--- Set mission altitude. --- Set mission altitude.
-- @param #AUFTRAG self -- @param #AUFTRAG self
-- @param #string Altitude Altitude in feet. -- @param #string Altitude Altitude in feet.
@@ -1177,7 +1233,7 @@ end
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--- Flightgroup event function handling the crash of a unit. --- Flightgroup event function handling the crash of a unit.
-- @param #FLIGHTGROUP self -- @param #AUFTRAG self
-- @param Core.Event#EVENTDATA EventData Event data. -- @param Core.Event#EVENTDATA EventData Event data.
function AUFTRAG:OnEventCrash(EventData) function AUFTRAG:OnEventCrash(EventData)
@@ -1186,15 +1242,6 @@ function AUFTRAG:OnEventCrash(EventData)
local unit=EventData.IniUnit local unit=EventData.IniUnit
local group=EventData.IniGroup local group=EventData.IniGroup
local unitname=EventData.IniUnitName local unitname=EventData.IniUnitName
-- Get element.
local element=self:GetElementByName(unitname)
if element then
self:T3(self.lid..string.format("EVENT: Element %s crashed ==> dead", element.name))
self:ElementDead(element)
end
end end
end end
@@ -1519,10 +1566,11 @@ function AUFTRAG:CountMissionTargets()
local target=self.engageTarget.Target --Wrapper.Group#GROUP local target=self.engageTarget.Target --Wrapper.Group#GROUP
N=N+target:CountAliveUnits() N=N+target:CountAliveUnits()
elseif self.engageTarget.Type==AUFTRAG.TargetType.UNIT then elseif self.engageTarget.Type==AUFTRAG.TargetType.UNIT then
if self.engageTarget.Target and self.engageTarget.Target:IsAlive() then local target=self.engageTarget.Target --Wrapper.Unit#UNIT
if target and target:IsAlive() then
N=N+1 N=N+1
end end
elseif self.engageTarget.Type==AUFTRAG.TargetType.GROUP then elseif self.engageTarget.Type==AUFTRAG.TargetType.STATIC then
local target=self.engageTarget.Target --Wrapper.Static#STATIC local target=self.engageTarget.Target --Wrapper.Static#STATIC
if target and target:IsAlive() then if target and target:IsAlive() then
N=N+1 N=N+1
@@ -1530,33 +1578,6 @@ function AUFTRAG:CountMissionTargets()
end end
end end
--[[
if self.engageTargetGroupset then
--local n=self.engageTargetGroupset:CountAlive()
for _,_group in pairs(self.engageTargetGroupset.Set) do
local group=_group --Wrapper.Group#GROUP
if group and group:IsAlive() then
for _,_unit in pairs(group:GetUnits()) do
local unit=_unit --Wrapper.Unit#UNIT
if unit and unit:IsAlive() then
N=N+1
end
end
end
end
end
if self.engageTargetUnitset then
local n=self.engageTargetUnitset:CountAlive()
N=N+n
end
]]
return N return N
end end
@@ -1580,35 +1601,17 @@ end
function AUFTRAG:GetTargetCoordinate() function AUFTRAG:GetTargetCoordinate()
if self.engageTarget then if self.engageTarget then
return self.engageTarget.Target:GetCoordinate() if self.engageTarget.Type==AUFTRAG.TargetType.COORDINATE then
elseif self.engageCoord then return self.engageTarget.Target
return self.engageCoord else
return self.engageTarget.Target:GetCoordinate()
end
elseif self.orbitCoord then elseif self.orbitCoord then
return self.orbitCoord return self.orbitCoord
elseif self.escortGroup then elseif self.escortGroup then
return self.escortGroup:GetCoordinate() return self.escortGroup:GetCoordinate()
end end
--[[
if self.engageTargetGroupset then
local group=self.engageTargetGroupset:GetFirst() --Wrapper.Group#GROUP
if group and group:IsAlive() then
return group:GetCoordinate()
end
elseif self.engageTargetUnitset then
local unit=self.engageTargetUnitset:GetFirst() --Wrapper.Unit#UNIT
if unit and unit:IsAlive() then
return unit:GetCoordinate()
end
elseif self.engageCoord then
return self.engageCoord
elseif self.orbitCoord then
return self.orbitCoord
elseif self.escortGroup then
return self.escortGroup:GetCoordinate()
end
]]
return nil return nil
end end
@@ -1637,6 +1640,14 @@ function AUFTRAG:GetMissionTypesText(MissionTypes)
return text return text
end end
--- Set log ID string.
-- @param #AUFTRAG self
-- @return #AUFTRAG self
function AUFTRAG:_SetLogID()
self.lid=string.format("Auftrag #%d %s | ", self.auftragsnummer, tostring(self.type))
return self
end
--- Get DCS task table for the given mission. --- Get DCS task table for the given mission.
-- @param #AUFTRAG self -- @param #AUFTRAG self
-- @return DCS#Task The DCS task table. If multiple tasks are necessary, this is returned as a combo task. -- @return DCS#Task The DCS task table. If multiple tasks are necessary, this is returned as a combo task.
@@ -1672,7 +1683,6 @@ function AUFTRAG:GetDCSMissionTask()
-- BAI Mission -- -- BAI Mission --
----------------- -----------------
-- TODO: adjust tasks for group/unit attack! group attack also seems to now support the attack as group value. however, statics are only possible if attackunit.
local DCStask=self:_GetDCSAttackTask(self.engageTarget) local DCStask=self:_GetDCSAttackTask(self.engageTarget)
table.insert(DCStasks, DCStask) table.insert(DCStasks, DCStask)
@@ -1683,7 +1693,7 @@ function AUFTRAG:GetDCSMissionTask()
-- BOMBING Mission -- -- BOMBING Mission --
--------------------- ---------------------
local Vec2=self.engageCoord:GetVec2() local Vec2=self:GetTargetCoordinate():GetVec2()
local DCStask=CONTROLLABLE.TaskBombing(nil, Vec2, self.engageAsGroup, self.engageWeaponExpend, self.engageQuantity, self.engageDirection, self.engageAltitude, self.engageWeaponType, Divebomb) local DCStask=CONTROLLABLE.TaskBombing(nil, Vec2, self.engageAsGroup, self.engageWeaponExpend, self.engageQuantity, self.engageDirection, self.engageAltitude, self.engageWeaponType, Divebomb)
@@ -1785,7 +1795,7 @@ function AUFTRAG:GetDCSMissionTask()
-- STIKE Mission -- -- STIKE Mission --
------------------- -------------------
local Vec2=self.engageCoord:GetVec2() local Vec2=self:GetTargetCoordinate():GetVec2()
local DCStask=CONTROLLABLE.TaskAttackMapObject(nil, Vec2, self.engageAsGroup, self.engageWeaponExpend, self.engageQuantity, self.engageDirection, self.engageAltitude, self.engageWeaponType) local DCStask=CONTROLLABLE.TaskAttackMapObject(nil, Vec2, self.engageAsGroup, self.engageWeaponExpend, self.engageQuantity, self.engageDirection, self.engageAltitude, self.engageWeaponType)
@@ -1800,7 +1810,6 @@ function AUFTRAG:GetDCSMissionTask()
local DCStask=CONTROLLABLE.EnRouteTaskTanker(nil) local DCStask=CONTROLLABLE.EnRouteTaskTanker(nil)
table.insert(self.enrouteTasks, DCStask) table.insert(self.enrouteTasks, DCStask)
--table.insert(DCStasks, DCStask)
elseif self.type==AUFTRAG.Type.TRANSPORT then elseif self.type==AUFTRAG.Type.TRANSPORT then
@@ -1901,6 +1910,8 @@ function AUFTRAG:_TargetFromObject(Object)
return nil return nil
end end
self:I(self.lid..string.format("Mission Target Type=%s", target.Type))
return target return target
end end
+1 -1
View File
@@ -2290,7 +2290,7 @@ end
-- @param #string Event Event. -- @param #string Event Event.
-- @param #string To To state. -- @param #string To To state.
function FLIGHTGROUP:onafterFlightDead(From, Event, To) function FLIGHTGROUP:onafterFlightDead(From, Event, To)
self:T(self.lid..string.format("Flight dead")) self:I(self.lid..string.format("Flight dead!"))
-- Delete waypoints so they are re-initialized at the next spawn. -- Delete waypoints so they are re-initialized at the next spawn.
self.waypoints=nil self.waypoints=nil
@@ -136,7 +136,6 @@ function WINGCOMMANDER:AddAirwing(Airwing)
Airwing.wingcommander=self Airwing.wingcommander=self
table.insert(self.airwings, Airwing) table.insert(self.airwings, Airwing)
--self.airwings[Airwing.alias]=Airwing
return self return self
end end
@@ -68,6 +68,21 @@ ENUMS.WeaponFlag={
--- Mission tasks. --- Mission tasks.
-- @type ENUMS.MissionTask -- @type ENUMS.MissionTask
-- @field #string NOTHING No special task. Group can perform the minimal tasks: Orbit, Refuelling, Follow and Aerobatics.
-- @field #string AFAC Forward Air Controller Air. Can perform the tasks: Attack Group, Attack Unit, FAC assign group, Bombing, Attack Map Object.
-- @field #string ANTISHIPSTRIKE Naval ops. Can perform the tasks: Attack Group, Attack Unit.
-- @field #string AWACS AWACS.
-- @field #string CAP Combat Air Patrol.
-- @field #string CAS Close Air Support.
-- @field #string ESCORT Escort another group.
-- @field #string FIGHTERSWEEP Fighter sweep.
-- @field #string INTERCEPT Intercept.
-- @field #string PINPOINTSTRIKE Pinpoint strike.
-- @field #string RECONNAISSANCE Reconnaissance mission.
-- @field #string REFUELLING Refuelling mission.
-- @field #string RUNWAYATTAC Attack the runway of an airdrome.
-- @field #string SEAD Suppression of Enemy Air Defenses.
-- @field #string TRANSPORT Troop transport.
ENUMS.MissionTask={ ENUMS.MissionTask={
NOTHING="Nothing", NOTHING="Nothing",
AFAC="AFAC", AFAC="AFAC",