Showcase monsters are now immediately removed when the owner isn't detected nearby
parent
b48ace7f7f
commit
f4f7b4bf00
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue