diff --git a/game/modules/tome/data/general/objects/scrolls.lua b/game/modules/tome/data/general/objects/scrolls.lua
index fc27500eb5e3c087b35cde83febeb9b4a6842247..ac9c9241ee28deb8ffb8151c25c14ffa3ef845f7 100644
--- a/game/modules/tome/data/general/objects/scrolls.lua
+++ b/game/modules/tome/data/general/objects/scrolls.lua
@@ -95,20 +95,6 @@ newEntity{ base = "BASE_SCROLL",
 	end}
 }
 
-newEntity{ base = "BASE_SCROLL",
-	name = "scroll of recall",
-	level_range = {10, 50},
-	rarity = 8,
-	cost = 2,
-
-	use_simple = { name="recall to your base town.", use = function(self, who)
-		error("****************** IMPLEMENT SCROLL OF RECALL ****************")
-		who:recall()
-		game.logSeen(who, "%s reads a %s!", who.name:capitalize(), self:getName())
-		return "destroy", true
-	end}
-}
-
 newEntity{ base = "BASE_SCROLL",
 	name = "scroll of magic mapping",
 	level_range = {1, 50},
diff --git a/game/modules/tome/data/sound/talents/devouringflame.wav b/game/modules/tome/data/sound/talents/devouringflame.wav
new file mode 100755
index 0000000000000000000000000000000000000000..11ce6322fadcf253d16e9937688c2a895cf59663
Binary files /dev/null and b/game/modules/tome/data/sound/talents/devouringflame.wav differ
diff --git a/game/modules/tome/data/sound/talents/heal.wav b/game/modules/tome/data/sound/talents/heal.wav
new file mode 100755
index 0000000000000000000000000000000000000000..a29d78d214cc852723dcadb63330d00a89fb9c26
Binary files /dev/null and b/game/modules/tome/data/sound/talents/heal.wav differ
diff --git a/game/modules/tome/data/sound/talents/spell_generic2.wav b/game/modules/tome/data/sound/talents/spell_generic2.wav
new file mode 100755
index 0000000000000000000000000000000000000000..d9f1145db164bea5319932528b7f695f64a10bf3
Binary files /dev/null and b/game/modules/tome/data/sound/talents/spell_generic2.wav differ
diff --git a/game/modules/tome/data/talents/gifts/call.lua b/game/modules/tome/data/talents/gifts/call.lua
index 512182b6f4f124d469446095c1c9dfebacb5b38a..5496a69839f39f502557a325a3aa1401cc76d0f4 100644
--- a/game/modules/tome/data/talents/gifts/call.lua
+++ b/game/modules/tome/data/talents/gifts/call.lua
@@ -29,6 +29,7 @@ newTalent{
 	action = function(self, t)
 		self:setEffect(self.EFF_STUNNED, 17 - self:getTalentLevel(t), {})
 		self:incEquilibrium(-10 - self:getWil(50) * self:getTalentLevel(t))
+		game:playSoundNear(self, "talents/spell_generic2")
 		return true
 	end,
 	info = function(self, t)
@@ -54,6 +55,7 @@ newTalent{
 		if not target.undead then
 			target:heal(20 + self:getWil(50) * self:getTalentLevel(t))
 		end
+		game:playSoundNear(self, "talents/heal")
 		return true
 	end,
 	info = function(self, t)
@@ -76,6 +78,7 @@ newTalent{
 		if not x then return nil end
 
 		self:magicMap(3 + self:getTalentLevel(t), x, y)
+		game:playSoundNear(self, "talents/spell_generic2")
 		return true
 	end,
 	info = function(self, t)
@@ -107,6 +110,7 @@ newTalent{
 			self.talents_cd[tid] = nil
 		end
 		self.changed = true
+		game:playSoundNear(self, "talents/spell_generic2")
 		return true
 	end,
 	info = function(self, t)
diff --git a/game/modules/tome/data/talents/gifts/fire-drake.lua b/game/modules/tome/data/talents/gifts/fire-drake.lua
index 544b5427b63be7240f22e6b5cd5fdfe2344dec4d..35afaafc8d11e417e48d97e8b03a76cf43dcd770 100644
--- a/game/modules/tome/data/talents/gifts/fire-drake.lua
+++ b/game/modules/tome/data/talents/gifts/fire-drake.lua
@@ -55,6 +55,7 @@ newTalent{
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
 		self:project(tg, self.x, self.y, DamageType.PHYSKNOCKBACK, {dam=15 + self:getStr() * 0.1 * self:getTalentLevel(t), dist=4})
+		game:playSoundNear(self, "talents/breath")
 		return true
 	end,
 	info = function(self, t)
@@ -90,6 +91,7 @@ newTalent{
 			engine.Entity.new{alpha=100, display='', color_br=180, color_bg=30, color_bb=60},
 			nil, true
 		)
+		game:playSoundNear(self, "talents/devouringflame")
 		return true
 	end,
 	info = function(self, t)
diff --git a/game/modules/tome/data/talents/spells/divination.lua b/game/modules/tome/data/talents/spells/divination.lua
index 9fc3ee16d6487b32ce3b80bdd7447ce5872fd860..3f81755cde98bd9a9a6c678755b00cdf81108e9b 100644
--- a/game/modules/tome/data/talents/spells/divination.lua
+++ b/game/modules/tome/data/talents/spells/divination.lua
@@ -58,7 +58,7 @@ newTalent{
 		if self:getTalentLevel(t) < 3 then
 			self:showInventory("Identify object", self:getInven(self.INVEN_INVEN), nil, function(o, item)
 				o:identify(true)
-				game.logPlayer(who, "You identify: "..o:getName())
+				game.logPlayer(self, "You identify: "..o:getName())
 			end)
 			return true
 		end
diff --git a/game/modules/tome/data/talents/spells/nature.lua b/game/modules/tome/data/talents/spells/nature.lua
index 959201ca01d7c9168779b4c0169920aadf2991a7..a20773f5f87b25572b2d3b54f6888c427c00fd3b 100644
--- a/game/modules/tome/data/talents/spells/nature.lua
+++ b/game/modules/tome/data/talents/spells/nature.lua
@@ -29,6 +29,7 @@ newTalent{
 	},
 	action = function(self, t)
 		self:setEffect(self.EFF_REGENERATION, 10, {power=5 + self:combatSpellpower(0.07) * self:getTalentLevel(t)})
+		game:playSoundNear(self, "talents/heal")
 		return true
 	end,
 	info = function(self, t)
@@ -49,6 +50,7 @@ newTalent{
 	},
 	action = function(self, t)
 		self:heal(self:spellCrit(10 + self:combatSpellpower(0.5) * self:getTalentLevel(t)), self)
+		game:playSoundNear(self, "talents/heal")
 		return true
 	end,
 	info = function(self, t)
@@ -85,6 +87,7 @@ newTalent{
 			end
 		end
 
+		game:playSoundNear(self, "talents/heal")
 		return true
 	end,
 	info = function(self, t)
@@ -142,6 +145,7 @@ newTalent{
 		bear:resolve()
 		game.zone:addEntity(game.level, bear, "actor", x, y)
 
+		game:playSoundNear(self, "talents/spell_generic")
 		return true
 	end,
 	info = function(self, t)
diff --git a/game/modules/tome/data/talents/spells/phantasm.lua b/game/modules/tome/data/talents/spells/phantasm.lua
index 06b81f9e35f01918f927d7af92d5e4aa6d59e851..8dca918549a1cd5bfb8f79d8994751f8acfd24fe 100644
--- a/game/modules/tome/data/talents/spells/phantasm.lua
+++ b/game/modules/tome/data/talents/spells/phantasm.lua
@@ -30,6 +30,7 @@ newTalent{
 		if self:getTalentLevel(t) >= 3 then
 			self:project(tg, self.x, self.y, DamageType.BLIND, 3 + self:getTalentLevel(t))
 		end
+		game:playSoundNear(self, "talents/heal")
 		return true
 	end,
 	info = function(self, t)
@@ -52,6 +53,7 @@ newTalent{
 	},
 	activate = function(self, t)
 		local power = 4 + self:combatSpellpower(0.04) * self:getTalentLevel(t)
+		game:playSoundNear(self, "talents/heal")
 		return {
 			def = self:addTemporaryValue("combat_def", power),
 		}
@@ -79,6 +81,7 @@ newTalent{
 	},
 	activate = function(self, t)
 		local power = 10 + self:combatSpellpower(0.06) * self:getTalentLevel(t)
+		game:playSoundNear(self, "talents/heal")
 		return {
 			onhit = self:addTemporaryValue("on_melee_hit", {[DamageType.ARCANE]=power}),
 		}
@@ -106,6 +109,7 @@ newTalent{
 	},
 	activate = function(self, t)
 		local power = 4 + self:combatSpellpower(0.04) * self:getTalentLevel(t)
+		game:playSoundNear(self, "talents/heal")
 		return {
 			invisible = self:addTemporaryValue("invisible", power),
 			drain = self:addTemporaryValue("mana_regen", -5),