diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 5ecd3264e935e7018b18ba82f3d6d2769865bce6..a0fc6fc5e57f933a1c8c393804c6f6aebd4e6251 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -851,6 +851,7 @@ function _M:onTakeHit(value, src)
 
 	if self:attr("time_shield") then
 		-- Absorb damage into the time shield
+		self.time_shield_absorb = self.time_shield_absorb or 0
 		if value <= self.time_shield_absorb then
 			self.time_shield_absorb = self.time_shield_absorb - value
 			value = 0
@@ -868,6 +869,7 @@ function _M:onTakeHit(value, src)
 
 	if self:attr("damage_shield") then
 		-- Absorb damage into the shield
+		self.damage_shield_absorb = self.damage_shield_absorb or 0
 		if value <= self.damage_shield_absorb then
 			self.damage_shield_absorb = self.damage_shield_absorb - value
 			value = 0
diff --git a/game/modules/tome/class/generator/actor/Arena.lua b/game/modules/tome/class/generator/actor/Arena.lua
index 7f9ba71ac8d818658455693912d1c57b73771748..d3887a073e5b443b09487a1a57d14376e8f1c66b 100644
--- a/game/modules/tome/class/generator/actor/Arena.lua
+++ b/game/modules/tome/class/generator/actor/Arena.lua
@@ -114,14 +114,14 @@ function _M:generateMiniboss(e)
 		m:setTarget(game.player)
 		if m.on_added then m.on_added_orig = m.on_added end
 		m.on_added = function (self)
-			if m.on_added_orig then m.on_added_orig(self) end
+			if self.on_added_orig then self.on_added_orig(self) end
 			game.level.arena.danger = game.level.arena.danger + self.arenaPower
 			game.level.map:particleEmitter(self.x, self.y, 1, "teleport")
 			game.level.arena.pinchValue = game.level.arena.pinchValue + self.arenaPower
 		end
 		if m.on_die then m.on_die_orig = m.on_die end
 		m.on_die = function (self)
-			if m.on_die_orig then m.on_die_orig(self) end
+			if self.on_die_orig then self.on_die_orig(self) end
 			game.level.arena.danger = game.level.arena.danger - self.arenaPower
 			game.level.arena.bonus = game.level.arena.bonus + self.arenaScore
 			game.level.arena.raiseRank(self.arenaRank)
diff --git a/game/modules/tome/data/birth/classes/psionic.lua b/game/modules/tome/data/birth/classes/psionic.lua
index 36d554ae5ac4ccdca29631feeb01c22e12a0339c..4974f9db8e15fd625b67d1518d929b45493391ca 100644
--- a/game/modules/tome/data/birth/classes/psionic.lua
+++ b/game/modules/tome/data/birth/classes/psionic.lua
@@ -81,8 +81,10 @@ newBirthDescriptor{
 			local gs = game.zone:makeEntity(game.level, "object", {type="weapon", subtype="greatsword", name="iron greatsword", ego_chance=-1000}, nil, true)
 			if gs then
 				local pf = self:getInven("PSIONIC_FOCUS")
-				self:addObject(pf, gs)
-				gs:identify(true)
+				if pf then
+					self:addObject(pf, gs)
+					gs:identify(true)
+				end
 			end
 		end),
 	},
diff --git a/game/modules/tome/data/talents/psionic/other.lua b/game/modules/tome/data/talents/psionic/other.lua
index 820a8a57fee38076c427c2293296c48b8ffddca1..a9f1d0ece9a768ad6aa0e68c2508ff3002dcb78c 100644
--- a/game/modules/tome/data/talents/psionic/other.lua
+++ b/game/modules/tome/data/talents/psionic/other.lua
@@ -31,6 +31,7 @@ newTalent{
 			return (o.type == "weapon" or o.type == "gem") and o.subtype ~= "longbow" and o.subtype ~= "sling"
 		end, function(o, item)
 			local pf = self:getInven("PSIONIC_FOCUS")
+			if not pf then return end
 			-- Put back the old one in inventory
 			local old = self:removeObject(pf, 1, true)
 			if old then
@@ -133,6 +134,7 @@ newTalent{
 		return hit
 	end,
 	activate = function (self, t)
+		if not self:getInven("PSIONIC_FOCUS") then return end
 		local tkweapon = self:getInven("PSIONIC_FOCUS")[1]
 		if type(tkweapon) == "boolean" then tkweapon = nil end
 		if not tkweapon or tkweapon.type == "gem" then