diff --git a/game/engines/default/data/gfx/ui/selector1.png b/game/engines/default/data/gfx/ui/selector1.png
index b0ddd760d866b7ebd5804f3bdeb22bda476ff6e5..25a5e54ebdb06a045384ae90ac5b1953da781ed9 100644
Binary files a/game/engines/default/data/gfx/ui/selector1.png and b/game/engines/default/data/gfx/ui/selector1.png differ
diff --git a/game/engines/default/data/gfx/ui/selector2.png b/game/engines/default/data/gfx/ui/selector2.png
index 8c1f15423cdb0b46346114be54bfebdd8a8ba1d2..4a12ebaaa81c6f9b60f5afd666aa6de479c6d705 100644
Binary files a/game/engines/default/data/gfx/ui/selector2.png and b/game/engines/default/data/gfx/ui/selector2.png differ
diff --git a/game/engines/default/data/gfx/ui/selector3.png b/game/engines/default/data/gfx/ui/selector3.png
index a18adda6ba5476883fe44f56357d440dd6ab279c..0de31a631046eef42e8fe1e6ec33923c6067167b 100644
Binary files a/game/engines/default/data/gfx/ui/selector3.png and b/game/engines/default/data/gfx/ui/selector3.png differ
diff --git a/game/engines/default/data/gfx/ui/selector4.png b/game/engines/default/data/gfx/ui/selector4.png
index 164fd1ef9bcd9824a77bce82e476856dd0cc7e13..38e47209b7015e0f2ef7bcb3b9706ad8c9b39d86 100644
Binary files a/game/engines/default/data/gfx/ui/selector4.png and b/game/engines/default/data/gfx/ui/selector4.png differ
diff --git a/game/engines/default/data/gfx/ui/selector5.png b/game/engines/default/data/gfx/ui/selector5.png
index 7d804e9fa0edcee3aa360c99d033cc4270b75746..16f5fc7e9183234e039d8996e91488aa439cf1c9 100644
Binary files a/game/engines/default/data/gfx/ui/selector5.png and b/game/engines/default/data/gfx/ui/selector5.png differ
diff --git a/game/engines/default/data/gfx/ui/selector6.png b/game/engines/default/data/gfx/ui/selector6.png
index 4d20de19463dd780848e002029e49ed78b4caec9..7587e5f74ea1c104b55abb09368755f566ebae01 100644
Binary files a/game/engines/default/data/gfx/ui/selector6.png and b/game/engines/default/data/gfx/ui/selector6.png differ
diff --git a/game/engines/default/data/gfx/ui/selector7.png b/game/engines/default/data/gfx/ui/selector7.png
index 3dbb01ff4dd216cc0e90e6513c2c8dfb6dee8e34..11108f1aaed0e879f04ee735b4bfa2c524072a95 100644
Binary files a/game/engines/default/data/gfx/ui/selector7.png and b/game/engines/default/data/gfx/ui/selector7.png differ
diff --git a/game/engines/default/data/gfx/ui/selector8.png b/game/engines/default/data/gfx/ui/selector8.png
index 48ad10102b61e0e4cc2d1cb21ac626d4e58d541f..3647fe8aefd9da4a26ce8f4f3a1feb6477dac577 100644
Binary files a/game/engines/default/data/gfx/ui/selector8.png and b/game/engines/default/data/gfx/ui/selector8.png differ
diff --git a/game/engines/default/data/gfx/ui/selector9.png b/game/engines/default/data/gfx/ui/selector9.png
index 36ed869166a5d341cc23b90b8be6353a618e3e8a..f69da4db3ba5f79ca083f64d190c6a4ffaddb284 100644
Binary files a/game/engines/default/data/gfx/ui/selector9.png and b/game/engines/default/data/gfx/ui/selector9.png differ
diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua
index a6367ab9773c5db237905cef03a0efd564047e21..7fc8cf8191a78a8b7a23a892d0d525bb17d177cd 100644
--- a/game/modules/tome/data/damage_types.lua
+++ b/game/modules/tome/data/damage_types.lua
@@ -87,7 +87,7 @@ setDefaultProjector(function(src, x, y, type, dam, tmp, no_martyr)
 			local t = target:getTalentFromId(target.T_CHARGED_SHIELD)
 			dam = t.css_on_damage(target, t, type, dam)
 		end
-		
+
 		-- Reduce damage with resistance
 		if target.resists then
 			local pen = 0
@@ -110,12 +110,14 @@ setDefaultProjector(function(src, x, y, type, dam, tmp, no_martyr)
 
 		print("[PROJECTOR] final dam", dam)
 
+		local dead
+		dead, dam = target:takeHit(dam, src)
+
 		-- Log damage for later
 		if not DamageType:get(type).hideMessage then
 			local srcname = src.x and src.y and game.level.map.seens(src.x, src.y) and src.name:capitalize() or "Something"
 			game:delayedLogDamage(src, target, dam, ("%s%d %s#LAST#"):format(DamageType:get(type).text_color or "#aaaaaa#", math.ceil(dam), DamageType:get(type).name))
 		end
-		target:takeHit(dam, src)
 
 		if src.attr and src:attr("martyrdom") and not no_martyr then
 			DamageType.defaultProjector(target, src.x, src.y, type, dam * src.martyrdom / 100, tmp, true)
diff --git a/game/modules/tome/data/general/objects/boss-artifacts.lua b/game/modules/tome/data/general/objects/boss-artifacts.lua
index 12651ce7ff7bdc2c96df27130a57c1f15d5f3831..35b2b582074442891bc31118ea6a21608d88ab44 100644
--- a/game/modules/tome/data/general/objects/boss-artifacts.lua
+++ b/game/modules/tome/data/general/objects/boss-artifacts.lua
@@ -862,7 +862,7 @@ newEntity{ base = "BASE_WAND", define_as = "ROD_OF_ANNULMENT",
 
 newEntity{ base = "BASE_WARAXE",
 	power_source = {arcane=true},
-	define_as = "SKULLCLEAVER", rarity=false,
+	define_as = "SKULLCLEAVER",
 	unided_name = "crimson waraxe",
 	name = "Skullcleaver", unique=true,
 	desc = [[A small but sharp axe, with a handle made of polished bone.  The blade has chopped through the skulls of many, and has been stained a deep crimson.]],
@@ -881,3 +881,20 @@ newEntity{ base = "BASE_WARAXE",
 		inc_damage = { [DamageType.BLIGHT] = 8 },
 	},
 }
+
+newEntity{ base = "BASE_DIGGER",
+	power_source = {unknown=true},
+	define_as = "TOOTH_MOUTH",
+	unided_name = "a tooth", unique = true,
+	name = "Tooth of the Mouth",
+	desc = [[A huge tooth taken from the Mouth, in the Deep Bellow.]],
+	level_range = {5, 12},
+	cost = 50,
+	material_level = 3,
+	digspeed = 12,
+	wielder = {
+		inc_damage = { [DamageType.BLIGHT] = 4 },
+		on_melee_hit = {[DamageType.BLIGHT] = 15},
+		combat_apr = 5,
+	},
+}
diff --git a/game/modules/tome/data/maps/zones/deep-bellow-last.lua b/game/modules/tome/data/maps/zones/deep-bellow-last.lua
index b7b29f1b3625bec275273dbf1f59db8e31efb785..eb674e6e54e59465d10ec993aac67b54d889580a 100644
--- a/game/modules/tome/data/maps/zones/deep-bellow-last.lua
+++ b/game/modules/tome/data/maps/zones/deep-bellow-last.lua
@@ -19,6 +19,7 @@
 
 defineTile("#", {"UNDERGROUND_TREE","UNDERGROUND_TREE2","UNDERGROUND_TREE3","UNDERGROUND_TREE4","UNDERGROUND_TREE5","UNDERGROUND_TREE6","UNDERGROUND_TREE7","UNDERGROUND_TREE8","UNDERGROUND_TREE9","UNDERGROUND_TREE10","UNDERGROUND_TREE11","UNDERGROUND_TREE12","UNDERGROUND_TREE13","UNDERGROUND_TREE14","UNDERGROUND_TREE15","UNDERGROUND_TREE16","UNDERGROUND_TREE17","UNDERGROUND_TREE18","UNDERGROUND_TREE19","UNDERGROUND_TREE20",})
 defineTile(".", "UNDERGROUND_FLOOR")
+defineTile("<", "UNDERGROUND_LADDER_UP")
 defineTile("M", "UNDERGROUND_FLOOR", nil, "THE_MOUTH")
 
 startx = 1
diff --git a/game/modules/tome/data/talents/misc/npcs.lua b/game/modules/tome/data/talents/misc/npcs.lua
index 558b386e7cfa8da423f75f9feb45359afb72c412..055f6b15920c5804f88611054da50168ef3c7d67 100644
--- a/game/modules/tome/data/talents/misc/npcs.lua
+++ b/game/modules/tome/data/talents/misc/npcs.lua
@@ -1262,8 +1262,9 @@ newTalent{
 			if not target then return end
 			if self:reactionToward(target) < 0 and not tgts[target] then
 				tgts[target] = true
+				local ox, oy = target.x, target.y
 				target:pull(self.x, self.y, 1)
-				game.logSeen(target, "%s is pulled in!", target.name:capitalize())
+				if target.x ~= ox or target.y ~= oy then game.logSeen(target, "%s is pulled in!", target.name:capitalize()) end
 			end
 		end)
 		return true
@@ -1272,3 +1273,45 @@ newTalent{
 		return ([[Pull all foes toward you.]])
 	end,
 }
+
+newTalent{
+	name = "Gift of Amakthel",
+	type = {"technique/other", 1},
+	points = 5,
+	cooldown = 6,
+	tactical = { ATTACK = 2 },
+	range = 10,
+	target = function(self, t)
+		return {type="hit", range=self:getTalentRange(t), talent=t}
+	end,
+	action = function(self, t)
+		local tg = self:getTalentTarget(t)
+		local tx, ty = self.x, self.y
+		if not tx or not ty then return nil end
+
+		-- Find space
+		local x, y = util.findFreeGrid(tx, ty, 3, true, {[Map.ACTOR]=true})
+		if not x then
+			game.logPlayer(self, "Not enough space to invoke!")
+			return
+		end
+
+		-- Find an actor with that filter
+		local m = game.zone:makeEntityByName(game.level, "actor", "SLIMY_CRAWLER")
+		if m then
+			m.exp_worth = 0
+			m.summoner = self
+			m.summon_time = 10
+			game.zone:addEntity(game.level, m, "actor", x, y)
+			local target = game.level.map(tx, ty, Map.ACTOR)
+			m:setTarget(target)
+
+			game.logSeen(self, "%s spawns a slimy crawler!", self.name:capitalize())
+		end
+
+		return true
+	end,
+	info = function(self, t)
+		return ([[Invoke a slimy crawler.]])
+	end,
+}
diff --git a/game/modules/tome/data/zones/deep-bellow/npcs.lua b/game/modules/tome/data/zones/deep-bellow/npcs.lua
index d771f5c4162f453e30b476ffd29fd5b2055edcad..3b440613d63f8b24b8c82b0e098103658337eb63 100644
--- a/game/modules/tome/data/zones/deep-bellow/npcs.lua
+++ b/game/modules/tome/data/zones/deep-bellow/npcs.lua
@@ -30,7 +30,7 @@ newEntity{ base="BASE_NPC_CORRUPTED_HORROR", define_as = "THE_MOUTH",
 	color=colors.VIOLET,
 	desc = [["From bellow, it devours."]],
 	level_range = {7, nil}, exp_worth = 2,
-	max_life = 150, life_rating = 12, fixed_rating = true,
+	max_life = 10000, life_rating = 0, fixed_rating = true,
 	stats = { str=10, dex=10, cun=12, mag=20, con=10 },
 	rank = 4,
 	size_category = 4,
@@ -42,7 +42,7 @@ newEntity{ base="BASE_NPC_CORRUPTED_HORROR", define_as = "THE_MOUTH",
 	combat = {dam=100, atk=1000, apr=1000, physcrit=1000},
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
-	resolvers.drops{chance=100, nb=1, {defined="RING_OF_HORRORS", random_art_replace={chance=75}} },
+	resolvers.drops{chance=100, nb=1, {defined="TOOTH_MOUTH", random_art_replace={chance=35}} },
 	resolvers.drops{chance=100, nb=3, {ego_chance=100} },
 
 	resolvers.talents{
@@ -50,11 +50,71 @@ newEntity{ base="BASE_NPC_CORRUPTED_HORROR", define_as = "THE_MOUTH",
 		[Talents.T_DRAIN]=1,
 	},
 
-	autolevel = "caster",
-	ai = "tactical", ai_state = { talent_in=1, ai_move="move_astar", },
+	autolevel = "warriormage",
+	ai = "tactical", ai_state = { talent_in=1 },
 	ai_tactic = resolvers.tactic"ranged",
 
+	on_takehit = function(self, value)
+		if value <= 500 then
+			game.logSeen(self, "#CRIMSON#%s seems invulnerable, there must be an other way to kill it!", self.name:capitalize())
+			return 0
+		end
+		return value
+	end,
+
+	-- Invoke crawlers every few turns
+	on_act = function(self)
+		if not self.ai_target.actor or self.ai_target.actor.dead then return end
+		if not self:hasLOS(self.ai_target.actor.x, self.ai_target.actor.y) then return end
+
+		self.last_crawler = self.last_crawler or (game.turn - 100)
+		if game.turn - self.last_crawler >= 100 then -- Summon a crawler every 10 turns
+			self:forceUseTalent(self.T_GIFT_OF_AMAKTHEL, {no_energy=true})
+			self.last_crawler = game.turn
+		end
+	end,
+
 	on_die = function(self, who)
 		game.player:resolveSource():setQuestStatus("deep-bellow", engine.Quest.COMPLETED)
 	end,
 }
+
+newEntity{ base="BASE_NPC_CORRUPTED_HORROR", define_as = "SLIMY_CRAWLER",
+	name = "slimy crawlyer",
+	color = colors.GREEN,
+	desc = [[This disgusting... thing crawls on the floor toward you with great speed.
+It seems to come from the digestive system of the mouth.]],
+	level_range = {4, nil}, exp_worth = 0,
+	max_life = 40, life_rating = 5, fixed_rating = true,
+	movement_speed = -0.5,
+	size_category = 1,
+
+	combat = { dam=resolvers.mbonus(15, 15), damtype=DamageType.SLIME, dammod={str=1} },
+
+	autolevel = "warrior",
+	ai = "dumb_talented_simple", ai_state = { talent_in=4, ai_move="move_astar" },
+
+	resolvers.talents{
+		[Talents.T_KNOCKBACK]=1,
+	},
+
+	on_act = function(self)
+		local tgts = {}
+		for i, actor in ipairs(game.party.m_list) do
+			if not actor.dead then tgts[#tgts+1] = actor end
+		end
+		self:setTarget(rng.table(tgts))
+
+		if self.summoner.dead then
+			self:die()
+			game.logSeen(self, "#AQUAMARINE#With the Mouth death its crawler also falls lifeless on the ground!")
+		end
+	end,
+
+	on_die = function(self, who)
+		if self.summoner and not self.summoner.dead then
+			game.logSeen(self, "#AQUAMARINE#As %s falls you notice that %s seems to shudder in pain!", self.name, self.summoner.name)
+			self.summoner:takeHit(1000, who)
+		end
+	end,
+}
diff --git a/game/modules/tome/data/zones/deep-bellow/zone.lua b/game/modules/tome/data/zones/deep-bellow/zone.lua
index 4c9c9d1e3863ef45220d87f3464a6d54a3e564c3..aba34896f37418b2b71e7cb5f5b8b2e6bb832dd6 100644
--- a/game/modules/tome/data/zones/deep-bellow/zone.lua
+++ b/game/modules/tome/data/zones/deep-bellow/zone.lua
@@ -70,6 +70,9 @@ return {
 				actor = {
 					nb_npc = {0, 0},
 				},
+				object = {
+					nb_object = {1, 1},
+				},
 			},
 		},
 	},
diff --git a/game/modules/tome/data/zones/reknor-escape/zone.lua b/game/modules/tome/data/zones/reknor-escape/zone.lua
index c229c6bc797c4c08a44951d03696f5d3a72741da..54eb46ede89bdfdd9cf979db510f0dc16c5e84ef 100644
--- a/game/modules/tome/data/zones/reknor-escape/zone.lua
+++ b/game/modules/tome/data/zones/reknor-escape/zone.lua
@@ -101,5 +101,6 @@ return {
 			local chat = require("engine.Chat").new("norgan-saved", norgan, game.player)
 			chat:invoke()
 		end
+		if norgan then game.party:removeMember(norgan, true) end
 	end,
 }