@@ -22,9 +22,9 @@ end end if gem.armor then for a,c in pairs(armors) do sorcery.matreg.lookup[(gem.items and gem.items[a]) or ('sorcery:' .. a .. '_' .. name)] = { gem = true; - id = name; data = gem; + id = name, data = gem; value = c.cost*shards_per_gem; } end end @@ -52,18 +52,47 @@ }; }) end if not gem.foreign_amulet then + local img = sorcery.lib.image + local img_stone = img('sorcery_amulet.png'):multiply(sorcery.lib.color(gem.tone)) + local img_sparkle = img('sorcery_amulet_sparkle.png') 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(); + inventory_image = img_sparkle:blit(img_stone):render(); + wield_scale = { x = 0.6, y = 0.6, z = 0.6 }; + groups = { sorcery_amulet = 1 }; _sorcery = { material = { gem = true, id = name, data = gem; value = (5 * shards_per_gem) + 4; }; + amulet = { base = name }; }; }) + sorcery.register.metals.foreach('sorcery:mk-amulet-frames-'..name,{'sorcery:generate'}, function(metalid,metal) + if not metal.amulet then return end + local framedid = string.format("%s_frame_%s", amuletname, metalid) + local img_frame = img(string.format('sorcery_amulet_frame_%s.png',metalid)) + minetest.register_craftitem(framedid, { + description = string.format("%s-framed %s amulet",sorcery.lib.str.capitalize(metalid), name); + inventory_image = img_sparkle:blit(img_frame):blit(img_stone):render(); + wield_scale = { x = 0.6, y = 0.6, z = 0.6 }; + groups = { sorcery_amulet = 1 }; + _sorcery = { + amulet = { base = name, frame = metalid }; + }; + }) + local frag = metal.parts.fragment + minetest.register_craft { + output = framedid; + recipe = { + {'', frag,''}; + {frag,amuletname,frag}; + {'', frag,''}; + }; + } + end) end minetest.register_craft { type = 'shapeless'; recipe = (minetest.get_modpath('xdecor') and {