Add tt support for jewels mod
This commit is contained in:
parent
4b01bf3c02
commit
57c8b310f6
@ -1,3 +1,4 @@
|
||||
default
|
||||
crafting
|
||||
achievements
|
||||
tt?
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user