Fix incorrect tooltip stats of multi-jewel tools
This commit is contained in:
parent
4d7db960e8
commit
2b305b69cf
@ -5,6 +5,7 @@
|
|||||||
--
|
--
|
||||||
|
|
||||||
local S = minetest.get_translator("jewels")
|
local S = minetest.get_translator("jewels")
|
||||||
|
local NS = function(s) return s end
|
||||||
local F = minetest.formspec_escape
|
local F = minetest.formspec_escape
|
||||||
|
|
||||||
jewels = {}
|
jewels = {}
|
||||||
@ -12,6 +13,7 @@ jewels = {}
|
|||||||
-- Array of registered jeweled tools
|
-- Array of registered jeweled tools
|
||||||
|
|
||||||
jewels.registered_jewels = {}
|
jewels.registered_jewels = {}
|
||||||
|
jewels.registered_jewel_parents = {}
|
||||||
|
|
||||||
-- Formspec
|
-- Formspec
|
||||||
|
|
||||||
@ -39,6 +41,17 @@ local function plus_power(i)
|
|||||||
return i
|
return i
|
||||||
end
|
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)
|
function jewels.register_jewel(toolname, new_toolname, def)
|
||||||
-- registers a new tool with different stats
|
-- registers a new tool with different stats
|
||||||
|
|
||||||
@ -61,6 +74,25 @@ function jewels.register_jewel(toolname, new_toolname, def)
|
|||||||
end
|
end
|
||||||
|
|
||||||
table.insert(jewels.registered_jewels[toolname], data)
|
table.insert(jewels.registered_jewels[toolname], data)
|
||||||
|
local newparent = {
|
||||||
|
name = toolname,
|
||||||
|
stats = {
|
||||||
|
digspeed = (data.stats.digspeed or 0),
|
||||||
|
maxlevel = (data.stats.maxlevel or 0),
|
||||||
|
maxdrop = (data.stats.maxdrop or 0),
|
||||||
|
uses = (data.stats.uses or 0),
|
||||||
|
fleshy = (data.stats.fleshy or 0),
|
||||||
|
range = (data.stats.range or 0),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
local parent = jewels.registered_jewel_parents[toolname]
|
||||||
|
if parent then
|
||||||
|
for k,v in pairs(parent.stats) do
|
||||||
|
newparent.stats[k] = newparent.stats[k] + v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
jewels.registered_jewel_parents[new_toolname] = newparent
|
||||||
|
|
||||||
local tooldef = minetest.deserialize(
|
local tooldef = minetest.deserialize(
|
||||||
minetest.serialize(minetest.registered_tools[toolname]))
|
minetest.serialize(minetest.registered_tools[toolname]))
|
||||||
@ -106,15 +138,15 @@ function jewels.register_jewel(toolname, new_toolname, def)
|
|||||||
new_tooldef.range = 4
|
new_tooldef.range = 4
|
||||||
end
|
end
|
||||||
new_tooldef.range = new_tooldef.range + data.stats.range
|
new_tooldef.range = new_tooldef.range + data.stats.range
|
||||||
desc = desc .. "\n"..S("Range: @1", plus_power(data.stats.range))
|
|
||||||
end
|
end
|
||||||
|
desc = append_stat(desc, NS("Range: @1"), "range", parent, data)
|
||||||
|
|
||||||
if new_tooldef.tool_capabilities then
|
if new_tooldef.tool_capabilities then
|
||||||
if data.stats.maxdrop and new_tooldef.tool_capabilities.max_drop_level 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 =
|
||||||
new_tooldef.tool_capabilities.max_drop_level + data.stats.maxdrop
|
new_tooldef.tool_capabilities.max_drop_level + data.stats.maxdrop
|
||||||
desc = desc .. "\n"..S("Drop level: @1", plus_power(data.stats.maxdrop))
|
|
||||||
end
|
end
|
||||||
|
desc = append_stat(desc, NS("Drop level: @1"), "maxdrop", parent, data)
|
||||||
|
|
||||||
if data.stats.digspeed then
|
if data.stats.digspeed then
|
||||||
for group, cap in pairs(new_tooldef.tool_capabilities.groupcaps) do
|
for group, cap in pairs(new_tooldef.tool_capabilities.groupcaps) do
|
||||||
@ -130,23 +162,19 @@ function jewels.register_jewel(toolname, new_toolname, def)
|
|||||||
cap.uses = cap.uses + data.stats.uses
|
cap.uses = cap.uses + data.stats.uses
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
desc = append_stat(desc, NS("Dig time: @1 s"), "digspeed", parent, data)
|
||||||
|
|
||||||
desc = desc .. "\n"..S("Dig time: @1 s", plus_power(data.stats.digspeed))
|
desc = append_stat(desc, NS("Uses: @1"), "uses", parent, data)
|
||||||
end
|
|
||||||
|
|
||||||
if data.stats.uses then
|
desc = append_stat(desc, NS("Dig level: @1"), "maxlevel", parent, data)
|
||||||
desc = desc .. "\n"..S("Uses: @1", plus_power(data.stats.uses))
|
|
||||||
end
|
|
||||||
if data.stats.maxlevel then
|
|
||||||
desc = desc .. "\n"..S("Dig level: @1", plus_power(data.stats.maxlevel))
|
|
||||||
end
|
|
||||||
|
|
||||||
if data.stats.fleshy and new_tooldef.tool_capabilities.damage_groups
|
if data.stats.fleshy and new_tooldef.tool_capabilities.damage_groups
|
||||||
and new_tooldef.tool_capabilities.damage_groups.fleshy then
|
and new_tooldef.tool_capabilities.damage_groups.fleshy then
|
||||||
new_tooldef.tool_capabilities.damage_groups.fleshy =
|
new_tooldef.tool_capabilities.damage_groups.fleshy =
|
||||||
new_tooldef.tool_capabilities.damage_groups.fleshy + data.stats.fleshy
|
new_tooldef.tool_capabilities.damage_groups.fleshy + data.stats.fleshy
|
||||||
desc = desc .. "\n"..S("Damage: @1", plus_power(data.stats.fleshy))
|
|
||||||
end
|
end
|
||||||
|
desc = append_stat(desc, NS("Damage: @1"), "fleshy", parent, data)
|
||||||
end
|
end
|
||||||
|
|
||||||
new_tooldef.description = desc
|
new_tooldef.description = desc
|
||||||
|
Loading…
x
Reference in New Issue
Block a user