diff --git a/api_fast.lua b/api_fast.lua index b2c84a4..815724e 100644 --- a/api_fast.lua +++ b/api_fast.lua @@ -66,10 +66,12 @@ local function animal_step(self, dtime) local rpos = vector.round(pos) - if not vector.equals(self.last_rpos, rpos) then + if not self.node_here or not self.node_below or not vector.equals(self.last_rpos, rpos) then + local here = minetest.get_node({x=rpos.x, y=rpos.y, z=rpos.z}) local below = minetest.get_node({x=rpos.x, y=rpos.y-2, z=rpos.z}) + self.node_here = here.name self.node_below = below.name -- print("below: ".. self.node_below) @@ -83,13 +85,24 @@ local function animal_step(self, dtime) -- TODO: floating + local bdef = minetest.registered_nodes[self.node_below] - if minetest.registered_nodes[self.node_below].climbable then + if minetest.registered_nodes[self.node_here].drawtype == "liquid" then +-- print("in liquid") + self.object:setacceleration({ -- float + x = 0, + y = 1, + z = 0 + }) + + elseif bdef.climbable or bdef.drawtype == "liquid" then self.object:setacceleration({ x = 0, y = 0, z = 0 }) + local v = self.object:getvelocity() + self.object:setvelocity({x=v.x, y=0, z=v.z}) else self.object:setacceleration({ x = 0, @@ -492,9 +505,16 @@ function mobehavior:register_mob_fast(name, def) if not self.health or self.health == 0 then self.health = math.random(self.hp_min, self.hp_max) end - + self.object:set_hp(self.health) - self.object:set_armor_groups({fleshy = self.armor}) + + + if type(self.armor) == "table" then + self.object:set_armor_groups(self.armor) + else + self.object:set_armor_groups({fleshy = self.armor}) + end + self.old_y = self.object:getpos().y self.object:setyaw(math.random(1, 360) / 180 * math.pi) -- self.sounds.distance = (self.sounds.distance or 10) diff --git a/entities.lua b/entities.lua index f0213a2..f691b41 100644 --- a/entities.lua +++ b/entities.lua @@ -28,7 +28,7 @@ function make_bunny(name, behavior_fn) floats = 0, drops = { {name = "mobehavior:meat_raw", chance = 1, min = 1, max = 2}, - {name = "fur:small_pelt", chance = 1, min = 1, max = 1}, + {name = "mobehavior:fur_small", chance = 1, min = 1, max = 1}, }, water_damage = 0, lava_damage = 4, @@ -90,8 +90,8 @@ function make_wolf(name, behavior_fn) view_range = 25, floats = 1, drops = { - {name = "mobehavior:meat_raw", chance = 1, min = 1, max = 1}, - {name = "fur:medium_pelt", chance = 1, min = 1, max = 1}, + {name = "mobehavior:meat_raw", chance = 1, min = 2, max = 3}, + {name = "mobehavior:fur_medium", chance = 1, min = 1, max = 1}, }, water_damage = 0, lava_damage = 4, @@ -153,8 +153,8 @@ function make_sheep(name, behavior_fn) view_range = 25, floats = 1, drops = { - {name = "mobehavior:meat_raw", chance = 1, min = 1, max = 1}, - {name = "fur:medium_pelt", chance = 1, min = 1, max = 1}, + {name = "mobehavior:meat_raw", chance = 1, min = 2, max = 3}, + {name = "mobehavior:fur_medium", chance = 1, min = 1, max = 1}, }, water_damage = 0, lava_damage = 4, @@ -217,8 +217,8 @@ function make_bear(name, behavior_fn) view_range = 25, floats = 1, drops = { - {name = "mobehavior:meat_raw", - chance = 1, min = 1, max = 1}, + {name = "mobehavior:meat_raw", chance = 1, min = 5, max = 7}, + {name = "mobehavior:fur_large", chance = 1, min = 1, max = 1}, }, water_damage = 0, lava_damage = 4, @@ -328,6 +328,7 @@ function make_deer(name, behavior_fn) floats = 1, drops = { {name = "mobehavior:meat_raw", chance = 1, min = 3, max = 5}, + {name = "mobehavior:fur_medium", chance = 1, min = 1, max = 2}, }, water_damage = 0, lava_damage = 4, @@ -375,6 +376,7 @@ function make_buck(name, behavior_fn) floats = 1, drops = { {name = "mobehavior:meat_raw", chance = 1, min = 3, max = 5}, + {name = "mobehavior:fur_medium", chance = 1, min = 1, max = 2}, }, water_damage = 0, lava_damage = 4, diff --git a/init.lua b/init.lua index 419d5d9..9ec2b7a 100644 --- a/init.lua +++ b/init.lua @@ -46,7 +46,7 @@ end -- new api from scratch dofile(path.."/api_fast.lua") -dofile(path.."/meat.lua") +dofile(path.."/items.lua") dofile(path.."/api.lua") dofile(path.."/behavior.lua") -- dofile(path.."/simple_api.lua") diff --git a/items.lua b/items.lua new file mode 100644 index 0000000..af2d3e1 --- /dev/null +++ b/items.lua @@ -0,0 +1,89 @@ + + +--[[ + + +traps +cat food dish to keep cats near + + + + + +]] + + + +minetest.register_craftitem("mobehavior:fur_small", { + description = "Small Fur", + inventory_image = "mobehavior_fur_small.png", + groups = {fur = 1}, +}) + +minetest.register_craftitem("mobehavior:fur_medium", { + description = "Medium Fur", + inventory_image = "mobehavior_fur_medium.png", + groups = {fur = 2}, +}) + +minetest.register_craftitem("mobehavior:fur_large", { + description = "Large Fur", + inventory_image = "mobehavior_fur_large.png", + groups = {fur = 3}, +}) + +minetest.register_craftitem("mobehavior:bone", { + description = "Bone", + inventory_image = "mobehavior_bone.png", + groups = {bone = 1}, +}) + +minetest.register_craftitem("mobehavior:horn", { + description = "Horn", + inventory_image = "mobehavior_horn", + groups = {horn = 1}, +}) + +minetest.register_craftitem("mobehavior:meat", { + description = "Meat (Raw)", + inventory_image = "mobehavior_meat.png", + groups = {meat = 1, raw_meat = 1}, +}) + +minetest.register_craftitem("mobehavior:meat_on_bone", { + description = "Meat (Raw)", + inventory_image = "mobehavior_meat_on_bone.png", + groups = {meat = 1, raw_meat = 1}, +}) + +minetest.register_craftitem("mobehavior:meat_cooked", { + description = "Meat (Cooked)", + inventory_image = "mobehavior_meat_cooked.png", + groups = {meat = 1, cooked_meat = 1}, + on_use = minetest.item_eat(2), +}) + +minetest.register_craftitem("mobehavior:meat_cooked_on_bone", { + description = "Meat (Cooked)", + inventory_image = "mobehavior_meat_cooked_on_bone.png", + groups = {meat = 1, cooked_meat = 1}, + on_use = minetest.item_eat(2), + -- TODO: add a bone to inventory after eating + -- TODO: craft to cut meat off bone + +}) + +minetest.register_craftitem("mobehavior:meat_rotten", { + description = "Meat (Rotten)", + inventory_image = "mobehavior_meat_rotten.png", + groups = {meat = 1, rotten_meat = 1}, + on_use = minetest.item_eat(-2), +}) + +minetest.register_craft({ + type = 'cooking', + output = "mobehavior:meat_cooked", + recipe = "mobehavior:meat", + cooktime = 10, +}) +