From eebea4a7a9fa92283eae7640556e08b6790cca4f Mon Sep 17 00:00:00 2001 From: ancientmarinerdev Date: Tue, 25 Oct 2022 23:53:55 +0100 Subject: [PATCH] Clean up and add pathfinding constant --- mods/ENTITIES/mcl_mobs/api.lua | 12 +++++++----- mods/ENTITIES/mobs_mc/villager.lua | 18 ++++++++++-------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index 08e30e24e..422857de4 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -13,6 +13,8 @@ local FLOP_HOR_SPEED = 1.5 local ENTITY_CRAMMING_MAX = 24 local CRAMMING_DAMAGE = 3 +local PATHFINDING = "gowp" + -- Localize local S = minetest.get_translator("mcl_mobs") @@ -2484,7 +2486,7 @@ local function check_doors(self) if n.name:find("_b_") then local def = minetest.registered_nodes[n.name] local closed = n.name:find("_b_1") - if self.state == "gowp" then + if self.state == PATHFINDING then if closed and def.on_rightclick then def.on_rightclick(d,n,self) end --if not closed and def.on_rightclick then def.on_rightclick(d,n,self) end else @@ -2661,7 +2663,7 @@ local do_states = function(self, dtime) end end - elseif self.state == "gowp" then + elseif self.state == PATHFINDING then check_gowp(self,dtime) elseif self.state == "walk" then @@ -3178,7 +3180,7 @@ local plane_adjacents = { local gopath_last = os.time() function mcl_mobs:gopath(self,target,callback_arrived) - if self.state == "gowp" then mcl_log("Already set as gowp, don't set another path until done.") return end + if self.state == PATHFINDING then mcl_log("Already set as gowp, don't set another path until done.") return end if os.time() - gopath_last < 15 then mcl_log("Not ready to path yet") @@ -3232,7 +3234,7 @@ function mcl_mobs:gopath(self,target,callback_arrived) self.callback_arrived = callback_arrived table.remove(wp,1) self.waypoints = wp - self.state = "gowp" + self.state = PATHFINDING return true else self.state = "walk" @@ -4193,7 +4195,7 @@ local mob_step = function(self, dtime) -- attack timer self.timer = self.timer + dtime - if self.state ~= "attack" and self.state ~= "gowp" then + if self.state ~= "attack" and self.state ~= PATHFINDING then if self.timer < 1 then return end diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua index bd2d39002..a6f21b83b 100644 --- a/mods/ENTITIES/mobs_mc/villager.lua +++ b/mods/ENTITIES/mobs_mc/villager.lua @@ -30,6 +30,8 @@ local DEFAULT_WALK_CHANCE = 33 -- chance to walk in percent, if no player nearby local PLAYER_SCAN_INTERVAL = 5 -- every X seconds, villager looks for players nearby local PLAYER_SCAN_RADIUS = 4 -- scan radius for looking for nearby players +local PATHFINDING = "gowp" + --[=======[ TRADING ]=======] -- LIST OF VILLAGER PROFESSIONS AND TRADES @@ -564,7 +566,7 @@ end local function set_textures(self) local badge_textures = get_badge_textures(self) - mcl_log("Setting textures: " .. tostring(badge_textures)) + --mcl_log("Setting textures: " .. tostring(badge_textures)) self.object:set_properties({textures=badge_textures}) end @@ -671,7 +673,7 @@ local function take_bed (entity) for _,n in pairs(nn) do local m=minetest.get_meta(n) --mcl_log("Bed owner: ".. m:get_string("villager")) - if m:get_string("villager") == "" and not (entity.state == "gowp") then + if m:get_string("villager") == "" and not (entity.state == PATHFINDING) then mcl_log("Can we path to bed: "..minetest.pos_to_string(n) ) local gp = mcl_mobs:gopath(entity,n,function(self) if self then @@ -884,7 +886,7 @@ local function get_a_job(self) if n and employ(self,n) then return true end - if self.state ~= "gowp" then + if self.state ~= PATHFINDING then mcl_log("Nothing near. Need to look for a job") look_for_job(self, requested_jobsites) end @@ -938,7 +940,7 @@ local function do_work (self) -- Don't try if looking_for_work, or gowp possibly if validate_jobsite(self) then - mcl_log("My jobsite is valid. Do i need to travel?") + --mcl_log("My jobsite is valid. Do i need to travel?") local jobsite2 = retrieve_my_jobsite (self) local jobsite = self._jobsite @@ -947,9 +949,9 @@ local function do_work (self) --mcl_log("Villager: ".. minetest.pos_to_string(self.object:get_pos()) .. ", jobsite: " .. minetest.pos_to_string(self._jobsite)) if vector.distance(self.object:get_pos(),self._jobsite) < 2 then - mcl_log("Made it to work ok!") + --mcl_log("Made it to work ok!") - if not (self.state == "gowp") then + if not (self.state == PATHFINDING) then --mcl_log("Setting order to work.") self.order = WORK else @@ -1649,7 +1651,7 @@ mcl_mobs:register_mob("mobs_mc:villager", { return end - if self.state == "gowp" then + if self.state == PATHFINDING then self.state = "stand" end -- Can we remove now we possibly have fixed root cause @@ -1745,7 +1747,7 @@ mcl_mobs:register_mob("mobs_mc:villager", { -- Only check in day or during thunderstorm but wandered_too_far code won't work if check_bed (self) then --self.state ~= "go_home" - local wandered_too_far = ( self.state ~= "gowp" ) and (vector.distance(self.object:get_pos(),self._bed) > 50 ) + local wandered_too_far = ( self.state ~= PATHFINDING ) and (vector.distance(self.object:get_pos(),self._bed) > 50 ) --if wandered_too_far then minetest.log("Wandered too far! Return home ") end if wandered_too_far then