fix spawn

This commit is contained in:
berengma 2020-12-20 13:49:10 +01:00
parent 18a43fb98b
commit ac208f173e
3 changed files with 8 additions and 5 deletions

View File

@ -67,7 +67,7 @@ local function sortout(self,ftable)
end
]]
local way = water_life.find_path(pos, ftable[i], self, self.dtime,true)
minetest.chat_send_all(dump(way))
--minetest.chat_send_all(dump(way))
if not way or #way < 2 then table.remove(ftable,i) end
end
return ftable
@ -84,6 +84,7 @@ function wildcow.hq_overrun(self,prty,target)
local hit = false
local func = function(self)
if not mobkit.is_alive(target) then return true end
local dist = water_life.dist2tgt(self,target)
if dist > self.view_range then return true end
@ -260,7 +261,7 @@ function wildcow.hq_find_food(self,prty,radius)
local pos2 = {x=pos.x +radius,y=pos.y+1,z=pos.z+radius}
local food = minetest.find_node_near(pos,radius, {"group:growing","group:plant"})
if not food then food = minetest.find_node_near(pos,radius, {"group:flora","default:papyrus","default:dry_shrub"}) end
if not food then food = minetest.find_node_near(pos, 5, {"default:dirt_with_grass"}) end
if not food then food = minetest.find_node_near(pos, radius, {"default:dirt_with_grass"}) end
if not food then return true end
local snack = food
local anim = false

View File

@ -10,12 +10,13 @@ local path = minetest.get_modpath(minetest.get_current_modname())
wildcow = {}
wildcow.spawnfreq = 30 -- spawn frequency
wildcow.maxheight = 80 -- max spawning height
wildcow.herdsize = 5 -- max member in a herd
wildcow.ptime = 360 -- time in secs until baby is born
wildcow.btime = 720 -- time needed for a calf to grew up to an adult
wildcow.lifetime = (wildcow.btime+wildcow.ptime)*4 -- lifetime in seconds
wildcow.fast_pf = false -- faster pathfinding (false is better but slower)
wildcow.debug = true -- show debug
wildcow.debug = false -- show debug

View File

@ -30,10 +30,11 @@ local function spawnstep(dtime)
local yaw = plyr:get_look_horizontal()
local animal = water_life.count_objects(pos)
if animal.all > water_life.maxmobs then toomuch = true end
if pos.y < 0 or pos.y > wildcow.maxheight then toomuch = true end -- no spawn under 0 and above maxheight
local radius = (water_life.abr * 12) -- 75% from 16 = 12 nodes
radius = random(16,radius) -- not nearer than 7 nodes in front of player
local angel = math.rad(random(80)) -- look for random angel 0 - 75 degrees
local angel = math.rad(random(80)) -- look for random angel 0 - 80 degrees
if water_life.leftorright() then yaw = yaw + angel else yaw = yaw - angel end -- add or substract to/from yaw
local pos2 = mobkit.pos_translate2d(pos,yaw,radius) -- calculate position
local bdata = water_life_get_biome_data(pos2) -- get biome data at spawn position
@ -60,7 +61,7 @@ local function spawnstep(dtime)
if landpos and not toomuch then
if not minetest.is_protected(landpos,mobname) then
if not minetest.is_protected(landpos,mobname) then -- do not spawn in protected areas
local obj = minetest.add_entity(landpos,mobname)
if obj then
local entity = obj:get_luaentity()