2019-03-17 14:43:31 +00:00
|
|
|
-- Special nodes
|
|
|
|
do
|
2019-11-28 05:21:59 +00:00
|
|
|
minetest.register_node(":ctf_map:ignore", {
|
2019-03-17 14:43:31 +00:00
|
|
|
description = "Artificial Ignore", -- this may need to be given a more appropriate name
|
|
|
|
drawtype = "airlike",
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
walkable = true,
|
|
|
|
pointable = false,
|
|
|
|
diggable = false,
|
|
|
|
buildable_to = false,
|
|
|
|
air_equivalent = true,
|
|
|
|
|
|
|
|
groups = {immortal = 1},
|
|
|
|
})
|
|
|
|
|
2019-11-28 05:21:59 +00:00
|
|
|
minetest.register_node(":ctf_map:ind_glass", {
|
2020-05-16 09:36:25 +00:00
|
|
|
description = "Indestructible Barrier Glass",
|
2019-03-17 14:43:31 +00:00
|
|
|
drawtype = "glasslike_framed_optional",
|
|
|
|
tiles = {"default_glass.png", "default_glass_detail.png"},
|
|
|
|
inventory_image = minetest.inventorycube("default_glass.png"),
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
is_ground_content = false,
|
|
|
|
walkable = true,
|
|
|
|
buildable_to = false,
|
|
|
|
pointable = false,
|
2020-05-16 09:36:25 +00:00
|
|
|
groups = {immortal = 1, not_in_creative_inventory = 1},
|
2019-03-17 14:43:31 +00:00
|
|
|
sounds = default.node_sound_glass_defaults()
|
|
|
|
})
|
2019-03-17 01:36:15 +00:00
|
|
|
|
2019-11-28 05:21:59 +00:00
|
|
|
minetest.register_node(":ctf_map:ind_glass_red", {
|
2020-05-16 09:36:25 +00:00
|
|
|
description = "Indestructible Red Barrier Glass",
|
2019-03-17 14:43:31 +00:00
|
|
|
drawtype = "glasslike",
|
|
|
|
tiles = {"ctf_map_glass_red.png"},
|
|
|
|
inventory_image = minetest.inventorycube("ctf_map_glass_red.png"),
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
is_ground_content = false,
|
|
|
|
walkable = true,
|
|
|
|
buildable_to = false,
|
|
|
|
use_texture_alpha = false,
|
|
|
|
alpha = 0,
|
|
|
|
pointable = false,
|
2020-05-16 09:36:25 +00:00
|
|
|
groups = {immortal = 1, not_in_creative_inventory = 1},
|
2019-03-17 14:43:31 +00:00
|
|
|
sounds = default.node_sound_glass_defaults()
|
|
|
|
})
|
2019-03-17 01:36:15 +00:00
|
|
|
|
2019-11-28 05:21:59 +00:00
|
|
|
minetest.register_node(":ctf_map:ind_stone_red", {
|
2020-05-16 09:36:25 +00:00
|
|
|
description = "Indestructible Red Barrier Stone",
|
|
|
|
groups = {immortal = 1, not_in_creative_inventory = 1},
|
2019-03-17 14:43:31 +00:00
|
|
|
tiles = {"ctf_map_stone_red.png"},
|
|
|
|
is_ground_content = false
|
|
|
|
})
|
|
|
|
|
2019-11-28 05:21:59 +00:00
|
|
|
minetest.register_node(":ctf_map:killnode", {
|
2019-03-17 14:43:31 +00:00
|
|
|
description = "Kill Node",
|
|
|
|
drawtype = "glasslike",
|
|
|
|
tiles = {"ctf_map_killnode.png"},
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propogates = true,
|
|
|
|
walkable = false,
|
|
|
|
pointable = false,
|
|
|
|
damage_per_second = 20,
|
|
|
|
is_ground_content = false,
|
|
|
|
groups = {immortal = 1},
|
|
|
|
sounds = default.node_sound_glass_defaults(),
|
|
|
|
})
|
|
|
|
|
2019-11-28 05:21:59 +00:00
|
|
|
minetest.register_node(":ctf_map:reinforced_cobble", {
|
2019-03-17 14:43:31 +00:00
|
|
|
description = "Reinforced Cobblestone",
|
|
|
|
tiles = {"ctf_map_reinforced_cobble.png"},
|
|
|
|
is_ground_content = false,
|
|
|
|
groups = {cracky = 1, stone = 2},
|
|
|
|
sounds = default.node_sound_stone_defaults(),
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
2021-04-05 15:22:24 +00:00
|
|
|
local mod_prefixes = {
|
|
|
|
default = "";
|
|
|
|
stairs = "";
|
|
|
|
wool = "wool_";
|
|
|
|
}
|
|
|
|
|
2021-04-06 15:07:58 +00:00
|
|
|
local tool_groups = {
|
|
|
|
dig_immediate = true
|
2021-04-05 15:22:24 +00:00
|
|
|
}
|
|
|
|
|
2021-04-06 15:07:58 +00:00
|
|
|
local function add_tool_groups(def)
|
|
|
|
local caps = def.tool_capabilities
|
|
|
|
if not caps then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
local groups = caps.groupcaps
|
|
|
|
if not groups then
|
|
|
|
return
|
|
|
|
end
|
|
|
|
for group in pairs(groups) do
|
|
|
|
tool_groups[group] = true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
for _, def in pairs(minetest.registered_tools) do
|
|
|
|
add_tool_groups(def)
|
|
|
|
end
|
|
|
|
|
|
|
|
-- Add hand groups
|
|
|
|
add_tool_groups(minetest.registered_items[""])
|
|
|
|
|
2021-04-05 15:22:24 +00:00
|
|
|
local function make_immortal(def)
|
2021-04-06 15:07:58 +00:00
|
|
|
for group in pairs(tool_groups) do
|
|
|
|
def.groups[group] = nil
|
2021-04-05 15:22:24 +00:00
|
|
|
end
|
2021-04-06 15:07:58 +00:00
|
|
|
def.groups.immortal = 1
|
2021-04-05 15:22:24 +00:00
|
|
|
def.floodable = false
|
2021-04-06 15:07:58 +00:00
|
|
|
def.buildable_to = false
|
2021-04-05 15:22:24 +00:00
|
|
|
def.description = def.description and ("Indestructible " .. def.description)
|
2019-10-30 05:14:56 +00:00
|
|
|
end
|
|
|
|
|
2021-04-07 04:37:44 +00:00
|
|
|
local registered_nodes = table.copy(minetest.registered_nodes)
|
|
|
|
for name, def in pairs(registered_nodes) do
|
|
|
|
local mod, nodename = name:match"(..-):(.+)"
|
|
|
|
local prefix = mod_prefixes[mod]
|
|
|
|
if nodename and prefix and not (def.groups and def.groups.mortal) then
|
|
|
|
-- HACK to preserve backwards compatibility
|
2021-04-07 17:33:19 +00:00
|
|
|
local new_name = "ctf_map:" .. prefix .. nodename
|
2021-04-07 04:37:44 +00:00
|
|
|
if def.drop == name then
|
|
|
|
def.drop = new_name
|
|
|
|
end
|
|
|
|
make_immortal(def)
|
2021-04-07 17:33:19 +00:00
|
|
|
minetest.register_node(":" .. new_name, def)
|
2021-04-07 04:37:44 +00:00
|
|
|
if mod == "wool" then
|
|
|
|
minetest.register_alias("ctf_map:" .. nodename, new_name)
|
2021-04-06 14:14:36 +00:00
|
|
|
end
|
2019-03-17 14:43:31 +00:00
|
|
|
end
|
2021-04-07 04:37:44 +00:00
|
|
|
end
|