Showcase monsters are now immediately removed when the owner isn't detected nearby

master
isaiah658 2022-08-08 00:13:30 +02:00
parent b48ace7f7f
commit f4f7b4bf00
1 changed files with 19 additions and 20 deletions

View File

@ -121,31 +121,30 @@ function mobs_api.register_mob(name, def)
self:set_animation("stand")
end
elseif self._state == "follow" then
local player_pos = nil
local showcase_id = nil
for _,obj in ipairs(minetest.get_objects_inside_radius(mob_pos, 20)) do
if obj:is_player() and obj:get_player_name() == self.nametag then
local meta = obj:get_meta()
local showcase_id = meta:get_string("zoonami_showcase_monster_id")
if showcase_id == self._showcase_id then
local player_pos = obj:get_pos()
local x_distance = math.abs(player_pos.x - mob_pos.x)
local z_distance = math.abs(player_pos.z - mob_pos.z)
if x_distance >= 4 or z_distance >= 4 then
local vec = {x = player_pos.x - mob_pos.x, z = player_pos.z - mob_pos.z}
local yaw = (math.atan(vec.z / vec.x) + math.pi / 2)
if player_pos.x > mob_pos.x then
yaw = yaw + math.pi
end
self.object:set_yaw(yaw)
self.set_velocity(self, 2)
else
self.set_velocity(self, 0)
end
else
self.object:remove()
end
player_pos = obj:get_pos()
showcase_id = obj:get_meta():get_string("zoonami_showcase_monster_id")
break
end
end
if showcase_id and showcase_id == self._showcase_id then
local x_distance = math.abs(player_pos.x - mob_pos.x)
local z_distance = math.abs(player_pos.z - mob_pos.z)
if x_distance >= 4 or z_distance >= 4 then
local vec = {x = player_pos.x - mob_pos.x, z = player_pos.z - mob_pos.z}
local yaw = (math.atan(vec.z / vec.x) + math.pi / 2)
yaw = player_pos.x > mob_pos.x and yaw + math.pi or yaw
self.object:set_yaw(yaw)
self.set_velocity(self, 2)
else
self.set_velocity(self, 0)
end
else
self.object:remove()
end
end
-- Surrounding environment