diff --git a/game/modules/tome/data/zones/dreadfell/npcs.lua b/game/modules/tome/data/zones/dreadfell/npcs.lua
index bcda7a76ee9dc7b5490b1ac1ed81e942c0fda318..40da952e00b7a8ae3cb242ac8e2781c36a8ee647 100644
--- a/game/modules/tome/data/zones/dreadfell/npcs.lua
+++ b/game/modules/tome/data/zones/dreadfell/npcs.lua
@@ -56,7 +56,7 @@ newEntity{ define_as = "THE_MASTER",
 		{type="jewelry", subtype="amulet", defined="AMULET_DREAD", random_art_replace={chance=75}, autoreq=true},
 	},
 	resolvers.drops{chance=100, nb=5, {tome_drops="boss"} },
-	resolvers.drops{chance=100, nb=1, {type="weapon", subtype="staff", defined="STAFF_ABSORPTION", special=function() return game.zone.is_dreadfell end} },
+	resolvers.drops{check=function() return game.zone.is_dreadfell end, chance=100, nb=1, {type="weapon", subtype="staff", defined="STAFF_ABSORPTION"} },
 
 	summon = {
 		{type="undead", number=2, hasxp=true},
diff --git a/game/modules/tome/resolvers.lua b/game/modules/tome/resolvers.lua
index b7cc6f3e0ca81ccc60f774eb465f6a0287f4465f..8b46df4a6c43bb5c71f3a605a86c9e1d3a1f2675 100644
--- a/game/modules/tome/resolvers.lua
+++ b/game/modules/tome/resolvers.lua
@@ -116,6 +116,7 @@ end
 function resolvers.calc.drops(t, e)
 	t = t[1]
 	if not rng.percent(t.chance or 100) then return nil end
+	if t.check and not t.check(e) then return nil end
 
 	-- Iterate of object requests, try to create them and drops them
 	for i = 1, (t.nb or 1) do