0
0
Fork 0

Corrected poison and other damage functions

This commit is contained in:
Brandon 2020-07-24 19:39:23 -04:00
parent a53a98fff6
commit bf38131520
1 changed files with 22 additions and 5 deletions

View File

@ -10,6 +10,8 @@ local is_cat = {}
local is_fire_proof = {} local is_fire_proof = {}
local is_player, entity
minetest.register_globalstep(function(dtime) minetest.register_globalstep(function(dtime)
-- Check for invisible players -- Check for invisible players
@ -39,7 +41,8 @@ minetest.register_globalstep(function(dtime)
if is_poisoned[player] and player:get_properties() then if is_poisoned[player] and player:get_properties() then
player = player or player:get_luaentity() is_player = player:is_player()
entity = player:get_luaentity()
is_poisoned[player].timer = is_poisoned[player].timer + dtime is_poisoned[player].timer = is_poisoned[player].timer + dtime
is_poisoned[player].hit_timer = (is_poisoned[player].hit_timer or 0) + dtime is_poisoned[player].hit_timer = (is_poisoned[player].hit_timer or 0) + dtime
@ -48,10 +51,13 @@ minetest.register_globalstep(function(dtime)
if is_poisoned[player].hit_timer >= is_poisoned[player].step then if is_poisoned[player].hit_timer >= is_poisoned[player].step then
if player._cmi_is_mob then if entity and entity._cmi_is_mob then
player.health = math.max(player.health - 1, 1) entity.health = math.max(entity.health - 1, 1)
else elseif is_player then
player:set_hp( math.max(player:get_hp() - 1, 1), { type = "punch", other = "poison"}) player:set_hp( math.max(player:get_hp() - 1, 1), { type = "punch", other = "poison"})
else -- if not player or mob then remove
is_poisoned[player] = nil
end end
is_poisoned[player].hit_timer = 0 is_poisoned[player].hit_timer = 0
@ -74,6 +80,8 @@ minetest.register_globalstep(function(dtime)
if is_regenerating[player] and player:get_properties() then if is_regenerating[player] and player:get_properties() then
player = player or player:get_luaentity() player = player or player:get_luaentity()
is_player = player:is_player()
entity = player:get_luaentity()
is_regenerating[player].timer = is_regenerating[player].timer + dtime is_regenerating[player].timer = is_regenerating[player].timer + dtime
is_regenerating[player].heal_timer = (is_regenerating[player].heal_timer or 0) + dtime is_regenerating[player].heal_timer = (is_regenerating[player].heal_timer or 0) + dtime
@ -81,8 +89,17 @@ minetest.register_globalstep(function(dtime)
if player:get_pos() then mcl_potions._add_spawner(player, "#A52BB2") end if player:get_pos() then mcl_potions._add_spawner(player, "#A52BB2") end
if is_regenerating[player].heal_timer >= is_regenerating[player].step then if is_regenerating[player].heal_timer >= is_regenerating[player].step then
player:set_hp(math.min(player:get_properties().hp_max or 20, player:get_hp() + 1), { type = "set_hp", other = "regeneration" })
if is_player then
player:set_hp(math.min(player:get_properties().hp_max or 20, player:get_hp() + 1), { type = "set_hp", other = "regeneration" })
elseif entity and entity._cmi_is_mob then
entity.health = math.min(entity.hp_max, entity.health + 1)
else -- stop regenerating if not a player or mob
is_regenerating[player] = nil
end
is_regenerating[player].heal_timer = 0 is_regenerating[player].heal_timer = 0
end end
if is_regenerating[player].timer >= is_regenerating[player].dur then if is_regenerating[player].timer >= is_regenerating[player].dur then