don't trigger armor:punch when max_hp decreases

This commit is contained in:
flux 2023-04-19 14:02:29 -07:00 committed by Buckaroo Banzai
parent dc7fbce09a
commit 053c30b8b1
1 changed files with 21 additions and 13 deletions

View File

@ -414,10 +414,18 @@ if armor.config.punch_damage == true then
end end
minetest.register_on_player_hpchange(function(player, hp_change, reason) minetest.register_on_player_hpchange(function(player, hp_change, reason)
if player and reason.type ~= "drown" and reason.hunger == nil if not minetest.is_player(player) then
and hp_change < 0 then return hp_change
end
if reason.type == "drown" or reason.hunger or hp_change >= 0 then
return hp_change
end
local name = player:get_player_name() local name = player:get_player_name()
if name then local properties = player:get_properties()
local hp = player:get_hp()
if hp + hp_change < properties.hp_max then
local heal = armor.def[name].heal local heal = armor.def[name].heal
if heal >= math.random(100) then if heal >= math.random(100) then
hp_change = 0 hp_change = 0
@ -428,7 +436,7 @@ minetest.register_on_player_hpchange(function(player, hp_change, reason)
armor:punch(player) armor:punch(player)
end end
end end
end
return hp_change return hp_change
end, true) end, true)