RAT bug fixes.

When SetDeparture() is not used, SetDestination() does not count the possible destinations correctly.
When Commute() is used with RAT.wp.coldorhot, next spawning will happen in air.
This commit is contained in:
funkyfranky 2017-10-30 09:52:50 +01:00
parent cbf0112bd7
commit 84fee06196

View File

@ -468,7 +468,7 @@ RAT.id="RAT | "
--- RAT version. --- RAT version.
-- @field #string version -- @field #string version
RAT.version="2.0.0" RAT.version="2.0.1"
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@ -742,15 +742,6 @@ function RAT:_CheckConsistency()
self.Ndeparture_Zones=self.Ndeparture_Zones+1 self.Ndeparture_Zones=self.Ndeparture_Zones+1
end end
end end
-- Count destination airports and zones.
for _,name in pairs(self.destination_ports) do
if self:_AirportExists(name) then
self.Ndestination_Airports=self.Ndestination_Airports+1
elseif self:_ZoneExists(name) then
self.Ndestination_Zones=self.Ndestination_Zones+1
end
end
-- What can go wrong? -- What can go wrong?
-- Only zones but not takeoff air == > Enable takeoff air. -- Only zones but not takeoff air == > Enable takeoff air.
@ -769,6 +760,16 @@ function RAT:_CheckConsistency()
-- User has used SetDestination() -- User has used SetDestination()
if not self.random_destination then if not self.random_destination then
-- Count destination airports and zones.
for _,name in pairs(self.destination_ports) do
if self:_AirportExists(name) then
self.Ndestination_Airports=self.Ndestination_Airports+1
elseif self:_ZoneExists(name) then
self.Ndestination_Zones=self.Ndestination_Zones+1
end
end
-- One zone specified as destination ==> Enable destination zone. -- One zone specified as destination ==> Enable destination zone.
-- This does not apply to return zone because the destination is the zone and not the final destination which can be an airport. -- This does not apply to return zone because the destination is the zone and not the final destination which can be an airport.
if self.Ndestination_Zones>0 and self.landing~=RAT.wp.air and not self.returnzone then if self.Ndestination_Zones>0 and self.landing~=RAT.wp.air and not self.returnzone then
@ -1453,13 +1454,7 @@ function RAT:_SpawnWithRoute(_departure, _destination, _takeoff, _landing, _live
-- Set takeoff type. -- Set takeoff type.
local takeoff=self.takeoff local takeoff=self.takeoff
local landing=self.landing local landing=self.landing
-- Random choice between cold and hot.
if self.takeoff==RAT.wp.coldorhot then
local temp={RAT.wp.cold, RAT.wp.hot}
takeoff=temp[math.random(2)]
end
-- Overrule takeoff/landing by what comes in. -- Overrule takeoff/landing by what comes in.
if _takeoff then if _takeoff then
takeoff=_takeoff takeoff=_takeoff
@ -1467,6 +1462,12 @@ function RAT:_SpawnWithRoute(_departure, _destination, _takeoff, _landing, _live
if _landing then if _landing then
landing=_landing landing=_landing
end end
-- Random choice between cold and hot.
if takeoff==RAT.wp.coldorhot then
local temp={RAT.wp.cold, RAT.wp.hot}
takeoff=temp[math.random(2)]
end
-- Set flight plan. -- Set flight plan.
local departure, destination, waypoints = self:_SetRoute(takeoff, landing, _departure, _destination, _waypoint) local departure, destination, waypoints = self:_SetRoute(takeoff, landing, _departure, _destination, _waypoint)
@ -1784,7 +1785,6 @@ function RAT:_SetRoute(takeoff, landing, _departure, _destination, _waypoint)
-- Departure airport or zone. -- Departure airport or zone.
local departure=nil local departure=nil
if _departure then if _departure then
if self:_AirportExists(_departure) then if self:_AirportExists(_departure) then
-- Check if new departure is an airport. -- Check if new departure is an airport.
departure=AIRBASE:FindByName(_departure) departure=AIRBASE:FindByName(_departure)