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)
|
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})
|
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
|
self.node_below = below.name
|
||||||
-- print("below: ".. self.node_below)
|
-- print("below: ".. self.node_below)
|
||||||
|
|
||||||
|
@ -83,13 +85,24 @@ local function animal_step(self, dtime)
|
||||||
|
|
||||||
-- TODO: floating
|
-- 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({
|
self.object:setacceleration({
|
||||||
x = 0,
|
x = 0,
|
||||||
y = 0,
|
y = 0,
|
||||||
z = 0
|
z = 0
|
||||||
})
|
})
|
||||||
|
local v = self.object:getvelocity()
|
||||||
|
self.object:setvelocity({x=v.x, y=0, z=v.z})
|
||||||
else
|
else
|
||||||
self.object:setacceleration({
|
self.object:setacceleration({
|
||||||
x = 0,
|
x = 0,
|
||||||
|
@ -492,9 +505,16 @@ function mobehavior:register_mob_fast(name, def)
|
||||||
if not self.health or self.health == 0 then
|
if not self.health or self.health == 0 then
|
||||||
self.health = math.random(self.hp_min, self.hp_max)
|
self.health = math.random(self.hp_min, self.hp_max)
|
||||||
end
|
end
|
||||||
|
|
||||||
self.object:set_hp(self.health)
|
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.old_y = self.object:getpos().y
|
||||||
self.object:setyaw(math.random(1, 360) / 180 * math.pi)
|
self.object:setyaw(math.random(1, 360) / 180 * math.pi)
|
||||||
-- self.sounds.distance = (self.sounds.distance or 10)
|
-- 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,
|
floats = 0,
|
||||||
drops = {
|
drops = {
|
||||||
{name = "mobehavior:meat_raw", chance = 1, min = 1, max = 2},
|
{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,
|
water_damage = 0,
|
||||||
lava_damage = 4,
|
lava_damage = 4,
|
||||||
|
@ -90,8 +90,8 @@ function make_wolf(name, behavior_fn)
|
||||||
view_range = 25,
|
view_range = 25,
|
||||||
floats = 1,
|
floats = 1,
|
||||||
drops = {
|
drops = {
|
||||||
{name = "mobehavior:meat_raw", chance = 1, min = 1, max = 1},
|
{name = "mobehavior:meat_raw", chance = 1, min = 2, max = 3},
|
||||||
{name = "fur:medium_pelt", chance = 1, min = 1, max = 1},
|
{name = "mobehavior:fur_medium", chance = 1, min = 1, max = 1},
|
||||||
},
|
},
|
||||||
water_damage = 0,
|
water_damage = 0,
|
||||||
lava_damage = 4,
|
lava_damage = 4,
|
||||||
|
@ -153,8 +153,8 @@ function make_sheep(name, behavior_fn)
|
||||||
view_range = 25,
|
view_range = 25,
|
||||||
floats = 1,
|
floats = 1,
|
||||||
drops = {
|
drops = {
|
||||||
{name = "mobehavior:meat_raw", chance = 1, min = 1, max = 1},
|
{name = "mobehavior:meat_raw", chance = 1, min = 2, max = 3},
|
||||||
{name = "fur:medium_pelt", chance = 1, min = 1, max = 1},
|
{name = "mobehavior:fur_medium", chance = 1, min = 1, max = 1},
|
||||||
},
|
},
|
||||||
water_damage = 0,
|
water_damage = 0,
|
||||||
lava_damage = 4,
|
lava_damage = 4,
|
||||||
|
@ -217,8 +217,8 @@ function make_bear(name, behavior_fn)
|
||||||
view_range = 25,
|
view_range = 25,
|
||||||
floats = 1,
|
floats = 1,
|
||||||
drops = {
|
drops = {
|
||||||
{name = "mobehavior:meat_raw",
|
{name = "mobehavior:meat_raw", chance = 1, min = 5, max = 7},
|
||||||
chance = 1, min = 1, max = 1},
|
{name = "mobehavior:fur_large", chance = 1, min = 1, max = 1},
|
||||||
},
|
},
|
||||||
water_damage = 0,
|
water_damage = 0,
|
||||||
lava_damage = 4,
|
lava_damage = 4,
|
||||||
|
@ -328,6 +328,7 @@ function make_deer(name, behavior_fn)
|
||||||
floats = 1,
|
floats = 1,
|
||||||
drops = {
|
drops = {
|
||||||
{name = "mobehavior:meat_raw", chance = 1, min = 3, max = 5},
|
{name = "mobehavior:meat_raw", chance = 1, min = 3, max = 5},
|
||||||
|
{name = "mobehavior:fur_medium", chance = 1, min = 1, max = 2},
|
||||||
},
|
},
|
||||||
water_damage = 0,
|
water_damage = 0,
|
||||||
lava_damage = 4,
|
lava_damage = 4,
|
||||||
|
@ -375,6 +376,7 @@ function make_buck(name, behavior_fn)
|
||||||
floats = 1,
|
floats = 1,
|
||||||
drops = {
|
drops = {
|
||||||
{name = "mobehavior:meat_raw", chance = 1, min = 3, max = 5},
|
{name = "mobehavior:meat_raw", chance = 1, min = 3, max = 5},
|
||||||
|
{name = "mobehavior:fur_medium", chance = 1, min = 1, max = 2},
|
||||||
},
|
},
|
||||||
water_damage = 0,
|
water_damage = 0,
|
||||||
lava_damage = 4,
|
lava_damage = 4,
|
||||||
|
|
2
init.lua
2
init.lua
|
@ -46,7 +46,7 @@ end
|
||||||
-- new api from scratch
|
-- new api from scratch
|
||||||
dofile(path.."/api_fast.lua")
|
dofile(path.."/api_fast.lua")
|
||||||
|
|
||||||
dofile(path.."/meat.lua")
|
dofile(path.."/items.lua")
|
||||||
dofile(path.."/api.lua")
|
dofile(path.."/api.lua")
|
||||||
dofile(path.."/behavior.lua")
|
dofile(path.."/behavior.lua")
|
||||||
-- dofile(path.."/simple_api.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