mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-22 10:31:06 +01:00
Clean up and add pathfinding constant
This commit is contained in:
parent
37e4dd5556
commit
eebea4a7a9
2 changed files with 17 additions and 13 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue