forked from nalc/witchcraft
2467 lines
75 KiB
Lua
2467 lines
75 KiB
Lua
--Stuff from vessels
|
|
|
|
-- -
|
|
-- Copyright (C) 2012 Vanessa Ezekowitz
|
|
-- Copyright (C) 2012 celeron55, Perttu Ahola <celeron55@gmail.com>
|
|
|
|
-- This program is free software: you can redistribute it and/or modify
|
|
-- it under the terms of the GNU General Public License as published by
|
|
-- the Free Software Foundation, either version 3 of the License, or
|
|
-- at your option) any later version.
|
|
|
|
-- This program is distributed in the hope that it will be useful,
|
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
-- GNU General Public License for more details.
|
|
|
|
-- You should have received a copy of the GNU General Public License
|
|
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
--changes so that bottles can't stack
|
|
minetest.override_item("vessels:glass_bottle", {
|
|
description = "Small Bottle (empty)",
|
|
drawtype = "plantlike",
|
|
tiles = {"vessels_glass_bottle.png"},
|
|
inventory_image = "vessels_glass_bottle_inv.png",
|
|
wield_image = "vessels_glass_bottle.png",
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
stack_max = 1,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
})
|
|
|
|
local vessels_shelf_formspec =
|
|
"size[8,7;]"..
|
|
default.gui_bg..
|
|
default.gui_bg_img..
|
|
default.gui_slots..
|
|
"list[context;vessels;0,0.3;8,2;]"..
|
|
"list[current_player;main;0,2.85;8,1;]"..
|
|
"list[current_player;main;0,4.08;8,3;8]"..
|
|
"listring[context;vessels]"..
|
|
"listring[current_player;main]"..
|
|
default.get_hotbar_bg(0,2.85)
|
|
|
|
minetest.register_node("witchcraft:shelf", {
|
|
description = "Potion shelf",
|
|
tiles = {"default_wood.png", "default_wood.png", "default_wood.png^vessels_shelf.png^vessels_shelf_overlay.png"},
|
|
is_ground_content = false,
|
|
groups = {choppy=3,oddly_breakable_by_hand=2,flammable=3},
|
|
sounds = default.node_sound_wood_defaults(),
|
|
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", vessels_shelf_formspec)
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("vessels", 8*2)
|
|
end,
|
|
can_dig = function(pos,player)
|
|
local meta = minetest.get_meta(pos);
|
|
local inv = meta:get_inventory()
|
|
return inv:is_empty("vessels")
|
|
end,
|
|
|
|
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
local to_stack = inv:get_stack(listname, index)
|
|
if listname == "vessels" then
|
|
if minetest.get_item_group(stack:get_name(), "potion") ~= 0
|
|
and to_stack:is_empty() then
|
|
return 1
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
end,
|
|
|
|
allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
|
local meta = minetest.get_meta(pos)
|
|
local inv = meta:get_inventory()
|
|
local stack = inv:get_stack(from_list, from_index)
|
|
local to_stack = inv:get_stack(to_list, to_index)
|
|
if to_list == "vessels" then
|
|
if minetest.get_item_group(stack:get_name(), "potion") ~= 0
|
|
and to_stack:is_empty() then
|
|
return 1
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
end,
|
|
|
|
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
|
minetest.log("action", player:get_player_name()..
|
|
" moves stuff in vessels shelf at "..minetest.pos_to_string(pos))
|
|
end,
|
|
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
|
minetest.log("action", player:get_player_name()..
|
|
" moves stuff to vessels shelf at "..minetest.pos_to_string(pos))
|
|
end,
|
|
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
|
minetest.log("action", player:get_player_name()..
|
|
" takes stuff from vessels shelf at "..minetest.pos_to_string(pos))
|
|
end,
|
|
})
|
|
|
|
--my stuff
|
|
|
|
-- Copyright (C) 2016 DOOmed <heiselong@gmx.com>
|
|
|
|
-- This program is free software; you can redistribute it and/or modify
|
|
-- it under the terms of the GNU Lesser General Public License as published by
|
|
-- the Free Software Foundation; either version 2.1 of the License, or
|
|
-- (at your option) any later version.
|
|
|
|
-- This program is distributed in the hope that it will be useful,
|
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
-- GNU Lesser General Public License for more details.
|
|
|
|
-- You should have received a copy of the GNU Lesser General Public License along
|
|
-- with this program; if not, write to the Free Software Foundation, Inc.,
|
|
-- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:shelf',
|
|
recipe = {
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
{'group:potion', 'group:potion', 'group:potion'},
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:bottle_eyes", {
|
|
description = "Jar of eyes",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_jar_eyes.png"},
|
|
inventory_image = "witchcraft_jar_eyes.png",
|
|
wield_image = "witchcraft_jar_eyes.png",
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
stack_max = 1,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:bottle_slime", {
|
|
description = "Jar of Slime",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_jar_slime.png"},
|
|
inventory_image = "witchcraft_jar_slime.png",
|
|
wield_image = "witchcraft_jar_slime.png",
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
stack_max = 1,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:bottle_eyes',
|
|
recipe = {
|
|
{'moreplants:eye'},
|
|
{'moreplants:eye'},
|
|
{'vessels:drinking_glass'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_orange',
|
|
recipe = {
|
|
{'group:stick'},
|
|
{'witchcraft:potion_orange'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_yellwgrn',
|
|
recipe = {
|
|
{'group:stick'},
|
|
{'witchcraft:potion_yellgrn'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "moreplants:eye 2",
|
|
type = "shapeless",
|
|
recipe = {"witchcraft:bottle_eyes"}
|
|
})
|
|
|
|
minetest.register_craftitem("witchcraft:herb", {
|
|
description = "herb",
|
|
inventory_image = "witchcraft_herbs.png"
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "witchcraft:herb 4",
|
|
type = "shapeless",
|
|
recipe = {"moreplants:bush"}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "witchcraft:herb 4",
|
|
type = "shapeless",
|
|
recipe = {"moreplants:weed"}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "witchcraft:herb 4",
|
|
type = "shapeless",
|
|
recipe = {"moreplants:groundfung"}
|
|
})
|
|
|
|
-- GENERATED CODE
|
|
-- Node Box Editor, version 0.8.1 - Glass
|
|
-- Namespace: test
|
|
|
|
minetest.register_node("witchcraft:pot", {
|
|
description = "magic cooking pot",
|
|
tiles = {
|
|
"witchcraft_pot_top.png",
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "bucket:bucket_water" or
|
|
wield_item == "bucket:bucket_river_water" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_water", param2=node.param2})
|
|
item:replace("bucket:bucket_empty")
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:pot',
|
|
recipe = {
|
|
{'default:copper_lump', '', 'default:copper_lump'},
|
|
{'default:copper_lump', '', 'default:copper_lump'},
|
|
{'', 'default:copper_lump', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_water", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_blue.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_blue")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
else
|
|
if wield_item == "flowers:waterlily" or
|
|
wield_item == "moreplants:bullrush" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_blue2", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_blue2", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_blue2.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_blue2")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "default:dirt" or
|
|
wield_item == "default:sand" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_brown", param2=node.param2})
|
|
item:take_item()
|
|
elseif wield_item == "witchcraft:herb" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_red", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_aqua", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_aqua.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_aqua")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "bucket:bucket_water" or
|
|
wield_item == "bucket:bucket_river_water" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_water", param2=node.param2})
|
|
item:replace("bucket:bucket_empty")
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_brown", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_brown.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_brown")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "witchcraft:bottle_eyes" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_redbrown", param2=node.param2})
|
|
item:take_item()
|
|
elseif wield_item == "vessels:drinking_glass" then
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
item:replace("witchcraft:bottle_slime")
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_redbrown", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_brown.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_redbrown")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "bones:bones" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_grey", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_grey", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_grey.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_grey")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "default:copperblock" or
|
|
wield_item == "default:steelblock" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_yellow", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_cyan", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_cyan.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_cyan")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "default:obsidian_shard" or
|
|
wield_item == "default:mese_crystal_fragment" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_aqua", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_darkpurple", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_darkpurple.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_darkpurple")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "witchcraft:bottle_slime" or
|
|
wield_item == "moreplants:curlyfruit" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_cyan", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_purple", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_purple.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_purple")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "default:diamond" or
|
|
wield_item == "default:gold_lump" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_magenta", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_green", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_green.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_green")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "flowers:mushroom_red" or
|
|
wield_item == "moreplants:mushroom" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_purple", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_green2", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_green2.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_green2")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "moreplants:umbrella" or
|
|
wield_item == "default:grass_5" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_green", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_magenta", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_magenta.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_magenta")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "default:glass" or
|
|
wield_item == "vessels:glass_fragments" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_darkpurple", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_orange", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_orange.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_orange")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "tnt:tnt" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_yllwgrn", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_red", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_red.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_red")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "default:gravel" or
|
|
wield_item == "default:flint" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_orange", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_yellow", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_yellow.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_yellow")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "moreplants:eye" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_yllwgrn", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pot_yllwgrn", {
|
|
tiles = {
|
|
{ name = "witchcraft_pot_yllwgrn.png",
|
|
animation = {type="vertical_frames", length=3.0} },
|
|
"witchcraft_pot_bottom.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png",
|
|
"witchcraft_pot_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
drop = {
|
|
items = {
|
|
{items = {'witchcraft:pot'}, rarity = 1},
|
|
}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.4375, -0.5, -0.4375, 0.4375, -0.4375, 0.4375}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.375, 0.375}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, 0.3125, -0.3125, 0.3125}, -- NodeBox3
|
|
{-0.375, -0.3125, -0.375, 0.375, 0.5, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, 0.3125, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox6
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox7
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item = clicker:get_wielded_item():get_name()
|
|
if wield_item == "vessels:glass_bottle" then
|
|
item:replace("witchcraft:potion_yellgrn")
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == "default:apple" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_green2", param2=node.param2})
|
|
item:take_item()
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1, potion=1}
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"witchcraft:pot_water", "witchcraft:pot_blue2", "witchcraft:pot_cyan", "witchcraft:pot_green", "witchcraft:pot_green2", "witchcraft:pot_aqua", "witchcraft:pot_yellow", "witchcraft:pot_yllwgrn", "witchcraft:pot_red", "witchcraft:pot_magenta", "witchcraft:pot_brown"},
|
|
interval = 0.5,
|
|
chance = 1,
|
|
action = function(pos, node)
|
|
minetest.add_particlespawner({
|
|
amount = 2,
|
|
time = 1,
|
|
minpos = {x=pos.x-0.1, y=pos.y, z=pos.z-0.1},
|
|
maxpos = {x=pos.x+0.1, y=pos.y, z=pos.z+0.1},
|
|
minvel = {x=0, y=0.5, z=0},
|
|
maxvel = {x=0, y=0.6, z=0},
|
|
minacc = {x=0, y=0.2, z=0},
|
|
maxacc = {x=0, y=0.3, z=0},
|
|
minexptime = 1,
|
|
maxexptime = 2,
|
|
minsize = 2,
|
|
maxsize = 3,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_bubbles.png"
|
|
})
|
|
end
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"witchcraft:pot_purple"},
|
|
interval = 0.5,
|
|
chance = 1,
|
|
action = function(pos, node)
|
|
minetest.add_particlespawner({
|
|
amount = 2,
|
|
time = 1,
|
|
minpos = {x=pos.x-0.1, y=pos.y, z=pos.z-0.1},
|
|
maxpos = {x=pos.x+0.1, y=pos.y, z=pos.z+0.1},
|
|
minvel = {x=0, y=0.5, z=0},
|
|
maxvel = {x=0, y=0.6, z=0},
|
|
minacc = {x=0, y=0.2, z=0},
|
|
maxacc = {x=0, y=0.3, z=0},
|
|
minexptime = 1,
|
|
maxexptime = 2,
|
|
minsize = 5,
|
|
maxsize = 8,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_smoke.png"
|
|
})
|
|
end
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"witchcraft:pot_darkpurple"},
|
|
interval = 0.5,
|
|
chance = 1,
|
|
action = function(pos, node)
|
|
minetest.add_particlespawner({
|
|
amount = 2,
|
|
time = 1,
|
|
minpos = {x=pos.x-0.1, y=pos.y, z=pos.z-0.1},
|
|
maxpos = {x=pos.x+0.1, y=pos.y, z=pos.z+0.1},
|
|
minvel = {x=0, y=0.5, z=0},
|
|
maxvel = {x=0, y=0.6, z=0},
|
|
minacc = {x=0, y=0.2, z=0},
|
|
maxacc = {x=0, y=0.3, z=0},
|
|
minexptime = 1,
|
|
maxexptime = 2,
|
|
minsize = 2,
|
|
maxsize = 3,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_symbol.png"
|
|
})
|
|
end
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"witchcraft:pot_orange"},
|
|
interval = 0.5,
|
|
chance = 1,
|
|
action = function(pos, node)
|
|
minetest.add_particlespawner({
|
|
amount = 2,
|
|
time = 1,
|
|
minpos = {x=pos.x-0.1, y=pos.y, z=pos.z-0.1},
|
|
maxpos = {x=pos.x+0.1, y=pos.y, z=pos.z+0.1},
|
|
minvel = {x=0, y=0.5, z=0},
|
|
maxvel = {x=0, y=0.6, z=0},
|
|
minacc = {x=0, y=0.2, z=0},
|
|
maxacc = {x=0, y=0.3, z=0},
|
|
minexptime = 1,
|
|
maxexptime = 2,
|
|
minsize = 2,
|
|
maxsize = 3,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_flame.png"
|
|
})
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_red", {
|
|
description = "Tasty Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_red.png"},
|
|
wield_image = "witchcraft_potion_red.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_red.png",
|
|
on_use = minetest.item_eat(100, "vessels:glass_bottle"),
|
|
})
|
|
|
|
minetest.register_tool("witchcraft:potion_darkpurple", {
|
|
description = "Shady Potion",
|
|
wield_image = "witchcraft_potion_darkpurple.png",
|
|
inventory_image = "witchcraft_potion_darkpurple.png",
|
|
on_use = function(item, user)
|
|
default.player_set_skin(user, "witchcraft_skin.png")
|
|
minetest.after(30, function()
|
|
default.player_set_skin(user, "character.png")
|
|
end)
|
|
local playerpos = user:getpos();
|
|
minetest.add_particlespawner(
|
|
5, --amount
|
|
0.1, --time
|
|
{x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1}, --minpos
|
|
{x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=-0.5,y=4,z=-0.5}, --minacc
|
|
{x=0.5,y=4,z=0.5}, --maxacc
|
|
0.5, --minexptime
|
|
1, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_effect.png" --texture
|
|
)
|
|
item:add_wear(30000)
|
|
return item
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_brown", {
|
|
description = "Murky Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_brown.png"},
|
|
wield_image = "witchcraft_potion_brown.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_brown.png",
|
|
on_use = minetest.item_eat(-5, "vessels:glass_bottle"),
|
|
})
|
|
|
|
--this one isn't removed but the player will die after using it so it hasn't been fixed
|
|
minetest.register_node("witchcraft:potion_yellgrn", {
|
|
description = "Dodgy Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_yellgrn.png"},
|
|
wield_image = "witchcraft_potion_yellgrn.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_yellgrn.png",
|
|
on_use = function(pos, placer)
|
|
local pos = placer:getpos();
|
|
tnt.boom(pos, {damage_radius=5,radius=3,ignore_protection=false})
|
|
end,
|
|
})
|
|
|
|
|
|
|
|
minetest.register_entity("witchcraft:fire", {
|
|
textures = {"witchcraft_flame.png"},
|
|
velocity = 0.1,
|
|
damage = 2,
|
|
collisionbox = {0, 0, 0, 0, 0, 0},
|
|
on_step = function(self, obj, pos)
|
|
local remove = minetest.after(2, function()
|
|
self.object:remove()
|
|
end)
|
|
local pos = self.object:getpos()
|
|
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
|
|
for k, obj in pairs(objs) do
|
|
if obj:get_luaentity() ~= nil then
|
|
if obj:get_luaentity().name ~= "witchcraft:fire" and obj:get_luaentity().name ~= "__builtin:item" then
|
|
obj:punch(self.object, 1.0, {
|
|
full_punch_interval=1.0,
|
|
damage_groups={fleshy=3},
|
|
}, nil)
|
|
self.object:remove()
|
|
end
|
|
end
|
|
end
|
|
for dx=0,1 do
|
|
for dy=0,1 do
|
|
for dz=0,1 do
|
|
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
|
|
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local n = minetest.env:get_node(p).name
|
|
if n ~= "witchcraft:fire" and n ~= "air" and n ~="default:dirt_with_grass" and n ~="default:dirt_with_dry_grass" and n ~="default:stone" then
|
|
minetest.env:set_node(t, {name="fire:basic_flame"})
|
|
elseif n =="default:dirt_with_grass" or n =="default:dirt_with_dry_grass" then
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|
|
hit_node = function(self, pos, node)
|
|
local pos = self.object:getpos()
|
|
for dx=-4,4 do
|
|
for dy=-4,4 do
|
|
for dz=-4,4 do
|
|
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local n = minetest.env:get_node(pos).name
|
|
if math.random(1, 50) <= 35 then
|
|
minetest.env:remove_node(p)
|
|
end
|
|
if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <=5 then
|
|
minetest.env:set_node(t, {name="fire:basic_flame"})
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local apos = self.object:getpos()
|
|
local part = minetest.add_particlespawner(
|
|
10, --amount
|
|
0.3, --time
|
|
{x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos
|
|
{x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=0,y=-0.5,z=0}, --minacc
|
|
{x=0.5,y=0.5,z=0.5}, --maxacc
|
|
1, --minexptime
|
|
1, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_flame.png" --texture
|
|
)
|
|
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:tnt_splash", {
|
|
textures = {"witchcraft_splash_yellgrn.png"},
|
|
velocity = 0.1,
|
|
damage = 2,
|
|
collisionbox = {0, 0, 0, 0, 0, 0},
|
|
on_step = function(self, obj, pos)
|
|
local remove = minetest.after(2, function()
|
|
self.object:remove()
|
|
end)
|
|
local pos = self.object:getpos()
|
|
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
|
|
for k, obj in pairs(objs) do
|
|
if obj:get_luaentity() ~= nil then
|
|
if obj:get_luaentity().name ~= "witchcraft:tnt_splash" and obj:get_luaentity().name ~= "__builtin:item" then
|
|
obj:punch(self.object, 1.0, {
|
|
full_punch_interval=1.0,
|
|
damage_groups={fleshy=3},
|
|
}, nil)
|
|
self.object:remove()
|
|
end
|
|
end
|
|
end
|
|
for dx=0,1 do
|
|
for dy=0,1 do
|
|
for dz=0,1 do
|
|
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
|
|
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local n = minetest.env:get_node(p).name
|
|
if n ~= "witchcraft:tnt_splash" and n ~="default:obsidian" and n ~= "air" then
|
|
local pos = self.object:getpos()
|
|
minetest.sound_play("default_break_glass.1.ogg", {
|
|
pos = self.object:getpos(),
|
|
gaint = 1.0,
|
|
max_hear_distance = 20,
|
|
})
|
|
tnt.boom(pos, {damage_radius=5,radius=3,ignore_protection=false})
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|
|
hit_node = function(self, pos, node)
|
|
local pos = self.object:getpos()
|
|
for dx=-4,4 do
|
|
for dy=-4,4 do
|
|
for dz=-4,4 do
|
|
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local n = minetest.env:get_node(pos).name
|
|
if math.random(1, 50) <= 35 then
|
|
tnt.boom(n, {damage_radius=5,radius=3,ignore_protection=false})
|
|
end
|
|
if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <=5 then
|
|
minetest.env:set_node(t, {name="fire:basic_flame"})
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
end,
|
|
})
|
|
|
|
|
|
minetest.register_entity("witchcraft:fire_splash", {
|
|
textures = {"witchcraft_splash_orange.png"},
|
|
velocity = 0.1,
|
|
damage = 2,
|
|
collisionbox = {0, 0, 0, 0, 0, 0},
|
|
on_step = function(self, obj, pos)
|
|
local remove = minetest.after(2, function()
|
|
self.object:remove()
|
|
end)
|
|
local pos = self.object:getpos()
|
|
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
|
|
for k, obj in pairs(objs) do
|
|
if obj:get_luaentity() ~= nil then
|
|
if obj:get_luaentity().name ~= "witchcraft:fire_splash" and obj:get_luaentity().name ~= "__builtin:item" then
|
|
obj:punch(self.object, 1.0, {
|
|
full_punch_interval=1.0,
|
|
damage_groups={fleshy=1},
|
|
}, nil)
|
|
self.object:remove()
|
|
end
|
|
end
|
|
end
|
|
for dx=0,1 do
|
|
for dy=0,1 do
|
|
for dz=0,1 do
|
|
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
|
|
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local n = minetest.env:get_node(p).name
|
|
if n ~= "witchcraft:fire_splash" and n ~= "air" then
|
|
minetest.env:set_node(t, {name="fire:basic_flame"})
|
|
minetest.sound_play("default_break_glass.1", {
|
|
pos = self.object:getpos(),
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
elseif n =="default:dirt_with_grass" or n =="default:dirt_with_dry_grass" then
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|
|
hit_node = function(self, pos, node)
|
|
local pos = self.object:getpos()
|
|
for dx=-4,4 do
|
|
for dy=-4,4 do
|
|
for dz=-4,4 do
|
|
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local n = minetest.env:get_node(pos).name
|
|
if math.random(1, 50) <= 1 then
|
|
minetest.env:remove_node(p)
|
|
end
|
|
if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <=5 then
|
|
minetest.env:set_node(t, {name="fire:basic_flame"})
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_orange", {
|
|
description = "Dragon Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_orange.png"},
|
|
wield_image = "witchcraft_potion_orange.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_orange.png",
|
|
on_use = function(item, placer, pos)
|
|
local dir = placer:get_look_dir();
|
|
local playerpos = placer:getpos();
|
|
local vec = {x=dir.x*2,y=dir.y*2.5,z=dir.z*2}
|
|
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:fire")
|
|
obj:setvelocity(vec)
|
|
local part = minetest.add_particlespawner(
|
|
10, --amount
|
|
0.3, --time
|
|
{x=playerpos.x-0.3, y=playerpos.y+1.5, z=playerpos.z-0.3}, --minpos
|
|
{x=playerpos.x+0.3, y=playerpos.y+1.5, z=playerpos.z+0.3}, --maxpos
|
|
{x=dir.x*3,y=dir.y*3,z=dir.z*3}, --minvel
|
|
{x=dir.x*3,y=dir.y*3,z=dir.z*3}, --maxvel
|
|
{x=0,y=-0.5,z=0}, --minacc
|
|
{x=0.5,y=0.5,z=0.5}, --maxacc
|
|
1, --minexptime
|
|
2, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_flame.png" --texture
|
|
)
|
|
|
|
item:replace("vessels:glass_bottle")
|
|
return item
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("witchcraft:splash_orange", {
|
|
description = "Dragon Splash Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_splash_orange.png"},
|
|
wield_image = "witchcraft_splash_orange.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_orange.png",
|
|
on_use = function(item, placer, pos)
|
|
local dir = placer:get_look_dir();
|
|
local playerpos = placer:getpos();
|
|
local vec = {x=dir.x*6,y=dir.y*3.5,z=dir.z*6}
|
|
local acc = {x=0,y=-9.8,z=0}
|
|
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+2+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:fire_splash")
|
|
obj:setvelocity(vec)
|
|
obj:setacceleration(acc)
|
|
item:take_item()
|
|
return item
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("witchcraft:splash_yellwgrn", {
|
|
description = "Dodgy Splash Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_splash_yellgrn.png"},
|
|
wield_image = "witchcraft_splash_yellgrn.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_yellgrn.png",
|
|
on_use = function(item, placer, pos)
|
|
local dir = placer:get_look_dir();
|
|
local playerpos = placer:getpos();
|
|
local vec = {x=dir.x*7,y=dir.y*3.5,z=dir.z*7}
|
|
local acc = {x=0,y=-9.8,z=0}
|
|
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+2+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:tnt_splash")
|
|
obj:setvelocity(vec)
|
|
obj:setacceleration(acc)
|
|
item:take_item()
|
|
return item
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_purple", {
|
|
description = "Smokey Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_purple.png"},
|
|
wield_image = "witchcraft_potion_purple.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_purple.png",
|
|
on_use = function(item, placer, pos)
|
|
local dir = placer:get_look_dir();
|
|
local playerpos = placer:getpos();
|
|
local vec = {x=dir.x*2,y=dir.y*2.5,z=dir.z*2}
|
|
local part = minetest.add_particlespawner(
|
|
20, --amount
|
|
0.5, --time
|
|
{x=playerpos.x-1, y=playerpos.y, z=playerpos.z-1}, --minpos
|
|
{x=playerpos.x+1, y=playerpos.y, z=playerpos.z+1}, --maxpos
|
|
{x=0,y=0.5,z=0}, --minvel
|
|
{x=0,y=0.6,z=0}, --maxvel
|
|
{x=0,y=-0.5,z=0}, --minacc
|
|
{x=0,y=0.5,z=0}, --maxacc
|
|
1, --minexptime
|
|
3, --maxexptime
|
|
10, --minsize
|
|
15, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_smoke.png^[colorize:magenta:50" --texture
|
|
)
|
|
|
|
item:replace("vessels:glass_bottle")
|
|
return item
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_grey", {
|
|
description = "Evil Potion",
|
|
drawtype = "plantlike",
|
|
stack_max = 1,
|
|
tiles = {"witchcraft_potion_grey.png"},
|
|
wield_image = "witchcraft_potion_grey.png",
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_grey.png",
|
|
on_use = minetest.item_eat(-100, "vessels:glass_bottle"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_blue", {
|
|
description = "Bottle of Water",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_blue.png"},
|
|
wield_image = "witchcraft_potion_blue.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_blue.png",
|
|
on_use = function(item, user, pointed_thing)
|
|
local player = user:get_player_name()
|
|
if pointed_thing.type == "node" and
|
|
minetest.get_node(pointed_thing.above).name == "air" then
|
|
if not minetest.is_protected(pointed_thing.above, player) then
|
|
minetest.set_node(pointed_thing.above, {name="default:water_source"})
|
|
else
|
|
minetest.chat_send_player(player, "This area is protected.")
|
|
end
|
|
end
|
|
item:replace("vessels:glass_bottle")
|
|
return item
|
|
end
|
|
})
|
|
|
|
if minetest.get_modpath("farming") then
|
|
minetest.register_node("witchcraft:potion_green", {
|
|
description = "Melon Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_green.png"},
|
|
wield_image = "witchcraft_potion_green.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_green.png",
|
|
on_use = function(item, user, pointed_thing)
|
|
local player = user:get_player_name()
|
|
if pointed_thing.type == "node" and
|
|
minetest.get_node(pointed_thing.above).name == "air" then
|
|
if not minetest.is_protected(pointed_thing.above, player) then
|
|
minetest.set_node(pointed_thing.above, {name="farming:melon_8"})
|
|
else
|
|
minetest.chat_send_player(player, "This area is protected.")
|
|
end
|
|
end
|
|
local playerpos = user:getpos();
|
|
minetest.add_particlespawner(
|
|
5, --amount
|
|
0.1, --time
|
|
{x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1}, --minpos
|
|
{x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=-0.5,y=4,z=-0.5}, --minacc
|
|
{x=0.5,y=4,z=0.5}, --maxacc
|
|
0.5, --minexptime
|
|
1, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_effect.png" --texture
|
|
)
|
|
item:replace("vessels:glass_bottle")
|
|
return item
|
|
end
|
|
})
|
|
end
|
|
|
|
minetest.register_node("witchcraft:potion_yellow", {
|
|
description = "Alchemy Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_yellow.png"},
|
|
wield_image = "witchcraft_potion_yellow.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_yellow.png",
|
|
on_use = function(item, user, pointed_thing)
|
|
local player = user:get_player_name()
|
|
if pointed_thing.type == "node" and
|
|
minetest.get_node(pointed_thing.above).name == "air" then
|
|
if not minetest.is_protected(pointed_thing.above, player) then
|
|
minetest.set_node(pointed_thing.above, {name="default:goldblock"})
|
|
else
|
|
minetest.chat_send_player(player, "This area is protected.")
|
|
end
|
|
end
|
|
local playerpos = user:getpos();
|
|
minetest.add_particlespawner(
|
|
5, --amount
|
|
0.1, --time
|
|
{x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1}, --minpos
|
|
{x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=-0.5,y=4,z=-0.5}, --minacc
|
|
{x=0.5,y=4,z=0.5}, --maxacc
|
|
0.5, --minexptime
|
|
1, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_effect.png" --texture
|
|
)
|
|
item:replace("vessels:glass_bottle")
|
|
return item
|
|
end
|
|
})
|
|
|
|
|
|
|
|
if minetest.get_modpath("experience") then
|
|
minetest.register_node("witchcraft:potion_aqua", {
|
|
description = "Complex Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_aqua.png"},
|
|
wield_image = "witchcraft_potion_aqua.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_aqua.png",
|
|
on_use = function(item, placer, pos)
|
|
local pos = placer:getpos();
|
|
minetest.add_particlespawner(
|
|
6, --amount
|
|
0.1, --time
|
|
{x=pos.x-1, y=pos.y+0.5, z=pos.z-1}, --minpos
|
|
{x=pos.x+1, y=pos.y+1, z=pos.z+1}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=-0.5,y=2,z=-0.5}, --minacc
|
|
{x=0.5,y=2,z=0.5}, --maxacc
|
|
0.5, --minexptime
|
|
1, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"orb.png" --texture
|
|
)
|
|
minetest.env:add_entity(pos, "experience:orb")
|
|
minetest.env:add_entity(pos, "experience:orb")
|
|
minetest.env:add_entity(pos, "experience:orb")
|
|
minetest.env:add_entity(pos, "experience:orb")
|
|
minetest.env:add_entity(pos, "experience:orb")
|
|
|
|
item:replace("vessels:glass_bottle")
|
|
return item
|
|
end
|
|
})
|
|
end
|
|
|
|
minetest.register_node("witchcraft:potion_magenta", {
|
|
description = "Strong Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_magenta.png"},
|
|
wield_image = "witchcraft_potion_magenta.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_magenta.png",
|
|
on_use = function(item, user, pointed_thing)
|
|
local player = user:get_player_name()
|
|
local breath_change = user:set_breath(5)
|
|
local effect = user:set_physics_override({
|
|
|
|
speed = 2.0, -- multiplier to default value
|
|
jump = 1, -- multiplier to default value
|
|
gravity = 1, -- multiplier to default value
|
|
sneak = true, -- whether player can sneak
|
|
sneak_glitch = false, -- whether player can use the sneak glitch
|
|
|
|
})
|
|
local reset = minetest.after(10, function()
|
|
user:set_breath(11)
|
|
local effect = user:set_physics_override({
|
|
|
|
speed = 1.0, -- multiplier to default value
|
|
jump = 1.0, -- multiplier to default value
|
|
gravity = 1, -- multiplier to default value
|
|
sneak = true, -- whether player can sneak
|
|
sneak_glitch = false, -- whether player can use the sneak glitch
|
|
|
|
})
|
|
end)
|
|
|
|
local playerpos = user:getpos();
|
|
minetest.add_particlespawner(
|
|
5, --amount
|
|
0.1, --time
|
|
{x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1}, --minpos
|
|
{x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=-0.5,y=4,z=-0.5}, --minacc
|
|
{x=0.5,y=4,z=0.5}, --maxacc
|
|
0.5, --minexptime
|
|
1, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_effect.png" --texture
|
|
)
|
|
item:replace("vessels:glass_bottle")
|
|
return item
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_cyan", {
|
|
description = "Light Potion",
|
|
drawtype = "plantlike",
|
|
stack_max = 1,
|
|
tiles = {"witchcraft_potion_cyan.png"},
|
|
wield_image = "witchcraft_potion_cyan.png",
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_cyan.png",
|
|
on_use = function(item, user, pointed_thing)
|
|
local player = user:get_player_name()
|
|
local breath_change = user:set_breath(5)
|
|
local effect = user:set_physics_override({
|
|
|
|
speed = 1.0, -- multiplier to default value
|
|
jump = 1, -- multiplier to default value
|
|
gravity = 0.1, -- multiplier to default value
|
|
sneak = true, -- whether player can sneak
|
|
sneak_glitch = false, -- whether player can use the sneak glitch
|
|
|
|
})
|
|
local reset = minetest.after(10, function()
|
|
user:set_breath(11)
|
|
local effect = user:set_physics_override({
|
|
|
|
speed = 1.0, -- multiplier to default value
|
|
jump = 1.0, -- multiplier to default value
|
|
gravity = 1, -- multiplier to default value
|
|
sneak = true, -- whether player can sneak
|
|
sneak_glitch = false, -- whether player can use the sneak glitch
|
|
|
|
})
|
|
end)
|
|
local playerpos = user:getpos();
|
|
minetest.add_particlespawner(
|
|
5, --amount
|
|
0.1, --time
|
|
{x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1}, --minpos
|
|
{x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=-0.5,y=4,z=-0.5}, --minacc
|
|
{x=0.5,y=4,z=0.5}, --maxacc
|
|
0.5, --minexptime
|
|
1, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_effect.png" --texture
|
|
)
|
|
item:replace("vessels:glass_bottle")
|
|
return item
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_green2", {
|
|
description = "Volatile Potion",
|
|
drawtype = "plantlike",
|
|
stack_max = 1,
|
|
tiles = {"witchcraft_potion_green2.png"},
|
|
wield_image = "witchcraft_potion_green2.png",
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_green2.png",
|
|
on_use = function(item, user, pointed_thing)
|
|
local player = user:get_player_name()
|
|
local breath_change = user:set_breath(5)
|
|
local effect = user:set_physics_override({
|
|
|
|
speed = 1.0, -- multiplier to default value
|
|
jump = 1.5, -- multiplier to default value
|
|
gravity = 0.8, -- multiplier to default value
|
|
sneak = true, -- whether player can sneak
|
|
sneak_glitch = false, -- whether player can use the sneak glitch
|
|
|
|
})
|
|
local reset = minetest.after(6, function()
|
|
user:set_breath(11)
|
|
local effect = user:set_physics_override({
|
|
|
|
speed = 1.0, -- multiplier to default value
|
|
jump = 1.0, -- multiplier to default value
|
|
gravity = 1, -- multiplier to default value
|
|
sneak = true, -- whether player can sneak
|
|
sneak_glitch = false, -- whether player can use the sneak glitch
|
|
|
|
})
|
|
end)
|
|
local playerpos = user:getpos();
|
|
minetest.add_particlespawner(
|
|
5, --amount
|
|
0.1, --time
|
|
{x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1}, --minpos
|
|
{x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=-0.5,y=4,z=-0.5}, --minacc
|
|
{x=0.5,y=4,z=0.5}, --maxacc
|
|
0.5, --minexptime
|
|
1, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_effect.png" --texture
|
|
)
|
|
item:replace("vessels:glass_bottle")
|
|
return item
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_redbrown", {
|
|
description = "Thick Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_redbrown.png"},
|
|
wield_image = "witchcraft_potion_redbrown.png",
|
|
paramtype = "light",
|
|
stack_max = 1,
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_redbrown.png",
|
|
on_use = function(item, user, pointed_thing)
|
|
local player = user:get_player_name()
|
|
local breath_change = user:set_breath(5)
|
|
local effect = user:set_physics_override({
|
|
|
|
speed = 0.5, -- multiplier to default value
|
|
jump = 1, -- multiplier to default value
|
|
gravity = 1, -- multiplier to default value
|
|
sneak = true, -- whether player can sneak
|
|
sneak_glitch = false, -- whether player can use the sneak glitch
|
|
|
|
})
|
|
local reset = minetest.after(10, function()
|
|
user:set_breath(11)
|
|
local effect = user:set_physics_override({
|
|
|
|
speed = 1.0, -- multiplier to default value
|
|
jump = 1.0, -- multiplier to default value
|
|
gravity = 1, -- multiplier to default value
|
|
sneak = true, -- whether player can sneak
|
|
sneak_glitch = false, -- whether player can use the sneak glitch
|
|
|
|
})
|
|
end)
|
|
local playerpos = user:getpos();
|
|
minetest.add_particlespawner(
|
|
5, --amount
|
|
0.1, --time
|
|
{x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1}, --minpos
|
|
{x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=-0.5,y=4,z=-0.5}, --minacc
|
|
{x=0.5,y=4,z=0.5}, --maxacc
|
|
0.5, --minexptime
|
|
1, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_effect.png" --texture
|
|
)
|
|
item:replace("vessels:glass_bottle")
|
|
return item
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_blue2", {
|
|
description = "Watery Potion",
|
|
drawtype = "plantlike",
|
|
stack_max = 1,
|
|
tiles = {"witchcraft_potion_blue2.png"},
|
|
wield_image = "witchcraft_potion_blue2.png",
|
|
paramtype = "light",
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
groups = {vessel=1,dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_blue2.png",
|
|
on_use = function(item, user, pointed_thing)
|
|
local player = user:get_player_name()
|
|
local breath = user:get_breath()
|
|
if breath <= 10 then
|
|
local spd = user:set_physics_override({
|
|
|
|
speed = 3, -- multiplier to default value
|
|
jump = 1.0, -- multiplier to default value
|
|
gravity = 1.0, -- multiplier to default value
|
|
sneak = true, -- whether player can sneak
|
|
sneak_glitch = false, -- whether player can use the sneak glitch
|
|
|
|
})
|
|
end
|
|
local reset = minetest.after(20, function()
|
|
user:set_physics_override({
|
|
|
|
speed = 1.0, -- multiplier to default value
|
|
jump = 1.0, -- multiplier to default value
|
|
gravity = 1.0, -- multiplier to default value
|
|
sneak = true, -- whether player can sneak
|
|
sneak_glitch = false, -- whether player can use the sneak glitch
|
|
|
|
})
|
|
end)
|
|
local playerpos = user:getpos();
|
|
minetest.add_particlespawner(
|
|
5, --amount
|
|
0.1, --time
|
|
{x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1}, --minpos
|
|
{x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=-0.5,y=4,z=-0.5}, --minacc
|
|
{x=0.5,y=4,z=0.5}, --maxacc
|
|
0.5, --minexptime
|
|
1, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_effect.png" --texture
|
|
)
|
|
item:replace("vessels:glass_bottle")
|
|
return item
|
|
end
|
|
})
|
|
|
|
--scrolls
|
|
|
|
minetest.register_craftitem("witchcraft:scroll_day", {
|
|
description = "Scroll of day",
|
|
inventory_image = "witchcraft_scroll.png^witchcraft_sun_over.png",
|
|
stack_max = 1,
|
|
on_use = function(item)
|
|
minetest.set_timeofday(0.5)
|
|
item:take_item()
|
|
return item
|
|
end,
|
|
})
|
|
|
|
minetest.register_craftitem("witchcraft:scroll_night", {
|
|
description = "Scroll of night",
|
|
inventory_image = "witchcraft_scroll.png^witchcraft_moon_over.png",
|
|
stack_max = 1,
|
|
on_use = function(item)
|
|
minetest.set_timeofday(0)
|
|
item:take_item()
|
|
return item
|
|
end,
|
|
})
|
|
|
|
if minetest.get_modpath("pmobs")then
|
|
minetest.register_craftitem("witchcraft:scroll_wild", {
|
|
description = "Scroll of Wild",
|
|
inventory_image = "witchcraft_scroll.png^witchcraft_dark_over.png",
|
|
stack_max = 1,
|
|
on_use = function(item, placer)
|
|
local pos = placer:getpos();
|
|
minetest.env:add_entity(pos, "pmobs:dog")
|
|
item:take_item()
|
|
return item
|
|
end,
|
|
})
|
|
end
|
|
|
|
minetest.register_craftitem("witchcraft:scroll_fireball", {
|
|
description = "Scroll of fireball",
|
|
inventory_image = "witchcraft_scroll.png^witchcraft_fire_over.png",
|
|
stack_max = 1,
|
|
on_use = function(item, placer, pos)
|
|
local dir = placer:get_look_dir();
|
|
local playerpos = placer:getpos();
|
|
local vec = {x=dir.x*7,y=dir.y*7,z=dir.z*7}
|
|
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:fireball")
|
|
obj:setvelocity(vec)
|
|
|
|
item:take_item()
|
|
return item
|
|
end,
|
|
})
|
|
|
|
if minetest.get_modpath("lightning") then
|
|
minetest.register_craftitem("witchcraft:scroll_lightning", {
|
|
description = "Scroll of lightning",
|
|
inventory_image = "witchcraft_scroll.png^witchcraft_thunder_over.png",
|
|
stack_max = 1,
|
|
on_use = function(item, placer, pos)
|
|
local playerpos = placer:getpos();
|
|
local dir = placer:get_look_dir();
|
|
lightning.strike({x=playerpos.x+dir.x*2,y=playerpos.y+0+dir.y,z=playerpos.z+dir.z*2})
|
|
item:take_item()
|
|
return item
|
|
end,
|
|
})
|
|
else
|
|
minetest.register_craftitem("witchcraft:scroll_lightning", {
|
|
description = "Scroll of lightning",
|
|
inventory_image = "witchcraft_scroll.png^witchcraft_thunder_over.png",
|
|
stack_max = 1,
|
|
on_use = function(item, placer, pos)
|
|
local dir = placer:get_look_dir();
|
|
local playerpos = placer:getpos();
|
|
local vec = {x=dir.x*7,y=dir.y*7,z=dir.z*7}
|
|
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:lightning")
|
|
obj:setvelocity(vec)
|
|
|
|
item:take_item()
|
|
return item
|
|
end,
|
|
})
|
|
end
|
|
|
|
minetest.register_craftitem("witchcraft:scroll_icicle", {
|
|
description = "Scroll of icicle",
|
|
inventory_image = "witchcraft_scroll.png^witchcraft_ice_over.png",
|
|
stack_max = 1,
|
|
on_use = function(item, placer, pos)
|
|
local dir = placer:get_look_dir();
|
|
local playerpos = placer:getpos();
|
|
local vec = {x=dir.x*7,y=dir.y*7,z=dir.z*7}
|
|
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:ice")
|
|
local obj2 = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+1+dir.z}, "witchcraft:ice")
|
|
local obj3 = minetest.env:add_entity({x=playerpos.x+1+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:ice")
|
|
obj:setvelocity(vec)
|
|
obj2:setvelocity(vec)
|
|
obj3:setvelocity(vec)
|
|
|
|
item:take_item()
|
|
return item
|
|
end,
|
|
})
|
|
|
|
|
|
minetest.register_craftitem("witchcraft:scroll_nature", {
|
|
description = "Scroll of nature",
|
|
inventory_image = "witchcraft_scroll.png^witchcraft_leaf_over.png",
|
|
stack_max = 1,
|
|
on_use = function(item, placer, pos)
|
|
local dir = placer:get_look_dir();
|
|
local playerpos = placer:getpos();
|
|
local vec = {x=dir.x*6,y=dir.y*6,z=dir.z*6}
|
|
local obj = minetest.env:add_entity({x=playerpos.x+dir.x*1.5,y=playerpos.y+1.5+dir.y,z=playerpos.z+0+dir.z}, "witchcraft:tree")
|
|
obj:setvelocity(vec)
|
|
|
|
item:take_item()
|
|
return item
|
|
end,
|
|
})
|
|
|
|
minetest.register_craftitem("witchcraft:scroll", {
|
|
description = "Blank Scroll",
|
|
inventory_image = "witchcraft_scroll.png",
|
|
})
|
|
|
|
if minetest.get_modpath("pmobs")then
|
|
minetest.register_craft({
|
|
output = 'witchcraft:scroll_wild',
|
|
recipe = {
|
|
{'mobs:meat_raw'},
|
|
{'witchcraft:scroll'},
|
|
}
|
|
})
|
|
|
|
end
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:scroll',
|
|
recipe = {
|
|
{'default:paper', 'default:diamond', 'default:paper'},
|
|
{'default:paper', 'default:paper', 'default:paper'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:scroll_icicle',
|
|
recipe = {
|
|
{'default:ice'},
|
|
{'witchcraft:scroll'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:scroll_fireball',
|
|
recipe = {
|
|
{'default:obsidian_shard'},
|
|
{'witchcraft:scroll'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:scroll_nature',
|
|
recipe = {
|
|
{'default:leaves'},
|
|
{'witchcraft:scroll'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:scroll_day',
|
|
recipe = {
|
|
{'default:torch'},
|
|
{'witchcraft:scroll'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:scroll_night',
|
|
recipe = {
|
|
{'default:coal_lump'},
|
|
{'witchcraft:scroll'},
|
|
}
|
|
})
|
|
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:scroll_lightning',
|
|
recipe = {
|
|
{'default:steel_ingot'},
|
|
{'witchcraft:scroll'},
|
|
}
|
|
})
|
|
|
|
|
|
--scroll powers
|
|
|
|
minetest.register_entity("witchcraft:fireball", {
|
|
textures = {"tnt_boom.png"},
|
|
velocity = 0.1,
|
|
damage = 2,
|
|
collisionbox = {0, 0, 0, 0, 0, 0},
|
|
on_step = function(self, obj, pos)
|
|
local remove = minetest.after(2, function()
|
|
self.object:remove()
|
|
end)
|
|
local pos = self.object:getpos()
|
|
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
|
|
for k, obj in pairs(objs) do
|
|
if obj:get_luaentity() ~= nil then
|
|
if obj:get_luaentity().name ~= "witchcraft:fireball" and obj:get_luaentity().name ~= "__builtin:item" then
|
|
obj:punch(self.object, 1.0, {
|
|
full_punch_interval=1.0,
|
|
damage_groups={fleshy=3},
|
|
}, nil)
|
|
self.object:remove()
|
|
end
|
|
end
|
|
end
|
|
for dx=0,1 do
|
|
for dy=0,1 do
|
|
for dz=0,1 do
|
|
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
|
|
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local n = minetest.env:get_node(p).name
|
|
if n ~= "witchcraft:fireball" and n ~="default:dirt_with_grass" and n ~="default:dirt_with_dry_grass" and n ~="default:stone" then
|
|
if minetest.registered_nodes[n].groups.flammable --[[or math.random(1, 100) <= 1]] then
|
|
minetest.env:set_node(t, {name="fire:basic_flame"})
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
hit_node = function(self, pos, node)
|
|
-- local pos = self.object:getpos()
|
|
for dx=-4,4 do
|
|
for dy=-4,4 do
|
|
for dz=-4,4 do
|
|
local p = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local n = minetest.env:get_node(pos).name
|
|
if math.random(1, 50) <= 35 then
|
|
minetest.env:remove_node(p)
|
|
end
|
|
if minetest.registered_nodes[n].groups.flammable or math.random(1, 100) <=5 then
|
|
minetest.env:set_node(t, {name="fire:basic_flame"})
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local apos = self.object:getpos()
|
|
local part = minetest.add_particlespawner(
|
|
6, --amount
|
|
0.3, --time
|
|
{x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos
|
|
{x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=0,y=-0.5,z=0}, --minacc
|
|
{x=0.5,y=0.5,z=0.5}, --maxacc
|
|
0.1, --minexptime
|
|
0.3, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_flame.png" --texture
|
|
)
|
|
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:lightning", {
|
|
textures = {"witchcraft_light_over.png"},
|
|
velocity = 0.1,
|
|
damage = 2,
|
|
collisionbox = {0, 0, 0, 0, 0, 0},
|
|
on_step = function(self, obj, pos)
|
|
local remove = minetest.after(2, function()
|
|
self.object:remove()
|
|
end)
|
|
local pos = self.object:getpos()
|
|
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
|
|
for k, obj in pairs(objs) do
|
|
if obj:get_luaentity() ~= nil then
|
|
if obj:get_luaentity().name ~= "witchcraft:lightning" and obj:get_luaentity().name ~= "__builtin:item" then
|
|
obj:punch(self.object, 1.0, {
|
|
full_punch_interval=1.0,
|
|
damage_groups={fleshy=3},
|
|
}, nil)
|
|
self.object:remove()
|
|
end
|
|
end
|
|
end
|
|
for dx=0,1 do
|
|
for dy=0,1 do
|
|
for dz=0,1 do
|
|
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
|
|
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local n = minetest.env:get_node(p).name
|
|
if n ~= "witchcraft:lightning" and n ~="default:dirt_with_grass" and n ~="default:dirt_with_dry_grass" and n ~="default:stone" then
|
|
if minetest.registered_nodes[n].groups.flammable --[[or math.random(1, 100) <= 1]] then
|
|
minetest.env:set_node(t, {name="fire:basic_flame"})
|
|
end
|
|
elseif n == "default:wood" or n =="default:tree" or n =="default:dirt_with_grass" or n =="default:dirt_with_dry_grass" then
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local apos = self.object:getpos()
|
|
local part = minetest.add_particlespawner(
|
|
6, --amount
|
|
0.3, --time
|
|
{x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos
|
|
{x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=0,y=-0.5,z=0}, --minacc
|
|
{x=0.5,y=0.5,z=0.5}, --maxacc
|
|
1, --minexptime
|
|
2, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_zap.png" --texture
|
|
)
|
|
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:tree", {
|
|
textures = {"witchcraft_skin.png"},
|
|
velocity = 1,
|
|
damage = 2,
|
|
collisionbox = {0, 0, 0, 0, 0, 0},
|
|
on_step = function(self, obj, pos)
|
|
local remove = minetest.after(2, function()
|
|
self.object:remove()
|
|
end)
|
|
local pos = self.object:getpos()
|
|
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
|
|
for k, obj in pairs(objs) do
|
|
if obj:get_luaentity() ~= nil then
|
|
if obj:get_luaentity().name ~= "witchcraft:tree" and obj:get_luaentity().name ~= "__builtin:item" then
|
|
obj:remove()
|
|
local treepos = self.object:getpos()
|
|
default.grow_new_jungle_tree(treepos)
|
|
self.object:remove()
|
|
end
|
|
end
|
|
end
|
|
for dx=0,1 do
|
|
for dy=0,1 do
|
|
for dz=0,1 do
|
|
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
|
|
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
|
local n = minetest.env:get_node(p).name
|
|
if n ~= "witchcraft:tree" and n ~="air" then
|
|
local treepos = self.object:getpos()
|
|
default.grow_new_jungle_tree(treepos)
|
|
self.object:remove()
|
|
elseif n == "default:wood" or n =="default:tree" or n =="default:dirt_with_grass" or n =="default:dirt_with_dry_grass" then
|
|
self.hit_node(self, pos, node)
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
end
|
|
hit_node = function(self, pos, node)
|
|
local treepos = self.object:getpos()
|
|
default.grow_new_jungle_tree(treepos)
|
|
end
|
|
|
|
local apos = self.object:getpos()
|
|
local part = minetest.add_particlespawner(
|
|
6, --amount
|
|
0.3, --time
|
|
{x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos
|
|
{x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=0,y=-0.5,z=0}, --minacc
|
|
{x=0.5,y=0.5,z=0.5}, --maxacc
|
|
0.1, --minexptime
|
|
0.3, --maxexptime
|
|
1, --minsize
|
|
2, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_leaf_over.png" --texture
|
|
)
|
|
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:ice", {
|
|
visual="sprite",
|
|
visual_size={x=1,y=1},
|
|
physical=false,
|
|
textures={"witchcraft_ice.png"},
|
|
velocity = 1,
|
|
rotate = 90,
|
|
auto_rotate = true,
|
|
damage = 2,
|
|
collisionbox = {0, 0, 0, 0, 0, 0},
|
|
on_step = function(self, obj, pos)
|
|
local remove = minetest.after(2, function()
|
|
self.object:remove()
|
|
end)
|
|
local pos = self.object:getpos()
|
|
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
|
|
for k, obj in pairs(objs) do
|
|
if obj:get_luaentity() ~= nil then
|
|
if obj:get_luaentity().name ~= "witchcraft:ice" and obj:get_luaentity().name ~= "__builtin:item" then
|
|
obj:punch(self.object, 1.0, {
|
|
full_punch_interval=1.0,
|
|
damage_groups={fleshy=1},
|
|
}, nil)
|
|
self.object:remove()
|
|
end
|
|
end
|
|
|
|
local apos = self.object:getpos()
|
|
local part = minetest.add_particlespawner(
|
|
10, --amount
|
|
0.3, --time
|
|
{x=apos.x-0.3, y=apos.y-0.3, z=apos.z-0.3}, --minpos
|
|
{x=apos.x+0.3, y=apos.y+0.3, z=apos.z+0.3}, --maxpos
|
|
{x=-0, y=-0, z=-0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=0,y=-0.5,z=0}, --minacc
|
|
{x=0.5,y=0.5,z=0.5}, --maxacc
|
|
0.1, --minexptime
|
|
0.3, --maxexptime
|
|
0.2, --minsize
|
|
0.5, --maxsize
|
|
false, --collisiondetection
|
|
"witchcraft_light_over.png" --texture
|
|
)
|
|
end
|
|
end
|
|
}) |