75 lines
1.7 KiB
Lua
75 lines
1.7 KiB
Lua
PyuTest.MAGIC_MANA_MAX = 150
|
|
|
|
local storage = core.get_mod_storage()
|
|
local manas = core.deserialize(storage:get("player_manas")) or {}
|
|
|
|
PyuTest.get_mana = function (player)
|
|
return manas[player]
|
|
end
|
|
|
|
PyuTest.use_mana = function(player, amount)
|
|
if core.is_creative_enabled(player) then
|
|
return true
|
|
end
|
|
|
|
if PyuTest.get_mana(player) >= amount then
|
|
manas[player] = manas[player] - amount
|
|
return true
|
|
end
|
|
|
|
core.chat_send_player(player, string.format("Not enough mana! (Need %d)", amount))
|
|
|
|
local obj = core.get_player_by_name(player)
|
|
PyuTest.deal_damage(obj, obj:get_hp() / 3, PyuTest.DAMAGE_TYPES.magic())
|
|
core.sound_play("pyutest_magic_negative", {
|
|
gain = 1,
|
|
player = player,
|
|
})
|
|
|
|
return false
|
|
end
|
|
|
|
local timers = {}
|
|
core.register_globalstep(function (dtime)
|
|
for i, p in pairs(core.get_connected_players()) do
|
|
local name = p:get_player_name()
|
|
|
|
if timers[name] == nil then
|
|
timers[name] = 0
|
|
end
|
|
|
|
timers[name] = timers[name] + (10 * dtime)
|
|
|
|
if timers[name] > 1.5 then
|
|
if manas[name] < PyuTest.MAGIC_MANA_MAX then
|
|
manas[name] = manas[name] + 1
|
|
end
|
|
timers[name] = 0
|
|
end
|
|
|
|
hb.change_hudbar(p, "mana", manas[name], PyuTest.MAGIC_MANA_MAX)
|
|
end
|
|
end)
|
|
|
|
core.register_on_joinplayer(function(player)
|
|
local name = player:get_player_name()
|
|
if manas[name] == nil then
|
|
manas[name] = PyuTest.MAGIC_MANA_MAX
|
|
end
|
|
|
|
hb.init_hudbar(player, "mana", manas[name], PyuTest.MAGIC_MANA_MAX)
|
|
end)
|
|
|
|
local function save_data()
|
|
storage:set_string("player_manas", core.serialize(manas))
|
|
end
|
|
|
|
core.register_on_shutdown(save_data)
|
|
PyuTest.register_interval(save_data, 10)
|
|
|
|
hb.register_hudbar("mana", 0xFFFFFF, Translate("Mana"), {
|
|
icon = "pyutest-mana.png",
|
|
bar = "pyutest-mana-bg.png",
|
|
bgicon = "pyutest-mana-bg.png"
|
|
}, 0, PyuTest.MAGIC_MANA_MAX, false)
|