minerdream/minerdream/read_tool_config.lua

70 lines
2.3 KiB
Lua

local S=minerdream.intllib
local has_value = basic_functions.has_value
local tier_cols={
col_num={"name"},}
local tier_definition = basic_functions.import_csv(minerdream.path.."/tiers.txt",tier_cols)
local tool_cols={
col_num={"range","uses"},
as_numeric=1,
}
-- reading config table
local tool_definition = basic_functions.import_csv(minerdream.path.."/tools.txt",tool_cols)
for i,tdef in pairs(tool_definition) do
if (i ~= "default") and (minerdream.items[i] ~= nil) then
idef=table.copy(minerdream.items[i])
local tooldef={}
for col in pairs(tdef) do
tooldef=basic_functions.parse_tree(tooldef,col,tdef[col])
end
if minerdream.itemdef[i]==nil then
minerdream.itemdef[i]={}
end
-- check specific tools/weapons
for _,tool in pairs({"pick","axe","sword","shovel","spear"}) do
if tooldef[tool] ~= nil then
local ttv=tooldef[tool]
tdesc=core.colorize("#"..idef.tierdef.color, S(i:gsub("^%l", string.upper)).." "..S(tool:gsub("^%l", string.upper)).."\n")..
core.colorize("#A0A0A0", "tier: "..idef.tierdef.name.." ("..idef.tierdef.desc..")")
-- check special attributes of tool definition and use fallback definitions
if tooldef.uses then
tdesc=tdesc.."\n"..core.colorize("#A0A0A0",S("Uses")..": "..tooldef.uses)
end
if ttv.maxlevel then
tdesc=tdesc.."\n"..core.colorize("#A0A0A0",S("Max. Level")..": "..ttv.maxlevel)
end
if ttv.fleshy then
tdesc=tdesc.."\n"..core.colorize("#A0A0A0",S("Damage")..": "..ttv.fleshy)
end
tt_def={description=tdesc,
inventory_image=minerdream.modname.."_"..tool.."_"..i..".png",
range=tooldef.range or 2,
groups={weapon=1},
tool_capabilities={max_drop_level = 1,groupcaps={},
damage_groups = {fleshy = ttv.fleshy or 4},},
}
-- check if values for capabitlites exist
for _,gc in pairs({"cracky","crumbly","choppy","snappy"}) do
if ttv[gc] ~= nil then
local ml = 1
if tooldef.maxlevel ~=nil then
ml=tooldef.maxlevel
end
if ttv.maxlevel ~= nil then
ml = ttv.maxlevel
end
tt_def.tool_capabilities.groupcaps[gc]={times=table.copy(ttv[gc]),
uses=tooldef.uses,maxlevel=ml}
end
end
toolname=minerdream.modname..":"..tool.."_"..i
minetest.register_tool(toolname,tt_def)
end
end
end
end