diff --git a/init.lua b/init.lua index 074b5a4..a7e3d83 100644 --- a/init.lua +++ b/init.lua @@ -14,12 +14,24 @@ mana.playerlist = {} mana.settings = {} mana.settings.default_max = 200 +mana.settings.default_regen = 1 +mana.settings.regen_timer = 0.1 do local default_max = tonumber(minetest.setting_get("mana_default_max")) if default_max ~= nil then mana.settings.default_max = default_max end + + local default_regen = tonumber(minetest.setting_get("mana_default_regen")) + if default_regen ~= nil then + mana.settings.default_regen = default_regen + end + + local regen_timer = tonumber(minetest.setting_get("mana_regen_timer")) + if regen_timer ~= nil then + mana.settings.regen_timer = regen_timer + end end @@ -189,6 +201,7 @@ minetest.register_on_joinplayer(function(player) mana.playerlist[playername] = {} mana.playerlist[playername].mana = 0 mana.playerlist[playername].maxmana = mana.settings.default_max + mana.playerlist[playername].regen = mana.settings.default_regen end if minetest.get_modpath("hudbars") ~= nil then @@ -199,6 +212,21 @@ minetest.register_on_joinplayer(function(player) end) +--[===[ + Mana regeneration +]===] + +mana.regen_timer = 0 + +minetest.register_globalstep(function(dtime) + mana.regen_timer = mana.regen_timer + dtime + if mana.regen_timer >= mana.settings.regen_timer then + for name, infotable in pairs(mana.playerlist) do + mana.add_up_to(name, infotable.regen) + end + mana.regen_timer = 0 + end +end) --[===[ HUD functions @@ -209,7 +237,9 @@ if minetest.get_modpath("hudbars") ~= nil then function mana.hud_update(playername) local player = minetest.get_player_by_name(playername) - hb.change_hudbar(player, "mana", mana.get(playername), mana.getmax(playername)) + if player ~= nil then + hb.change_hudbar(player, "mana", mana.get(playername), mana.getmax(playername)) + end end else