diff --git a/Moose Development/Dcs/DCSland.lua b/Moose Development/Dcs/DCSland.lua index 3ee695bdf..1f79991bc 100644 --- a/Moose Development/Dcs/DCSland.lua +++ b/Moose Development/Dcs/DCSland.lua @@ -17,4 +17,10 @@ -- @param #Vec2 point point on the ground. -- @return DCSTypes#Distance +--- returns surface type at the given point. +-- @function [parent=#land] getSurfaceType +-- @param #Vec2 point Point on the land. +-- @return #land.SurfaceType + + land = {} --#land \ No newline at end of file diff --git a/Moose Development/Moose/AirbasePolice.lua b/Moose Development/Moose/AirbasePolice.lua new file mode 100644 index 000000000..890722a38 --- /dev/null +++ b/Moose Development/Moose/AirbasePolice.lua @@ -0,0 +1,90 @@ + +--- @type AIRBASEPOLICE +-- @field Set#SET_CLIENT SetClient +-- @extends Base#BASE + +AIRBASEPOLICE = { + ClassName = "AIRBASEPOLICE", + PolygonsTaxiways = {}, + PolygonsRunways = {}, +} + +--- Creates a new AIRBASEPOLICE object. +-- @param #AIRBASEPOLICE self +-- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. +-- @return #AIRBASEPOLICE self +function AIRBASEPOLICE:New( SetClient ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + self.SetClient = SetClient + + local PolygonBatumiTaxiwaysGroup1 = GROUP:FindByName( "Polygon Batumi Taxiway 1" ) + self.PolygonsTaxiways[#self.PolygonsTaxiways+1] = ZONE_POLYGON:New( "Batumi Taxiway", PolygonBatumiTaxiwaysGroup1 ):SmokeZone(POINT_VEC3.SmokeColor.White) + + local PolygonBatumiRunwaysGroup1 = GROUP:FindByName( "Polygon Batumi Runway 1" ) + self.PolygonsRunways[#self.PolygonsRunways+1] = ZONE_POLYGON:New( "Batumi Runway", PolygonBatumiRunwaysGroup1 ):SmokeZone(POINT_VEC3.SmokeColor.Red) + + self.SetClient:ForEachClient( + + --- @param Client#CLIENT Client + function( Client ) + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0) + end + + ) + self.AirbaseMonitor = SCHEDULER:New( self, self._AirbaseMonitor, {}, 0, 5, 0 ) + + return self +end + +--- @param #AIRBASEPOLICE self +function AIRBASEPOLICE:_AirbaseMonitor() + + for PolygonTaxiID, PolygonTaxi in pairs( self.PolygonsTaxi ) do + self.SetClient:ForEachClientInZone( PolygonTaxi, + + --- @param Client#CLIENT Client + function( Client ) + if Client:IsAlive() then + local VelocityVec3 = Client:GetVelocity() + local Velocity = math.abs(VelocityVec3.x) + math.abs(VelocityVec3.y) + math.abs(VelocityVec3.z) + Client:Message( "Velocity:" .. Velocity, 1, "Test", "Police" ) + local IsAboveRunway = Client:IsAboveRunway() + local IsOnGround = Client:InAir() == false + self:T( IsAboveRunway, IsOnGround ) + if IsAboveRunway and IsOnGround then + if Velocity > 10 then + local IsSpeeding = Client:GetState( self, "Speeding" ) + if IsSpeeding == true then + local SpeedingWarnings = Client:GetState( self, "Warnings" ) + self:T( SpeedingWarnings ) + if SpeedingWarnings <= 5 then + Client:Message( "You are speeding on the taxiway! Slow down or you will be removed from this airbase! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Speeding", "Warning " .. SpeedingWarnings .. " / 5" ) + Client:SetState( self, "Warnings", SpeedingWarnings + 1 ) + else + MESSAGE:New( "Player " .. Client:GetPlayerName() .. " has been removed from the airbase, due to a speeding violation ...", 10, "Airbase Police" ):ToAll() + Client:GetGroup():Destroy() + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0 ) + end + else + Client:Message( "You are speeding on the taxiway! Slow down please ...! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Speeding", "Attention! " ) + Client:SetState( self, "Speeding", true ) + Client:SetState( self, "Warnings", 1 ) + end + else + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0 ) + end + end + end + end + + ) + end + return true +end + diff --git a/Moose Development/Moose/Moose.lua b/Moose Development/Moose/Moose.lua index f01a5b380..f6f3cafe8 100644 --- a/Moose Development/Moose/Moose.lua +++ b/Moose Development/Moose/Moose.lua @@ -36,6 +36,7 @@ Include.File( "Sead" ) Include.File( "Escort" ) Include.File( "MissileTrainer" ) Include.File( "AIBalancer" ) +Include.File( "AirbasePolice" ) diff --git a/Moose Development/Moose/Set.lua b/Moose Development/Moose/Set.lua index ea3152776..412d4af52 100644 --- a/Moose Development/Moose/Set.lua +++ b/Moose Development/Moose/Set.lua @@ -1464,14 +1464,14 @@ end -- @param Zone#ZONE ZoneObject The Zone to be tested for. -- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. -- @return #SET_CLIENT self -function SET_CLIENT:ForEachClientCompletelyInZone( ZoneObject, IteratorFunction, ... ) +function SET_CLIENT:ForEachClientInZone( ZoneObject, IteratorFunction, ... ) self:F2( arg ) self:ForEach( IteratorFunction, arg, self.Set, --- @param Zone#ZONE_BASE ZoneObject -- @param Client#CLIENT ClientObject function( ZoneObject, ClientObject ) - if ClientObject:IsCompletelyInZone( ZoneObject ) then + if ClientObject:IsInZone( ZoneObject ) then return true else return false diff --git a/Moose Development/Moose/Unit.lua b/Moose Development/Moose/Unit.lua index b01ed3c63..62bc18225 100644 --- a/Moose Development/Moose/Unit.lua +++ b/Moose Development/Moose/Unit.lua @@ -256,6 +256,30 @@ function UNIT:IsActive() return nil end +--- Returns if the unit is located above a runway. +-- @param Unit#UNIT self +-- @return #boolean true if Unit is above a runway. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:IsAboveRunway() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSUnit() + + if DCSUnit then + + local PointVec2 = self:GetPointVec2() + local SurfaceType = land.getSurfaceType( PointVec2 ) + local IsAboveRunway = SurfaceType == land.SurfaceType.RUNWAY + + self:T2( IsAboveRunway ) + return IsAboveRunway + end + + return nil +end + + + --- Returns name of the player that control the unit or nil if the unit is controlled by A.I. -- @param Unit#UNIT self -- @return #string Player Name @@ -324,7 +348,7 @@ function UNIT:GetGroup() local DCSUnit = self:GetDCSUnit() if DCSUnit then - local UnitGroup = DCSUnit:getGroup() + local UnitGroup = GROUP:Find( DCSUnit:getGroup() ) return UnitGroup end diff --git a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua index 682e1f28d..933781380 100644 --- a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua +++ b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE STATIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20160611_1029' ) +env.info( 'Moose Generation Timestamp: 20160611_2126' ) local base = _G Include = {} @@ -7099,6 +7099,30 @@ function UNIT:IsActive() return nil end +--- Returns if the unit is located above a runway. +-- @param Unit#UNIT self +-- @return #boolean true if Unit is above a runway. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:IsAboveRunway() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSUnit() + + if DCSUnit then + + local PointVec2 = self:GetPointVec2() + local SurfaceType = land.getSurfaceType( PointVec2 ) + local IsAboveRunway = SurfaceType == land.SurfaceType.RUNWAY + + self:T2( IsAboveRunway ) + return IsAboveRunway + end + + return nil +end + + + --- Returns name of the player that control the unit or nil if the unit is controlled by A.I. -- @param Unit#UNIT self -- @return #string Player Name @@ -7167,7 +7191,7 @@ function UNIT:GetGroup() local DCSUnit = self:GetDCSUnit() if DCSUnit then - local UnitGroup = DCSUnit:getGroup() + local UnitGroup = GROUP:Find( DCSUnit:getGroup() ) return UnitGroup end @@ -10871,14 +10895,14 @@ end -- @param Zone#ZONE ZoneObject The Zone to be tested for. -- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. -- @return #SET_CLIENT self -function SET_CLIENT:ForEachClientCompletelyInZone( ZoneObject, IteratorFunction, ... ) +function SET_CLIENT:ForEachClientInZone( ZoneObject, IteratorFunction, ... ) self:F2( arg ) self:ForEach( IteratorFunction, arg, self.Set, --- @param Zone#ZONE_BASE ZoneObject -- @param Client#CLIENT ClientObject function( ZoneObject, ClientObject ) - if ClientObject:IsCompletelyInZone( ZoneObject ) then + if ClientObject:IsInZone( ZoneObject ) then return true else return false @@ -11219,6 +11243,7 @@ Include.File( "Sead" ) Include.File( "Escort" ) Include.File( "MissileTrainer" ) Include.File( "AIBalancer" ) +Include.File( "AirbasePolice" ) @@ -20027,4 +20052,94 @@ end + +--- @type AIRBASEPOLICE +-- @field Set#SET_CLIENT SetClient +-- @extends Base#BASE + +AIRBASEPOLICE = { + ClassName = "AIRBASEPOLICE", + PolygonsTaxiways = {}, + PolygonsRunways = {}, +} + +--- Creates a new AIRBASEPOLICE object. +-- @param #AIRBASEPOLICE self +-- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. +-- @return #AIRBASEPOLICE self +function AIRBASEPOLICE:New( SetClient ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + self.SetClient = SetClient + + local PolygonBatumiTaxiwaysGroup1 = GROUP:FindByName( "Polygon Batumi Taxiway 1" ) + self.PolygonsTaxiways[#self.PolygonsTaxiways+1] = ZONE_POLYGON:New( "Batumi Taxiway", PolygonBatumiTaxiwaysGroup1 ):SmokeZone(POINT_VEC3.SmokeColor.White) + + local PolygonBatumiRunwaysGroup1 = GROUP:FindByName( "Polygon Batumi Runway 1" ) + self.PolygonsRunways[#self.PolygonsRunways+1] = ZONE_POLYGON:New( "Batumi Runway", PolygonBatumiRunwaysGroup1 ):SmokeZone(POINT_VEC3.SmokeColor.Red) + + self.SetClient:ForEachClient( + + --- @param Client#CLIENT Client + function( Client ) + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0) + end + + ) + self.AirbaseMonitor = SCHEDULER:New( self, self._AirbaseMonitor, {}, 0, 5, 0 ) + + return self +end + +--- @param #AIRBASEPOLICE self +function AIRBASEPOLICE:_AirbaseMonitor() + + for PolygonTaxiID, PolygonTaxi in pairs( self.PolygonsTaxi ) do + self.SetClient:ForEachClientInZone( PolygonTaxi, + + --- @param Client#CLIENT Client + function( Client ) + if Client:IsAlive() then + local VelocityVec3 = Client:GetVelocity() + local Velocity = math.abs(VelocityVec3.x) + math.abs(VelocityVec3.y) + math.abs(VelocityVec3.z) + Client:Message( "Velocity:" .. Velocity, 1, "Test", "Police" ) + local IsAboveRunway = Client:IsAboveRunway() + local IsOnGround = Client:InAir() == false + self:T( IsAboveRunway, IsOnGround ) + if IsAboveRunway and IsOnGround then + if Velocity > 10 then + local IsSpeeding = Client:GetState( self, "Speeding" ) + if IsSpeeding == true then + local SpeedingWarnings = Client:GetState( self, "Warnings" ) + self:T( SpeedingWarnings ) + if SpeedingWarnings <= 5 then + Client:Message( "You are speeding on the taxiway! Slow down or you will be removed from this airbase! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Speeding", "Warning " .. SpeedingWarnings .. " / 5" ) + Client:SetState( self, "Warnings", SpeedingWarnings + 1 ) + else + MESSAGE:New( "Player " .. Client:GetPlayerName() .. " has been removed from the airbase, due to a speeding violation ...", 10, "Airbase Police" ):ToAll() + Client:GetGroup():Destroy() + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0 ) + end + else + Client:Message( "You are speeding on the taxiway! Slow down please ...! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Speeding", "Attention! " ) + Client:SetState( self, "Speeding", true ) + Client:SetState( self, "Warnings", 1 ) + end + else + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0 ) + end + end + end + end + + ) + end + return true +end + env.info( '*** MOOSE INCLUDE END *** ' ) diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index 682e1f28d..933781380 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE STATIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20160611_1029' ) +env.info( 'Moose Generation Timestamp: 20160611_2126' ) local base = _G Include = {} @@ -7099,6 +7099,30 @@ function UNIT:IsActive() return nil end +--- Returns if the unit is located above a runway. +-- @param Unit#UNIT self +-- @return #boolean true if Unit is above a runway. +-- @return #nil The DCS Unit is not existing or alive. +function UNIT:IsAboveRunway() + self:F2( self.UnitName ) + + local DCSUnit = self:GetDCSUnit() + + if DCSUnit then + + local PointVec2 = self:GetPointVec2() + local SurfaceType = land.getSurfaceType( PointVec2 ) + local IsAboveRunway = SurfaceType == land.SurfaceType.RUNWAY + + self:T2( IsAboveRunway ) + return IsAboveRunway + end + + return nil +end + + + --- Returns name of the player that control the unit or nil if the unit is controlled by A.I. -- @param Unit#UNIT self -- @return #string Player Name @@ -7167,7 +7191,7 @@ function UNIT:GetGroup() local DCSUnit = self:GetDCSUnit() if DCSUnit then - local UnitGroup = DCSUnit:getGroup() + local UnitGroup = GROUP:Find( DCSUnit:getGroup() ) return UnitGroup end @@ -10871,14 +10895,14 @@ end -- @param Zone#ZONE ZoneObject The Zone to be tested for. -- @param #function IteratorFunction The function that will be called when there is an alive CLIENT in the SET_CLIENT. The function needs to accept a CLIENT parameter. -- @return #SET_CLIENT self -function SET_CLIENT:ForEachClientCompletelyInZone( ZoneObject, IteratorFunction, ... ) +function SET_CLIENT:ForEachClientInZone( ZoneObject, IteratorFunction, ... ) self:F2( arg ) self:ForEach( IteratorFunction, arg, self.Set, --- @param Zone#ZONE_BASE ZoneObject -- @param Client#CLIENT ClientObject function( ZoneObject, ClientObject ) - if ClientObject:IsCompletelyInZone( ZoneObject ) then + if ClientObject:IsInZone( ZoneObject ) then return true else return false @@ -11219,6 +11243,7 @@ Include.File( "Sead" ) Include.File( "Escort" ) Include.File( "MissileTrainer" ) Include.File( "AIBalancer" ) +Include.File( "AirbasePolice" ) @@ -20027,4 +20052,94 @@ end + +--- @type AIRBASEPOLICE +-- @field Set#SET_CLIENT SetClient +-- @extends Base#BASE + +AIRBASEPOLICE = { + ClassName = "AIRBASEPOLICE", + PolygonsTaxiways = {}, + PolygonsRunways = {}, +} + +--- Creates a new AIRBASEPOLICE object. +-- @param #AIRBASEPOLICE self +-- @param SetClient A SET_CLIENT object that will contain the CLIENT objects to be monitored if they follow the rules of the airbase. +-- @return #AIRBASEPOLICE self +function AIRBASEPOLICE:New( SetClient ) + + -- Inherits from BASE + local self = BASE:Inherit( self, BASE:New() ) + + self.SetClient = SetClient + + local PolygonBatumiTaxiwaysGroup1 = GROUP:FindByName( "Polygon Batumi Taxiway 1" ) + self.PolygonsTaxiways[#self.PolygonsTaxiways+1] = ZONE_POLYGON:New( "Batumi Taxiway", PolygonBatumiTaxiwaysGroup1 ):SmokeZone(POINT_VEC3.SmokeColor.White) + + local PolygonBatumiRunwaysGroup1 = GROUP:FindByName( "Polygon Batumi Runway 1" ) + self.PolygonsRunways[#self.PolygonsRunways+1] = ZONE_POLYGON:New( "Batumi Runway", PolygonBatumiRunwaysGroup1 ):SmokeZone(POINT_VEC3.SmokeColor.Red) + + self.SetClient:ForEachClient( + + --- @param Client#CLIENT Client + function( Client ) + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0) + end + + ) + self.AirbaseMonitor = SCHEDULER:New( self, self._AirbaseMonitor, {}, 0, 5, 0 ) + + return self +end + +--- @param #AIRBASEPOLICE self +function AIRBASEPOLICE:_AirbaseMonitor() + + for PolygonTaxiID, PolygonTaxi in pairs( self.PolygonsTaxi ) do + self.SetClient:ForEachClientInZone( PolygonTaxi, + + --- @param Client#CLIENT Client + function( Client ) + if Client:IsAlive() then + local VelocityVec3 = Client:GetVelocity() + local Velocity = math.abs(VelocityVec3.x) + math.abs(VelocityVec3.y) + math.abs(VelocityVec3.z) + Client:Message( "Velocity:" .. Velocity, 1, "Test", "Police" ) + local IsAboveRunway = Client:IsAboveRunway() + local IsOnGround = Client:InAir() == false + self:T( IsAboveRunway, IsOnGround ) + if IsAboveRunway and IsOnGround then + if Velocity > 10 then + local IsSpeeding = Client:GetState( self, "Speeding" ) + if IsSpeeding == true then + local SpeedingWarnings = Client:GetState( self, "Warnings" ) + self:T( SpeedingWarnings ) + if SpeedingWarnings <= 5 then + Client:Message( "You are speeding on the taxiway! Slow down or you will be removed from this airbase! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Speeding", "Warning " .. SpeedingWarnings .. " / 5" ) + Client:SetState( self, "Warnings", SpeedingWarnings + 1 ) + else + MESSAGE:New( "Player " .. Client:GetPlayerName() .. " has been removed from the airbase, due to a speeding violation ...", 10, "Airbase Police" ):ToAll() + Client:GetGroup():Destroy() + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0 ) + end + else + Client:Message( "You are speeding on the taxiway! Slow down please ...! Your current velocity is " .. string.format( "%2.0f km/h", Velocity ), 5, "Speeding", "Attention! " ) + Client:SetState( self, "Speeding", true ) + Client:SetState( self, "Warnings", 1 ) + end + else + Client:SetState( self, "Speeding", false ) + Client:SetState( self, "Warnings", 0 ) + end + end + end + end + + ) + end + return true +end + env.info( '*** MOOSE INCLUDE END *** ' ) diff --git a/Moose Test Missions/Moose_Test_AIBALANCER/Moose_Test_AIBALANCER.miz b/Moose Test Missions/Moose_Test_AIBALANCER/Moose_Test_AIBALANCER.miz index c21694b02..fb26097cf 100644 Binary files a/Moose Test Missions/Moose_Test_AIBALANCER/Moose_Test_AIBALANCER.miz and b/Moose Test Missions/Moose_Test_AIBALANCER/Moose_Test_AIBALANCER.miz differ diff --git a/Moose Test Missions/Moose_Test_AIRBASEPOLICE/Moose_Test_AIRBASEPOLICE.lua b/Moose Test Missions/Moose_Test_AIRBASEPOLICE/Moose_Test_AIRBASEPOLICE.lua new file mode 100644 index 000000000..125ebd4c3 --- /dev/null +++ b/Moose Test Missions/Moose_Test_AIRBASEPOLICE/Moose_Test_AIRBASEPOLICE.lua @@ -0,0 +1,6 @@ + +local PlanesClientSet = SET_CLIENT:New():FilterCategories( "plane" ):FilterStart() +local AirbasePolice = AIRBASEPOLICE:New( PlanesClientSet ) + +local PolygonBatumiTaxiwaysGroup1 = GROUP:FindByName( "Polygon Batumi Taxiways" ) +local PolygonBatumiTaxi = ZONE_POLYGON:New( "Batumi Taxi", PolygonBatumiTaxiwaysGroup1 ):SmokeZone(POINT_VEC3.SmokeColor.White) diff --git a/Moose Test Missions/Moose_Test_AIRBASEPOLICE/Moose_Test_AIRBASEPOLICE.miz b/Moose Test Missions/Moose_Test_AIRBASEPOLICE/Moose_Test_AIRBASEPOLICE.miz new file mode 100644 index 000000000..67a99043e Binary files /dev/null and b/Moose Test Missions/Moose_Test_AIRBASEPOLICE/Moose_Test_AIRBASEPOLICE.miz differ diff --git a/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz b/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz index 47c6aeae9..ab3b0f3cc 100644 Binary files a/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz and b/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz differ diff --git a/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz b/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz index b6c19b6b2..319727925 100644 Binary files a/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz and b/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz differ diff --git a/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz b/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz index d41754fea..cb5417027 100644 Binary files a/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz and b/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz differ diff --git a/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz b/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz index 1159ed374..3c0edf56d 100644 Binary files a/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz and b/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz differ diff --git a/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz b/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz index 434a9bfa9..5279060ca 100644 Binary files a/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz and b/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz differ diff --git a/Moose Test Missions/Moose_Test_SET_CLIENT/Moose_Test_SET_CLIENT.miz b/Moose Test Missions/Moose_Test_SET_CLIENT/Moose_Test_SET_CLIENT.miz index 2be17fd06..04d82e283 100644 Binary files a/Moose Test Missions/Moose_Test_SET_CLIENT/Moose_Test_SET_CLIENT.miz and b/Moose Test Missions/Moose_Test_SET_CLIENT/Moose_Test_SET_CLIENT.miz differ diff --git a/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz b/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz index a540aa486..35d86e4b7 100644 Binary files a/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz and b/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz differ diff --git a/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz b/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz index 3993273fc..d7735a669 100644 Binary files a/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz and b/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz differ diff --git a/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.miz b/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.miz index 3c2b20441..4ce0ce425 100644 Binary files a/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.miz and b/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.miz differ diff --git a/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz b/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz index 67b00dcdc..41e55a7a3 100644 Binary files a/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz and b/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz differ diff --git a/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz b/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz index 32c402323..e4eb477c6 100644 Binary files a/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz and b/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz differ diff --git a/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz b/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz index 7983e03c9..33d389d8f 100644 Binary files a/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz and b/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz differ diff --git a/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.miz b/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.miz index d6e5f0e3b..ffbab5ff2 100644 Binary files a/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.miz and b/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.miz differ diff --git a/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz b/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz index 6491eabea..18648eab5 100644 Binary files a/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz and b/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz differ diff --git a/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz b/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz index 0ddb42abd..af80e8074 100644 Binary files a/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz and b/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz differ