enhanced/init.lua
2019-03-21 01:25:13 -04:00

88 lines
2.7 KiB
Lua

-- Tool enhancement (mese infusion) mod by archfan7411, licensed MIT.
-- Factor by which performance is to be increased for enhanced tools.
-- Default is 1.2, which translates to a 20% increase in effectiveness.
local modifier = 1.2
-- Tint of enhanced tools.
local tint = "#FFFF00"
-- Opacity of said tint (0-255)
local opacity = 40
-- Saving the default tool registration function for later use.
old_register_tool = minetest.register_tool
-- Overriding the tool registration to also define enhanced tools
function minetest.register_tool(name, def)
-- Copying the given tool def to create the enhanced def
local e_def = table.copy(def)
-- The name is a separate argument which we need to copy as well.
local e_name = name
-- If the tool has standardized tool capabilities
if e_def.tool_capabilities and e_def.tool_capabilities.groupcaps then
local e_groupcaps = e_def.tool_capabilities.groupcaps
-- For each group the tool has defined capabilities for
for i, group in pairs(e_groupcaps) do
-- Ensure the group is a table
if type(group) == "table" and group.times then
-- For every group level defined in "times"
for index, level in pairs(group.times) do
-- Decrease the time to dig that level; speeding it up by modifier% (default 20%)
e_def.tool_capabilities.groupcaps[i].times[index] = level / modifier
end
end
end
-- Improve damage dealt by tool
if e_def.tool_capabilities.damage_groups then
for group, value in pairs(e_def.tool_capabilities.damage_groups) do
e_def.tool_capabilities.damage_groups[group] = math.ceil(value * modifier)
end
end
-- We create our own inventory image by tinting the provided inventory image yellow
if e_def.inventory_image then
e_def.inventory_image = e_def.inventory_image .. "^[colorize:"..tint..":"..opacity
end
-- In case the tool has a separate wield image, we must tint it as well.
if e_def.wield_image then
e_def.wield_image = e_def.wield_image .. "^[colorize:"..tint..":"..opacity
end
-- We make the enhanced version's description by concatenating "Enhanced" to the start of the given description.
if e_def.description then
e_def.description = "Enhanced " .. e_def.description
end
-- This code concatenates "_enhanced" to the itemstring of the tool
e_name = e_name .. "_enhanced"
-- Registering the enhanced tool.
old_register_tool(e_name, e_def)
-- Registering a craft for the enhanced tool.
minetest.register_craft({
output = e_name,
type = "shapeless",
recipe = {name, "default:mese_crystal"},
})
end
-- Registering the normal tool with the normal parameters.
old_register_tool(name, def)
end