diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 8c5e4a52987c9737d9dd3e066cfc9acbe7a5fbbb..cd13d734059d4151df33ab2907d943b2c6fb0645 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -571,7 +571,7 @@ function _M:die(src)
 	if src and src.resolveSource and src:resolveSource().player then
 		-- Achievements
 		local p = src:resolveSource()
-		if math.floor(p.life) <= 1 then world:gainAchievement("THAT_WAS_CLOSE", p) end
+		if math.floor(p.life) <= 1 and not p.dead then world:gainAchievement("THAT_WAS_CLOSE", p) end
 		world:gainAchievement("EXTERMINATOR", p, self)
 		world:gainAchievement("PEST_CONTROL", p, self)
 
diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index da655acc92c3cc5c63b18c14873b241036dfcb97..cc4993eea27c5ed1cca158d314bf9e7d28cc719c 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -175,7 +175,7 @@ function _M:getTextualDesc()
 		desc[#desc+1] = ""
 	end
 
-	local w = self.wielder or {}
+	local desc_wielder = function(w)
 	if w.combat_atk or w.combat_dam or w.combat_apr then desc[#desc+1] = ("Attack %d, Armor Penetration %d, Physical Crit %d%%, Physical power %d"):format(w.combat_atk or 0, w.combat_apr or 0, w.combat_physcrit or 0, w.combat_dam or 0) end
 	if w.combat_armor or w.combat_def then desc[#desc+1] = ("Armor %d, Defense %d"):format(w.combat_armor or 0, w.combat_def or 0) end
 	if w.fatigue then desc[#desc+1] = ("Fatigue %d%%"):format(w.fatigue) end
@@ -274,6 +274,26 @@ function _M:getTextualDesc()
 
 	if w.see_invisible then desc[#desc+1] = ("See invisible: %d"):format(w.see_invisible) end
 	if w.invisible then desc[#desc+1] = ("Invisibility: %d"):format(w.invisible) end
+	end
+
+	desc_wielder(self.wielder or {})
+
+	if self.imbue_powers then
+		desc[#desc+1] = "When used to imbue an armour:"
+		desc_wielder(self.imbue_powers)
+	end
+
+	if self.alchemist_bomb then
+		local a = self.alchemist_bomb
+		desc[#desc+1] = "When used as an alchemist bomb:"
+		if a.power then desc[#desc+1] = ("Bomb damage +%d%%"):format(a.power) end
+		if a.range then desc[#desc+1] = ("Bomb thrown range +%d"):format(a.range) end
+		if a.mana then desc[#desc+1] = ("Mana regain %d"):format(a.mana) end
+		if a.daze then desc[#desc+1] = ("%d%% chance to daze for %d turns"):format(a.daze.chance, a.daze.dur) end
+		if a.stun then desc[#desc+1] = ("%d%% chance to stun for %d turns"):format(a.stun.chance, a.stun.dur) end
+		if a.splash then desc[#desc+1] = ("Additional %d %s damage"):format(a.splash.dam, DamageType:get(DamageType[a.splash.type]).name) end
+		if a.leech then desc[#desc+1] = ("Life regen %d%% of max life"):format(a.leech) end
+	end
 
 	local use_desc = self:getUseDesc()
 	if use_desc then desc[#desc+1] = use_desc end
diff --git a/game/modules/tome/data/general/objects/gem.lua b/game/modules/tome/data/general/objects/gem.lua
index 98094cb290f8f5ee3c3143850b6016e7f91953bb..10257b0c5cc6485e11f43e19aff4e3cac9cd0410 100644
--- a/game/modules/tome/data/general/objects/gem.lua
+++ b/game/modules/tome/data/general/objects/gem.lua
@@ -113,7 +113,7 @@ newGem("Onyx",		3,	12,	"black",	20,	30, 3, 50,
 )
 newGem("Amethyst",	2,	10,	"violet",	10,	20, 2, 35,
 	{ inc_damage = {all=4} },
-	{ splash={type="ARCANE", dam=10}}
+	{ splash={type="ARCANE", dam=25}}
 )
 newGem("Opal",		2,	10,	"blue",		10,	20, 2, 35,
 	{ inc_stats = { [Stats.STAT_STR] = 2, [Stats.STAT_DEX] = 2, [Stats.STAT_MAG] = 2, [Stats.STAT_WIL] = 2, [Stats.STAT_CUN] = 2, [Stats.STAT_CUN] = 2, } },
@@ -121,7 +121,7 @@ newGem("Opal",		2,	10,	"blue",		10,	20, 2, 35,
 )
 newGem("Topaz",		2,	10,	"blue",		10,	20, 2, 35,
 	{ combat_def=4 },
-	{}
+	{ range=3 }
 )
 newGem("Aquamarine",	2,	10,	"blue",		10,	20, 2, 35,
 	{ resists = {all=4} },
@@ -129,7 +129,7 @@ newGem("Aquamarine",	2,	10,	"blue",		10,	20, 2, 35,
 )
 newGem("Ametrine",	1,	8,	"yellow",	1,	10, 1, 20,
 	{ inc_damage = {all=2} },
-	{}
+	{ splash={type="LITE", dam=1} }
 )
 newGem("Zircon",	1,	8,	"yellow",	1,	10, 1, 20,
 	{ resists = {all=2} },
diff --git a/game/modules/tome/data/talents/spells/golemancy.lua b/game/modules/tome/data/talents/spells/golemancy.lua
index be3394b2bf7d14ebec8092e73324adcdc141026c..0adad7e168edad7b2ee0f1e2b3d844955d347791 100644
--- a/game/modules/tome/data/talents/spells/golemancy.lua
+++ b/game/modules/tome/data/talents/spells/golemancy.lua
@@ -84,6 +84,15 @@ newTalent{
 			self.alchemy_golem.name = "golem (servant of "..self.name..")"
 			self.alchemy_golem.summoner = self
 			self.alchemy_golem.summoner_gain_exp = true
+
+			-- Find space
+			local x, y = util.findFreeGrid(self.x, self.y, 5, true, {[Map.ACTOR]=true})
+			if not x then
+				game.logPlayer(self, "Not enough space to refit!")
+				return
+			end
+			game.zone:addEntity(game.level, self.alchemy_golem, "actor", x, y)
+			return
 		end
 
 		local wait = function()
diff --git a/ideas/crafting.ods b/ideas/crafting.ods
index 1b03690a34f4dd781e700c617af79f996d88943c..43463129684f4bb1ca68d770ef243c3e87f623c3 100644
Binary files a/ideas/crafting.ods and b/ideas/crafting.ods differ