Added efficiency

This commit is contained in:
2024-04-16 19:44:20 -04:00
parent 425b08f591
commit d6973c26ed
3 changed files with 27 additions and 5 deletions

View File

@ -11,6 +11,9 @@ function tool_level_enchanting.set_enchantment(itemstack,enchantment_name,level)
local itemdesc = itemdef.original_description or ""
itemmeta:set_string(enchantment_name,level)
itemmeta:set_string("description", tool_level_enchanting.create_description(itemdesc, dugnodes, itemstack))
if enchantment_name == "efficiency" then
itemstack = tool_level_enchanting.efficiency_change(itemstack,level)
end
return itemstack
end
@ -29,8 +32,23 @@ end
-- Efficiency
-- 10% speed increase each level?
-- Max Level 10
-- Max Level 5
function tool_level_enchanting.efficiency_change(itemstack, enchant_level)
local itemmeta = itemstack:get_meta()
local itemdef = itemstack:get_definition()
print(ItemStack("default:pick_diamond"):get_tool_capabilities())
if itemdef.tool_capabilities then
local speed_multiplier = 1 - (0.1 * tonumber(enchant_level))
local cap = table.copy(itemdef.tool_capabilities)
for _,c in pairs(cap.groupcaps) do
for i,t in pairs(c.times) do
c.times[i] = t * speed_multiplier --FIXME: add actual
end
end
itemmeta:set_tool_capabilities(cap)
end
return itemstack
end
-- Fortune
-- 10% Chance per level of doubling ore
@ -56,7 +74,6 @@ end
-- This keeps existing handling of node drops
local old_handle_node_drops = minetest.handle_node_drops
function minetest.handle_node_drops(pos, drops, digger)
if not digger or not digger:is_player() then
return old_handle_node_drops(pos, drops, digger)

View File

@ -27,7 +27,7 @@ function tool_level_enchanting.get_level(uses)
end
function tool_level_enchanting.create_description(name, uses, itemstack)
enchantment_string = 'Enchants:'
local enchantment_string = 'Enchants:'
if itemstack then
local itemmeta = itemstack:get_meta()
local unbreaking = tonumber(itemmeta:get_string("unbreaking")) or 0
@ -85,6 +85,7 @@ function tool_level_enchanting.on_use(itemstack, user, node, digparams)
local fortune = tonumber(itemmeta:get_string("fortune")) or 0
local silk_touch = tonumber(itemmeta:get_string("silk_touch")) or 0
local auto_repair = tonumber(itemmeta:get_string("auto_repair")) or 0
-- Make sure play exists
if not pname then return itemstack end
@ -111,7 +112,6 @@ function tool_level_enchanting.on_use(itemstack, user, node, digparams)
end
function tool_level_enchanting.add_tool(name)
print(name)
local desc = ItemStack(name):get_definition().description
minetest.override_item(name, {
original_description = desc,
@ -121,4 +121,8 @@ function tool_level_enchanting.add_tool(name)
end
tool_level_enchanting.add_tool("default:pick_wood")
tool_level_enchanting.add_tool("default:pick_stone")
tool_level_enchanting.add_tool("default:pick_steel")
tool_level_enchanting.add_tool("default:pick_bronze")
tool_level_enchanting.add_tool("default:pick_mese")
tool_level_enchanting.add_tool("default:pick_diamond")

View File

@ -2,3 +2,4 @@ name = tool_level_enchanting
description = Enchant Tools based on how much you use them
author = jasonl8446
title = Tool Level Enchanting
depends = default