Add optional healing for items

Author:    tenplus1
This commit is contained in:
tenplus1 2014-08-05 05:01:24 +02:00 committed by BlockMen
parent bce8036dd4
commit aaf234298f

View File

@ -18,29 +18,42 @@ local function poisenp(tick, time, time_left, player)
end
function hud.item_eat(hunger_change, replace_with_item, poisen)
function hud.item_eat(hunger_change, replace_with_item, poisen, heal)
return function(itemstack, user, pointed_thing)
if itemstack:take_item() ~= nil and user ~= nil then
local name = user:get_player_name()
local h = tonumber(hud.hunger[name])
local hp = user:get_hp()
-- Saturation
if h < 30 and hunger_change then
h = h + hunger_change
if h > 30 then h = 30 end
hud.hunger[name] = h
hud.set_hunger(user)
itemstack:add_item(replace_with_item) -- note: replace_with_item is optional
--sound:eat
end
-- Healing
if hp < 20 and heal then
hp = hp + heal
if hp > 20 then hp = 20 end
user:set_hp(hp)
end
-- Poison
if poisen then
poisenp(1.0, poisen, 0, user)
end
--sound:eat
itemstack:add_item(replace_with_item)
end
return itemstack
end
end
local function overwrite(name, hunger_change, replace_with_item, poisen)
local function overwrite(name, hunger_change, replace_with_item, poisen, heal)
local tab = minetest.registered_items[name]
if tab == nil then return end
tab.on_use = hud.item_eat(hunger_change, replace_with_item, poisen)
tab.on_use = hud.item_eat(hunger_change, replace_with_item, poisen, heal)
minetest.registered_items[name] = tab
end