Try harder to add armor to bones

Previously, if bones were on a slab, or some non-buildable_to but walkable
node, then the armor would fail to find the bones node (which is Y+1,
typically) and the armor would disappear.  This is an attempt to address that.
This commit is contained in:
James Stevenson 2016-07-22 10:46:05 -04:00
parent ac414d3df3
commit 0157ebd683
1 changed files with 16 additions and 10 deletions

View File

@ -498,16 +498,22 @@ if ARMOR_DROP == true or ARMOR_DESTROY == true then
minetest.after(ARMOR_BONES_DELAY, function() minetest.after(ARMOR_BONES_DELAY, function()
local node = minetest.get_node(vector.round(pos)) local node = minetest.get_node(vector.round(pos))
if node then if node then
if node.name == "bones:bones" then if node.name ~= "bones:bones" then
local meta = minetest.get_meta(vector.round(pos)) pos.y = pos.y+1
local owner = meta:get_string("owner") node = minetest.get_node(vector.round(pos))
local inv = meta:get_inventory() if node.name ~= "bones:bones" then
for _,stack in ipairs(drop) do minetest.log("warning", "Failed to add armor to bones node.")
if name == owner and inv:room_for_item("main", stack) then return
inv:add_item("main", stack) end
else end
armor.drop_armor(pos, stack) local meta = minetest.get_meta(vector.round(pos))
end local owner = meta:get_string("owner")
local inv = meta:get_inventory()
for _,stack in ipairs(drop) do
if name == owner and inv:room_for_item("main", stack) then
inv:add_item("main", stack)
else
armor.drop_armor(pos, stack)
end end
end end
else else