Allow passive mobs to have protectors

This commit is contained in:
gldrk 2023-01-14 01:32:42 +03:00
parent 3697ef8069
commit 1536338199
1 changed files with 24 additions and 24 deletions

View File

@ -746,7 +746,7 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
local name = hitter:get_player_name() or "" local name = hitter:get_player_name() or ""
-- attack puncher and call other mobs for help -- attack puncher
if self.passive == false if self.passive == false
and self.state ~= "flop" and self.state ~= "flop"
and (self.child == false or self.type == "monster") and (self.child == false or self.type == "monster")
@ -758,37 +758,37 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
self:do_attack(hitter) self:do_attack(hitter)
self._aggro= true self._aggro= true
end end
end
-- alert others to the attack -- alert others to the attack
local objs = minetest.get_objects_inside_radius(hitter:get_pos(), self.view_range) local objs = minetest.get_objects_inside_radius(hitter:get_pos(), self.view_range)
local obj = nil local obj = nil
for n = 1, #objs do for n = 1, #objs do
obj = objs[n]:get_luaentity() obj = objs[n]:get_luaentity()
if obj then if obj then
-- only alert members of same mob or friends -- only alert members of same mob or friends
if obj.group_attack if obj.group_attack
and obj.state ~= "attack" and obj.state ~= "attack"
and obj.owner ~= name then and obj.owner ~= name then
if obj.name == self.name then if obj.name == self.name then
obj:do_attack(hitter) obj:do_attack(hitter)
elseif type(obj.group_attack) == "table" then elseif type(obj.group_attack) == "table" then
for i=1, #obj.group_attack do for i=1, #obj.group_attack do
if obj.group_attack[i] == self.name then if obj.group_attack[i] == self.name then
obj._aggro = true obj._aggro = true
obj:do_attack(hitter) obj:do_attack(hitter)
break break
end
end end
end end
end end
end
-- have owned mobs attack player threat -- have owned mobs attack player threat
if obj.owner == name and obj.owner_loyal then if obj.owner == name and obj.owner_loyal then
obj:do_attack(self.object) obj:do_attack(self.object)
end
end end
end end
end end