2025-07-31 11:02:03 +02:00

96 lines
4.1 KiB
Lua

-- ====================================================================================
-- DCSEX.UNITNAMESMAKER - GENERATE CREDIBLE AND UNIT NAMES FOR UNIT GROUPS
-- ====================================================================================
DCSEx.unitNamesMaker = {}
do
local function getSectionNameSuffixAir()
return DCSEx.table.getRandom({"squadron", "wing"})
end
local function getSectionNameSuffixGround()
return DCSEx.table.getRandom({"bataillon", "brigade", "corps", "division", "regiment"})
end
local function getSectionNameSuffixNaval()
return DCSEx.table.getRandom({"fleet", "force"})
end
local function getDefaultSectionName()
return "unit "..getSectionNameSuffixGround()
end
local function getNameByDesc(unitDesc)
if not unitDesc then return getDefaultSectionName() end
if unitDesc.attributes["UAVs"] then
return DCSEx.table.getRandom({"unmanned"}).." "..getSectionNameSuffixAir()
end
if unitDesc.attributes["Bombers"] then
return DCSEx.table.getRandom({"bomber"}).." "..getSectionNameSuffixAir()
end
if unitDesc.attributes["Fighters"] or unitDesc.attributes["Interceptors"] or unitDesc.attributes["Battle airplanes"] then
return DCSEx.table.getRandom({"fighter", "fighting"}).." "..getSectionNameSuffixAir()
end
if unitDesc.attributes["Planes"] then
return DCSEx.table.getRandom({"air", "cargo", "transport"}).." "..getSectionNameSuffixAir()
end
if unitDesc.attributes["Attack helicopters"] then
return DCSEx.table.getRandom({"assault", "rotary"}).." "..getSectionNameSuffixAir()
end
if unitDesc.attributes["Helicopters"] then
return DCSEx.table.getRandom({"tactical"}).." "..getSectionNameSuffixAir()
end
if unitDesc.attributes["Aircraft Carriers"] then
return DCSEx.table.getRandom({"carrier"}).." "..getSectionNameSuffixNaval()
end
if unitDesc.attributes["Unarmed ships"] then
return DCSEx.table.getRandom({"cargo", "logistical"}).." "..getSectionNameSuffixNaval()
end
if unitDesc.attributes["Ships"] then
return DCSEx.table.getRandom({"expeditionary", "assault"}).." "..getSectionNameSuffixNaval()
end
if unitDesc.attributes["MANPADS AUX"] or unitDesc.attributes["MANPADS"] or unitDesc.attributes["Armed Air Defence"] or unitDesc.attributes["SAM elements"] or unitDesc.attributes["SAM related"] or unitDesc.attributes["SAM"] then
return DCSEx.table.getRandom({"air defense"}).." "..getSectionNameSuffixGround()
end
if unitDesc.attributes["Tanks"] or unitDesc.attributes["HeavyArmoredUnits"] or unitDesc.attributes["LightArmoredUnits"] then
return DCSEx.table.getRandom({"armor", "heavy"}).." "..getSectionNameSuffixGround()
end
if unitDesc.attributes["LightArmoredUnits"] then
return DCSEx.table.getRandom({"armored", "mechanized"}).." "..getSectionNameSuffixGround()
end
if unitDesc.attributes["Ground vehicles"] then
return DCSEx.table.getRandom({"engineer","logistical","support","tactical"}).." "..getSectionNameSuffixGround()
end
if unitDesc.attributes["Infantry"] then
return DCSEx.table.getRandom({"infantry"}).." "..getSectionNameSuffixGround()
end
return getDefaultSectionName()
end
function DCSEx.unitNamesMaker.getName(groupID, unitTypes)
local nameNumber = tostring(groupID)
if (nameNumber:sub(-1) == "1") then nameNumber = nameNumber.."st"
elseif (nameNumber:sub(-1) == "2") then nameNumber = nameNumber.."nd"
elseif (nameNumber:sub(-1) == "3") then nameNumber = nameNumber.."rd"
else nameNumber = nameNumber.."th"
end
local nameSection = getDefaultSectionName()
if unitTypes and #unitTypes > 0 then
local desc = Unit.getDescByName(unitTypes[1])
if desc then
nameSection = getNameByDesc(desc)
end
end
return nameNumber.." "..nameSection
end
end