diff --git a/game/engines/default/engine/interface/ActorTemporaryEffects.lua b/game/engines/default/engine/interface/ActorTemporaryEffects.lua
index 59741e447ba85f5f1f8918641ea67b9e7622b9ce..e9871e211efbb974050878ed73192e3adeb737bc 100644
--- a/game/engines/default/engine/interface/ActorTemporaryEffects.lua
+++ b/game/engines/default/engine/interface/ActorTemporaryEffects.lua
@@ -133,9 +133,10 @@ function _M:setEffect(eff_id, dur, p, silent)
 		local ret, fly = ed.on_gain(self, p)
 		if not silent and not had then
 			if ret then
-				game.logSeen(self, ret:gsub("#Target#", self.name:capitalize()):gsub("#target#", self.name))
+				game.logSeen(self, ret:gsub("#Target#", self.name:capitalize()):gsub("#target#", self.name):gsub("#himher#", self.female and "her" or "him"))
 			end
 			if fly and game.flyers and self.x and self.y and game.level.map.seens(self.x, self.y) then
+				if fly == true then fly = "+"..ed.desc end
 				local sx, sy = game.level.map:getTileToScreen(self.x, self.y)
 				if game.level.map.seens(self.x, self.y) then game.flyers:add(sx, sy, 20, (rng.range(0,2)-1) * 0.5, -3, fly, {255,100,80}) end
 			end
@@ -175,13 +176,15 @@ function _M:removeEffect(eff, silent, force)
 	if _M.tempeffect_def[eff].no_remove and not force then return end
 	self.tmp[eff] = nil
 	self.changed = true
-	if _M.tempeffect_def[eff].on_lose then
-		local ret, fly = _M.tempeffect_def[eff].on_lose(self, p)
+	local ed = _M.tempeffect_def[eff]
+	if ed.on_lose then
+		local ret, fly = ed.on_lose(self, p)
 		if not silent then
 			if ret then
-				game.logSeen(self, ret:gsub("#Target#", self.name:capitalize()):gsub("#target#", self.name))
+				game.logSeen(self, ret:gsub("#Target#", self.name:capitalize()):gsub("#target#", self.name):gsub("#himher#", self.female and "her" or "him"))
 			end
 			if fly and game.flyers and self.x and self.y then
+				if fly == true then fly = "-"..ed.desc end
 				local sx, sy = game.level.map:getTileToScreen(self.x, self.y)
 				if game.level.map.seens(self.x, self.y) then game.flyers:add(sx, sy, 20, (rng.range(0,2)-1) * 0.5, -3, fly, {255,100,80}) end
 			end
@@ -197,7 +200,6 @@ function _M:removeEffect(eff, silent, force)
 			self:removeParticles(p.__tmpparticles[i])
 		end
 	end
-	local ed = _M.tempeffect_def[eff]
 	if ed.deactivate then ed.deactivate(self, p, ed) end
 	if ed.lists then
 		local lists = ed.lists
diff --git a/game/engines/default/engine/resolvers.lua b/game/engines/default/engine/resolvers.lua
index 8f17f5ad8edcfc9b0345ae9669e8bd5aed367fd8..6df70b11de37d61a16f5541bd42edd25faa5a42b 100644
--- a/game/engines/default/engine/resolvers.lua
+++ b/game/engines/default/engine/resolvers.lua
@@ -88,7 +88,7 @@ function resolvers.calc.talents(t, e)
 			level = level.base
 			lvls = true
 		end
---		print("Talent resolver for", e.name, ":", tid, "=>", level)
+		-- print("Talent resolver for", e.name, ":", tid, "=>", level)
 		e:learnTalent(tid, true, level)
 	end
 	if lvls then e._levelup_talents = levelup_talents end
diff --git a/game/modules/tome/class/interface/Combat.lua b/game/modules/tome/class/interface/Combat.lua
index 006f1e98a3a09ee7423d45031c7dc3202410f10d..cec55dc5bb2b7b365aa48586e439ea5460c5385b 100644
--- a/game/modules/tome/class/interface/Combat.lua
+++ b/game/modules/tome/class/interface/Combat.lua
@@ -1565,6 +1565,10 @@ end
 function _M:combatPhysicalpower(mod, weapon, add)
 	mod = mod or 1
 	add = add or 0
+
+	if self.combat_generic_power then
+		add = add + self.combat_generic_power
+	end
 	if self:knowTalent(Talents.T_ARCANE_DESTRUCTION) then
 		add = add + self:combatSpellpower() * self:callTalent(Talents.T_ARCANE_DESTRUCTION, "getSPMult")
 	end
@@ -1612,6 +1616,10 @@ end
 function _M:combatSpellpower(mod, add)
 	mod = mod or 1
 	add = add or 0
+
+	if self.combat_generic_power then
+		add = add + self.combat_generic_power
+	end
 	if self:knowTalent(self.T_ARCANE_CUNNING) then
 		add = add + self:callTalent(self.T_ARCANE_CUNNING,"getSpellpower") * self:getCun() / 100
 	end
@@ -1922,6 +1930,10 @@ function _M:combatMindpower(mod, add)
 	mod = mod or 1
 	add = add or 0
 
+	if self.combat_generic_power then
+		add = add + self.combat_generic_power
+	end
+
 	if self:knowTalent(self.T_SUPERPOWER) then
 		add = add + 50 * self:getStr() / 100
 	end
diff --git a/game/modules/tome/data/timed_effects/mental.lua b/game/modules/tome/data/timed_effects/mental.lua
index 1b7938911e495382fb9f7078cf791f7750b79073..4b1e4c971438d485bfbcf1c90460db1acf6ed055 100644
--- a/game/modules/tome/data/timed_effects/mental.lua
+++ b/game/modules/tome/data/timed_effects/mental.lua
@@ -3175,7 +3175,7 @@ newEffect{
 		self.damage_shield_absorb = eff.power
 		self.damage_shield_absorb_max = eff.power
 		if core.shader.active(4) then
-			eff.particle = self:addParticles(Particles.new("shader_shield", 1, {size_factor=1.4, img="shield3"}, {type="runicshield", ellipsoidalFactor=1, time_factor=-10000, llpow=1, aadjust=7, bubbleColor=colors.hex1alpha"9fe836a0", auraColor=colors.hex1alpha"36bce8da"}))
+			eff.particle = self:addParticles(Particles.new("shader_shield", 1, {a=eff.shield_transparency or 1, size_factor=1.4, img="shield3"}, {type="runicshield", ellipsoidalFactor=1, time_factor=-10000, llpow=1, aadjust=7, bubbleColor=colors.hex1alpha"9fe836a0", auraColor=colors.hex1alpha"36bce8da"}))
 		else
 			eff.particle = self:addParticles(Particles.new("damage_shield", 1))
 		end