mirror of
https://github.com/minetest-mods/3d_armor.git
synced 2024-11-22 04:33:44 +01:00
don't trigger armor:punch when max_hp decreases
This commit is contained in:
parent
dc7fbce09a
commit
053c30b8b1
@ -414,21 +414,29 @@ if armor.config.punch_damage == true then
|
||||
end
|
||||
|
||||
minetest.register_on_player_hpchange(function(player, hp_change, reason)
|
||||
if player and reason.type ~= "drown" and reason.hunger == nil
|
||||
and hp_change < 0 then
|
||||
local name = player:get_player_name()
|
||||
if name then
|
||||
local heal = armor.def[name].heal
|
||||
if heal >= math.random(100) then
|
||||
hp_change = 0
|
||||
end
|
||||
-- check if armor damage was handled by fire or on_punchplayer
|
||||
local time = last_punch_time[name] or 0
|
||||
if time == 0 or time + 1 < minetest.get_gametime() then
|
||||
armor:punch(player)
|
||||
end
|
||||
if not minetest.is_player(player) 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 properties = player:get_properties()
|
||||
local hp = player:get_hp()
|
||||
if hp + hp_change < properties.hp_max then
|
||||
local heal = armor.def[name].heal
|
||||
if heal >= math.random(100) then
|
||||
hp_change = 0
|
||||
end
|
||||
-- check if armor damage was handled by fire or on_punchplayer
|
||||
local time = last_punch_time[name] or 0
|
||||
if time == 0 or time + 1 < minetest.get_gametime() then
|
||||
armor:punch(player)
|
||||
end
|
||||
end
|
||||
|
||||
return hp_change
|
||||
end, true)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user