Proper node eating. Step sounds. Updated texture.

This commit is contained in:
Auke Kok 2016-05-02 21:09:48 -07:00
parent 3eb81fdc90
commit e9e3819b71
2 changed files with 39 additions and 5 deletions

View File

@ -327,8 +327,6 @@ entity_ai.register_driver("eat", {
self.object:setvelocity(vector.new()) self.object:setvelocity(vector.new())
-- collect info we want to use in this driver -- collect info we want to use in this driver
local state = self.entity_ai_state local state = self.entity_ai_state
-- clear factors
state.factors.near_foodnode = nil
state.eat_ttl = math.random(30, 60) state.eat_ttl = math.random(30, 60)
end, end,
step = function(self, dtime) step = function(self, dtime)
@ -353,10 +351,46 @@ entity_ai.register_driver("eat", {
end end
end, end,
stop = function(self) stop = function(self)
-- increase HP
local hp = self.object:get_hp() local hp = self.object:get_hp()
if hp < self.driver:get_property("hp_max") then if hp < self.driver:get_property("hp_max") then
self.object:set_hp(hp + 1) self.object:set_hp(hp + 1)
end end
-- eat foodnode
local state = self.entity_ai_state
local food = state.factors.near_foodnode
if not food then
return
end
-- FIXME can probably be removed.
if type(food) == "number" then
return
end
local node = minetest.get_node(food)
if node.name == "default:dirt_with_grass" or node.name == "default:dirt_with_dry_grass" then
minetest.set_node(food, {name = "default:dirt"})
elseif node.name == "default:grass_1" or node.name == "default:dry_grass_1" then
minetest.remove_node(food)
elseif node.name == "default:grass_2" then
minetest.set_node(food, {name = "default:grass_1"})
elseif node.name == "default:grass_3" then
minetest.set_node(food, {name = "default:grass_2"})
elseif node.name == "default:grass_4" then
minetest.set_node(food, {name = "default:grass_3"})
elseif node.name == "default:grass_5" then
minetest.set_node(food, {name = "default:grass_4"})
elseif node.name == "default:dry_grass_2" then
minetest.set_node(food, {name = "default:dry_grass_1"})
elseif node.name == "default:dry_grass_3" then
minetest.set_node(food, {name = "default:dry_grass_2"})
elseif node.name == "default:dry_grass_4" then
minetest.set_node(food, {name = "default:dry_grass_3"})
elseif node.name == "default:dry_grass_5" then
minetest.set_node(food, {name = "default:dry_grass_4"})
end
state.factors.near_foodnode = nil
end, end,
}) })
@ -522,9 +556,7 @@ entity_ai.register_factor("near_foodnode", function(self, dtime)
--]] --]]
-- store grass node in our factor result -- store grass node in our factor result
local state = self.entity_ai_state state.factors.near_foodnode = nodes[1]
local pick, _ = next(nodes, nil)
state.factors.near_foodnode = pick
end) end)
@ -789,6 +821,8 @@ minetest.register_entity("entity_ai:sheep", {
visual = "mesh", visual = "mesh",
mesh = "sheep.b3d", mesh = "sheep.b3d",
textures = {"sheep_fur.png"}, textures = {"sheep_fur.png"},
makes_footstep_sound = true,
stepheight = 0.51,
-- standard stuff -- standard stuff
collisionbox = {-5/16, -1/2, -5/16, 5/16, 4/16, 5/16}, collisionbox = {-5/16, -1/2, -5/16, 5/16, 4/16, 5/16},
-- entity_ai stuff -- entity_ai stuff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB