- local enchtools = {
- {"axe", "durable", {choppy = {times=def.times, uses=longer, maxlevel=def.maxlvl}}},
- {"axe", "fast", {choppy = {times=faster, uses=def.uses, maxlevel=def.maxlvl}}},
- {"pick", "durable", {cracky = {times=def.times, uses=longer, maxlevel=def.maxlvl}}},
- {"pick", "fast", {cracky = {times=faster, uses=def.uses, maxlevel=def.maxlvl}}},
- {"shovel", "durable", {crumbly = {times=def.times, uses=longer, maxlevel=def.maxlvl}}},
- {"shovel", "fast", {crumbly = {times=faster, uses=def.uses, maxlevel=def.maxlvl}}}
- }
- for _, x in pairs(enchtools) do
- local tool, ench, grp = x[1], x[2], x[3]
- minetest.register_tool("xdecor:enchanted_"..tool.."_"..m.."_"..ench, {
- description = "Enchanted "..string.gsub(m, "%l", string.upper, 1)..
- " "..string.gsub(tool, "%l", string.upper, 1).." ("..string.gsub(ench, "%l", string.upper, 1)..")",
- inventory_image = minetest.registered_tools["default:"..tool.."_"..m]["inventory_image"],
+function enchanting.register_enchtools()
+ local materials = {"steel", "bronze", "mese", "diamond"}
+ local tools = { {"axe", "choppy"}, {"pick", "cracky"}, {"shovel", "crumbly"} }
+ local chants = {"durable", "fast"}
+
+ for j = 1, #materials do
+ for t = 1, #tools do
+ for i = 1, #chants do
+ local chant = chants[i]
+ local material = materials[j]
+ local tool_name = tools[t][1]
+ local main_groupcap = tools[t][2]
+ local original_tool = minetest.registered_tools["default:"..tool_name.."_"..material]
+ local original_groupcaps = original_tool.tool_capabilities.groupcaps
+ local groupcaps = table.copy(original_groupcaps)
+
+ if chant == "durable" then
+ groupcaps[main_groupcap].uses = original_groupcaps[main_groupcap].uses * use_factor
+ elseif chant == "fast" then
+ for i = 1, 3 do
+ groupcaps[main_groupcap].times[i] = original_groupcaps[main_groupcap].times[i] - times_subtractor
+ end
+ end
+
+ minetest.register_tool(string.format("xdecor:enchanted_%s_%s_%s", tool_name, material, chant), {
+ description = string.format("Enchanted %s %s (%s)", capitalize(material), capitalize(tool_name), capitalize(chant)),
+ inventory_image = original_tool.inventory_image,
+ wield_image = original_tool.wield_image,