forked from nalc/witchcraft
sys4
11f39382ef
* Fix bugs with pots, (splash) potions, scrolls etc. * Fix warnings caused by deprecated functions and definitions * Add mod.conf * Clean and indent code * Remove the stack limit of 3 glass bottles * Optimize textures with optipng
3630 lines
105 KiB
Lua
3630 lines
105 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/>.
|
|
|
|
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
|
|
or minetest.get_item_group(stack:get_name(), "potion2") ~= 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
|
|
or minetest.get_item_group(stack:get_name(), "potion2") ~= 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.
|
|
|
|
--ingredients
|
|
|
|
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_craftitem("witchcraft:herb", {
|
|
description = "herb",
|
|
inventory_image = "witchcraft_herbs.png"
|
|
})
|
|
|
|
minetest.register_craftitem("witchcraft:tooth", {
|
|
description = "tooth",
|
|
inventory_image = "witchcraft_tooth.png"
|
|
})
|
|
|
|
minetest.register_craftitem("witchcraft:horn", {
|
|
description = "horn",
|
|
inventory_image = "witchcraft_horn.png"
|
|
})
|
|
|
|
minetest.register_craftitem("witchcraft:bone", {
|
|
description = "bone",
|
|
inventory_image = "witchcraft_bone.png"
|
|
})
|
|
|
|
--crafting
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:shelf',
|
|
recipe = {
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
{'group:potion2', 'group:potion2', 'group:potion2'},
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
}
|
|
})
|
|
|
|
if minetest.get_modpath("moreplants") then
|
|
minetest.register_craft({
|
|
output = 'witchcraft:bottle_eyes',
|
|
recipe = {
|
|
{'moreplants:eye'},
|
|
{'moreplants:eye'},
|
|
{'vessels:drinking_glass'},
|
|
}
|
|
})
|
|
|
|
|
|
minetest.register_craft({
|
|
output = "moreplants:eye 2",
|
|
type = "shapeless",
|
|
recipe = {"witchcraft:bottle_eyes"}
|
|
})
|
|
|
|
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"}
|
|
})
|
|
else
|
|
minetest.register_craft({
|
|
output = "witchcraft:herb 4",
|
|
type = "shapeless",
|
|
recipe = {"default:grass_5"}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "witchcraft:herb 4",
|
|
type = "shapeless",
|
|
recipe = {"default:grass_4"}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "witchcraft:herb 4",
|
|
type = "shapeless",
|
|
recipe = {"default:grass_3"}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "witchcraft:herb 4",
|
|
type = "shapeless",
|
|
recipe = {"default:grass_2"}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "witchcraft:herb 4",
|
|
type = "shapeless",
|
|
recipe = {"default:grass_1"}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:bottle_eyes',
|
|
recipe = {
|
|
{'bucket:bucket_water'},
|
|
{'vessels:drinking_glass'},
|
|
}
|
|
})
|
|
end
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:pot',
|
|
recipe = {
|
|
{'default:copper_lump', '', 'default:copper_lump'},
|
|
{'default:copper_lump', '', 'default:copper_lump'},
|
|
{'', 'default:copper_lump', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:mortar',
|
|
recipe = {
|
|
{'default:stone', '', 'default:stone'},
|
|
{'default:stone', '', 'default:stone'},
|
|
{'', 'default:stone', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:pentagram',
|
|
recipe = {
|
|
{'default:torch', 'default:clay', 'default:torch'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:small_bottle',
|
|
recipe = {
|
|
{'vessels:glass_fragments', 'vessels:glass_fragments', 'vessels:glass_fragments'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:bottle_medicine 2',
|
|
recipe = {
|
|
{'witchcraft:small_bottle', 'witchcraft:potion_red', 'witchcraft:small_bottle'},
|
|
},
|
|
replacements = {
|
|
{"witchcraft:potion_red", "vessels:glass_bottle"}
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:mud_bottle',
|
|
recipe = {
|
|
{'default:dirt'},
|
|
{'witchcraft:small_bottle'},
|
|
},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:bone_bottle',
|
|
recipe = {
|
|
{'bones:bones'},
|
|
{'witchcraft:small_bottle'},
|
|
},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:herb_bottle',
|
|
recipe = {
|
|
{'witchcraft:herb'},
|
|
{'witchcraft:small_bottle'},
|
|
},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:slime_bottle',
|
|
recipe = {
|
|
{'witchcraft:bottle_slime'},
|
|
{'witchcraft:small_bottle'},
|
|
},
|
|
replacements = {
|
|
{"witchcraft:bottle_slime", "vessels:drinking_glass"}
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:herb',
|
|
recipe = {
|
|
{'witchcraft:herb_bottle'},
|
|
},
|
|
replacements = {
|
|
{"witchcraft:herb_bottle", "witchcraft:small_bottle"}
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'bones:bones',
|
|
recipe = {
|
|
{'witchcraft:bone_bottle'},
|
|
},
|
|
replacements = {
|
|
{"witchcraft:bone_bottle", "witchcraft:small_bottle"}
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:dirt',
|
|
recipe = {
|
|
{'witchcraft:mud_bottle'},
|
|
},
|
|
replacements = {
|
|
{"witchcraft:mud_bottle", "witchcraft:small_bottle"}
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:bottle_slime',
|
|
recipe = {
|
|
{'witchcraft:slime_bottle'},
|
|
},
|
|
replacements = {
|
|
{"witchcraft:slime_bottle", "witchcraft:small_bottle"}
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:slime_bottle',
|
|
recipe = {
|
|
{'witchcraft:bottle_slime'},
|
|
{'witchcraft:small_bottle'},
|
|
},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'vessels:glass_fragments 3',
|
|
recipe = {
|
|
{'default:glass'},
|
|
},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:bone 4',
|
|
recipe = {
|
|
{'bones:bones', 'bones:bones'},
|
|
},
|
|
})
|
|
|
|
--teeth from sand, maybe fossilised?
|
|
minetest.override_item("default:sand", {
|
|
drop = {
|
|
max_items = 1,
|
|
items = {
|
|
{
|
|
items = {"witchcraft:tooth"},
|
|
rarity = 30,
|
|
},
|
|
{
|
|
items = {"default:sand"},
|
|
}
|
|
}
|
|
},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "shapeless",
|
|
output = "default:sand",
|
|
recipe = {"witchcraft:tooth"},
|
|
})
|
|
|
|
--splash potions crafting
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_yellwgrn',
|
|
recipe = {
|
|
{'vessels:glass_fragments'},
|
|
{'witchcraft:potion_yllwgrn'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_orange',
|
|
recipe = {
|
|
{'vessels:glass_fragments'},
|
|
{'witchcraft:potion_orange'},
|
|
}
|
|
})
|
|
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_purple',
|
|
recipe = {
|
|
{'vessels:glass_fragments'},
|
|
{'witchcraft:potion_purple'},
|
|
}
|
|
})
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_magenta',
|
|
recipe = {
|
|
{'vessels:glass_fragments'},
|
|
{'witchcraft:potion_magenta'},
|
|
}
|
|
})
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_cyan',
|
|
recipe = {
|
|
{'vessels:glass_fragments'},
|
|
{'witchcraft:potion_cyan'},
|
|
}
|
|
})
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_red',
|
|
recipe = {
|
|
{'vessels:glass_fragments'},
|
|
{'witchcraft:potion_red'},
|
|
}
|
|
})
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_green',
|
|
recipe = {
|
|
{'vessels:glass_fragments'},
|
|
{'witchcraft:potion_green'},
|
|
}
|
|
})
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_grey',
|
|
recipe = {
|
|
{'vessels:glass_fragments'},
|
|
{'witchcraft:potion_grey'},
|
|
}
|
|
})
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_brown',
|
|
recipe = {
|
|
{'vessels:glass_fragments'},
|
|
{'witchcraft:potion_brown'},
|
|
}
|
|
})
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_redbrown',
|
|
recipe = {
|
|
{'vessels:glass_fragments'},
|
|
{'witchcraft:potion_redbrown'},
|
|
}
|
|
})
|
|
|
|
|
|
minetest.register_craft({
|
|
output = 'witchcraft:splash_ggreen',
|
|
recipe = {
|
|
{'vessels:glass_fragments'},
|
|
{'witchcraft:potion_ggreen'},
|
|
}
|
|
})
|
|
|
|
|
|
|
|
--empty cooking pot
|
|
|
|
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.25, 0.375}, -- NodeBox4
|
|
{-0.4375, -0.25, -0.4375, 0.4375, -0.1875, 0.4375}, -- NodeBox5
|
|
{-0.5, -0.1875, -0.5, 0.5, -0.125, 0.5}, -- NodeBox7
|
|
{-0.5, -0.125, -0.5, 0.5, 0.3125, -0.3125}, -- NodeBox8
|
|
{-0.5, -0.125, 0.3125, 0.5, 0.3125, 0.5}, -- NodeBox9
|
|
{0.3125, -0.1875, -0.5, 0.5, 0.3125, 0.5}, -- NodeBox10
|
|
{-0.5, -0.125, -0.5, -0.3125, 0.3125, 0.5}, -- NodeBox11
|
|
{-0.4375, 0.375, 0.3125, 0.4375, 0.5, 0.4375}, -- NodeBox12
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, -0.3125}, -- NodeBox13
|
|
{-0.4375, 0.375, -0.4375, 0.4375, 0.5, -0.3125}, -- NodeBox14
|
|
{0.3125, 0.375, -0.4375, 0.4375, 0.5, 0.4375}, -- NodeBox15
|
|
{-0.4375, 0.375, -0.4375, -0.3125, 0.5, 0.4375}, -- NodeBox16
|
|
{-0.375, 0.3125, -0.375, 0.375, 0.375, -0.3125}, -- NodeBox17
|
|
{-0.375, 0.3125, 0.3125, 0.375, 0.375, 0.375}, -- NodeBox18
|
|
{0.3125, 0.3125, -0.375, 0.375, 0.375, 0.375}, -- NodeBox19
|
|
{-0.375, 0.3125, -0.375, -0.3125, 0.375, 0.375}, -- NodeBox20
|
|
}
|
|
},
|
|
on_rightclick = function(pos, node, clicker, itemstack, _)
|
|
local wield_item = itemstack:get_name()
|
|
if wield_item == "bucket:bucket_water" or
|
|
wield_item == "bucket:bucket_river_water" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_blue", param2=node.param2})
|
|
return ItemStack("bucket:bucket_empty")
|
|
elseif wield_item == "witchcraft:potion_blue" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_blue", param2=node.param2})
|
|
return ItemStack("vessels:glass_bottle")
|
|
elseif wield_item == "vessels:drinking_glass" then
|
|
itemstack:set_count(itemstack:get_count() - 1)
|
|
minetest.add_item({x=pos.x, y=pos.y+1.5, z=pos.z}, "witchcraft:bottle_slime")
|
|
end
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1}
|
|
})
|
|
|
|
--level 1 potions from cooking pot
|
|
|
|
local witchcraft = {}
|
|
--the old recipes
|
|
witchcraft.pot = {
|
|
{"blue", "brown", "default:dirt", "blue2", "moreplants:bullrush", "red", "purple"},
|
|
{"blue2", "yellow", "default:steelblock", "yellow", "default:copperblock", "green2", "aqua"},
|
|
{"darkpurple", "cyan", "flowers:mushroom_red", "green", "moreplants:weed", "yellow", "redbrown"},
|
|
{"purple", "blue2", "flowers:waterlily", "gpurple", "default:mese_crystal", "magenta", "darkpurple"},
|
|
{"magenta", "purple", "witchcraft:bottle_eyes", "darkpurple", "moreplants:mushroom", "purple", "darkpurple"},
|
|
{"red", "grey", "default:gravel", "yllwgrn", "default:flint", "blue", "purple"},
|
|
{"redbrown", "magenta", "flowers:mushroom_brown", "magenta", "default:stone", "grey", "brown"},
|
|
{"brown", "gred", "witchcraft:herb", "grey", "moreplants:bush", "red", "redbrown"},
|
|
{"orange", "redbrown", "witchcraft:bottle_slime", "yellow", "default:steelblock", "green", "yllwgrn"},
|
|
{"gold", "yllwgrn", "tnt:tnt", "", "", "green", "yllwgrn"},
|
|
{"yellow", "yllwgrn", "tnt:tnt", "yllwgrn", "default:coal_lump", "darkpurple", "redbrown"},
|
|
{"yllwgrn", "green", "default:gold_lump", "orange", "mobs:lava_orb", "grey", "magenta"},
|
|
{"green2", "darkpurple", "default:glass", "red", "witchcraft:herb", "blue2", "aqua"},
|
|
{"green", "green2", "default:apple", "ggreen", "default:mese_crystal", "orange", "yllwgrn"},
|
|
{"aqua", "", "", "", "", "blue", "cyan"},
|
|
{"cyan", "aqua", "default:diamond", "gcyan", "default:mese_crystal", "green", "yellow"},
|
|
{"grey", "orange", "default:torch", "brown", "default:apple", "yllwgrn", "magenta"},
|
|
{"ggreen", "", "", "", "", "", ""},
|
|
{"gpurple", "", "", "", "", "", ""},
|
|
{"gred", "red", "default:apple", "grey", "default:gravel", "", ""},
|
|
{"gcyan", "", "", "", "", "", ""},
|
|
}
|
|
--new recipes
|
|
|
|
witchcraft.pot_new = {
|
|
{"blue", "blue2", "flowers:waterlily", "brown", "default:dirt", "red", "purple"},
|
|
{"blue2", "green", "default:papyrus", "", "", "gred", "magenta"},
|
|
{"green", "green2", "default:sapling", "", "", "yellow", "yllwgrn"},
|
|
{"green2", "yellow", "default:mese_crystal_fragment", "", "", "blue", "cyan"},
|
|
{"yellow", "ggreen", "flowers:mushroom_brown", "", "", "green", "yllwgrn"},
|
|
{"ggreen", "cyan", "witchcraft:slime_bottle", "", "", "gcyan", "aqua"},
|
|
{"cyan", "gcyan", "witchcraft:bottle_medicine", "", "", "blue", "blue2"},
|
|
{"gcyan", "orange", "default:torch", "", "", "ggreen", "aqua"},
|
|
{"orange", "yllwgrn", "tnt:gunpowder", "", "", "red", "redbrown"},
|
|
{"yllwgrn", "gold", "default:steel_ingot", "", "", "green", "green2"},
|
|
{"gold", "aqua", "default:diamond", "", "", "", ""},
|
|
{"aqua", "", "", "", "", "", ""},
|
|
{"brown", "redbrown", "flowers:mushroom_red", "", "", "red", "redbrown"},
|
|
{"redbrown", "gred", "default:apple", "", "", "", ""},
|
|
{"gred", "red", "witchcraft:herb", "", "", "blue2", "magenta"},
|
|
{"red", "magenta", "witchcraft:tooth", "", "", "blue", "purple"},
|
|
{"magenta", "gpurple", "witchcraft:bottle_slime", "", "", "cyan", "darkpurple"},
|
|
{"gpurple", "purple", "witchcraft:bone_bottle", "", "", "yllwgrn", "green2"},
|
|
{"purple", "darkpurple", "default:glass", "", "", "yellow", "green"},
|
|
{"darkpurple", "silver", "default:steel_ingot", "", "", "", ""},
|
|
{"silver", "grey", "witchcraft:bone", "", "", "", ""},
|
|
{"grey", "aqua", "default:diamond", "", "", "", ""},
|
|
}
|
|
|
|
|
|
--potion pots
|
|
|
|
for _, row in ipairs(witchcraft.pot_new) do --change 'pot_new' to 'pot' for the old recipes
|
|
local color = row[1]
|
|
local newcolor = row[2]
|
|
local newcolor2 = row[4]
|
|
local ingredient = row[3]
|
|
local ingredient2 = row[5]
|
|
local combine = row[6]
|
|
local cresult = row[7]
|
|
minetest.register_node("witchcraft:pot_"..color, {
|
|
tiles = {
|
|
{
|
|
name = "witchcraft_pot_"..color..".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, itemstack, _)
|
|
local wield_item = itemstack:get_name()
|
|
|
|
if wield_item == "vessels:glass_bottle" then
|
|
local wield_items_count = itemstack:get_count()
|
|
local potions_count = (wield_items_count <= 3 and wield_items_count) or 3
|
|
local wield_items_left = (wield_items_count - potions_count)
|
|
itemstack:set_count((wield_items_left < 0 and 0) or wield_items_left)
|
|
for i = 1, potions_count do
|
|
minetest.add_item({x=pos.x, y=pos.y+1.5, z=pos.z}, "witchcraft:potion_"..color)
|
|
end
|
|
minetest.set_node(pos, {name="witchcraft:pot", param2=node.param2})
|
|
elseif wield_item == ingredient then
|
|
minetest.set_node(pos, {name="witchcraft:pot_"..newcolor, param2=node.param2})
|
|
itemstack:take_item()
|
|
elseif wield_item == ingredient2 then
|
|
minetest.set_node(pos, {name="witchcraft:pot_"..newcolor2, param2=node.param2})
|
|
itemstack:take_item()
|
|
elseif wield_item == "bucket:bucket_water"
|
|
or wield_item == "bucket:bucket_river_water" then
|
|
minetest.set_node(pos, {name="witchcraft:pot_blue", param2=node.param2})
|
|
item:replace("bucket:bucket_empty")
|
|
elseif wield_item == "witchcraft:potion_"..combine then
|
|
minetest.set_node(pos, {name="witchcraft:pot_"..cresult, param2=node.param2})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
end
|
|
return itemstack
|
|
end,
|
|
groups = {cracky=1, falling_node=1, oddly_breakable_by_hand=1}
|
|
})
|
|
end
|
|
|
|
--pot effects
|
|
minetest.register_abm({
|
|
nodenames = {"witchcraft:pot_water", "witchcraft:pot_gold", "witchcraft:pot_redbrown", "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_ggreen", "witchcraft:pot_gred", "witchcraft:pot_gpurple", "witchcraft:pot_gcyan"},
|
|
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 = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_light_over.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
|
|
})
|
|
|
|
--small bottle and contents
|
|
|
|
minetest.register_node("witchcraft:small_bottle", {
|
|
description = "Small bottle",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_small_bottle.png"},
|
|
wield_image = "witchcraft_small_bottle.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_small_bottle.png",
|
|
})
|
|
|
|
minetest.register_node("witchcraft:bone_bottle", {
|
|
description = "Small bottle of bone dust",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_bone_bottle.png"},
|
|
wield_image = "witchcraft_bone_bottle.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_bone_bottle.png",
|
|
})
|
|
|
|
minetest.register_node("witchcraft:slime_bottle", {
|
|
description = "Small bottle of slime",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_slime_bottle.png"},
|
|
wield_image = "witchcraft_slime_bottle.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_slime_bottle.png",
|
|
})
|
|
|
|
minetest.register_node("witchcraft:herb_bottle", {
|
|
description = "Small bottle of herbs",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_herb_bottle.png"},
|
|
wield_image = "witchcraft_herb_bottle.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_herb_bottle.png",
|
|
})
|
|
|
|
minetest.register_node("witchcraft:mud_bottle", {
|
|
description = "Small bottle of mud",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_mud_bottle.png"},
|
|
wield_image = "witchcraft_mud_bottle.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_mud_bottle.png",
|
|
})
|
|
|
|
minetest.register_node("witchcraft:bottle_medicine", {
|
|
description = "Small bottle of Medicine",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_medicine_bottle.png"},
|
|
wield_image = "witchcraft_medicine_bottle.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_medicine_bottle.png",
|
|
on_use = function(itemstack, player)
|
|
local health = player:get_hp()
|
|
player:set_hp(health+10)
|
|
itemstack:replace("witchcraft:small_bottle")
|
|
return itemstack
|
|
end,
|
|
})
|
|
|
|
|
|
|
|
--splash effects
|
|
|
|
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:get_pos()
|
|
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"
|
|
and obj:get_luaentity().name ~= "gauges:hp_bar" then
|
|
obj:punch(self.object, 1.0, {
|
|
full_punch_interval=1.0,
|
|
damage_groups={fleshy=3},
|
|
}, nil)
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
gain = 1.0,
|
|
max_hear_distance = 20,
|
|
})
|
|
tnt.boom(pos, {damage_radius=5,radius=3,ignore_protection=false})
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
local n = minetest.get_node(pos).name
|
|
if n ~= "witchcraft:tnt_splash" and n ~= "air" then
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
gain = 1.0,
|
|
max_hear_distance = 20,
|
|
})
|
|
tnt.boom(pos, {damage_radius=5,radius=3,ignore_protection=false})
|
|
self.object:remove()
|
|
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:get_pos()
|
|
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() then
|
|
if obj:get_luaentity().name ~= "witchcraft:fire_splash"
|
|
and obj:get_luaentity().name ~= "__builtin:item"
|
|
and obj:get_luaentity().name ~= "gauges:hp_bar" then
|
|
obj:punch(self.object, 1.0, {
|
|
full_punch_interval=1.0,
|
|
damage_groups={fleshy=1},
|
|
}, nil)
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
|
|
local is_used = false
|
|
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+1+dy, z=pos.z+dz}
|
|
local n = minetest.get_node(p).name
|
|
if n ~= "witchcraft:fire_splash" and n ~= "air" then
|
|
is_used = true
|
|
if minetest.is_protected(pos, "") then
|
|
return
|
|
end
|
|
minetest.set_node(t, {name="fire:basic_flame"})
|
|
if minetest.registered_nodes[n].groups.flammable then
|
|
minetest.set_node(p, {name="fire:basic_flame"})
|
|
end
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if is_used then self.object:remove() end
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:death_splash", {
|
|
textures = {"witchcraft_splash_grey.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:get_pos()
|
|
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:death_splash"
|
|
and obj:get_luaentity().name ~= "__builtin:item"
|
|
and obj:get_luaentity().name ~= "gauges:hp_bar" then
|
|
obj:punch(self.object, 1.0, {
|
|
full_punch_interval=1.0,
|
|
damage_groups={fleshy=50},
|
|
}, nil)
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
local n = minetest.get_node(pos).name
|
|
if n ~= "witchcraft:death_splash" and n ~= "air" then
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:heal_splash", {
|
|
textures = {"witchcraft_splash_red.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:get_pos()
|
|
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:heal_splash"
|
|
and obj:get_luaentity().name ~= "__builtin:item"
|
|
and obj:get_luaentity().name ~= "gauges:hp_bar" then
|
|
obj:punch(self.object, 1.0, {
|
|
full_punch_interval=1.0,
|
|
damage_groups={fleshy=-20},
|
|
}, nil)
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
local n = minetest.get_node(pos).name
|
|
if n ~= "witchcraft:heal_splash" and n ~= "air" then
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:slow_splash", {
|
|
textures = {"witchcraft_splash_redbrown.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:get_pos()
|
|
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:slow_splash"
|
|
and obj:get_luaentity().name ~= "__builtin:item"
|
|
and obj:get_luaentity().name ~= "gauges:hp_bar" then
|
|
local vel = obj:get_velocity()
|
|
obj:set_velocity({x=vel.x*0.5, y=vel.y*0.5, z=vel.z*0.5})
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
local n = minetest.get_node(pos).name
|
|
if n ~= "witchcraft:slow_splash" and n ~= "air" then
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:fast_splash", {
|
|
textures = {"witchcraft_splash_magenta.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:get_pos()
|
|
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:fast_splash"
|
|
and obj:get_luaentity().name ~= "__builtin:item"
|
|
and obj:get_luaentity().name ~= "gauges:hp_bar" then
|
|
local vel = obj:get_velocity()
|
|
obj:set_velocity({x=vel.x*4, y=vel.y*1, z=vel.z*4})
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
local n = minetest.get_node(pos).name
|
|
if n ~= "witchcraft:fast_splash" and n ~= "air" then
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:antigrav_splash", {
|
|
textures = {"witchcraft_splash_green.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:get_pos()
|
|
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:antigrav_splash"
|
|
and obj:get_luaentity().name ~= "__builtin:item"
|
|
and obj:get_luaentity().name ~= "gauges:hp_bar" then
|
|
local vel = obj:get_velocity()
|
|
obj:set_velocity({x=vel.x*1, y=vel.y*0.1, z=vel.z*1})
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
local n = minetest.get_node(pos).name
|
|
if n ~= "witchcraft:antigrav_splash" and n ~= "air" then
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:jump_splash", {
|
|
textures = {"witchcraft_splash_cyan.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:get_pos()
|
|
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:jump_splash"
|
|
and obj:get_luaentity().name ~= "__builtin:item"
|
|
and obj:get_luaentity().name ~= "gauges:hp_bar" then
|
|
local vel = obj:get_velocity()
|
|
obj:set_velocity({x=vel.x*1, y=(vel.y+2)*3, z=vel.z*1})
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
local n = minetest.get_node(pos).name
|
|
if n ~= "witchcraft:antigrav_splash" and n ~= "air" then
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:murky_splash", {
|
|
textures = {"witchcraft_splash_brown.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:get_pos()
|
|
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:murky_splash"
|
|
and obj:get_luaentity().name ~= "__builtin:item"
|
|
and obj:get_luaentity().name ~= "gauges:hp_bar" then
|
|
obj:punch(self.object, 1.0, {
|
|
full_punch_interval=1.0,
|
|
damage_groups={fleshy=20},
|
|
}, nil)
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
local n = minetest.get_node(pos).name
|
|
if n ~= "witchcraft:murky_splash" and n ~= "air" then
|
|
minetest.sound_play("default_break_glass", {
|
|
pos = pos,
|
|
max_hear_distance = 20,
|
|
gain = 10.0,
|
|
})
|
|
self.object:remove()
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:shadow_splash", {
|
|
textures = {"witchcraft_splash_ggreen.png"},
|
|
velocity = 0.1,
|
|
damage = 2,
|
|
physical = true,
|
|
collisionbox = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
|
|
on_step = function(self, obj, pos)
|
|
local remove = minetest.after(5, function()
|
|
self.object:remove()
|
|
end)
|
|
local pos = self.object:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 50,
|
|
time = 1,
|
|
minpos = {x=pos.x-3, y=pos.y-3, z=pos.z-3},
|
|
maxpos = {x=pos.x+3, y=pos.y+3, z=pos.z+3},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.1,y=0.2,z=-0.1},
|
|
maxacc = {x=0.1,y=0.2,z=0.1},
|
|
minexptime = 5,
|
|
maxexptime = 10,
|
|
minsize = 10,
|
|
maxsize = 20,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_pot_bottom.png^[colorize:black:200"
|
|
})
|
|
end,
|
|
})
|
|
|
|
minetest.register_entity("witchcraft:smoke_splash", {
|
|
textures = {"witchcraft_splash_purple.png"},
|
|
velocity = 0.1,
|
|
damage = 2,
|
|
physical = true,
|
|
collisionbox = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
|
|
on_step = function(self, obj, pos)
|
|
local remove = minetest.after(10, function()
|
|
self.object:remove()
|
|
end)
|
|
local pos = self.object:get_pos()
|
|
-- local velo = self.object:get_velocity()
|
|
-- self.object:set_velocity({x=velo.x*0.9,y=velo.y,z=velo.z*0.9})
|
|
minetest.add_particlespawner({
|
|
amount = 10,
|
|
time = 1,
|
|
minpos = {x=pos.x-1, y=pos.y-1, z=pos.z-1},
|
|
maxpos = {x=pos.x+1, y=pos.y+1, z=pos.z+1},
|
|
minvel = {x=-1, y=-0, z=-1},
|
|
maxvel = {x=1, y=0, z=1},
|
|
minacc = {x=-0.5,y=2,z=-0.5},
|
|
maxacc = {x=0.5,y=3,z=0.5},
|
|
minexptime = 2,
|
|
maxexptime = 4,
|
|
minsize = 10,
|
|
maxsize = 20,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_smoke.png"
|
|
})
|
|
end,
|
|
})
|
|
|
|
--player effects
|
|
|
|
if minetest.get_modpath("player_monoids") then
|
|
local speed = player_monoids.speed
|
|
local jump = player_monoids.jump
|
|
local gravity = player_monoids.gravity
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_speed_lv1", "High Speed", nil, {"witchcraft:potion_speed_lv1"},
|
|
function(player)
|
|
speed:add_change(player, 2, "witchcraft:potion_speed_lv1")
|
|
end,
|
|
function(effect, player)
|
|
speed:del_change(player, "witchcraft:potion_speed_lv1")
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_speed_lv2", "High Speed", nil, {"witchcraft:potion_speed_lv2"},
|
|
function(player)
|
|
speed:add_change(player, 2.5, "witchcraft:potion_speed_lv2")
|
|
end,
|
|
function(effect, player)
|
|
speed:del_change(player, "witchcraft:potion_speed_lv2")
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_jump_lvx", "High Jump", nil, {"witchcraft:potion_jump_lvx"},
|
|
function(player)
|
|
jump:add_change(player, 1.5, "witchcraft:potion_jump_lvx")
|
|
gravity:add_change(player, 0.8, "witchcraft:potion_jump_lvx")
|
|
end,
|
|
function(effect, player)
|
|
jump:del_change(player, "witchcraft:potion_jump_lvx")
|
|
gravity:del_change(player, "witchcraft:potion_jump_lvx")
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_antigrav_lvx", "Light weight", nil, {"witchcraft:potion_antigrav_lvx"},
|
|
function(player)
|
|
gravity:add_change(player, 0.1, "witchcraft:potion_antigrav_lvx")
|
|
end,
|
|
function(effect, player)
|
|
gravity:del_change(player, "witchcraft:potion_antigrav_lvx")
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_slow_lv1", "Low Speed", nil, {"witchcraft:potion_slow_lv1"},
|
|
function(player)
|
|
speed:add_change(player, 0.5, "witchcraft:potion_slow_lv1")
|
|
end,
|
|
function(effect, player)
|
|
speed:del_change(player, "witchcraft:potion_slow_lv1")
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_slow_lv2", "Low Speed", nil, {"witchcraft:potion_slow_lv2"},
|
|
function(player)
|
|
speed:add_change(player, 0.4, "witchcraft:potion_slow_lv2")
|
|
end,
|
|
function(effect, player)
|
|
speed:del_change(player, "witchcraft:potion_slow_lv2")
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_swim_lv1", "Fast Swim", nil, {"witchcraft:potion_swim_lv1"},
|
|
function(player)
|
|
speed:add_change(player, 3, "witchcraft:potion_swim_lv1")
|
|
end,
|
|
function(effect, player)
|
|
speed:del_change(player, "witchcraft:potion_swim_lv1")
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_swim_lv2", "Dive", nil, {"witchcraft:potion_swim_lv2"},
|
|
function(player)
|
|
speed:add_change(player, 3, "witchcraft:potion_swim_lv2")
|
|
gravity:add_change(player, 4, "witchcraft:potion_swim_lv2")
|
|
end,
|
|
function(effect, player)
|
|
speed:del_change(player, "witchcraft:potion_swim_lv2")
|
|
gravity:del_change(player, "witchcraft:potion_swim_lv2")
|
|
end,
|
|
false
|
|
)
|
|
else
|
|
local function set_physics(player, speed, jump, gravity)
|
|
player:set_physics_override({
|
|
speed = speed,
|
|
jump = jump,
|
|
gravity = gravity
|
|
})
|
|
end
|
|
playereffects.register_effect_type("witchcraft:potion_speed_lv1", "High speed", nil, {"speed"},
|
|
function(player)
|
|
set_physics(player, 2,nil,nil)
|
|
end,
|
|
function(effect, player)
|
|
set_physics(player, 1,nil,nil)
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_speed_lv2", "High speed", nil, {"speed"},
|
|
function(player)
|
|
set_physics(player, 2.5,nil,nil)
|
|
end,
|
|
function(effect, player)
|
|
set_physics(player, 1,nil,nil)
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_jump_lvx", "High Jump", nil, {"jump"},
|
|
function(player)
|
|
set_physics(player, nil,1.5,0.8)
|
|
end,
|
|
function(effect, player)
|
|
set_physics(player, nil,1,1)
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_antigrav_lvx", "Light weight", nil, {"gravity"},
|
|
function(player)
|
|
set_physics(player, nil,nil,0.1)
|
|
end,
|
|
function(effect, player)
|
|
set_physics(player, nil,nil,1)
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_slow_lv1", "Low speed", nil, {"speed"},
|
|
function(player)
|
|
set_physics(player, 0.5,nil,nil)
|
|
end,
|
|
function(effect, player)
|
|
set_physics(player, 1,nil,nil)
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_slow_lv2", "Low speed", nil, {"speed"},
|
|
function(player)
|
|
set_physics(player, 0.4,nil,nil)
|
|
end,
|
|
function(effect, player)
|
|
set_physics(player, 1,nil,nil)
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_swim_lv1", "Fast Swim", nil, {"swim"},
|
|
function(player)
|
|
set_physics(player, 3,nil,nil)
|
|
end,
|
|
function(effect, player)
|
|
set_physics(player, 1,nil,nil)
|
|
end,
|
|
false
|
|
)
|
|
|
|
playereffects.register_effect_type("witchcraft:potion_swim_lv2", "Dive", nil, {"swim"},
|
|
function(player)
|
|
set_physics(player, 3,nil,4)
|
|
end,
|
|
function(effect, player)
|
|
set_physics(player, 1,nil,1)
|
|
end,
|
|
false
|
|
)
|
|
end
|
|
|
|
playereffects.register_effect_type("potion_silver", "Fire resist", nil, {"fire_resist"},
|
|
function(player)
|
|
local pos = player:get_pos()
|
|
local node = minetest.get_node(pos).name
|
|
if node == "default:lava_source" or node == "default:lava_flowing"
|
|
or node == "fire:basic_flame" then
|
|
local hp1 = player:get_hp()
|
|
minetest.after(0.8, function()
|
|
local hp2 = player:get_hp()
|
|
local change = hp1-hp2
|
|
if change >= 0 then
|
|
player:set_hp(hp2+change)
|
|
end
|
|
end)
|
|
end
|
|
end,
|
|
nil,
|
|
nil,
|
|
nil,
|
|
0.3
|
|
)
|
|
|
|
--splash potions
|
|
|
|
local splash = function(potion)
|
|
return function(itemstack, placer, pointed_thing)
|
|
local dir = placer:get_look_dir()
|
|
local playerpos = placer:get_pos()
|
|
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.add_entity({
|
|
x = playerpos.x+dir.x*1.5,
|
|
y = playerpos.y+2+dir.y,
|
|
z = playerpos.z+dir.z*1.5
|
|
},
|
|
potion)
|
|
obj:set_velocity(vec)
|
|
obj:set_acceleration(acc)
|
|
itemstack:take_item()
|
|
return itemstack
|
|
end
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_orange.png",
|
|
on_use = splash("witchcraft:fire_splash"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:splash_purple", {
|
|
description = "Smokey Splash Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_splash_purple.png"},
|
|
wield_image = "witchcraft_splash_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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_purple.png",
|
|
on_use = splash("witchcraft:smoke_splash"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:splash_red", {
|
|
description = "Healthy Splash Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_splash_red.png"},
|
|
wield_image = "witchcraft_splash_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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_red.png",
|
|
on_use = splash("witchcraft:heal_splash"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:splash_green", {
|
|
description = "Volatile Splash Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_splash_green.png"},
|
|
wield_image = "witchcraft_splash_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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_green.png",
|
|
on_use = splash("witchcraft:jump_splash"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:splash_cyan", {
|
|
description = "Light Splash Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_splash_cyan.png"},
|
|
wield_image = "witchcraft_splash_cyan.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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_cyan.png",
|
|
on_use = splash("witchcraft:antigrav_splash"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:splash_redbrown", {
|
|
description = "Thick Splash Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_splash_redbrown.png"},
|
|
wield_image = "witchcraft_splash_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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_redbrown.png",
|
|
on_use = splash("witchcraft:slow_splash"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:splash_magenta", {
|
|
description = "Fast Splash Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_splash_magenta.png"},
|
|
wield_image = "witchcraft_splash_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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_magenta.png",
|
|
on_use = splash("witchcraft:fast_splash"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:splash_brown", {
|
|
description = "Murky Splash Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_splash_brown.png"},
|
|
wield_image = "witchcraft_splash_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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_brown.png",
|
|
on_use = splash("witchcraft:murky_splash"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:splash_grey", {
|
|
description = "Death Splash Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_splash_grey.png"},
|
|
wield_image = "witchcraft_splash_grey.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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_grey.png",
|
|
on_use = splash("witchcraft:death_splash"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:splash_ggreen", {
|
|
description = "Darkness Splash Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_splash_ggreen.png"},
|
|
wield_image = "witchcraft_splash_ggreen.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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_ggreen.png",
|
|
on_use = splash("witchcraft:shadow_splash"),
|
|
})
|
|
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_splash_yellgrn.png",
|
|
on_use = splash("witchcraft:tnt_splash"),
|
|
})
|
|
|
|
--potions (level 1 and 2)
|
|
|
|
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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_red.png",
|
|
on_use = function(itemstack, player)
|
|
local health = player:get_hp()
|
|
player:set_hp(health+20)
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_red_2", {
|
|
description = "Tasty Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_red.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_red.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_red.png^[colorize:black:50",
|
|
on_use = function(itemstack, player)
|
|
local health = player:get_hp()
|
|
player:set_hp(health+50)
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end,
|
|
})
|
|
|
|
--invisibility potion by Tenplus1(DWTFYWT V2), see darkpurple potion for on_use effect
|
|
|
|
invisibility = {}
|
|
|
|
-- reset player invisibility if they go offline
|
|
|
|
minetest.register_on_leaveplayer(function(player)
|
|
local name = player:get_player_name()
|
|
if invisibility[name] then
|
|
invisibility[name] = nil
|
|
end
|
|
end)
|
|
|
|
local invisible = function(player, toggle)
|
|
if not player then return false end
|
|
|
|
local name = player:get_player_name()
|
|
invisibility[name] = toggle
|
|
|
|
local prop
|
|
if toggle then
|
|
|
|
-- hide player and name tag
|
|
prop = {
|
|
visual_size = {x = 0, y = 0},
|
|
-- collisionbox = {0, 0, 0, 0, 0, 0}
|
|
}
|
|
|
|
player:set_nametag_attributes({
|
|
color = {a = 0, r = 255, g = 255, b = 255}
|
|
})
|
|
else
|
|
-- show player and tag
|
|
prop = {
|
|
visual_size = {x = 1, y = 1},
|
|
-- collisionbox = {-0.35, -1, -0.35, 0.35, 1, 0.35}
|
|
}
|
|
|
|
player:set_nametag_attributes({
|
|
color = {a = 255, r = 255, g = 255, b = 255}
|
|
})
|
|
end
|
|
|
|
player:set_properties(prop)
|
|
end
|
|
|
|
minetest.register_node("witchcraft:potion_darkpurple", {
|
|
description = "Shady Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_darkpurple.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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
stack_max = 1,
|
|
wield_image = "witchcraft_potion_darkpurple.png",
|
|
inventory_image = "witchcraft_potion_darkpurple.png",
|
|
on_use = function(itemstack, user)
|
|
--invisibility effect from invisibility potion by Tenplus1
|
|
|
|
local pos = user:get_pos()
|
|
|
|
-- make player invisible
|
|
invisible(user, true)
|
|
|
|
-- play sound
|
|
minetest.sound_play("pop", {
|
|
pos = pos,
|
|
gain = 1.0,
|
|
max_hear_distance = 5
|
|
})
|
|
|
|
-- display 10 second warning
|
|
minetest.after(290, function()
|
|
if pos then
|
|
minetest.chat_send_player(user:get_player_name(),
|
|
">>> You have 10 seconds before invisibility wears off!")
|
|
end
|
|
end)
|
|
|
|
-- make player visible 5 minutes later
|
|
minetest.after(300, function()
|
|
if pos then
|
|
-- show aready hidden player
|
|
invisible(user, nil)
|
|
|
|
-- play sound
|
|
minetest.sound_play("pop", {
|
|
pos = pos,
|
|
gain = 1.0,
|
|
max_hear_distance = 5
|
|
})
|
|
end
|
|
end)
|
|
|
|
--effect
|
|
local playerpos = pos
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
|
|
-- take item
|
|
if not minetest.settings:get_bool("creative_mode") then
|
|
itemstack:take_item()
|
|
return {name = "vessels:glass_bottle"}
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_darkpurple_2", {
|
|
description = "Shady Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_darkpurple.png^[colorize:black:50"},
|
|
is_ground_content = false,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
|
|
},
|
|
paramtype = "light",
|
|
groups = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
stack_max = 1,
|
|
wield_image = "witchcraft_potion_darkpurple.png^[colorize:black:50",
|
|
inventory_image = "witchcraft_potion_darkpurple.png^[colorize:black:50",
|
|
on_use = function(itemstack, user)
|
|
local pos = user:get_pos()
|
|
|
|
-- make player invisible
|
|
invisible(user, true)
|
|
|
|
-- play sound
|
|
minetest.sound_play("pop", {
|
|
pos = pos,
|
|
gain = 1.0,
|
|
max_hear_distance = 5
|
|
})
|
|
|
|
-- display 10 second warning
|
|
minetest.after(340, function()
|
|
if pos then
|
|
minetest.chat_send_player(user:get_player_name(),
|
|
">>> You have 10 seconds before invisibility wears off!")
|
|
end
|
|
end)
|
|
|
|
-- make player visible 5 minutes later
|
|
minetest.after(350, function()
|
|
if pos then
|
|
|
|
-- show aready hidden player
|
|
invisible(user, nil)
|
|
|
|
-- play sound
|
|
minetest.sound_play("pop", {
|
|
pos = pos,
|
|
gain = 1.0,
|
|
max_hear_distance = 5
|
|
})
|
|
end
|
|
end)
|
|
|
|
--effect
|
|
local playerpos = pos
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
|
|
-- take item
|
|
if not minetest.settings:get_bool("creative_mode") then
|
|
itemstack:take_item()
|
|
return {name = "vessels:glass_bottle"}
|
|
end
|
|
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 = {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"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_brown_2", {
|
|
description = "Murky Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_brown.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_brown.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_brown.png^[colorize:black:50",
|
|
on_use = minetest.item_eat(-10, "vessels:glass_bottle"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_yllwgrn", {
|
|
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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_yellgrn.png",
|
|
on_use = function(itemstack, placer, pointed_thing)
|
|
tnt.boom(placer:get_pos(), {damage_radius=5,radius=3,ignore_protection=false})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_yllwgrn_2", {
|
|
description = "Dodgy Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_yellgrn.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_yellgrn.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_yellgrn.png^[colorize:black:50",
|
|
on_use = function(itemstack, placer, pointed_thing)
|
|
tnt.boom(placer:get_pos(), {damage_radius=10,radius=4,ignore_protection=false})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
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)
|
|
minetest.after(2, function()
|
|
self.object:remove()
|
|
end)
|
|
local pos = self.object:get_pos()
|
|
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"
|
|
and obj:get_luaentity().name ~= "gauges:hp_bar" then
|
|
obj:punch(self.object, 1.0, {
|
|
full_punch_interval=1.0,
|
|
damage_groups={fleshy=3},
|
|
}, nil)
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
local is_used = false
|
|
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.get_node(p).name
|
|
if n ~= "witchcraft:fire" and n ~= "air" then
|
|
is_used = true
|
|
if minetest.registered_items[n].groups.flammable
|
|
and not minetest.is_protected(pos, "") then
|
|
minetest.set_node(t, {name="fire:basic_flame"})
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if is_used then self.object:remove() 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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_orange.png",
|
|
on_use = function(itemstack, placer, pointed_thing)
|
|
local dir = placer:get_look_dir()
|
|
local playerpos = placer:get_pos()
|
|
local vec = {x=dir.x*2,y=dir.y*2.5,z=dir.z*2}
|
|
local obj = minetest.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:set_velocity(vec)
|
|
minetest.add_particlespawner({
|
|
amount = 10,
|
|
time = 0.3,
|
|
minpos = {x=playerpos.x-0.3, y=playerpos.y+1.5, z=playerpos.z-0.3},
|
|
maxpos = {x=playerpos.x+0.3, y=playerpos.y+1.5, z=playerpos.z+0.3},
|
|
minvel = {x=dir.x*3,y=dir.y*3,z=dir.z*3},
|
|
maxvel = {x=dir.x*3,y=dir.y*3,z=dir.z*3},
|
|
minacc = {x=0,y=-0.5,z=0},
|
|
maxacc = {x=0.5,y=0.5,z=0.5},
|
|
minexptime = 1,
|
|
maxexptime = 2,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_flame.png"
|
|
})
|
|
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_orange_2", {
|
|
description = "Dragon Potion (v2)",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_orange.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_orange.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_orange.png^[colorize:black:50",
|
|
on_use = function(itemstack, placer, pointed_thing)
|
|
local dir = placer:get_look_dir()
|
|
local playerpos = placer:get_pos()
|
|
local vec = {x=dir.x*3,y=dir.y*3.5,z=dir.z*3}
|
|
local obj = minetest.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:set_velocity(vec)
|
|
minetest.add_particlespawner({
|
|
amount = 10,
|
|
time = 0.3,
|
|
minpos = {x=playerpos.x-0.3, y=playerpos.y+1.5, z=playerpos.z-0.3},
|
|
maxpos = {x=playerpos.x+0.3, y=playerpos.y+1.5, z=playerpos.z+0.3},
|
|
minvel = {x=dir.x*3,y=dir.y*3,z=dir.z*3},
|
|
maxvel = {x=dir.x*3,y=dir.y*3,z=dir.z*3},
|
|
minacc = {x=0,y=-0.5,z=0},
|
|
maxacc = {x=0.5,y=0.5,z=0.5},
|
|
minexptime = 1,
|
|
maxexptime = 2,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_flame.png^[colorize:blue:200"
|
|
})
|
|
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_purple.png",
|
|
on_use = function(itemstack, placer, pointed_thing)
|
|
local dir = placer:get_look_dir()
|
|
local playerpos = placer:get_pos()
|
|
local vec = {x=dir.x*2,y=dir.y*2.5,z=dir.z*2}
|
|
minetest.add_particlespawner({
|
|
amount = 20,
|
|
time = 0.5,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y, z=playerpos.z+1},
|
|
minvel = {x=0,y=0.5,z=0},
|
|
maxvel = {x=0,y=0.6,z=0},
|
|
minacc = {x=0,y=-0.5,z=0},
|
|
maxacc = {x=0,y=0.5,z=0},
|
|
minexptime = 1,
|
|
maxexptime = 3,
|
|
minsize = 10,
|
|
maxsize = 15,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_smoke.png^[colorize:magenta:50"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end,
|
|
})
|
|
|
|
if minetest.get_modpath("hud_hunger") ~= nil then
|
|
local register_food = hunger.register_food
|
|
|
|
minetest.register_node("witchcraft:potion_gpurple", {
|
|
description = "Filling Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_gpurple.png"},
|
|
wield_image = "witchcraft_potion_gpurple.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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_gpurple.png",
|
|
on_use = function(itemstack, placer, pointed_thing)
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_gred", {
|
|
description = "Hunger Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_gred.png"},
|
|
wield_image = "witchcraft_potion_gred.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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_gred.png",
|
|
on_use = function(itemstack, placer, pointed_thing)
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end,
|
|
})
|
|
|
|
register_food("witchcraft:potion_gpurple", 10)
|
|
register_food("witchcraft:potion_gred", -4)
|
|
else
|
|
minetest.register_node("witchcraft:potion_gpurple", {
|
|
description = "Filling Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_gpurple.png"},
|
|
wield_image = "witchcraft_potion_gpurple.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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_purple.png",
|
|
on_use = minetest.item_eat(20, "vessels:glass_bottle"),
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_gred", {
|
|
description = "Hunger Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_gred.png"},
|
|
wield_image = "witchcraft_potion_gred.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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_gred.png",
|
|
on_use = minetest.item_eat(-10, "vessels:glass_bottle"),
|
|
})
|
|
|
|
if minetest.get_modpath("hunger_ng") then
|
|
local register_food = hunger_ng.add_hunger_data
|
|
|
|
register_food('witchcraft:potion_gpurple', {
|
|
satiates = 10,
|
|
returns = 'vessels:glass_bottle'
|
|
})
|
|
|
|
register_food('witchcraft:potion_gred', {
|
|
satiates = -4,
|
|
returns = 'vessels:glass_bottle'
|
|
})
|
|
end
|
|
end
|
|
|
|
minetest.register_node("witchcraft:potion_purple_2", {
|
|
description = "Smokey Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_purple.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_purple.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_purple.png^[colorize:black:20",
|
|
on_use = function(itemstack, placer, pointed_thing)
|
|
local dir = placer:get_look_dir()
|
|
local playerpos = placer:get_pos()
|
|
local vec = {x=dir.x*2,y=dir.y*2.5,z=dir.z*2}
|
|
minetest.add_particlespawner({
|
|
amount = 20,
|
|
time = 0.5,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y, z=playerpos.z+1},
|
|
minvel = {x=0,y=0.2,z=0},
|
|
maxvel = {x=0,y=0.2,z=0},
|
|
minacc = {x=0,y=-0.1,z=0},
|
|
maxacc = {x=0,y=0.1,z=0},
|
|
minexptime = 5,
|
|
maxexptime = 10,
|
|
minsize = 10,
|
|
maxsize = 15,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_smoke.png^[colorize:magenta:50"
|
|
})
|
|
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
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 = {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_grey_2", {
|
|
description = "Evil Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
stack_max = 1,
|
|
tiles = {"witchcraft_potion_grey.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_grey.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_grey.png^[colorize:black:50",
|
|
on_use = minetest.item_eat(-200, "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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_blue.png",
|
|
on_use = function(itemstack, 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
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_silver", {
|
|
description = "Cold potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_silver.png"},
|
|
wield_image = "witchcraft_potion_silver.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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_silver.png",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
playereffects.apply_effect_type("potion_silver", 15, user)
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_silver_2", {
|
|
description = "Cold potion lv2",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_silver.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_silver.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_silver.png^[colorize:black:50",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
playereffects.apply_effect_type("potion_silver", 60, user)
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
if minetest.get_modpath("farming") and farming.mod == "redo" 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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_green.png",
|
|
on_use = function(itemstack, 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:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
else
|
|
minetest.register_node("witchcraft:potion_green", {
|
|
description = "Plant Potion (destructive!)",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_green.png",
|
|
on_use = function(itemstack, 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
|
|
default.grow_new_jungle_tree(pointed_thing.above)
|
|
else
|
|
minetest.chat_send_player(player, "This area is protected.")
|
|
end
|
|
end
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
end
|
|
|
|
minetest.register_node("witchcraft:potion_gold", {
|
|
description = "Alchemy Potion",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_gold.png"},
|
|
wield_image = "witchcraft_potion_gold.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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_gold.png",
|
|
on_use = function(itemstack, 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:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_gold_2", {
|
|
description = "Alchemy Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_gold.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_gold.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_gold.png^[colorize:black:50",
|
|
on_use = function(itemstack, 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:diamondblock"})
|
|
else
|
|
minetest.chat_send_player(player, "This area is protected.")
|
|
end
|
|
end
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_aqua.png",
|
|
on_use = function(itemstack, placer, pointed_thing)
|
|
local pos = placer:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 6,
|
|
time = 0.1,
|
|
minpos = {x=pos.x-1, y=pos.y+0.5, z=pos.z-1},
|
|
maxpos = {x=pos.x+1, y=pos.y+1, z=pos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=2,z=-0.5},
|
|
maxacc = {x=0.5,y=2,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "orb.png"
|
|
})
|
|
minetest.add_entity(pos, "experience:orb")
|
|
minetest.add_entity(pos, "experience:orb")
|
|
minetest.add_entity(pos, "experience:orb")
|
|
minetest.add_entity(pos, "experience:orb")
|
|
minetest.add_entity(pos, "experience:orb")
|
|
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
else
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_aqua.png",
|
|
on_use = function(itemstack, placer, pointed_thing)
|
|
local pos = placer:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 6,
|
|
time = 0.1,
|
|
minpos = {x=pos.x-1, y=pos.y+0.5, z=pos.z-1},
|
|
maxpos = {x=pos.x+1, y=pos.y+1, z=pos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=2,z=-0.5},
|
|
maxacc = {x=0.5,y=2,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
minetest.add_item(pos, "default:steel_ingot")
|
|
minetest.add_item(pos, "witchcraft:herb")
|
|
minetest.add_item(pos, "default:mese_crystal")
|
|
minetest.add_item(pos, "default:gold_lump")
|
|
minetest.add_item(pos, "farming:bread")
|
|
minetest.add_item(pos, "default:copper_ingot")
|
|
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
end
|
|
|
|
minetest.register_node("witchcraft:potion_magenta", {
|
|
description = "Fast 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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_magenta.png",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local breath_change = user:set_breath(5)
|
|
playereffects.apply_effect_type("witchcraft:potion_speed_lv1", 10, user)
|
|
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_magenta_2", {
|
|
description = "Fast Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_magenta.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_magenta.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_magenta.png^[colorize:black:50",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local breath_change = user:set_breath(5)
|
|
playereffects.apply_effect_type("witchcraft:potion_speed_lv2", 10, user)
|
|
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_cyan.png",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local breath_change = user:set_breath(5)
|
|
playereffects.apply_effect_type("witchcraft:potion_antigrav_lvx", 10, user)
|
|
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_gcyan", {
|
|
description = "Air Potion",
|
|
drawtype = "plantlike",
|
|
stack_max = 1,
|
|
tiles = {"witchcraft_potion_gcyan.png"},
|
|
wield_image = "witchcraft_potion_gcyan.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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_gcyan.png",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local player = user:get_player_name()
|
|
local breath_change = user:set_breath(12)
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_cyan_2", {
|
|
description = "Light Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
stack_max = 1,
|
|
tiles = {"witchcraft_potion_cyan.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_cyan.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_cyan.png^[colorize:black:50",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local breath_change = user:set_breath(5)
|
|
playereffects.apply_effect_type("witchcraft:potion_antigrav_lvx", 20, user)
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_green2.png",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local breath_change = user:set_breath(5)
|
|
playereffects.apply_effect_type("witchcraft:potion_jump_lvx", 6, user)
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_ggreen", {
|
|
description = "Darkness Potion",
|
|
drawtype = "plantlike",
|
|
stack_max = 1,
|
|
tiles = {"witchcraft_potion_ggreen.png"},
|
|
wield_image = "witchcraft_potion_ggreen.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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_ggreen.png",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 2000,
|
|
time = 1,
|
|
minpos = {x=playerpos.x-20, y=playerpos.y-3, z=playerpos.z-20},
|
|
maxpos = {x=playerpos.x+20, y=playerpos.y+3, z=playerpos.z+20},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.1,y=0,z=-0.1},
|
|
maxacc = {x=0.1,y=0,z=0.1},
|
|
minexptime = 5,
|
|
maxexptime = 10,
|
|
minsize = 10,
|
|
maxsize = 20,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_pot_bottom.png^[colorize:black:200"
|
|
})
|
|
local mtime = minetest.get_timeofday()
|
|
if mtime >= 0.25 and mtime <= 0.75 then
|
|
user:override_day_night_ratio(-mtime+0.5)
|
|
minetest.after(10, function()
|
|
user:override_day_night_ratio(nil)
|
|
end)
|
|
end
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_green2_2", {
|
|
description = "Volatile Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
stack_max = 1,
|
|
tiles = {"witchcraft_potion_green2.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_green2.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_green2.png^[colorize:black:50",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local breath_change = user:set_breath(5)
|
|
playereffects.apply_effect_type("witchcraft:potion_jump_lvx", 10, user)
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_redbrown.png",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local breath_change = user:set_breath(5)
|
|
playereffects.apply_effect_type("witchcraft:potion_slow_lv1", 11, user)
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_redbrown_2", {
|
|
description = "Thick Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
tiles = {"witchcraft_potion_redbrown.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_redbrown.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_redbrown.png^[colorize:black:50",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local breath_change = user:set_breath(5)
|
|
playereffects.apply_effect_type("witchcraft:potion_slow_lv2", 15, user)
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_blue2.png",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local breath = user:get_breath()
|
|
if breath <= 10 then
|
|
playereffects.apply_effect_type("witchcraft:potion_swim_lv1", 15, user)
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_blue2_2", {
|
|
description = "Watery Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
stack_max = 1,
|
|
tiles = {"witchcraft_potion_blue2.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_blue2.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_blue2.png^[colorize:black:50",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local breath = user:get_breath()
|
|
if breath <= 10 then
|
|
playereffects.apply_effect_type("witchcraft:potion_swim_lv2", 15, user)
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
end
|
|
})
|
|
|
|
--light potion
|
|
|
|
function lightchange(person, duration)
|
|
local mtime = minetest.get_timeofday()
|
|
if mtime <= 0.25 or mtime >= 0.75 then
|
|
person:override_day_night_ratio(mtime+0.5)
|
|
minetest.after(duration, function()
|
|
person:override_day_night_ratio(nil)
|
|
end)
|
|
end
|
|
end
|
|
|
|
minetest.register_node("witchcraft:potion_yellow", {
|
|
description = "Shiny Potion",
|
|
drawtype = "plantlike",
|
|
stack_max = 1,
|
|
tiles = {"witchcraft_potion_yellow.png"},
|
|
wield_image = "witchcraft_potion_yellow.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 = {dig_immediate=3,attached_node=1, potion=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_yellow.png",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
lightchange(user, 10)
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
minetest.register_node("witchcraft:potion_yellow_2", {
|
|
description = "Shiny Potion (lv2)",
|
|
drawtype = "plantlike",
|
|
stack_max = 1,
|
|
tiles = {"witchcraft_potion_yellow.png^[colorize:black:50"},
|
|
wield_image = "witchcraft_potion_yellow.png^[colorize:black:50",
|
|
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 = {dig_immediate=3,attached_node=1, potion2=1},
|
|
sounds = default.node_sound_glass_defaults(),
|
|
inventory_image = "witchcraft_potion_yellow.png^[colorize:black:50",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
lightchange(user, 20)
|
|
local playerpos = user:get_pos()
|
|
minetest.add_particlespawner({
|
|
amount = 5,
|
|
time = 0.1,
|
|
minpos = {x=playerpos.x-1, y=playerpos.y+1, z=playerpos.z-1},
|
|
maxpos = {x=playerpos.x+1, y=playerpos.y+1, z=playerpos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=4,z=-0.5},
|
|
maxacc = {x=0.5,y=4,z=0.5},
|
|
minexptime = 0.5,
|
|
maxexptime = 1,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png"
|
|
})
|
|
itemstack:replace("vessels:glass_bottle")
|
|
return itemstack
|
|
end
|
|
})
|
|
|
|
--decorative nodes
|
|
|
|
minetest.register_node("witchcraft:mortar", {
|
|
description = "mortar and pestle",
|
|
tiles = {
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png",
|
|
"default_stone.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1
|
|
{-0.1875, -0.4375, -0.1875, 0.1875, -0.375, 0.1875}, -- NodeBox2
|
|
{-0.3125, -0.375, -0.3125, -0.1875, 0.125, 0.3125}, -- NodeBox3
|
|
{0.1875, -0.375, -0.3125, 0.3125, 0.125, 0.3125}, -- NodeBox4
|
|
{-0.3125, -0.375, -0.3125, 0.3125, 0.125, -0.1875}, -- NodeBox5
|
|
{-0.3125, -0.375, 0.1875, 0.3125, 0.125, 0.3125}, -- NodeBox6
|
|
{-0.1875, -0.375, -0.1875, 0.25, -0.0625, 0.1875}, -- NodeBox7
|
|
{-0.3125, -0.5, -0.5, 0.3125, -0.375, -0.375}, -- NodeBox8
|
|
}
|
|
},
|
|
groups = {cracky=1, oddly_breakable_by_hand=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pentablock", {
|
|
description = "Pentagram block",
|
|
tiles = {
|
|
"witchcraft_pentablock.png",
|
|
},
|
|
groups = {cracky=1, oddly_breakable_by_hand=1}
|
|
})
|
|
|
|
minetest.register_node("witchcraft:pentagram", {
|
|
description = "pentagram",
|
|
drawtype = "signlike",
|
|
visual_scale = 3.0,
|
|
tiles = {"witchcraft_pentagram.png"},
|
|
inventory_image = "witchcraft_pentagram.png",
|
|
use_texture_alpha = "clip",
|
|
paramtype = "light",
|
|
paramtype2 = "wallmounted",
|
|
sunlight_propagates = false,
|
|
light_source = 14,
|
|
walkable = false,
|
|
is_ground_content = true,
|
|
selection_box = {
|
|
type = "wallmounted",
|
|
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}
|
|
},
|
|
on_rightclick = function(pos, node, _)
|
|
if minetest.get_modpath("mobs") then
|
|
minetest.after(0.5, function()
|
|
minetest.set_node(pos, {name="witchcraft:portal", param2=node.param2})
|
|
minetest.add_particlespawner({
|
|
amount = 25,
|
|
time = 1,
|
|
minpos = {x=pos.x-1, y=pos.y, z=pos.z-1},
|
|
maxpos = {x=pos.x+1, y=pos.y, z=pos.z+1},
|
|
minvel = {x=-0, y=-0, z=-0},
|
|
maxvel = {x=0, y=0, z=0},
|
|
minacc = {x=-0.5,y=1,z=-0.5},
|
|
maxacc = {x=0.5,y=1,z=0.5},
|
|
minexptime = 1,
|
|
maxexptime = 1.5,
|
|
minsize = 1,
|
|
maxsize = 2,
|
|
collisiondetection = false,
|
|
texture = "witchcraft_effect.png^[colorize:green:400"
|
|
})
|
|
end)
|
|
end
|
|
end,
|
|
groups = {cracky=3,dig_immediate=3},
|
|
})
|
|
|
|
minetest.register_node("witchcraft:portal", {
|
|
description = "portal",
|
|
drawtype = "signlike",
|
|
visual_scale = 3.0,
|
|
tiles = {"witchcraft_portal.png"},
|
|
inventory_image = "witchcraft_portal.png",
|
|
use_texture_alpha = "blend",
|
|
paramtype = "light",
|
|
paramtype2 = "wallmounted",
|
|
sunlight_propagates = false,
|
|
light_source = 14,
|
|
walkable = false,
|
|
is_ground_content = true,
|
|
selection_box = {
|
|
type = "wallmounted",
|
|
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4, 0.5}
|
|
},
|
|
on_construct = function(pos, node, _)
|
|
minetest.after(1, function()
|
|
if minetest.get_modpath("mobs_animal") and minetest.get_modpath("mobs_monster") then
|
|
if math.random(2) > 1 then
|
|
minetest.add_entity(pos, "mobs_monster:oerkki")
|
|
else
|
|
minetest.add_entity(pos, "mobs_animal:kitten")
|
|
end
|
|
elseif minetest.get_modpath("horror") then
|
|
minetest.add_entity(pos, "horror:werewolf")
|
|
elseif minetest.get_modpath("dmobs") then
|
|
minetest.add_entity(pos, "dmobs:owl")
|
|
elseif minetest.get_modpath("mobs_animal") then
|
|
minetest.add_entity(pos, "mobs_animal:kitten")
|
|
elseif minetest.get_modpath("mobs_monster") then
|
|
minetest.add_entity(pos, "mobs_monster:oerkki")
|
|
elseif minetest.get_modpath("pmobs") then
|
|
minetest.add_entity(pos, "pmobs:wolf")
|
|
end
|
|
minetest.remove_node(pos)
|
|
end)
|
|
end,
|
|
groups = {cracky=3,dig_immediate=3, not_in_creative_inventory=1},
|
|
})
|
|
|
|
minetest.register_node("witchcraft:candle", {
|
|
description = "red candle",
|
|
tiles = {
|
|
"witchcraft_candle_top.png",
|
|
"witchcraft_candle_top.png",
|
|
"witchcraft_candle.png",
|
|
"witchcraft_candle.png",
|
|
"witchcraft_candle.png",
|
|
"witchcraft_candle.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.1875, -0.5, -0.1875, 0.1875, -0.0625, 0.1875}, -- NodeBox1
|
|
{-0.03125, -0.5, -0.03125, 0.03125, 0.0625, 0.03125}, -- NodeBox2
|
|
}
|
|
},
|
|
groups = {fleshy=1, oddly_breakable_by_hand=1, dig_immediate=3},
|
|
})
|
|
|
|
--other stuff
|
|
|
|
dofile(minetest.get_modpath("witchcraft").."/scrolls.lua")
|
|
dofile(minetest.get_modpath("witchcraft").."/brewing_stand.lua")
|