diff --git a/Moose Development/Moose/Functional/Artillery.lua b/Moose Development/Moose/Functional/Artillery.lua index f5233e3b0..8a3d8ebce 100644 --- a/Moose Development/Moose/Functional/Artillery.lua +++ b/Moose Development/Moose/Functional/Artillery.lua @@ -693,7 +693,7 @@ ARTY.db={ --- Arty script version. -- @field #string version -ARTY.version="1.1.7" +ARTY.version="1.1.8" ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- @@ -2770,7 +2770,7 @@ function ARTY:onafterStatus(Controllable, From, Event, To) -- FSM state. local fsmstate=self:GetState() - self:I(self.lid..string.format("Status %s, Ammo total=%d: shells=%d [smoke=%d, illu=%d, nukes=%d*%.3f kT], rockets=%d, missiles=%d", fsmstate, ntot, nshells, self.Nsmoke, self.Nillu, self.Nukes, self.nukewarhead/1000000, nrockets, nmissiles)) + self:T(self.lid..string.format("Status %s, Ammo total=%d: shells=%d [smoke=%d, illu=%d, nukes=%d*%.3f kT], rockets=%d, missiles=%d", fsmstate, ntot, nshells, self.Nsmoke, self.Nillu, self.Nukes, self.nukewarhead/1000000, nrockets, nmissiles)) if self.Controllable and self.Controllable:IsAlive() then @@ -4814,7 +4814,8 @@ function ARTY:_CheckShootingStarted() end -- Check if we waited long enough and no shot was fired. - if dt > self.WaitForShotTime and self.Nshots==0 then + --if dt > self.WaitForShotTime and self.Nshots==0 then + if dt > self.WaitForShotTime and (self.Nshots==0 or self.currentTarget.nshells >= self.Nshots) then --https://github.com/FlightControl-Master/MOOSE/issues/1356 -- Debug info. self:T(self.lid..string.format("%s, no shot event after %d seconds. Removing current target %s from list.", self.groupname, self.WaitForShotTime, name)) diff --git a/Moose Development/Moose/Wrapper/Airbase.lua b/Moose Development/Moose/Wrapper/Airbase.lua index 27c97ae3e..928d6029d 100644 --- a/Moose Development/Moose/Wrapper/Airbase.lua +++ b/Moose Development/Moose/Wrapper/Airbase.lua @@ -1279,8 +1279,7 @@ function AIRBASE:GetRunwayData(magvar, mark) name==AIRBASE.PersianGulf.Abu_Dhabi_International_Airport or name==AIRBASE.PersianGulf.Dubai_Intl or name==AIRBASE.PersianGulf.Shiraz_International_Airport or - name==AIRBASE.PersianGulf.Kish_International_Airport - then + name==AIRBASE.PersianGulf.Kish_International_Airport then -- 1-->4, 2-->3, 3-->2, 4-->1 exception=1 @@ -1297,6 +1296,7 @@ function AIRBASE:GetRunwayData(magvar, mark) end + --- Function returning the index of the runway coordinate belonding to the given index i. local function f(i) local j @@ -1365,6 +1365,9 @@ function AIRBASE:GetRunwayData(magvar, mark) -- Get the other spawn point coordinate. local j=f(i) + -- Debug info. + --env.info(string.format("Runway i=%s j=%s (N=%d #runwaycoord=%d)", tostring(i), tostring(j), N, #runwaycoords)) + -- Coordinates of the two runway points. local c1=runwaycoords[i] --Core.Point#COORDINATE local c2=runwaycoords[j] --Core.Point#COORDINATE diff --git a/Moose Development/Moose/Wrapper/Group.lua b/Moose Development/Moose/Wrapper/Group.lua index c028703ec..436e6f57f 100644 --- a/Moose Development/Moose/Wrapper/Group.lua +++ b/Moose Development/Moose/Wrapper/Group.lua @@ -2236,27 +2236,52 @@ function GROUP:IsAirborne(AllUnits) if units then - for _,_unit in pairs(units) do - local unit=_unit --Wrapper.Unit#UNIT - - if unit then - - -- Unit in air or not. - local inair=unit:InAir() + if AllUnits then + + --- We want to know if ALL units are airborne. + + for _,_unit in pairs(units) do + local unit=_unit --Wrapper.Unit#UNIT - -- Unit is not in air and we wanted to know whether ALL units are ==> return false - if inair==false and AllUnits==true then - return false - end + if unit then - -- At least one unit is in are and we did not care which one. - if inair==true and not AllUnits then - return true + -- Unit in air or not. + local inair=unit:InAir() + + -- At least one unit is not in air. + if not inair then + return false + end end end - -- At least one unit is in the air. - return true + + -- All units are in air. + return true + + else + + --- We want to know if ANY unit is airborne. + + for _,_unit in pairs(units) do + local unit=_unit --Wrapper.Unit#UNIT + + if unit then + + -- Unit in air or not. + local inair=unit:InAir() + + if inair then + -- At least one unit is in air. + return true + end + + end + + -- No unit is in air. + return false + + end end end