Files
PathOfBuilding/Export/Scripts/mods.lua
2020-12-03 23:43:45 +01:00

99 lines
3.4 KiB
Lua

if not loadStatFile then
dofile("statdesc.lua")
end
loadStatFile("stat_descriptions.txt")
function table.containsId(table, element)
for _, value in pairs(table) do
if value.Id == element then
return true
end
end
return false
end
local function writeMods(outName, condFunc)
local out = io.open(outName, "w")
out:write('-- This file is automatically generated, do not edit!\n')
out:write('-- Item data (c) Grinding Gear Games\n\nreturn {\n')
for mod in dat("Mods"):Rows() do
if condFunc(mod) then
if mod.Domain == 16 and string.match(outName, "Item") then
if mod.SpawnTags[1].Id == "abyss_jewel" and mod.SpawnTags[2].Id == "jewel" and #mod.SpawnTags == 3 then
goto continue
end
elseif mod.Domain == 16 and string.match(outName, "JewelAbyss") then
if not table.containsId(mod.SpawnTags, "abyss_jewel") then
print("baz")
goto continue
end
elseif mod.Domain == 16 and string.match(outName, "Jewel") then
if not table.containsId(mod.SpawnTags, "jewel") then
print("qux")
goto continue
end
end
local stats, orders = describeMod(mod)
if #orders > 0 then
out:write('\t["', mod.Id, '"] = { ')
if mod.GenerationType == 1 then
out:write('type = "Prefix", ')
elseif mod.GenerationType == 2 then
out:write('type = "Suffix", ')
elseif mod.GenerationType == 5 then
out:write('type = "Corrupted", ')
end
out:write('affix = "', mod.Name, '", ')
out:write('"', table.concat(stats, '", "'), '", ')
out:write('statOrderKey = "', table.concat(orders, ','), '", ')
out:write('statOrder = { ', table.concat(orders, ', '), ' }, ')
out:write('level = ', mod.Level, ', group = "', mod.Family, '", ')
out:write('weightKey = { ')
for _, tag in ipairs(mod.SpawnTags) do
out:write('"', tag.Id, '", ')
end
out:write('}, ')
out:write('weightVal = { ', table.concat(mod.SpawnWeights, ', '), ' }, ')
out:write('weightMultiplierKey = { ')
for _, tag in ipairs(mod.GenerationWeightTags) do
out:write('"', tag.Id, '", ')
end
out:write('}, ')
out:write('weightMultiplierVal = { ', table.concat(mod.GenerationWeightValues, ', '), ' }, ')
if mod.Tags[1] then
out:write('tags = { ')
for _, tag in ipairs(mod.Tags) do
out:write('"', tag.Id, '", ')
end
out:write('}, ')
end
out:write('modTags = { ', stats.modTags, ' }, ')
out:write('},\n')
else
print("Mod '"..mod.Id.."' has no stats")
end
end
::continue::
end
out:write('}')
out:close()
end
writeMods("../Data/ModItem.lua", function(mod)
return (mod.Domain == 1 or mod.Domain == 16) and (mod.GenerationType == 1 or mod.GenerationType == 2 or mod.GenerationType == 5)
end)
writeMods("../Data/ModFlask.lua", function(mod)
return mod.Domain == 2 and (mod.GenerationType == 1 or mod.GenerationType == 2)
end)
writeMods("../Data/ModJewel.lua", function(mod)
return (mod.Domain == 10 or mod.Domain == 16) and (mod.GenerationType == 1 or mod.GenerationType == 2 or mod.GenerationType == 5)
end)
writeMods("../Data/ModJewelAbyss.lua", function(mod)
return (mod.Domain == 13 or mod.Domain == 16) and (mod.GenerationType == 1 or mod.GenerationType == 2 or mod.GenerationType == 5)
end)
writeMods("../Data/ModJewelCluster.lua", function(mod)
return mod.Domain == 21 and (mod.GenerationType == 1 or mod.GenerationType == 2 or mod.GenerationType == 5)
end)
print("Mods exported.")