diff options
| author | sys4-fr <sys4@free.fr> | 2016-07-24 00:38:22 +0200 | 
|---|---|---|
| committer | rubenwardy <rubenwardy@gmail.com> | 2016-07-23 23:38:22 +0100 | 
| commit | 938bf546c54d14f83a9873288c5867989c5978fa (patch) | |
| tree | bb72c484db863ce7589d78285f010206a1412af7 | |
| parent | 72564646600834f30f17c21da095025ce966732f (diff) | |
Fix hud_hunger compatibility (#3)
* Fix hud_hunger compatibility
Add hbhunger support
* Indent with tabs other than spaces
* Fix for the old hud support
| -rw-r--r-- | depends.txt | 2 | ||||
| -rw-r--r-- | init.lua | 78 | 
2 files changed, 64 insertions, 16 deletions
| diff --git a/depends.txt b/depends.txt index ee57cf6..8bbbbd5 100644 --- a/depends.txt +++ b/depends.txt @@ -1,3 +1,5 @@ +hbhunger? +hud?  hunger?  default?  animalmaterials? @@ -23,13 +23,28 @@ function diet.save()  	end  end -function diet.item_eat(max)	 -	return function(itemstack, user, pointed_thing)	 +-- Poison player +local function poisenp(tick, time, time_left, player) +	time_left = time_left + tick +	if time_left < time then +		minetest.after(tick, poisenp, tick, time, time_left, player) +	else +		--reset hud image +	end +	if player:get_hp()-1 > 0 then +		player:set_hp(player:get_hp()-1) +	end + +end + +function diet.item_eat(max, replace_with_item, poisen, heal) +	return function(itemstack, user, pointed_thing) +  		-- Process player data  		local name = user:get_player_name()  		local player = diet.__player(name)  		local item = itemstack:get_name() -		 +  		-- Get type  		local ftype = ""  		if (minetest.registered_items[item] and minetest.registered_items[item].groups) then @@ -44,7 +59,7 @@ function diet.item_eat(max)  				ftype = "drink"  			end  		end -		 +  		-- Calculate points  		local points = max  		if (#player.eaten>0) then @@ -60,7 +75,7 @@ function diet.item_eat(max)  			end  			local mult = same_food/10  			points = points * 1-mult -			 +	   			if (mult > 0.9) then  				local desc = item  				if (minetest.registered_items[item] and minetest.registered_items[item].description) then @@ -75,14 +90,44 @@ function diet.item_eat(max)  				return  			end  		end -		 +  		-- Increase health -		if minetest.get_modpath("hud") and hud then +		if minetest.get_modpath("hbhunger") and hbhunger then +			minetest.sound_play({name = "hbhunger_eat_generic", gain = 1}, {pos=user:getpos(), max_hear_distance = 16}) + +			-- saturation +			local h = tonumber(hbhunger.hunger[name]) +			h = h + points +			if h > 30 then h = 30 end +			hbhunger.hunger[name] = h +			hbhunger.set_hunger(user) + +			-- healing +			local hp = user:get_hp() +			if hp < 20 and heal then +				hp = hp + heal +				if hp > 20 then hp = 20 end +				user:set_hp(hp) +			end + +			 -- Poison +			if poisen then +				--set hud-img +				poisenp(1.0, poisen, 0, user) +			end +	  +		elseif minetest.get_modpath("hunger") and hunger then +			local h = tonumber(hunger.players[name].lvl) +			h = h + points +			hunger.update_hunger(user, h) +			 +		elseif minetest.get_modpath("hud") and hud and hud.hunger then  			local h = tonumber(hud.hunger[name])  			h = h + points -			if h>30 then h = 30 end +			if h > 30 then h = 30 end  			hud.hunger[name] = h  			hud.save_hunger(user) +  		else  			local hp = user:get_hp()		  			if (hp+points > 20) then @@ -92,17 +137,18 @@ function diet.item_eat(max)  			end		  			user:set_hp(hp)  		end -		 +  		-- Register  		diet.__register_eat(player,item,ftype) -		 +  		diet.save() -		 +  		-- Remove item +		itemstack:add_item(replace_with_item)  		itemstack:take_item()  		return itemstack  	end -end +end	  function diet.__player(name)  	if name == "" then @@ -128,12 +174,12 @@ function diet.__register_eat(player,food,type)  	end  end -local function overwrite(name, amt) +local function overwrite(name, hunger_change, replace_with_item, poisen, heal)  	local tab = minetest.registered_items[name]  	if not tab then  		return  	end -	tab.on_use = diet.item_eat(amt) +	tab.on_use = diet.item_eat(hunger_change, replace_with_item, poisen, heal)  end  diet.__init() @@ -223,7 +269,7 @@ end  if minetest.get_modpath("bushes_classic") then  	-- bushes_classic mod, as found in the plantlife modpack  	local berries = { -	    "strawberry", +		"strawberry",  		"blackberry",  		"blueberry",  		"raspberry", @@ -397,7 +443,7 @@ if minetest.get_modpath("kpgmobs") ~= nil then  	overwrite("kpgmobs:meat", 6)  	overwrite("kpgmobs:rat_cooked", 5)  	overwrite("kpgmobs:med_cooked", 4) -  	if minetest.get_modpath("bucket") then +	if minetest.get_modpath("bucket") then  	   overwrite("kpgmobs:bucket_milk", 4, "bucket:bucket_empty")  	end  end | 
