2018-04-17 14:17:56 +00:00
|
|
|
---------------------------
|
|
|
|
-- Register all crystals --
|
|
|
|
---------------------------
|
|
|
|
|
|
|
|
for name, data in pairs(magicalities.elements) do
|
|
|
|
if not data.inheritance then
|
|
|
|
magicalities.register_crystal(name, data.description, data.color)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-11-05 21:36:44 +00:00
|
|
|
-----------
|
|
|
|
-- Wands --
|
|
|
|
-----------
|
|
|
|
|
|
|
|
-- Iron
|
|
|
|
magicalities.wands.register_wand("steel", {
|
|
|
|
description = "Steel-Capped Wand",
|
|
|
|
image = "magicalities_wand_iron.png",
|
|
|
|
wand_cap = 25,
|
|
|
|
})
|
|
|
|
|
|
|
|
-- Gold
|
|
|
|
magicalities.wands.register_wand("gold", {
|
|
|
|
description = "Gold-Capped Wand",
|
|
|
|
image = "magicalities_wand_gold.png",
|
|
|
|
wand_cap = 50,
|
|
|
|
})
|
|
|
|
|
2018-04-17 14:17:56 +00:00
|
|
|
-----------------------------
|
|
|
|
-- Arcane crafting recipes --
|
|
|
|
-----------------------------
|
|
|
|
|
|
|
|
local recipes = {
|
|
|
|
{
|
|
|
|
input = {
|
|
|
|
{"default:gold_ingot", "default:glass", "default:gold_ingot"},
|
|
|
|
{"default:glass", "", "default:glass"},
|
|
|
|
{"default:gold_ingot", "default:glass", "default:gold_ingot"},
|
|
|
|
},
|
|
|
|
output = "magicalities:element_ring",
|
|
|
|
requirements = {
|
|
|
|
["water"] = 15,
|
|
|
|
["earth"] = 15,
|
|
|
|
["light"] = 15,
|
|
|
|
["fire"] = 15,
|
|
|
|
["dark"] = 15,
|
|
|
|
["air"] = 15,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
input = {
|
|
|
|
{"", "", "magicalities:cap_gold"},
|
|
|
|
{"", "magicalities:wand_core", ""},
|
|
|
|
{"group:crystal", "", ""}
|
|
|
|
},
|
|
|
|
output = "magicalities:wand_gold",
|
|
|
|
requirements = {
|
|
|
|
["water"] = 25,
|
|
|
|
["earth"] = 25,
|
|
|
|
["light"] = 25,
|
|
|
|
["fire"] = 25,
|
|
|
|
["dark"] = 25,
|
|
|
|
["air"] = 25,
|
2019-11-07 19:10:15 +00:00
|
|
|
},
|
|
|
|
learnable = true
|
2018-04-18 09:05:29 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
input = {
|
|
|
|
{"default:gold_ingot", "default:gold_ingot", "default:gold_ingot"},
|
|
|
|
{"default:gold_ingot", "", "default:gold_ingot"},
|
|
|
|
},
|
|
|
|
output = "magicalities:cap_gold",
|
|
|
|
requirements = {
|
|
|
|
["earth"] = 5,
|
|
|
|
["light"] = 5,
|
|
|
|
["dark"] = 5,
|
|
|
|
}
|
2019-08-20 09:51:38 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
input = {
|
|
|
|
{"group:crystal", "magicalities:tellium", "group:crystal"},
|
|
|
|
{"magicalities:tellium", "group:crystal", "magicalities:tellium"},
|
|
|
|
{"group:crystal", "magicalities:tellium", "group:crystal"}
|
|
|
|
},
|
|
|
|
output = "magicalities:focus_blank",
|
|
|
|
requirements = {
|
|
|
|
["light"] = 10,
|
|
|
|
["dark"] = 10,
|
2019-11-07 19:10:15 +00:00
|
|
|
},
|
|
|
|
learnable = {
|
|
|
|
depends = {"magicalities:tellium"}
|
2019-08-20 09:51:38 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
input = {
|
|
|
|
{"magicalities:crystal_earth", "magicalities:tellium", "magicalities:crystal_earth"},
|
|
|
|
{"magicalities:tellium", "magicalities:focus_blank", "magicalities:tellium"},
|
|
|
|
{"magicalities:crystal_earth", "magicalities:tellium", "magicalities:crystal_earth"}
|
|
|
|
},
|
|
|
|
output = "magicalities:focus_atk_earth",
|
|
|
|
requirements = {
|
|
|
|
["earth"] = 50,
|
2019-11-07 19:10:15 +00:00
|
|
|
},
|
|
|
|
learnable = {
|
|
|
|
depends = {"magicalities:focus_blank"}
|
2019-08-20 09:51:38 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
input = {
|
|
|
|
{"magicalities:crystal_air", "magicalities:tellium", "magicalities:crystal_air"},
|
|
|
|
{"magicalities:tellium", "magicalities:focus_blank", "magicalities:tellium"},
|
|
|
|
{"magicalities:crystal_air", "magicalities:tellium", "magicalities:crystal_air"}
|
|
|
|
},
|
|
|
|
output = "magicalities:focus_atk_air",
|
|
|
|
requirements = {
|
|
|
|
["air"] = 50,
|
2019-11-07 19:10:15 +00:00
|
|
|
},
|
|
|
|
learnable = {
|
|
|
|
depends = {"magicalities:focus_blank"}
|
2019-08-20 09:51:38 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
input = {
|
|
|
|
{"magicalities:crystal_water", "magicalities:tellium", "magicalities:crystal_water"},
|
|
|
|
{"magicalities:tellium", "magicalities:focus_blank", "magicalities:tellium"},
|
|
|
|
{"magicalities:crystal_water", "magicalities:tellium", "magicalities:crystal_water"}
|
|
|
|
},
|
|
|
|
output = "magicalities:focus_atk_water",
|
|
|
|
requirements = {
|
|
|
|
["water"] = 50,
|
2019-11-07 19:10:15 +00:00
|
|
|
},
|
|
|
|
learnable = {
|
|
|
|
depends = {"magicalities:focus_blank"}
|
2019-08-20 09:51:38 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
input = {
|
|
|
|
{"magicalities:crystal_fire", "magicalities:tellium", "magicalities:crystal_fire"},
|
|
|
|
{"magicalities:tellium", "magicalities:focus_blank", "magicalities:tellium"},
|
|
|
|
{"magicalities:crystal_fire", "magicalities:tellium", "magicalities:crystal_fire"}
|
|
|
|
},
|
|
|
|
output = "magicalities:focus_atk_fire",
|
|
|
|
requirements = {
|
|
|
|
["fire"] = 50,
|
2019-11-07 19:10:15 +00:00
|
|
|
},
|
|
|
|
learnable = {
|
|
|
|
depends = {"magicalities:focus_blank"}
|
2019-08-20 09:51:38 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
input = {
|
|
|
|
{"magicalities:crystal_earth", "default:dirt", "magicalities:crystal_light"},
|
|
|
|
{"magicalities:transterra", "magicalities:focus_atk_earth", "magicalities:transterra"},
|
|
|
|
{"magicalities:crystal_light", "default:stone", "magicalities:crystal_earth"}
|
|
|
|
},
|
|
|
|
output = "magicalities:focus_swap",
|
|
|
|
requirements = {
|
|
|
|
["earth"] = 25,
|
|
|
|
["light"] = 25,
|
2019-11-07 19:10:15 +00:00
|
|
|
},
|
|
|
|
learnable = {
|
|
|
|
depends = {"magicalities:focus_atk_earth"}
|
2019-08-20 09:51:38 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
input = {
|
|
|
|
{"magicalities:crystal_earth", "magicalities:tellium", "magicalities:transterra"},
|
|
|
|
{"magicalities:tellium", "magicalities:focus_blank", "magicalities:tellium"},
|
|
|
|
{"magicalities:transterra", "magicalities:tellium", "magicalities:crystal_earth"}
|
|
|
|
},
|
|
|
|
output = "magicalities:focus_tunnel",
|
|
|
|
requirements = {
|
|
|
|
["earth"] = 25,
|
|
|
|
["dark"] = 25,
|
2019-11-07 19:10:15 +00:00
|
|
|
},
|
|
|
|
learnable = {
|
|
|
|
depends = {"magicalities:focus_blank", "magicalities:transterra"}
|
2019-08-20 09:51:38 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
input = {
|
|
|
|
{"magicalities:crystal_air", "", "magicalities:crystal_air"},
|
|
|
|
{"", "magicalities:focus_atk_air", ""},
|
|
|
|
{"magicalities:crystal_air", "", "magicalities:crystal_air"}
|
|
|
|
},
|
|
|
|
output = "magicalities:focus_teleport",
|
|
|
|
requirements = {
|
|
|
|
["air"] = 10,
|
2019-11-07 19:10:15 +00:00
|
|
|
},
|
|
|
|
learnable = {
|
|
|
|
depends = {"magicalities:focus_blank"}
|
2019-08-20 09:51:38 +00:00
|
|
|
}
|
2018-04-17 14:17:56 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, recipe in pairs(recipes) do
|
|
|
|
magicalities.arcane.register_recipe(recipe)
|
|
|
|
end
|
|
|
|
|
2019-11-07 19:10:15 +00:00
|
|
|
--------------
|
|
|
|
-- Cauldron --
|
|
|
|
--------------
|
|
|
|
|
|
|
|
local cauldron_recipes = {
|
|
|
|
{
|
|
|
|
items = {"default:steel_ingot", "default:obsidian"},
|
|
|
|
requirements = {
|
|
|
|
earth = 1,
|
|
|
|
dark = 1,
|
|
|
|
},
|
|
|
|
output = "magicalities:tellium",
|
|
|
|
learnable = true
|
|
|
|
},
|
|
|
|
{
|
|
|
|
items = {"default:stone", "default:dirt", "magicalities:crystal_fire"},
|
|
|
|
requirements = {
|
|
|
|
fire = 5,
|
|
|
|
earth = 5,
|
|
|
|
},
|
|
|
|
output = "magicalities:transterra",
|
|
|
|
learnable = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, recipe in pairs(cauldron_recipes) do
|
|
|
|
magicalities.cauldron.register_recipe(recipe)
|
|
|
|
end
|
|
|
|
|
2018-04-17 14:17:56 +00:00
|
|
|
--------------------
|
|
|
|
-- Basic Crafting --
|
|
|
|
--------------------
|
|
|
|
|
|
|
|
minetest.register_craft({
|
|
|
|
recipe = {
|
|
|
|
{"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"},
|
|
|
|
{"default:steel_ingot", "", "default:steel_ingot"},
|
|
|
|
},
|
|
|
|
output = "magicalities:cap_steel",
|
|
|
|
})
|
|
|
|
|
|
|
|
minetest.register_craft({
|
|
|
|
recipe = {
|
|
|
|
{"", "default:stick"},
|
|
|
|
{"default:stick", ""},
|
|
|
|
},
|
|
|
|
output = "magicalities:wand_core",
|
|
|
|
})
|
|
|
|
|
|
|
|
minetest.register_craft({
|
|
|
|
recipe = {
|
|
|
|
{"", "", "magicalities:cap_steel"},
|
|
|
|
{"", "magicalities:wand_core", ""},
|
|
|
|
{"group:crystal", "", ""}
|
|
|
|
},
|
|
|
|
output = "magicalities:wand_steel",
|
|
|
|
})
|
2019-08-11 18:38:24 +00:00
|
|
|
|
|
|
|
minetest.register_craft({
|
|
|
|
recipe = {
|
|
|
|
{"group:tree", "group:tree", "group:tree"},
|
|
|
|
{"", "group:tree", ""},
|
|
|
|
{"group:tree", "group:tree", "group:tree"}
|
|
|
|
},
|
|
|
|
output = "magicalities:table",
|
|
|
|
})
|
|
|
|
|
2019-08-20 09:51:38 +00:00
|
|
|
minetest.register_craft({
|
|
|
|
recipe = {
|
|
|
|
{"default:steelblock", "", "default:steelblock"},
|
|
|
|
{"default:steelblock", "", "default:steelblock"},
|
|
|
|
{"default:steelblock", "default:steelblock", "default:steelblock"}
|
|
|
|
},
|
|
|
|
output = "magicalities:cauldron",
|
|
|
|
})
|
|
|
|
|
2019-11-08 12:48:12 +00:00
|
|
|
if minetest.registered_items["mobs:chicken_feather"] then
|
|
|
|
minetest.register_craft({
|
|
|
|
recipe = {
|
|
|
|
{"mobs:chicken_feather"},
|
|
|
|
{"group:color_black"},
|
|
|
|
{"default:glass"}
|
|
|
|
},
|
|
|
|
output = "magicalities:ink_and_quill",
|
|
|
|
})
|
|
|
|
else
|
|
|
|
minetest.register_craft({
|
|
|
|
recipe = {
|
|
|
|
{"group:color_white"},
|
|
|
|
{"group:color_black"},
|
|
|
|
{"default:glass"}
|
|
|
|
},
|
|
|
|
output = "magicalities:ink_and_quill",
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
2019-08-11 18:38:24 +00:00
|
|
|
local function _flatten(arr)
|
|
|
|
local result = {}
|
|
|
|
for i,v in ipairs(arr) do
|
|
|
|
for j,b in ipairs(v) do
|
|
|
|
table.insert(result, b)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return result
|
|
|
|
end
|
|
|
|
|
|
|
|
if minetest.get_modpath("craftguide") ~= nil then
|
2019-10-15 08:46:40 +00:00
|
|
|
local function construct_gridset(list)
|
|
|
|
local final = {}
|
|
|
|
for a,v in pairs(list) do
|
|
|
|
local height = math.ceil(a / 3)
|
|
|
|
if not final[height] then
|
|
|
|
if v == "" then v = "," end
|
|
|
|
final[height] = v
|
|
|
|
else
|
|
|
|
final[height] = final[height] .. "," .. v
|
|
|
|
end
|
|
|
|
end
|
|
|
|
return final
|
|
|
|
end
|
|
|
|
|
|
|
|
local function register_craftguide_recipe(type,output,items)
|
|
|
|
craftguide.register_craft({
|
|
|
|
type = type,
|
|
|
|
output = output,
|
|
|
|
items = construct_gridset(items),
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
2019-08-11 18:38:24 +00:00
|
|
|
craftguide.register_craft_type("arcane", {
|
|
|
|
description = "Arcane Crafting",
|
|
|
|
icon = "magicalities_table_arcane_top.png",
|
|
|
|
})
|
|
|
|
|
|
|
|
for _, recipe in pairs(recipes) do
|
2019-10-15 08:46:40 +00:00
|
|
|
register_craftguide_recipe("arcane", recipe.output, _flatten(recipe.input))
|
2019-08-11 18:38:24 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
-- How to make things with wand
|
|
|
|
craftguide.register_craft_type("wand", {
|
|
|
|
description = "Use Wand",
|
|
|
|
icon = "magicalities_wand_iron.png",
|
|
|
|
})
|
|
|
|
|
|
|
|
for g,v in pairs(magicalities.wands.transform_recipes) do
|
2019-08-20 18:54:48 +00:00
|
|
|
if v.result and type(v.result) == "string" then
|
2019-10-15 08:46:40 +00:00
|
|
|
register_craftguide_recipe("wand", v.result, {g})
|
2019-08-20 18:54:48 +00:00
|
|
|
end
|
2019-08-11 18:38:24 +00:00
|
|
|
end
|
2019-08-19 13:21:50 +00:00
|
|
|
|
|
|
|
-- Cauldron
|
|
|
|
craftguide.register_craft_type("cauldron", {
|
|
|
|
description = "Cauldron",
|
|
|
|
icon = "magicalities_cauldron.png",
|
|
|
|
})
|
|
|
|
|
2019-11-07 19:10:15 +00:00
|
|
|
for g,v in pairs(cauldron_recipes) do
|
2019-10-15 08:46:40 +00:00
|
|
|
register_craftguide_recipe("cauldron", v.output, v.items)
|
2019-08-19 13:21:50 +00:00
|
|
|
end
|
2019-08-11 18:38:24 +00:00
|
|
|
end
|
2019-11-05 21:36:44 +00:00
|
|
|
|
2019-11-07 19:10:15 +00:00
|
|
|
-- Abilities
|
2019-11-05 21:36:44 +00:00
|
|
|
|
2019-11-08 13:25:38 +00:00
|
|
|
magicalities.register_ability_learnable({
|
|
|
|
name = "magicalities:crystal_preserve",
|
|
|
|
description = "Crystal Preservation\nAvoid collecting every last drop of elements",
|
|
|
|
icon = "magicalities_crystal_preservation.png"
|
|
|
|
})
|
|
|
|
|
|
|
|
magicalities.register_ability_learnable({
|
|
|
|
name = "magicalities:crystal_draining",
|
|
|
|
description = "Efficient Crystal Draining\nIncrease element drain rate",
|
|
|
|
depends = {"magicalities:crystal_preserve"},
|
|
|
|
icon = "magicalities_crystal_draining.png"
|
|
|
|
})
|
|
|
|
|
2019-11-05 21:36:44 +00:00
|
|
|
magicalities.register_ability_learnable({
|
|
|
|
name = "magicalities:pickup_jarred",
|
2019-11-08 13:25:38 +00:00
|
|
|
description = "Crystal Jarring\nPick up intact crystals using jarring",
|
|
|
|
depends = {"magicalities:crystal_preserve"},
|
|
|
|
icon = "magicalities_jarred.png"
|
2019-11-07 19:10:15 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
magicalities.register_recipe_learnable({
|
|
|
|
name = "magicalities:cauldron",
|
|
|
|
description = "Cauldron",
|
|
|
|
default = true
|
2019-11-05 21:36:44 +00:00
|
|
|
})
|