diff --git a/Moose Development/Moose/AI/AI_Cargo.lua b/Moose Development/Moose/AI/AI_Cargo.lua index a1649d7a8..c585c0674 100644 --- a/Moose Development/Moose/AI/AI_Cargo.lua +++ b/Moose Development/Moose/AI/AI_Cargo.lua @@ -262,7 +262,6 @@ function AI_CARGO:onbeforeLoad( Carrier, From, Event, To, PickupZone ) Carrier:RouteStop() --Cargo:Ungroup() Cargo:__Board( -LoadDelay, CarrierUnit ) - LoadDelay = LoadDelay + Cargo:GetCount() * LoadInterval self:__Board( LoadDelay, Cargo, CarrierUnit, PickupZone ) -- So now this CarrierUnit has Cargo that is being loaded. @@ -279,6 +278,7 @@ function AI_CARGO:onbeforeLoad( Carrier, From, Event, To, PickupZone ) end end + LoadDelay = LoadDelay + Cargo:GetCount() * LoadInterval end @@ -359,7 +359,7 @@ function AI_CARGO:onafterPickedUp( Carrier, From, Event, To, PickupZone ) Carrier:RouteResume() local HasCargo = false - if Carrier and Carrier :IsAlive() then + if Carrier and Carrier:IsAlive() then for Cargo, CarrierUnit in pairs( self.Carrier_Cargo ) do HasCargo = true break @@ -368,6 +368,7 @@ function AI_CARGO:onafterPickedUp( Carrier, From, Event, To, PickupZone ) self.Relocating = false if HasCargo then + self:F( "Transporting" ) self.Transporting = true end @@ -383,11 +384,11 @@ end -- @param #string Event Event. -- @param #string To To state. -- @param Core.Zone#ZONE DeployZone The zone wherein the cargo is deployed. This can be any zone type, like a ZONE, ZONE_GROUP, ZONE_AIRBASE. -function AI_CARGO:onafterUnload( Carrier, From, Event, To, DeployZone ) - self:F( { Carrier, From, Event, To, DeployZone } ) +function AI_CARGO:onafterUnload( Carrier, From, Event, To, DeployZone, Defend ) + self:F( { Carrier, From, Event, To, DeployZone, Defend = Defend } ) - local UnboardInterval = 10 - local UnboardDelay = 10 + local UnboardInterval = 5 + local UnboardDelay = 5 if Carrier and Carrier:IsAlive() then for _, CarrierUnit in pairs( Carrier:GetUnits() ) do @@ -398,8 +399,10 @@ function AI_CARGO:onafterUnload( Carrier, From, Event, To, DeployZone ) if Cargo:IsLoaded() then Cargo:__UnBoard( UnboardDelay ) UnboardDelay = UnboardDelay + Cargo:GetCount() * UnboardInterval - Cargo:SetDeployed( true ) - self:__Unboard( UnboardDelay, Cargo, CarrierUnit, DeployZone ) + self:__Unboard( UnboardDelay, Cargo, CarrierUnit, DeployZone, Defend ) + if not Defend == true then + Cargo:SetDeployed( true ) + end end end end @@ -415,17 +418,17 @@ end -- @param #string To To state. -- @param #string Cargo.Cargo#CARGO Cargo Cargo object. -- @param Core.Zone#ZONE DeployZone The zone wherein the cargo is deployed. This can be any zone type, like a ZONE, ZONE_GROUP, ZONE_AIRBASE. -function AI_CARGO:onafterUnboard( Carrier, From, Event, To, Cargo, CarrierUnit, DeployZone ) - self:F( { Carrier, From, Event, To, Cargo:GetName() } ) +function AI_CARGO:onafterUnboard( Carrier, From, Event, To, Cargo, CarrierUnit, DeployZone, Defend ) + self:F( { Carrier, From, Event, To, Cargo:GetName(), DeployZone = DeployZone, Defend = Defend } ) if Carrier and Carrier:IsAlive() then if not Cargo:IsUnLoaded() then - self:__Unboard( 10, Cargo, CarrierUnit, DeployZone ) + self:__Unboard( 10, Cargo, CarrierUnit, DeployZone, Defend ) return end end - self:Unloaded( Cargo, CarrierUnit, DeployZone ) + self:Unloaded( Cargo, CarrierUnit, DeployZone, Defend ) end @@ -438,8 +441,8 @@ end -- @param #string Cargo.Cargo#CARGO Cargo Cargo object. -- @param #boolean Deployed Cargo is deployed. -- @param Core.Zone#ZONE DeployZone The zone wherein the cargo is deployed. This can be any zone type, like a ZONE, ZONE_GROUP, ZONE_AIRBASE. -function AI_CARGO:onafterUnloaded( Carrier, From, Event, To, Cargo, CarrierUnit, DeployZone ) - self:F( { Carrier, From, Event, To, Cargo:GetName(), DeployZone = DeployZone } ) +function AI_CARGO:onafterUnloaded( Carrier, From, Event, To, Cargo, CarrierUnit, DeployZone, Defend ) + self:F( { Carrier, From, Event, To, Cargo:GetName(), DeployZone = DeployZone, Defend = Defend } ) local AllUnloaded = true @@ -465,7 +468,7 @@ function AI_CARGO:onafterUnloaded( Carrier, From, Event, To, Cargo, CarrierUnit, end if AllUnloaded == true then - self:__Deployed( 5, DeployZone ) + self:__Deployed( 5, DeployZone, Defend ) end end @@ -477,10 +480,14 @@ end -- @param #string Event Event. -- @param #string To To state. -- @param Core.Zone#ZONE DeployZone The zone wherein the cargo is deployed. This can be any zone type, like a ZONE, ZONE_GROUP, ZONE_AIRBASE. -function AI_CARGO:onafterDeployed( Carrier, From, Event, To, DeployZone ) - self:F( { Carrier, From, Event, To, DeployZone = DeployZone } ) +function AI_CARGO:onafterDeployed( Carrier, From, Event, To, DeployZone, Defend ) + self:F( { Carrier, From, Event, To, DeployZone = DeployZone, Defend = Defend } ) + if not Defend == true then self.Transporting = false + else + self:F( "Defending" ) + end end diff --git a/Moose Development/Moose/AI/AI_Cargo_APC.lua b/Moose Development/Moose/AI/AI_Cargo_APC.lua index ace90787d..b390f28d0 100644 --- a/Moose Development/Moose/AI/AI_Cargo_APC.lua +++ b/Moose Development/Moose/AI/AI_Cargo_APC.lua @@ -285,7 +285,7 @@ function AI_CARGO_APC:onafterMonitor( APC, From, Event, To ) else if self:Is( "Loaded" ) then -- There are enemies within combat radius. Unload the CargoCarrier. - self:__Unload( 1 ) + self:__Unload( 1, nil, true ) -- The 2nd parameter is true, which means that the unload is for defending the carrier, not to deploy! else if self:Is( "Unloaded" ) then self:Follow() @@ -449,12 +449,12 @@ end -- @param #string Event Event. -- @param #string To To state. -- @param Core.Zone#ZONE DeployZone The zone wherein the cargo is deployed. This can be any zone type, like a ZONE, ZONE_GROUP, ZONE_AIRBASE. -function AI_CARGO_APC:onafterDeployed( APC, From, Event, To, DeployZone ) - self:F( { APC, From, Event, To, DeployZone = DeployZone } ) +function AI_CARGO_APC:onafterDeployed( APC, From, Event, To, DeployZone, Defend ) + self:F( { APC, From, Event, To, DeployZone = DeployZone, Defend = Defend } ) self:__Guard( 0.1 ) - self:GetParent( self, AI_CARGO_APC ).onafterDeployed( self, APC, From, Event, To, DeployZone ) + self:GetParent( self, AI_CARGO_APC ).onafterDeployed( self, APC, From, Event, To, DeployZone, Defend ) end diff --git a/Moose Development/Moose/Cargo/CargoUnit.lua b/Moose Development/Moose/Cargo/CargoUnit.lua index ffd4742f9..bbdce8c57 100644 --- a/Moose Development/Moose/Cargo/CargoUnit.lua +++ b/Moose Development/Moose/Cargo/CargoUnit.lua @@ -231,8 +231,8 @@ do -- CARGO_UNIT local MaxSpeed = Desc.speedMaxOffRoad local TypeName = Desc.typeName - self:T( self.CargoInAir ) - + --self:F({Unit=self.CargoObject:GetName()}) + -- Only move the group to the carrier when the cargo is not in the air -- (eg. cargo can be on a oil derrick, moving the cargo on the oil derrick will drop the cargo on the sea). if not self.CargoInAir then @@ -286,18 +286,19 @@ do -- CARGO_UNIT function CARGO_UNIT:onafterBoarding( From, Event, To, CargoCarrier, NearRadius, ... ) self:F( { From, Event, To, CargoCarrier:GetName(), NearRadius = NearRadius } ) + --self:F({Unit=self.CargoObject:GetName()}) - if CargoCarrier and CargoCarrier:IsAlive() and self.CargoObject and self.CargoObject:IsAlive() then + if CargoCarrier and CargoCarrier:IsAlive() then -- and self.CargoObject and self.CargoObject:IsAlive() then if (CargoCarrier:IsAir() and not CargoCarrier:InAir()) or true then local NearRadius = NearRadius or CargoCarrier:GetBoundingRadius( NearRadius ) + 5 if self:IsNear( CargoCarrier:GetPointVec2(), NearRadius ) then self:__Load( 1, CargoCarrier, ... ) else if self:IsNear( CargoCarrier:GetPointVec2(), 20 ) then - self:__Boarding( -1, CargoCarrier, NearRadius, ... ) + self:__Boarding( 1, CargoCarrier, NearRadius, ... ) self.RunCount = self.RunCount + 1 else - self:__Boarding( -2, CargoCarrier, NearRadius, ... ) + self:__Boarding( 2, CargoCarrier, NearRadius, ... ) self.RunCount = self.RunCount + 2 end if self.RunCount >= 40 then @@ -306,6 +307,8 @@ do -- CARGO_UNIT local Angle = 180 local Distance = 0 + --self:F({Unit=self.CargoObject:GetName()}) + local CargoCarrierPointVec2 = CargoCarrier:GetPointVec2() local CargoCarrierHeading = CargoCarrier:GetHeading() -- Get Heading of object in degrees. local CargoDeployHeading = ( ( CargoCarrierHeading + Angle ) >= 360 ) and ( CargoCarrierHeading + Angle - 360 ) or ( CargoCarrierHeading + Angle ) @@ -368,10 +371,11 @@ do -- CARGO_UNIT self.CargoCarrier = CargoCarrier - -- Only destroy the CargoObject is if there is a CargoObject (packages don't have CargoObjects). + --self:F({Unit=self.CargoObject:GetName()}) + + -- Only destroy the CargoObject if there is a CargoObject (packages don't have CargoObjects). if self.CargoObject then - self:T("Destroying") - self.CargoObject:Destroy() + self.CargoObject:Destroy( false ) --self.CargoObject:ReSpawnAt( COORDINATE:NewFromVec2( {x=0,y=0} ), 0 ) end end diff --git a/Moose Development/Moose/Core/UserFlag.lua b/Moose Development/Moose/Core/UserFlag.lua index f20a26303..88c1d0f60 100644 --- a/Moose Development/Moose/Core/UserFlag.lua +++ b/Moose Development/Moose/Core/UserFlag.lua @@ -57,8 +57,6 @@ do -- UserFlag -- function USERFLAG:Set( Number ) --R2.3 - self:F( { Number = Number } ) - trigger.action.setUserFlag( self.UserFlagName, Number ) return self