Add mini-hunger mod. Correct meat drops in some mobs.

This commit is contained in:
Duane 2016-06-25 01:38:54 -05:00
parent aac2db0da4
commit 36af3b1d92
4 changed files with 91 additions and 21 deletions

View file

@ -33,9 +33,17 @@ local inp = io.open(fun_caves.world..'/fun_caves_data.txt','r')
if inp then
local d = inp:read('*a')
fun_caves.db = minetest.deserialize(d)
else
inp.close()
end
if not fun_caves.db then
fun_caves.db = {}
end
if not fun_caves.db.teleport_data then
fun_caves.db.teleport_data = {}
end
if not fun_caves.db.hunger then
fun_caves.db.hunger = {}
end
-- whether to use biomes and heightmap
@ -106,3 +114,66 @@ if mobs and mobs.mod == "redo" then
end
--fun_caves.print_recipes()
local hunger_mod = minetest.get_modpath("hunger")
fun_caves.hunger_id = {}
function fun_caves.hunger_change(player, change)
local name = player:get_player_name()
if hunger_mod then
if change < 0 then
hunger.update_hunger(player, hunger.players[name].lvl + change * 4)
end
return
end
local hp = player:get_hp()
if change < 0 or hp >= 20 then
fun_caves.db.hunger[name] = math.min(20, math.max(0, fun_caves.db.hunger[name] + change))
player:hud_change(fun_caves.hunger_id[name], 'number', fun_caves.db.hunger[name])
if fun_caves.db.hunger[name] == 0 then
player:set_hp(player:get_hp() - 1)
end
end
end
if not hunger_mod then
minetest.register_on_joinplayer(function(player)
local name = player:get_player_name()
if not fun_caves.db.hunger[name] then
fun_caves.db.hunger[name] = 20
end
local hunger_bar = {
hud_elem_type = 'statbar',
position = {x=0.52, y=0.883},
name = "hunger",
text = "farming_bread.png",
number = fun_caves.db.hunger[name],
direction = 0,
size = { x=24, y=24 },
}
fun_caves.hunger_id[name] = player:hud_add(hunger_bar)
end)
minetest.register_on_item_eat(function(hp_change, replace_with_item, itemstack, user, pointed_thing)
if hp_change > 0 then
fun_caves.hunger_change(user, hp_change)
end
end)
minetest.register_on_dieplayer(function(player)
local name = player:get_player_name()
local pos = vector.round(player:getpos())
if not hunger_mod then
fun_caves.db.hunger[name] = 20
player:hud_change(fun_caves.hunger_id[name], 'number', 20)
end
minetest.chat_send_player(name, 'Your bones will lie at ('..pos.x..','..pos.y..','..pos.z..'), in ignominy, unless you collect them.')
end)
end