diff --git a/Moose Development/Moose/Core/RadioQueue.lua b/Moose Development/Moose/Core/RadioQueue.lua index 33857ba43..1ff08c747 100644 --- a/Moose Development/Moose/Core/RadioQueue.lua +++ b/Moose Development/Moose/Core/RadioQueue.lua @@ -121,7 +121,7 @@ function RADIOQUEUE:Start(delay, dt) self.dt=dt or 0.01 -- Debug message. - self:I(self.lid..string.format("Starting RADIOQUEUE %s on Frequency %.2f MHz [modulation=%d] in %.1f seconds (dt=%.3f sec)", self.alias, self.frequency/1000000, self.modulation, delay, dt)) + self:I(self.lid..string.format("Starting RADIOQUEUE %s on Frequency %.2f MHz [modulation=%d] in %.1f seconds (dt=%.3f sec)", self.alias, self.frequency/1000000, self.modulation, self.delay, self.dt)) -- Start Scheduler. if self.schedonce then diff --git a/Moose Development/Moose/Core/UserFlag.lua b/Moose Development/Moose/Core/UserFlag.lua index 30e0d99d9..aac0c78ea 100644 --- a/Moose Development/Moose/Core/UserFlag.lua +++ b/Moose Development/Moose/Core/UserFlag.lua @@ -59,14 +59,19 @@ do -- UserFlag --- Set the userflag to a given Number. -- @param #USERFLAG self -- @param #number Number The number value to be checked if it is the same as the userflag. + -- @param #number Delay Delay in seconds, before the flag is set. -- @return #USERFLAG The userflag instance. -- @usage -- local BlueVictory = USERFLAG:New( "VictoryBlue" ) -- BlueVictory:Set( 100 ) -- Set the UserFlag VictoryBlue to 100. -- - function USERFLAG:Set( Number ) --R2.3 + function USERFLAG:Set( Number, Delay ) --R2.3 - trigger.action.setUserFlag( self.UserFlagName, Number ) + if Delay and Delay>0 then + self:ScheduleOnce(Delay, USERFLAG.Set, self, Number) + else + trigger.action.setUserFlag( self.UserFlagName, Number ) + end return self end diff --git a/Moose Development/Moose/Ops/AirWing.lua b/Moose Development/Moose/Ops/AirWing.lua index 8742cb102..7f48fffc5 100644 --- a/Moose Development/Moose/Ops/AirWing.lua +++ b/Moose Development/Moose/Ops/AirWing.lua @@ -753,7 +753,7 @@ function AIRWING:onafterStatus(From, Event, To) local skill=squadron.skill and tostring(squadron.skill) or "N/A" -- Squadron text - text=text..string.format("\n* %s %s: %s*%d (avail %d), Callsign=%s, Modex=%d, Skill=%s", squadron.name, squadron:GetState(), squadron.aircrafttype, #squadron.assets, squadron:CountAssetsInStock(), callsign, modex, skill) + text=text..string.format("\n* %s %s: %s*%d/%d, Callsign=%s, Modex=%d, Skill=%s", squadron.name, squadron:GetState(), squadron.aircrafttype, squadron:CountAssetsInStock(), #squadron.assets, callsign, modex, skill) -- Loop over all assets. if self.verbose>0 then @@ -796,6 +796,9 @@ function AIRWING:onafterStatus(From, Event, To) local lifept, lifept0=asset.flightgroup:GetLifePoints() text=text..string.format(" life=%d/%d", lifept, lifept0) + + local ammo=asset.flightgroup:GetAmmoTot() + text=text..string.format(" ammo=[G=%d, R=%d, B=%d, M=%d]", ammo.Guns, ammo.Rockets, ammo.Bombs, ammo.Missiles) else text=text.."N/A" end @@ -858,7 +861,9 @@ function AIRWING:CheckCAP() local patrol=self:_GetPatrolData(self.pointsCAP) - local missionCAP=AUFTRAG:NewPATROL(patrol.coord, patrol.altitude, patrol.speed, patrol.heading, patrol.leg) + local altitude=patrol.altitude+1000*patrol.noccupied + + local missionCAP=AUFTRAG:NewPATROL(patrol.coord, altitude, patrol.speed, patrol.heading, patrol.leg) missionCAP.patroldata=patrol @@ -900,7 +905,9 @@ function AIRWING:CheckTANKER() local patrol=self:_GetPatrolData(self.pointsTANKER) - local mission=AUFTRAG:NewTANKER(patrol.coord, patrol.altitude, patrol.speed, patrol.heading, patrol.leg, 0) + local altitude=patrol.altitude+1000*patrol.noccupied + + local mission=AUFTRAG:NewTANKER(patrol.coord, altitude, patrol.speed, patrol.heading, patrol.leg, 0) mission.patroldata=patrol @@ -916,7 +923,9 @@ function AIRWING:CheckTANKER() local patrol=self:_GetPatrolData(self.pointsTANKER) - local mission=AUFTRAG:NewTANKER(patrol.coord, patrol.altitude, patrol.speed, patrol.heading, patrol.leg, 1) + local altitude=patrol.altitude+1000*patrol.noccupied + + local mission=AUFTRAG:NewTANKER(patrol.coord, altitude, patrol.speed, patrol.heading, patrol.leg, 1) mission.patroldata=patrol @@ -942,7 +951,9 @@ function AIRWING:CheckAWACS() local patrol=self:_GetPatrolData(self.pointsAWACS) - local mission=AUFTRAG:NewAWACS(patrol.coord, patrol.altitude, patrol.speed, patrol.heading, patrol.leg) + local altitude=patrol.altitude+1000*patrol.noccupied + + local mission=AUFTRAG:NewAWACS(patrol.coord, altitude, patrol.speed, patrol.heading, patrol.leg) mission.patroldata=patrol diff --git a/Moose Development/Moose/Ops/FlightGroup.lua b/Moose Development/Moose/Ops/FlightGroup.lua index 2fc563d0b..24a75b41c 100644 --- a/Moose Development/Moose/Ops/FlightGroup.lua +++ b/Moose Development/Moose/Ops/FlightGroup.lua @@ -3915,6 +3915,11 @@ function FLIGHTGROUP:onafterMissionExecute(From, Event, To, Mission) -- Set mission status to EXECUTING. Mission:Executing() + -- Formation + if Mission.optionFormation then + self:SwitchFormation(Mission.optionFormation) + end + end --- On after "PauseMission" event. @@ -4064,14 +4069,16 @@ function FLIGHTGROUP:RouteToMission(mission, delay) -- Create waypoint coordinate half way between us and the target. local waypointcoord=self.group:GetCoordinate():GetIntermediateCoordinate(mission:GetTargetCoordinate(), mission.missionFraction) + local alt=waypointcoord.y -- Add some randomization. - waypointcoord=ZONE_RADIUS:New("Temp", waypointcoord:GetVec2(), 500):GetRandomCoordinate() + waypointcoord=ZONE_RADIUS:New("Temp", waypointcoord:GetVec2(), 1000):GetRandomCoordinate():SetAltitude(alt, false) -- Set altitude of mission waypoint. if mission.missionAltitude then waypointcoord:SetAltitude(mission.missionAltitude, true) end + env.info(string.format("FF mission alt=%d", waypointcoord.y)) -- Add enroute tasks. for _,task in pairs(mission.enrouteTasks) do @@ -4131,7 +4138,7 @@ function FLIGHTGROUP:RouteToMission(mission, delay) end -- Formation if mission.optionFormation then - + self:SwitchFormation(mission.optionFormation) end end diff --git a/Moose Development/Moose/Ops/WingCommander.lua b/Moose Development/Moose/Ops/WingCommander.lua index 211cf0b54..55e13e0a5 100644 --- a/Moose Development/Moose/Ops/WingCommander.lua +++ b/Moose Development/Moose/Ops/WingCommander.lua @@ -430,6 +430,9 @@ function WINGCOMMANDER:onafterStatus(From, Event, To) --TODO: Better amount of necessary assets. Count units in asset and in contact. Might need nassetMin/Max. mission.nassets=1 + -- Missons are repeated max 3 times on failure. + mission.missionRepeatMax=3 + -- Set mission contact. contact.mission=mission