diff --git a/game/modules/tome/class/Object.lua b/game/modules/tome/class/Object.lua
index b18dd687cbe2a344cb4e8b3a8ce1e9fe956c6493..ac5b104d11d054eaee1efa76a3aa76788d64c3aa 100644
--- a/game/modules/tome/class/Object.lua
+++ b/game/modules/tome/class/Object.lua
@@ -221,7 +221,12 @@ function _M:descAttribute(attr)
 	elseif attr == "INSCRIPTION" then
 		game.player.__inscription_data_fake = self.inscription_data
 		local t = self:getTalentFromId("T_"..self.inscription_talent.."_1")
-		local desc = t.short_info(game.player, t)
+		local desc = "--"
+		if t then
+			local ok
+			ok, desc = pcall(t.short_info, game.player, t)
+			if not ok then desc = "--" end
+		end
 		game.player.__inscription_data_fake = nil
 		return ("%s"):format(desc)
 	end
@@ -1460,10 +1465,12 @@ function _M:getTextualDesc(compare_with, use_actor)
 		use_actor.__inscription_data_fake = self.inscription_data
 		local t = self:getTalentFromId("T_"..self.inscription_talent.."_1")
 		if t then
-			local tdesc = use_actor:getTalentFullDescription(t)
-			desc:add({"color","YELLOW"}, "When inscribed on your body:", {"color", "LAST"}, true)
-			desc:merge(tdesc)
-			desc:add(true)
+			local ok, tdesc = pcall(use_actor.getTalentFullDescription, use_actor, t)
+			if ok and tdesc then
+				desc:add({"color","YELLOW"}, "When inscribed on your body:", {"color", "LAST"}, true)
+				desc:merge(tdesc)
+				desc:add(true)
+			end
 		end
 		use_actor.__inscription_data_fake = nil
 	end
diff --git a/game/modules/tome/data/general/objects/egos/ammo.lua b/game/modules/tome/data/general/objects/egos/ammo.lua
index 063fcc3cda7d5ceba4dd155ca94fd030c3b6bb1b..7b3c8d1915cd14417b0c1d7b655d3e069b00dc31 100644
--- a/game/modules/tome/data/general/objects/egos/ammo.lua
+++ b/game/modules/tome/data/general/objects/egos/ammo.lua
@@ -586,7 +586,7 @@ newEntity{
 			target.talents_cd[t.id] = turns
 			
 			local tg = {type="hit", range=1}
-			who:project(tg, target.x, target.y, engine.DamageType.ARCANE, damage)
+			who:project(tg, target.x, target.y, engine.DamageType.ARCANE, tonumber(util.getval(damage, who, t)) or 0)
 			
 			game.logSeen(target, "%s's %s has been #ORCHID#burned#LAST#!", target.name:capitalize(), t.name)
 		end},
diff --git a/game/modules/tome/data/general/objects/egos/amulets.lua b/game/modules/tome/data/general/objects/egos/amulets.lua
index b049cd6af2c360979377bb61d77846c9beba5d64..bab1a1a31235a99dc87432e5df333a3897f8b992 100644
--- a/game/modules/tome/data/general/objects/egos/amulets.lua
+++ b/game/modules/tome/data/general/objects/egos/amulets.lua
@@ -582,8 +582,8 @@ newEntity{
 
 		e.wielder.talents_types_mastery = {}
 		local v = (10 + rng.mbonus(math.ceil(30 * e.material_level / 5), resolvers.current_level, 50)) / 100
-		e.wielder.talents_types_mastery[tt] = v
-		e.wielder.talents_types_mastery[tt2] = v
+		if tt then e.wielder.talents_types_mastery[tt] = v end
+		if tt2 then e.wielder.talents_types_mastery[tt2] = v end
 		e.cost = e.cost + v * 60
 	end),
 }
\ No newline at end of file