80 lines
3.1 KiB
Lua

-- ====================================================================================
-- TUM.MIZCLEANER - REMOVED UNWANTED UNIT GROUPS FROM THE MIZ FILE
-- ====================================================================================
-- (local) removeAIAircraftOnLandEvent(event)
-- (local) removeAIWingmen()
-- TUM.mizCleaner.onStartUp()
-- TUM.mizCleaner.onEvent(event)
-- ====================================================================================
TUM.mizCleaner = {}
do
-------------------------------------
-- If event is an AI aircraft land event, remove it so it "frees room" (e.g. don't occupy an "air force unit" slot) for new aircraft
-- @param event A DCS World event, possibly a S_EVENT_LAND event
-------------------------------------
local function removeAIAircraftOnLandEvent(event)
if not event.initiator then return end
if Object.getCategory(event.initiator) ~= Object.Category.UNIT then return end -- Not an unit
if event.initiator:getPlayerName() then return end -- Don't remove player aircraft, that would cause horrendous bugs
event.initiator:destroy()
end
-------------------------------------
-- Removes all AI wingmen units
-------------------------------------
local function removeAIWingmen()
local groups = DCSEx.envMission.getGroups(TUM.settings.getPlayerCoalition())
local aiWingMenToRemove = {}
for _,g in ipairs(groups) do
if g.units then
local isPlayerGroup = false
for _,u in ipairs(g.units) do
if u.skill == "Player" or u.skill == "Client" then
isPlayerGroup = true
end
end
if isPlayerGroup then
for _,u in ipairs(g.units) do
if u.skill ~= "Player" and u.skill ~= "Client" then
table.insert(aiWingMenToRemove, u.unitId)
end
end
end
end
end
if #aiWingMenToRemove > 0 then
for _,id in ipairs(aiWingMenToRemove) do
local u = DCSEx.world.getUnitByID(id)
if u then u:destroy() end
end
TUM.log("Removed "..tostring(#aiWingMenToRemove).." AI wingmen from the mission.\nPlease do not add AI wingmen to the mission, The Universal Mission relies on its own wingman system.", TUM.logger.logLevel.WARNING)
end
end
-------------------------------------
-- Called on mission start up
-- @return True if started up properly, false if an error happened
-------------------------------------
function TUM.mizCleaner.onStartUp()
removeAIWingmen()
return true
end
-------------------------------------
-- Called when an event is raised
-- @param event The DCS World event
-------------------------------------
function TUM.mizCleaner.onEvent(event)
if event.id == world.event.S_EVENT_LAND and event.place then
removeAIAircraftOnLandEvent(event)
end
end
end