@@ -2,8 +2,9 @@ sorcery.register_gem = function(name,gem) local itemname = gem.foreign or 'sorcery:gem_' .. name local shardname = gem.foreign_shard or 'sorcery:gem_' .. name .. '_shard' + local amuletname = gem.foreign_amulet or 'sorcery:gem_' .. name .. '_amulet' local tools, armors = sorcery.matreg.tools, sorcery.matreg.armors if gem.tools then for _,t in pairs(tools) do sorcery.matreg.lookup[(gem.items and gem.items[t]) or ('sorcery:' .. t .. '_' .. name)] = { @@ -11,9 +12,9 @@ id = name; data = gem; } end end if gem.armor then for _,a in pairs(armors) do - sorcery.matreg.lookup[(gem.items and gem.items[t]) or ('sorcery:' .. a .. '_' .. name)] = { + sorcery.matreg.lookup[(gem.items and gem.items[a]) or ('sorcery:' .. a .. '_' .. name)] = { gem = true; id = name; data = gem; } end end @@ -26,8 +27,18 @@ inventory_image = 'sorcery_gem_' .. name .. '_shard.png'; groups = { sorcery_shard = 1; }; _proto = gem; }) + end + if not gem.foreign_amulet then + minetest.register_craftitem(amuletname, { + description = sorcery.lib.str.capitalize(name) .. ' amulet'; + inventory_image = sorcery.lib.image('sorcery_amulet.png'):multiply(sorcery.lib.color(gem.tone)):render(); + _proto = { + id = name; + data = gem; + }; + }) end minetest.register_craft { type = 'shapeless'; recipe = (minetest.get_modpath('xdecor') and { @@ -46,8 +57,16 @@ shardname, shardname, shardname; }; output = itemname; }; + minetest.register_craft { + recipe = { + {shardname,itemname,shardname}; + {itemname,itemname,itemname}; + {shardname,itemname,shardname}; + }; + output = amuletname; + }; -- generate lenses and crafting recipes for _, kind in pairs { 'amplifier','rectifier','concave','convex' } do local id = 'sorcery:lens_' .. kind .. '_' .. name @@ -54,11 +73,15 @@ minetest.register_tool(id, { inventory_image = sorcery.lib.image('sorcery_lens_overlay_gold.png'): blit(sorcery.lib.image('sorcery_lens_' .. kind .. '.png'): multiply(sorcery.lib.color(gem.tone):brighten(1.1))): - render(); + render(); description = sorcery.lib.str.capitalize(name) .. ' ' .. kind .. ' lens'; - group = { sorcery_enchanting_lens = 1 }; + groups = { sorcery_enchanting_lens = 1 }; + _proto = { + gem = name; + kind = kind; + }; }) end do local casing = 'sorcery:fragment_gold' minetest.register_craft {