Add callback with reason parameter.
parent
04d873b80c
commit
916e91e93e
20
init.lua
20
init.lua
|
@ -14,16 +14,26 @@ end
|
|||
xmana.MAX_LEVEL = tonumber(minetest.settings:get("xmana.max_level")) or 30
|
||||
xmana.MAX = math.ceil(xmana.level_to_mana(xmana.MAX_LEVEL))
|
||||
|
||||
-- Callback function to be overridden.
|
||||
-- Called whenever mana changes.
|
||||
-- See xmana.mana() for a description of the reason.
|
||||
xmana.callback = function(player, old, new, reason) end
|
||||
|
||||
-- Access a player object's mana. If set is false, return current value. If set is a number, set to that. If relative is true, add the current value to the set.
|
||||
function xmana.mana(player, set, relative)
|
||||
-- Reason is an optional parameter to describe what changed it.
|
||||
-- Current values include: nil by default, "command" if changed by command, "spark" if from mana sparks.
|
||||
function xmana.mana(player, set, relative, reason)
|
||||
if set then
|
||||
local old = xmana.mana(player)
|
||||
-- Actual amount set when relative is true is current + set.
|
||||
local set = relative and (set + xmana.mana(player)) or set
|
||||
local set = relative and (set + old) or set
|
||||
-- Clamp to reasonable values.
|
||||
set = math.max(0, math.min(set, xmana.MAX))
|
||||
|
||||
player:get_meta():set_float("xmana:mana", set)
|
||||
hb.change_hudbar(player, "xmana", xmana.mana_to_level(xmana.mana(player)), xmana.MAX_LEVEL)
|
||||
hb.change_hudbar(player, "xmana", xmana.mana_to_level(set), xmana.MAX_LEVEL)
|
||||
|
||||
xmana.callback(player, old, set, reason)
|
||||
else
|
||||
return player:get_meta():get_float("xmana:mana", set)
|
||||
end
|
||||
|
@ -68,7 +78,7 @@ minetest.register_chatcommand("mana", {
|
|||
return false, S"Invalid target."
|
||||
end
|
||||
|
||||
xmana.mana(target, amount, relative)
|
||||
xmana.mana(target, amount, relative, "command")
|
||||
return true, S("@1 now has @2 levels (@3 mana)", target:get_player_name(), xmana.mana_to_level(xmana.mana(target)), xmana.mana(target))
|
||||
end,
|
||||
})
|
||||
|
@ -142,7 +152,7 @@ for i,v in ipairs(xmana.spark_values) do
|
|||
gain = 0.2,
|
||||
})
|
||||
end
|
||||
xmana.mana(player, v, true)
|
||||
xmana.mana(player, v, true, "spark")
|
||||
self.object:remove()
|
||||
return
|
||||
else
|
||||
|
|
Loading…
Reference in New Issue