both players must be out of pvp for no damage in protected area

This commit is contained in:
Juraj Vajda 2018-12-02 11:53:22 -05:00
parent e57216e9d4
commit 5d65449c13

14
pvp.lua
View File

@ -15,12 +15,12 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch,
end
local player_pos = player:get_pos()
local hitter_pos = hitter:get_pos()
--
-- Player
--
if hitter:is_player() then
-- do we enable pvp at night time only ?
-- if x_default.pvp_night_only then
-- -- get time of day
@ -43,17 +43,25 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch,
end
end
local can_dig, is_pvp = protector.can_dig(5, player_pos, hitter:get_player_name(), true, 1)
local player_can_dig, player_is_pvp = protector.can_dig(5, player_pos, hitter:get_player_name(), true, 1)
local hitter_can_dig, hitter_is_pvp = protector.can_dig(5, hitter_pos, player:get_player_name(), true, 1)
-- local both_in_pvp = player_is_pvp == true and hitter_is_pvp == true
local both_out_pvp = player_is_pvp == false and hitter_is_pvp == false
if x_default.disable_protector then
-- no damage if in protected area (e.g. protector redo)
if minetest.is_protected(player_pos, hitter:get_player_name()) and not (pvp_block:in_area(player_pos) or is_pvp) then
if minetest.is_protected(player_pos, "") and
minetest.is_protected(hitter_pos, "") and
not pvp_block:in_area(player_pos) and
both_out_pvp then
-- print("#1 player in protector")
return true
end
end
return false
--
-- Entity
-- for entities we have special handling with whitelist - will be useful in the future with custom logic