Mobs: Stop following if target is dead

This commit is contained in:
Wuzzy 2024-03-20 15:31:47 +01:00
parent 12b19c641b
commit 1cfd850e23
3 changed files with 14 additions and 3 deletions

View File

@ -440,6 +440,9 @@ rp_mobs.microtasks.walk_straight_towards = function(walk_speed, target_type, tar
if not tpos then
return true
end
if target:get_hp() == 0 or target._dying then
return true
end
else
minetest.log("error", "[rp_mobs] Incorrect target_type provided in rp_mobs.microtask.walk_straight_towards!")
return true

View File

@ -85,9 +85,13 @@ rp_mobs_mobs.create_player_attack_decider = function()
if mob._temp_custom_state.follow_player then
local playername = mob._temp_custom_state.follow_player
local player = minetest.get_player_by_name(mob._temp_custom_state.follow_player)
if player and player:is_player() then
if player and player:is_player() and player:get_hp() > 0 then
mob._temp_custom_state.attack_target = player
else
mob._temp_custom_state.attack_target = nil
end
else
mob._temp_custom_state.attack_target = nil
end
end,
is_finished = function()

View File

@ -255,7 +255,7 @@ rp_mobs_mobs.microtask_player_find_follow = function(view_range)
local objs = minetest.get_objects_inside_radius(s, view_range)
for o=1, #objs do
local obj = objs[o]
if obj:is_player() then
if obj:is_player() and obj:get_hp() > 0 then
local player = obj
p = player:get_pos()
dist = vector.distance(s, p)
@ -270,7 +270,7 @@ rp_mobs_mobs.microtask_player_find_follow = function(view_range)
mob._temp_custom_state.follow_player = closest_player:get_player_name()
end
else
-- Unfollow player if out of view range
-- Unfollow player if out of view range, dead or gone
local player = minetest.get_player_by_name(mob._temp_custom_state.follow_player)
if player then
local p = player:get_pos()
@ -278,7 +278,11 @@ rp_mobs_mobs.microtask_player_find_follow = function(view_range)
-- Out of range
if dist > view_range then
mob._temp_custom_state.follow_player = nil
elseif player:get_hp() == 0 then
mob._temp_custom_state.follow_player = nil
end
else
mob._temp_custom_state.follow_player = nil
end
end
end,