diff --git a/mods/jewels/depends.txt b/mods/jewels/depends.txt index 39f77f5..60df447 100644 --- a/mods/jewels/depends.txt +++ b/mods/jewels/depends.txt @@ -1,3 +1,4 @@ default crafting achievements +tt? diff --git a/mods/jewels/init.lua b/mods/jewels/init.lua index 4469ab6..a1b2101 100644 --- a/mods/jewels/init.lua +++ b/mods/jewels/init.lua @@ -13,6 +13,7 @@ jewels = {} -- Array of registered jeweled tools jewels.registered_jewels = {} +jewels.registered_jewel_defs = {} jewels.registered_jewel_parents = {} -- Formspec @@ -41,17 +42,6 @@ local function plus_power(i) return i end -local function append_stat(desc, format_text, stats_key, parent, data) - local disp_val = data.stats[stats_key] or 0 - if parent then - disp_val = disp_val + parent.stats[stats_key] - end - if disp_val ~= 0 then - desc = desc .. "\n"..S(format_text, plus_power(disp_val)) - end - return desc -end - function jewels.register_jewel(toolname, new_toolname, def) -- registers a new tool with different stats @@ -73,6 +63,8 @@ function jewels.register_jewel(toolname, new_toolname, def) jewels.registered_jewels[toolname] = {} end + jewels.registered_jewel_defs[new_toolname] = data + table.insert(jewels.registered_jewels[toolname], data) local newparent = { name = toolname, @@ -129,11 +121,10 @@ function jewels.register_jewel(toolname, new_toolname, def) desc = S("Jeweled @1", desc) end end + new_tooldef.description = desc new_tooldef.inventory_image = new_tool_invimage new_tooldef.wield_image = new_tool_wieldimage - -- TODO: Add support for tt mod - new_tooldef._tt_ignore = true if data.stats.range then if not new_tooldef.range then @@ -141,14 +132,12 @@ function jewels.register_jewel(toolname, new_toolname, def) end new_tooldef.range = new_tooldef.range + data.stats.range end - desc = append_stat(desc, NS("Range: @1"), "range", parent, data) if new_tooldef.tool_capabilities then if data.stats.maxdrop and new_tooldef.tool_capabilities.max_drop_level then new_tooldef.tool_capabilities.max_drop_level = new_tooldef.tool_capabilities.max_drop_level + data.stats.maxdrop end - desc = append_stat(desc, NS("Drop level: @1"), "maxdrop", parent, data) if data.stats.digspeed then for group, cap in pairs(new_tooldef.tool_capabilities.groupcaps) do @@ -165,22 +154,14 @@ function jewels.register_jewel(toolname, new_toolname, def) end end end - desc = append_stat(desc, NS("Dig time: @1 s"), "digspeed", parent, data) - - desc = append_stat(desc, NS("Uses: @1"), "uses", parent, data) - - desc = append_stat(desc, NS("Dig level: @1"), "maxlevel", parent, data) if data.stats.fleshy and new_tooldef.tool_capabilities.damage_groups and new_tooldef.tool_capabilities.damage_groups.fleshy then new_tooldef.tool_capabilities.damage_groups.fleshy = new_tooldef.tool_capabilities.damage_groups.fleshy + data.stats.fleshy end - desc = append_stat(desc, NS("Damage: @1"), "fleshy", parent, data) end - new_tooldef.description = desc - if not new_tooldef.groups then new_tooldef.groups = {} end @@ -189,6 +170,50 @@ function jewels.register_jewel(toolname, new_toolname, def) minetest.register_tool(new_toolname, new_tooldef) end +if minetest.get_modpath("tt") then + +local function get_stat(format_text, stats_key, parent, stats) + local disp_val = stats[stats_key] or 0 + if parent then + disp_val = disp_val + parent.stats[stats_key] + end + if disp_val ~= 0 then + return S(format_text, plus_power(disp_val)) + end + return nil +end + +local amendments = { + { "range", NS("Range: @1") }, + { "maxdrop", NS("Drop level: @1") }, + { "digspeed", NS("Dig time: @1 s") }, + { "uses", NS("Uses: @1") }, + { "maxlevel", NS("Dig level: @1") }, +} + +for a=1, #amendments do + tt.register_snippet(function(itemname) + local jewel = jewels.registered_jewel_defs[itemname] + local parent = jewels.registered_jewel_parents[itemname] + if not jewel then + return + end + + local desc + local stat = amendments[a][1] + if jewel.stats[stat] then + desc = get_stat(amendments[a][2], stat, parent, jewel.stats) + end + if desc ~= nil then + desc = minetest.colorize("#4CFFFD", desc) + end + + return desc + end) +end + +end + function jewels.can_jewel(toolname) for name, _ in pairs(jewels.registered_jewels) do if name == toolname then