Only check herd if in range

This commit is contained in:
ancientmarinerdev 2023-03-07 22:16:14 +00:00 committed by Gitea
parent 5b7132ac5e
commit 6097dacbab
2 changed files with 7 additions and 7 deletions

View file

@ -424,6 +424,8 @@ local function on_step_work (self, dtime)
self:check_runaway_from() self:check_runaway_from()
self:monster_attack() self:monster_attack()
self:npc_attack() self:npc_attack()
self:check_herd(dtime)
end end
self:check_aggro(dtime) self:check_aggro(dtime)

View file

@ -289,7 +289,7 @@ function mob_class:env_danger_movement_checks(dtime)
local yaw = 0 local yaw = 0
local can_jump_cliff = self:can_jump_cliff() local can_jump_cliff = self:can_jump_cliff()
if self:is_at_water_danger(can_jump_cliff) and self.state ~= "attack" then if self.state ~= "attack" and self:is_at_water_danger(can_jump_cliff) then
if math.random(1, 10) <= 6 then if math.random(1, 10) <= 6 then
self:set_velocity(0) self:set_velocity(0)
self.state = "stand" self.state = "stand"
@ -297,11 +297,6 @@ function mob_class:env_danger_movement_checks(dtime)
yaw = yaw + math.random(-0.5, 0.5) yaw = yaw + math.random(-0.5, 0.5)
yaw = self:set_yaw( yaw, 8) yaw = self:set_yaw( yaw, 8)
end end
else
-- This code should probably be moved to movement code
if self.move_in_group ~= false then
self:check_herd(dtime)
end
end end
if self:is_at_cliff_or_danger(can_jump_cliff) then if self:is_at_cliff_or_danger(can_jump_cliff) then
@ -754,7 +749,10 @@ end
local check_herd_timer = 0 local check_herd_timer = 0
function mob_class:check_herd(dtime) function mob_class:check_herd(dtime)
local pos = self.object:get_pos() local pos = self.object:get_pos()
if not pos then return end if not pos or self.state == "attack" then return end
-- Does any mob not move in group. Weird check for something not set?
if self.move_in_group == false then return end
check_herd_timer = check_herd_timer + dtime check_herd_timer = check_herd_timer + dtime
if check_herd_timer < 4 then return end if check_herd_timer < 4 then return end
check_herd_timer = 0 check_herd_timer = 0