parent
db0afa6a4c
commit
bce6663d18
28
api_fast.lua
28
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)
|
||||
|
|
16
entities.lua
16
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,
|
||||
|
|
2
init.lua
2
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")
|
||||
|
|
|
@ -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,
|
||||
})
|
||||
|
Loading…
Reference in New Issue