diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index d61a13f7a5c293ed8e499f688ace676a3fe5b7cc..354706900d4d7bdbc4b938245ce9d890ebad7985 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -3547,6 +3547,13 @@ function _M:postUseTalent(ab, ret)
 
 	self.changed = true
 
+	if self.talent_kind_log then 
+		if ab.is_spell then self.talent_kind_log.spell = (self.talent_kind_log.spell or 0) + 1 end
+		if ab.is_summon then self.talent_kind_log.summon = (self.talent_kind_log.summon or 0) + 1 end
+		if ab.is_mind then self.talent_kind_log.mind = (self.talent_kind_log.mind or 0) + 1 end
+		if ab.is_nature then self.talent_kind_log.nature = (self.talent_kind_log.nature or 0) + 1 end
+	end
+
 	-- Handle inscriptions (delay it so it does not affect current inscription)
 	game:onTickEnd(function()
 		if ab.type[1] == "inscriptions/infusions" then
diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua
index f4ffb3c187557fde1adf6f28947eaadeb4568b9e..c12561c816315539353d588ffd80e012fa3b9594 100644
--- a/game/modules/tome/class/Player.lua
+++ b/game/modules/tome/class/Player.lua
@@ -93,6 +93,7 @@ function _M:init(t, no_default)
 	self.puuid = self.puuid or util.uuid()
 
 	self.damage_log = self.damage_log or {weapon={}}
+	self.talent_kind_log = self.talent_kind_log or {}
 end
 
 function _M:onBirth(birther)
diff --git a/game/modules/tome/data/talents/uber/mag.lua b/game/modules/tome/data/talents/uber/mag.lua
index d4c6265a31b4d5d968a2ff2fca7a8f2203543e53..23aaf3eb1a4f6cf9d1a9b8d3818a7822e2694e80 100644
--- a/game/modules/tome/data/talents/uber/mag.lua
+++ b/game/modules/tome/data/talents/uber/mag.lua
@@ -20,20 +20,17 @@
 uberTalent{
 	name = "Spectral Shield",
 	mode = "passive",
-	require = { special={desc="Block talent, have mana and a block value over 200.", fct=function(self)
-		return self:knowTalent(self.T_BLOCK) and self:getTalentFromId(self.T_BLOCK).getBlockValue(self) >= 200 and self:getMaxMana() >= 70
+	require = { special={desc="Block talent, have cast at least 100 spells and a block value over 200.", fct=function(self)
+		return self:knowTalent(self.T_BLOCK) and self:getTalentFromId(self.T_BLOCK).getBlockValue(self) >= 200 and self.talent_kind_log and self.talent_kind_log.spell and self.talent_kind_log.spell >= 100
 	end} },
 	on_learn = function(self, t)
 		self:attr("spectral_shield", 1)
-		self:attr("max_mana", -70)
 	end,
 	on_unlearn = function(self, t)
 		self:attr("spectral_shield", -1)
-		self:attr("max_mana", 70)
 	end,
 	info = function(self, t)
-		return ([[Infusing your shield with raw magic your Block can now block any damage type
-		Your maximum mana will be premanently reduced by 70 to create the effect.]])
+		return ([[Infusing your shield with raw magic your Block can now block any damage type.]])
 		:format()
 	end,
 }
@@ -46,18 +43,15 @@ uberTalent{
 	end} },
 	on_learn = function(self, t)
 		local ret = {}
-		self:attr("max_mana", -70)
 		self:talentTemporaryValue(ret, "force_use_resist", DamageType.ARCANE)
 		self:talentTemporaryValue(ret, "force_use_resist_percent", 50)
 		return ret
 	end,
 	on_unlearn = function(self, t)
-		self:attr("max_mana", 70)
 	end,
 	info = function(self, t)
 		return ([[Create a thin layer of aether all around you. Any attack passing through will check arcane resistance instead of the incomming damage resistance.
-		In effect all your resistances are equal to 50%% of your arcane resistance.
-		Your maximum mana will be premanently reduced by 70 to create the effect.]])
+		In effect all your resistances are equal to 50%% of your arcane resistance.]])
 		:format()
 	end,
 }