You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
foundryvtt-wh4-lang-fr-fr/tools/foundry_wh4_bestiary_french...

110 lines
3.5 KiB

package.path = package.path .. ";luajson/?.lua"
local JSON = require"json"
local path_in = "/home/sigmar/work/foundryvtt/WFRP-4th-Edition-FoundryVTT/packs/"
local traitsf = "/home/sigmar/work/foundryvtt/foundryvtt-wh4-lang-fr-fr/compendium/wfrp4e.traits.json"
local beastsf = "/home/sigmar/work/foundryvtt/foundryvtt-wh4-lang-fr-fr/compendium/wfrp4e.bestiary.json"
local f1 = io.open(path_in .. "bestiary.db")
local f2 = io.open(traitsf)
local strjson = f2:read("*a")
f2:close()
local traits = JSON.decode(strjson)
local f3 = io.open(beastsf)
local beastjson = f3:read("*a")
f3:close()
local beast_french = JSON.decode(beastjson)
local function trim1(s)
return (s:gsub("^%s*(.-)%s*$", "%1"))
end
local SIZE2FR = { Size = "Taille",
Tiny = "Minuscule",
Little = "Très petite",
Small = "Petit",
Average = "Moyenne",
Large = "Grande",
Enormous = "Enorme",
Monstrous = "Monstrueuse",
Difficulty = "Difficulté",
Everything = "Tout",
Moderate= "Modéré",
Major= "Majeur",
Minor= "Mineur",
Greenskins= "Peaux vertes",
Challenging= "Intermédiaire",
Elves = "Elfes",
}
local table
local line = f1:read()
while line do
--print(line)
local beast = JSON.decode( line)
-- Get the french beast translation
local sel_beastfr
for _, beastfr in pairs(beast_french.entries) do
print("Testing", beastfr.name)
if beast.name:lower() == beastfr.id:lower() then
sel_beastfr = beastfr
break
end
end
if not sel_beastfr then print(">>>>>>>>>>>>>>> NO BEAST !!!", beast.name) end
--local uniq = io.open(beast.name .. ".json", "w+")
--uniq:write(line)
--uniq:close()
--print(beast.name, beast.items)
if beast.items then
local myitems = {}
for _, traitbeast in pairs( beast.items) do
if traitbeast.name then
print(beast.name, traitbeast.name)
local found, ntentacle = false
local name, bonus_or_category = traitbeast.name:match("([%w%s]+)%s%(([%s%w]+)%)")
if not name then ntentacle, name = traitbeast.name:match("(%d)x%s*(Tentacles)") end
if not name then name = traitbeast.name end
for _, traitdata in pairs(traits.entries) do
if traitdata.id == trim1(name) then
found = true
--local newtrait = { }
--traitbeast.id = trim1(traitbeast.name)
traitbeast._id = nil
traitbeast.name = trim1(traitdata.name)
if traitbeast.data.description then
traitbeast.data.description.value = traitdata.description
end
if SIZE2FR[traitbeast.data.specification.value] then
traitbeast.data.specification.value = SIZE2FR[traitbeast.data.specification.value]
end
print(" Found trait " .. traitdata.name)
--newtrait.specification = traitbeast.data.specification.value
--myitems[#myitems+1] = newtrait
break
end
end
if not found then
print(" > NOT FOUND !!!", beast.name, name, traitbeast.name)
end
end
end
--sel_beastfr.items = beast.items
--sel_beastfr.items = myitems
sel_beastfr.items = nil
end
line = f1:read()
end
f1:close()
local jsonout = JSON.encode( beast_french )
local fout = io.open("beasts.json", "w+")
fout:write( jsonout )
fout:close()