BobBlocks/trap.lua
Vanessa Ezekowitz 20221b2618 minetest.env:* --> minetest.* (#2)
* minetest.env:* --> minetest.*

* tile_images --> tiles

* Add standard mod files.

* Rewrote the mod to use the new param2 color method
New dependency on Unified Dyes.

This change comes with a few neutral-to-positive side effects:

1) Minor recipe changes were necessary since there are only two blocks and
   two poles now.
2) All recipes, node names, etc. were updated to current minetest API.
3) Where recipes called for leaves or sticks, I used groups.
4) the "wavy" (formerly "grey") block and fence/pole can now be
   colored as well.
5) Inside the conversion LBM, some of the original colors were re-mapped
   to the closest Unified Dyes equivalents, to try to keep the on-screen
   appearance mostly the same after conversion.
6) Aside from "BTM" and "Health", all block and pole nodes can take on the
   entire Unified Dyes palette instead of just the 9 originally offered.

Mod works the same as others that depend on Unified Dyes - craft and place
a block or pole, then right-click on it with dye to colorize it.

* unified dyes uses on_use now, instead of on_rightclick

* don't run the LBM at every load
2017-02-19 08:12:17 -05:00

184 lines
4.8 KiB
Lua

-- State Changes
local update_bobtrap = function (pos, node)
local nodename=""
local param2=""
--Switch Trap State
if
-- Swap Traps
node.name == 'bobblocks:trap_spike' then nodename = 'bobblocks:trap_spike_set'
elseif node.name == 'bobblocks:trap_spike_set' then nodename = 'bobblocks:trap_spike'
elseif node.name == 'bobblocks:trap_spike_major' then nodename = 'bobblocks:trap_spike_major_set'
elseif node.name == 'bobblocks:trap_spike_major_set' then nodename = 'bobblocks:trap_spike_major'
end
minetest.add_node(pos, {name = nodename})
end
-- Punch Traps
local on_bobtrap_punched = function (pos, node, puncher)
if
-- Start Traps
node.name == 'bobblocks:trap_spike' or node.name == 'bobblocks:trap_spike_set' or
node.name == 'bobblocks:trap_spike_major' or node.name == 'bobblocks:trap_spike_major_set'
then
update_bobtrap(pos, node)
end
end
minetest.register_on_punchnode(on_bobtrap_punched)
--ABM (Spring The Traps)
minetest.register_abm(
{nodenames = {"bobblocks:trap_spike_set"},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local objs = minetest.get_objects_inside_radius(pos, 1)
for k, obj in pairs(objs) do
update_bobtrap(pos, node)
end
end,
})
minetest.register_abm(
{nodenames = {"bobblocks:trap_spike_major_set"},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local objs = minetest.get_objects_inside_radius(pos, 1)
for k, obj in pairs(objs) do
update_bobtrap(pos, node)
end
end,
})
-- Nodes
minetest.register_node("bobblocks:trap_grass", {
description = "Trap Grass",
tiles = {"default_grass.png"},
paramtype2 = "facedir",
legacy_facedir_simple = true,
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3},
is_ground_content = false,
walkable = false,
climbable = false,
})
minetest.register_node("bobblocks:trap_spike", {
description = "Trap Spike Minor",
drawtype = "plantlike",
visual_scale = 1,
tiles = {"bobblocks_minorspike.png"},
inventory_image = ("bobblocks_minorspike.png"),
paramtype = "light",
walkable = false,
sunlight_propagates = true,
groups = {cracky=3,melty=3},
})
minetest.register_node("bobblocks:trap_spike_set", {
description = "Trap Spike Minor Set",
drawtype = "raillike",
visual_scale = 1,
tiles = {"bobblocks_trap_set.png"},
paramtype = "light",
walkable = false,
sunlight_propagates = true,
groups = {cracky=3,melty=3,not_in_creative_inventory=1},
drop = 'bobblocks:trap_spike',
})
minetest.register_node("bobblocks:trap_spike_major", {
description = "Trap Spike Major",
drawtype = "plantlike",
visual_scale = 1,
tiles = {"bobblocks_majorspike.png"},
inventory_image = ("bobblocks_majorspike.png"),
paramtype = "light",
walkable = false,
sunlight_propagates = true,
groups = {cracky=2,melty=2},
})
minetest.register_node("bobblocks:trap_spike_major_set", {
description = "Trap Spike Major Set",
drawtype = "raillike",
visual_scale = 1,
tiles = {"bobblocks_trap_set.png"},
paramtype = "light",
walkable = false,
sunlight_propagates = true,
groups = {cracky=3,melty=3,not_in_creative_inventory=1},
drop = 'bobblocks:trap_spike_major',
})
-- Crafting
minetest.register_craft({
output = 'bobblocks:trap_spike',
recipe = {
{'', '', ''},
{'', 'default:cobble', ''},
{'default:cobble', 'default:apple', 'default:cobble'},
}
})
minetest.register_craft({
output = 'bobblocks:trap_spike_major',
recipe = {
{'', 'default:cobble', ''},
{'', 'default:apple', ''},
{'default:cobble', 'default:apple', 'default:cobble'},
}
})
minetest.register_craft({
output = 'bobblocks:trap_grass',
recipe = {
{'', '', ''},
{'', 'default:dirt', ''},
{'', 'default:stick', ''},
}
})
-- ABM
minetest.register_abm(
{nodenames = {"bobblocks:trap_spike"},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local objs = minetest.get_objects_inside_radius(pos, 1)
for k, obj in pairs(objs) do
obj:set_hp(obj:get_hp()-1)
minetest.sound_play("bobblocks_trap_fall",
{pos = pos, gain = 1.0, max_hear_distance = 3,})
end
end,
})
minetest.register_abm(
{nodenames = {"bobblocks:trap_spike_major"},
interval = 1.0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local objs = minetest.get_objects_inside_radius(pos, 1)
for k, obj in pairs(objs) do
obj:set_hp(obj:get_hp()-100)
minetest.sound_play("bobblocks_trap_fall",
{pos = pos, gain = 1.0, max_hear_distance = 3,})
end
end,
})