diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index aa020ad0e2b50bc3bb97d21372055481d5c92cc3..b089a81019a54bc4f11883ae1cd1d664814bb3ff 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -4098,10 +4098,13 @@ function _M:fireTalentCheck(event, ...)
 	if self[store] and next(self[store]) then
 		for tid, kind in pairs(self[store]) do
 			if kind == "effect" then
+				self.__project_source = self.tmp[tid]
 				ret = self:callEffect(tid, event, ...) or ret
 			else
+				self.__project_source = self.sustain_talents[tid]
 				ret = self:callTalent(tid, event, ...) or ret
 			end
+			self.__project_source = nil
 		end
 	end
 	return ret
diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index fb4e07f83b5606e59dad0ffcf9b05597dcbb42ba..d69a20d06fda896d1f035a42925d1e7633e34020 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -1229,7 +1229,7 @@ function _M:getTextualDesc(compare_with, use_actor)
 	if self.alchemist_bomb or self.type == "gem" and use_actor:knowTalent(Talents.T_CREATE_ALCHEMIST_GEMS) then
 		local a = self.alchemist_bomb
 		if not a then
-			a = game.zone.object_list["ALCHEMIST_GEM_"..self.name:upper()]
+			a = game.zone.object_list["ALCHEMIST_GEM_"..self.name:gsub(" ", "_"):upper()]
 			if a then a = a.alchemist_bomb end
 		end
 		if a then
@@ -1239,7 +1239,13 @@ function _M:getTextualDesc(compare_with, use_actor)
 			if a.mana then desc:add(("Mana regain %d"):format(a.mana), true) end
 			if a.daze then desc:add(("%d%% chance to daze for %d turns"):format(a.daze.chance, a.daze.dur), true) end
 			if a.stun then desc:add(("%d%% chance to stun for %d turns"):format(a.stun.chance, a.stun.dur), true) end
-			if a.splash then desc:add(("Additional %d %s damage"):format(a.splash.dam, DamageType:get(DamageType[a.splash.type]).name), true) end
+			if a.splash then
+				if a.splash.desc then
+					desc:add(a.splash.desc, true)
+				else
+					desc:add(("Additional %d %s damage"):format(a.splash.dam, DamageType:get(DamageType[a.splash.type]).name), true)
+				end
+			end
 			if a.leech then desc:add(("Life regen %d%% of max life"):format(a.leech), true) end
 		end
 	end
