Add mini-hunger mod. Correct meat drops in some mobs.
This commit is contained in:
parent
aac2db0da4
commit
36af3b1d92
4 changed files with 91 additions and 21 deletions
73
init.lua
73
init.lua
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue