diff --git a/Moose Development/Moose/AI/AI_Cargo.lua b/Moose Development/Moose/AI/AI_Cargo.lua index 885d717de..2da2566e7 100644 --- a/Moose Development/Moose/AI/AI_Cargo.lua +++ b/Moose Development/Moose/AI/AI_Cargo.lua @@ -179,7 +179,7 @@ function AI_CARGO:onbeforeLoad( Carrier, From, Event, To, PickupZone ) local Boarding = false local LoadInterval = 10 - local LoadDelay = 10 + local LoadDelay = 0 local Carrier_List = {} local Carrier_Weight = {} @@ -246,7 +246,8 @@ function AI_CARGO:onbeforeLoad( Carrier, From, Event, To, PickupZone ) end if not Loaded then - -- If the cargo wasn't loaded in one of the carriers, then we need to stop the loading. + -- No loading happened, so we need to pickup something else. + self.Relocating = false end end @@ -344,6 +345,7 @@ function AI_CARGO:onafterUnload( Carrier, From, Event, To, DeployZone ) local CarrierUnit = CarrierUnit -- Wrapper.Unit#UNIT Carrier:RouteStop() for _, Cargo in pairs( CarrierUnit:GetCargo() ) do + self:F( { Cargo = Cargo:GetName(), Isloaded = Cargo:IsLoaded() } ) if Cargo:IsLoaded() then Cargo:__UnBoard( UnboardDelay ) UnboardDelay = UnboardDelay + UnboardInterval diff --git a/Moose Development/Moose/AI/AI_Cargo_Dispatcher.lua b/Moose Development/Moose/AI/AI_Cargo_Dispatcher.lua index 3f1cb6a9f..b8f6e45f5 100644 --- a/Moose Development/Moose/AI/AI_Cargo_Dispatcher.lua +++ b/Moose Development/Moose/AI/AI_Cargo_Dispatcher.lua @@ -903,7 +903,8 @@ function AI_CARGO_DISPATCHER:onafterMonitor() if not self.PickupZoneSet or PickupZone then for CarrierPickup, Coordinate in pairs( self.PickupCargo ) do if CarrierPickup:IsAlive() == true then - if CargoCoordinate:Get2DDistance( Coordinate ) <= 100 then + if CargoCoordinate:Get2DDistance( Coordinate ) <= 25 then + self:F( { "Coordinate not free for ", Cargo = Cargo:GetName(), Carrier:GetName(), PickupCargo = self.PickupCargo[Carrier] ~= nil } ) CoordinateFree = false break end @@ -1025,6 +1026,7 @@ function AI_CARGO_DISPATCHER:onafterTransport( From, Event, To, Carrier, Cargo ) end end + self:F( { Carrier = Carrier:GetName(), PickupCargo = self.PickupCargo } ) self.PickupCargo[Carrier] = nil end diff --git a/Moose Development/Moose/AI/AI_Cargo_Helicopter.lua b/Moose Development/Moose/AI/AI_Cargo_Helicopter.lua index 019840b32..284000275 100644 --- a/Moose Development/Moose/AI/AI_Cargo_Helicopter.lua +++ b/Moose Development/Moose/AI/AI_Cargo_Helicopter.lua @@ -254,7 +254,6 @@ function AI_CARGO_HELICOPTER:onafterLanded( Helicopter, From, Event, To ) --self:Load( Helicopter:GetPointVec2() ) self:Load( self.PickupZone ) self.RoutePickup = false - self.Relocating = true end end @@ -262,8 +261,6 @@ function AI_CARGO_HELICOPTER:onafterLanded( Helicopter, From, Event, To ) if Helicopter:GetHeight( true ) <= 5 and Helicopter:GetVelocityKMH() < 10 then self:Unload( self.DeployZone ) self.RouteDeploy = false - self.Transporting = false - self.Relocating = false end end @@ -361,37 +358,35 @@ function AI_CARGO_HELICOPTER:onafterOrbit( Helicopter, From, Event, To, Coordina if Helicopter and Helicopter:IsAlive() then - if not self:IsTransporting() then - local Route = {} - - -- local CoordinateFrom = Helicopter:GetCoordinate() - -- local WaypointFrom = CoordinateFrom:WaypointAir( - -- "RADIO", - -- POINT_VEC3.RoutePointType.TurningPoint, - -- POINT_VEC3.RoutePointAction.TurningPoint, - -- Speed, - -- true - -- ) - -- Route[#Route+1] = WaypointFrom - local CoordinateTo = Coordinate - local WaypointTo = CoordinateTo:WaypointAir( - "RADIO", - POINT_VEC3.RoutePointType.TurningPoint, - POINT_VEC3.RoutePointAction.TurningPoint, - 50, - true - ) - Route[#Route+1] = WaypointTo - - local Tasks = {} - Tasks[#Tasks+1] = Helicopter:TaskOrbitCircle( math.random( 30, 80 ), 150, CoordinateTo:GetRandomCoordinateInRadius( 800, 500 ) ) - Route[#Route].task = Helicopter:TaskCombo( Tasks ) - - Route[#Route+1] = WaypointTo - - -- Now route the helicopter - Helicopter:Route( Route, 0 ) - end + local Route = {} + +-- local CoordinateFrom = Helicopter:GetCoordinate() +-- local WaypointFrom = CoordinateFrom:WaypointAir( +-- "RADIO", +-- POINT_VEC3.RoutePointType.TurningPoint, +-- POINT_VEC3.RoutePointAction.TurningPoint, +-- Speed, +-- true +-- ) +-- Route[#Route+1] = WaypointFrom + local CoordinateTo = Coordinate + local WaypointTo = CoordinateTo:WaypointAir( + "RADIO", + POINT_VEC3.RoutePointType.TurningPoint, + POINT_VEC3.RoutePointAction.TurningPoint, + 50, + true + ) + Route[#Route+1] = WaypointTo + + local Tasks = {} + Tasks[#Tasks+1] = Helicopter:TaskOrbitCircle( math.random( 30, 80 ), 150, CoordinateTo:GetRandomCoordinateInRadius( 800, 500 ) ) + Route[#Route].task = Helicopter:TaskCombo( Tasks ) + + Route[#Route+1] = WaypointTo + + -- Now route the helicopter + Helicopter:Route( Route, 0 ) end end @@ -409,8 +404,16 @@ end function AI_CARGO_HELICOPTER:onafterPickedUp( Helicopter, From, Event, To, PickupZone ) self:F( { Helicopter, From, Event, To } ) + local HasCargo = false if Helicopter and Helicopter:IsAlive() then - self.Transporting = true + for Cargo, CarrierUnit in pairs( self.Carrier_Cargo ) do + HasCargo = true + break + end + self.Relocating = false + if HasCargo then + self.Transporting = true + end end end @@ -437,6 +440,8 @@ function AI_CARGO_HELICOPTER:onafterDeployed( Helicopter, From, Event, To, Deplo end, Helicopter ) + self.Transporting = false + end --- On after Pickup event. @@ -500,7 +505,9 @@ function AI_CARGO_HELICOPTER:onafterPickup( Helicopter, From, Event, To, Coordin Helicopter:Route( Route, 1 ) self.PickupZone = PickupZone - self.Transporting = true + + self.Relocating = true + self.Transporting = false end end @@ -576,7 +583,9 @@ function AI_CARGO_HELICOPTER:onafterDeploy( Helicopter, From, Event, To, Coordin -- Now route the helicopter Helicopter:Route( Route, 0 ) - + + self.Relocating = false + self.Transporting = true end end