diff --git a/game/modules/tome/data/general/objects/gem.lua b/game/modules/tome/data/general/objects/gem.lua
index 4b78f31527dfea9c6a5a6e17874aed72ea0059ee..4e2530553a74a7145031d0ad70a4fc347da7d6c6 100644
--- a/game/modules/tome/data/general/objects/gem.lua
+++ b/game/modules/tome/data/general/objects/gem.lua
@@ -69,7 +69,7 @@ newGem("Diamond",	"object/diamond.png",5,		18,	"white",	40,	50, 5, 70,
 )
 newGem("Pearl",	"object/pearl.png",	5,		18,	"white",	40,	50, 5, 70,
 	{ resists = {all=5}, combat_armor = 5 },
-	{ splash={type="LITE", dam=100} }
+	{ splash={type="LITE", dam=100, desc = "Lights terrain (power 100)"} }
 )
 newGem("Moonstone",	"object/moonstone.png",5,	18,	"white",	40,	50, 5, 70,
 	{ combat_def=10, combat_mentalresist=10, combat_spellresist=10, combat_physresist=10, },
@@ -97,7 +97,7 @@ newGem("Turquoise",	"object/turquoise.png",4,	16,	"green",	30,	40, 4, 65,
 )
 newGem("Jade",		"object/jade.png",	4,	16,	"green",	30,	40, 4, 65,
 	{ resists = {all=4}, combat_armor = 4 },
-	{ splash={type="SLOW", dam=-1 + 1 / (1 + 0.20)} }
+	{ splash={type="SLOW", dam= 1 - 1 / (1 + 0.20), desc = "Slows by 17%"} }
 )
 newGem("Sapphire",	"object/sapphire.png",4,	16,	"blue",		30,	40, 4, 65,
 	{ combat_def=8, combat_mentalresist=8, combat_spellresist=8, combat_physresist=8, },
@@ -141,7 +141,7 @@ newGem("Aquamarine",	"object/aquamarine.png",2,	10,	"blue",		10,	20, 2, 35,
 )
 newGem("Ametrine",	"object/ametrine.png",1,	8,	"yellow",	1,	10, 1, 20,
 	{ inc_damage = {all=2}, combat_physcrit=1, combat_mindcrit=1, combat_spellcrit=1, },
-	{ splash={type="LITE", dam=1} }
+	{ splash={type="LITE", dam=10, desc = "Lights terrain (power 10)"} }
 )
 newGem("Zircon",	"object/zircon.png",1,	8,	"yellow",	1,	10, 1, 20,
 	{ resists = {all=1}, combat_armor = 1 },
diff --git a/game/modules/tome/data/talents/spells/acid-alchemy.lua b/game/modules/tome/data/talents/spells/acid-alchemy.lua
index 90470f48d37be62cf21777d4c18c875e5f83b284..e87e53024b5033d9d8c489b14029259ca76de03f 100644
--- a/game/modules/tome/data/talents/spells/acid-alchemy.lua
+++ b/game/modules/tome/data/talents/spells/acid-alchemy.lua
@@ -59,7 +59,7 @@ newTalent{
 		local duration = t.getDuration(self, t)
 		local chance = t.getChance(self, t)
 		local dam = t.getDamage(self, t)
-		golem:setEffect(golem.EFF_CAUSTIC_GOLEM, duration, {chance=chance, dam=dam})
+		golem:setEffect(golem.EFF_CAUSTIC_GOLEM, duration, {src = golem, chance=chance, dam=dam})
 	end,
 	info = function(self, t)
 		local duration = t.getDuration(self, t)
diff --git a/game/modules/tome/data/talents/spells/energy-alchemy.lua b/game/modules/tome/data/talents/spells/energy-alchemy.lua
index 45a9601f34cbd82fdb065bd135e1874dc16f3656..35afce927ec25ac1d54130d8b4a9c91532781425 100644
--- a/game/modules/tome/data/talents/spells/energy-alchemy.lua
+++ b/game/modules/tome/data/talents/spells/energy-alchemy.lua
@@ -66,7 +66,7 @@ newTalent{
 			end
 		end
 		if did_something then
-			game.logSeen(golem, "%s is energized by the attack, reducing some talents cooldowns!", golem.name:capitalize())
+			game.logSeen(golem, "%s is energized by the attack, reducing some talent cooldowns!", golem.name:capitalize())
 		end
 	end,
 	info = function(self, t)
@@ -184,7 +184,7 @@ newTalent{
 	end,
 	activate = function(self, t)
 		game:playSoundNear(self, "talents/lightning")
-		local ret = {}
+		local ret = {name = self.name:capitalize().."'s "..t.name}
 		self:talentTemporaryValue(ret, "movement_speed", t.getSpeed(self, t))
 		ret.last_life = self.life
 		return ret
@@ -193,14 +193,15 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
-		local speed = t.getSpeed(self, t)
+		local speed = t.getSpeed(self, t) * 100
 		local dam = t.getDamage(self, t)
 		local turn = t.getTurn(self, t)
 		local range = self:getTalentRange(t)
-		return ([[Infuse your body with lightning energy, bolstering your legs (+%d%% movement speed).
-		Each turn a foe within range %d will get hit by lightning, dealing %0.2f lightning damage.
-		Each time your turn start, if you have lost over 20%% since the last turn you gain %d%% of a turn.
+		return ([[Infuse your body with lightning energy, bolstering your movement speed by +%d%%.
+		Each turn, a foe within range %d will be struck by lightning and be dealt %0.1f Lightning damage.
+		In addition, damage to your health will energize you.
+		At the start of each turn in which you have lost at least %d life (20%% of your maximum life) since your last turn, you will gain %d%% of a turn.
 		The effects increase with your Spellpower.]]):
-		format(speed, range, damDesc(self, DamageType.LIGHTNING, t.getDamage(self, t)), turn)
+		format(speed, range, damDesc(self, DamageType.LIGHTNING, t.getDamage(self, t)), self.max_life * 0.2, turn)
 	end,
 }
diff --git a/game/modules/tome/data/timed_effects/magical.lua b/game/modules/tome/data/timed_effects/magical.lua
index 3ad9fe9a025245839aad19ed9caaa845daab0188..bb08595a251d3875142c59fd22a8e9f316df8b6c 100644
--- a/game/modules/tome/data/timed_effects/magical.lua
+++ b/game/modules/tome/data/timed_effects/magical.lua
@@ -2402,7 +2402,7 @@ newEffect{
 newEffect{
 	name = "ICE_ARMOUR", image = "talents/ice_armour.png",
 	desc = "Ice Armour",
-	long_desc = function(self, eff) return ("The target is covered in a layer of ice. Its armour is increased by %d, it deals %0.1f Cold damage to attackers that hit in melee, and 50%% of it's damage is converted to cold."):format(eff.armor, self:damDesc(DamageType.COLD, eff.dam)) end,
+	long_desc = function(self, eff) return ("The target is covered in a layer of ice. Its armour is increased by %d, it deals %0.1f Cold damage to attackers that hit in melee, and 50%% of its damage is converted to cold."):format(eff.armor, self:damDesc(DamageType.COLD, eff.dam)) end,
 	type = "magical",
 	subtype = { cold=true, armour=true, },
 	status = "beneficial",