diff --git a/mods/mana/API.md b/mods/mana/API.md
index c82eda1d..dce2daf6 100755
--- a/mods/mana/API.md
+++ b/mods/mana/API.md
@@ -1,4 +1,4 @@
-API documentation for Mana 1.0.1
+API documentation for Mana 1.1.0
================================
## Introduction
@@ -41,7 +41,12 @@ the new maximum.
### `mana.setregen(playername, value)`
Sets the mana regeneration per mana tick of the player to `value`.
-Negative values are not permitted.
+Floating-point numbers are also permitted, in which the generation
+of 1 mana takes longer than 1 mana tick. I.e. `0.5`. means
+that 1 mana is generated every 2 mana ticks. A negative value means the
+player loses mana.
+
+
The length of one “mana tick” is specified as the server-wide setting
`mana_default_regen` in seconds.
diff --git a/mods/mana/README.txt b/mods/mana/README.txt
index 8f9ba0ce..8a54d407 100755
--- a/mods/mana/README.txt
+++ b/mods/mana/README.txt
@@ -1,6 +1,6 @@
Mana mod [mana]
===============
-Version: 1.0.1
+Version: 1.1.0
Note: This mod uses semantic versioning, as defined by version 2.0.0 of the SemVer standard.
See:
@@ -38,7 +38,7 @@ Configuration
This mod can be configured with minetest.conf! The following settings are accepted:
* `mana_default_max`: Initial max. mana given to new players. Default: `200`. This value must be non-negative.
-* `mana_default_regen`: Initial regenerated mana per “mana tick”. Default: `1`. This value must be non-negative.
+* `mana_default_regen`: Initial regenerated mana per “mana tick”. Default: `1`. This value can be a floating value. I.e. if the value is `0.5`, 1 mana is generated every two mana ticks (note that the player's mana amount is still a whole number). This value can be negative, in which case the player will lose mana.
* `mana_regen_timer`: The length of a “mana tick” in seconds. Each player will get his/her mana increased by the current
regen value per mana tick. Default: `0.2`. This value must be positive, also try to avoid very small values
as those could probably stress your machine a lot.
@@ -47,5 +47,6 @@ This mod can be configured with minetest.conf! The following settings are accept
License information
===================
* textures/mana_icon.png: CC-BY by Buch .
+* textures/mana_bgicon.png: CC-BY, originally by Buch , modified by Wuzzy.
* textures/mana_bar.png: WTFPL by Wuzzy.
* Everything else: WTFPL.
diff --git a/mods/mana/init.lua b/mods/mana/init.lua
index 3dfb5953..14632cd1 100755
--- a/mods/mana/init.lua
+++ b/mods/mana/init.lua
@@ -1,5 +1,5 @@
--[[
-Mana 1.0.1
+Mana 1.0.2
This mod adds mana to players, a special attribute
License: WTFPL
@@ -70,11 +70,6 @@ function mana.setmax(playername, value)
end
function mana.setregen(playername, value)
- if value < 0 then
- value = 0
- minetest.log("info", "[mana] Warning: mana.setregen was called with negative value!")
- end
- value = mana.round(value)
mana.playerlist[playername].regen = value
end
@@ -172,7 +167,6 @@ do
if(string ~= nil) then
local savetable = minetest.deserialize(string)
mana.playerlist = savetable.playerlist
- if mana.playerlist == nil then mana.playerlist = {} end
minetest.log("action", "[mana] mana.mt successfully read.")
end
end
@@ -205,10 +199,10 @@ end)
minetest.register_on_leaveplayer(function(player)
local playername = player:get_player_name()
- if minetest.get_modpath("hudbars") == nil then
- player:hud_remove(mana.playerlist[playername].hudid)
+ if not minetest.get_modpath("hudbars") ~= nil then
+ mana.hud_remove(playername)
end
- --mana.playerlist[playername] = nil --uncomment to reset mana at deco/reco
+ mana.save_to_file()
end)
minetest.register_on_shutdown(function()
@@ -224,6 +218,7 @@ minetest.register_on_joinplayer(function(player)
mana.playerlist[playername].mana = 0
mana.playerlist[playername].maxmana = mana.settings.default_max
mana.playerlist[playername].regen = mana.settings.default_regen
+ mana.playerlist[playername].remainder = 0
end
if minetest.get_modpath("hudbars") ~= nil then
@@ -249,7 +244,19 @@ minetest.register_globalstep(function(dtime)
local name = players[i]:get_player_name()
if mana.playerlist[name] ~= nil then
if players[i]:get_hp() > 0 then
- mana.add_up_to(name, mana.playerlist[name].regen * factor)
+ local plus = mana.playerlist[name].regen * factor
+ -- Compability check for version <= 1.0.2 which did not have the remainder field
+ if mana.playerlist[name].remainder ~= nil then
+ plus = plus + mana.playerlist[name].remainder
+ end
+ local plus_now = math.floor(plus)
+ local floor = plus - plus_now
+ if plus_now > 0 then
+ mana.add_up_to(name, plus_now)
+ else
+ mana.subtract_up_to(name, math.abs(plus_now))
+ end
+ mana.playerlist[name].remainder = floor
end
end
end
@@ -262,7 +269,7 @@ end)
]===]
if minetest.get_modpath("hudbars") ~= nil then
- hb.register_hudbar("mana", 0xFFFFFF, "Mana", { bar = "mana_bar.png", icon = "mana_icon.png" }, 0, mana.settings.default_max, false)
+ hb.register_hudbar("mana", 0xFFFFFF, "Mana", { bar = "mana_bar.png", icon = "mana_icon.png", bgicon = "mana_bgicon.png" }, 0, mana.settings.default_max, false)
function mana.hud_update(playername)
local player = minetest.get_player_by_name(playername)
@@ -271,6 +278,9 @@ if minetest.get_modpath("hudbars") ~= nil then
end
end
+ function mana.hud_remove(playername)
+ end
+
else
function mana.manastring(playername)
return string.format("Mana: %d/%d", mana.get(playername), mana.getmax(playername))
@@ -278,7 +288,7 @@ else
function mana.hud_add(playername)
local player = minetest.get_player_by_name(playername)
- player:hud_add({
+ id = player:hud_add({
hud_elem_type = "statbar",
position = {x=0.5,y=1},
size = {x=24, y=24},
@@ -305,7 +315,12 @@ else
function mana.hud_update(playername)
local player = minetest.get_player_by_name(playername)
- player:hud_change(mana.playerlist[playername].hudid, "number", mana.get(playername)/10)
+ player:hud_change(mana.playerlist[playername].hudid, "text", mana.manastring(playername))
+ end
+
+ function mana.hud_remove(playername)
+ local player = minetest.get_player_by_name(playername)
+ player:hud_remove(mana.playerlist[playername].hudid)
end
end
diff --git a/mods/mana/textures/mana_bgicon.png b/mods/mana/textures/mana_bgicon.png
new file mode 100644
index 00000000..ea35a9ca
Binary files /dev/null and b/mods/mana/textures/mana_bgicon.png differ