diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index a9da6f08b137be50258d17193c626427892875a7..0b97ec44c044cefcdb36a55f605c71d81ddb06d1 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -1949,6 +1949,9 @@ end
 unlocks_list = {
 	birth_transmo_chest = "Birth option: Transmogrification Chest",
 	birth_zigur_sacrifice = "Birth option: Zigur sacrifice",
+	cosmetic_race_human_redhead = "Cosmetic: Redheads",
+	
+	difficulty_insane = "Difficulty: Insane",
 
 	campaign_infinite_dungeon = "Campaign: Infinite Dungeon",
 	campaign_arena = "Campaign: The Arena",
@@ -1961,7 +1964,7 @@ unlocks_list = {
 	mage_tempest = "Class tree: Storm",
 	mage_geomancer = "Class tree: Stone",
 	mage_pyromancer = "Class tree: Wildfire",
-	mage_cryomancer = "Class tree: uttercold",
+	mage_cryomancer = "Class tree: Uttercold",
 	mage_necromancer = "Class: Necromancer",
 
 	rogue_marauder = "Class: Marauder",
diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua
index 40cf930ac309144be5a955c2f9d111abb461cc0a..81a4e68eb2a24fe85d6ea39d529bf963ddaa509b 100644
--- a/game/modules/tome/class/Player.lua
+++ b/game/modules/tome/class/Player.lua
@@ -118,8 +118,29 @@ function _M:onEnterLevel(zone, level)
 	-- mark entrance (if applicable) as noticed
 	game.level.map.attrs(self.x, self.y, "noticed", true)
 
+	local escort_zone_name = zone.short_name
+	local escort_zone_offset = 0
+
+	if zone.tier1_escort then
+		escort_zone_offset = zone.tier1_escort - 1
+
+		self.entered_tier1_zones = self.entered_tier1_zones or {}
+		self.entered_tier1_zones.seen = self.entered_tier1_zones.seen or {}
+		self.entered_tier1_zones.nb = self.entered_tier1_zones.nb or 0
+		if not self.entered_tier1_zones.seen[zone.short_name] then
+			self.entered_tier1_zones.nb = self.entered_tier1_zones.nb + 1
+			self.entered_tier1_zones.seen[zone.short_name] = self.entered_tier1_zones.nb
+		end
+
+		escort_zone_name = "tier1."..self.entered_tier1_zones.seen[zone.short_name]
+		print("Entering tier1 zone for escort", escort_zone_name, escort_zone_offset, level.level - escort_zone_offset)
+		if self.random_escort_levels and self.random_escort_levels[escort_zone_name] then
+			table.print(self.random_escort_levels[escort_zone_name])
+		end
+	end
+
 	-- Fire random escort quest
-	if self.random_escort_levels and self.random_escort_levels[zone.short_name] and self.random_escort_levels[zone.short_name][level.level] then
+	if self.random_escort_levels and self.random_escort_levels[escort_zone_name] and self.random_escort_levels[escort_zone_name][level.level - escort_zone_offset] then
 		self:grantQuest("escort-duty")
 	end
 
diff --git a/game/modules/tome/data/birth/races/construct.lua b/game/modules/tome/data/birth/races/construct.lua
index fd60e5388a778609b6280829eaab298d97b736ff..9d273450346f957f00a3ccb2a505fdfafd350a9f 100644
--- a/game/modules/tome/data/birth/races/construct.lua
+++ b/game/modules/tome/data/birth/races/construct.lua
@@ -37,7 +37,7 @@ newBirthDescriptor{
 			["Runic Golem"] = "allow",
 		},
 	},
-	random_escort_possibilities = { {"trollmire", 2, 3}, {"ruins-kor-pul", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
+	random_escort_possibilities = { {"tier1.1", 1, 2}, {"tier1.2", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
 }
 
 newBirthDescriptor
diff --git a/game/modules/tome/data/birth/races/dwarf.lua b/game/modules/tome/data/birth/races/dwarf.lua
index 11cf7ae98d7546d652e09a20a634b3fadee618c8..96e50e3d4129a4cded181126190af68872cee2b2 100644
--- a/game/modules/tome/data/birth/races/dwarf.lua
+++ b/game/modules/tome/data/birth/races/dwarf.lua
@@ -49,7 +49,7 @@ newBirthDescriptor{
 		resolvers.inventory{ id=true, {defined="ORB_SCRYING"} },
 		resolvers.generic(function(e) e.hotkey[10] = {"inventory", "Orb of Scrying"} end),
 	},
-	random_escort_possibilities = { {"trollmire", 2, 3}, {"ruins-kor-pul", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
+	random_escort_possibilities = { {"tier1.1", 1, 2}, {"tier1.2", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
 
 	cosmetic_unlock = {
 		cosmetic_race_human_redhead = {
diff --git a/game/modules/tome/data/birth/races/elf.lua b/game/modules/tome/data/birth/races/elf.lua
index c04dae281f0b377e3e2318f836438d357ef35f08..380c3be21c3afaf0e7f578b8b358ae25233ea262 100644
--- a/game/modules/tome/data/birth/races/elf.lua
+++ b/game/modules/tome/data/birth/races/elf.lua
@@ -98,7 +98,7 @@ newBirthDescriptor
 		resolvers.inscription("RUNE:_PHASE_DOOR", {cooldown=7, range=10}),
 	},
 	experience = 1.35,
-	random_escort_possibilities = { {"scintillating-caves", 2, 3}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
+	random_escort_possibilities = { {"tier1.1", 1, 2}, {"tier1.2", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
 }
 
 newBirthDescriptor
@@ -134,5 +134,5 @@ newBirthDescriptor
 		resolvers.inscription("INFUSION:_WILD", {cooldown=12, what={physical=true}, dur=4, power=14}),
 	},
 	experience = 1.30,
-	random_escort_possibilities = { {"norgos-lair", 2, 3}, {"heart-gloom", 1, 2}, {"daikara", 1, 3}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
+	random_escort_possibilities = { {"tier1.1", 1, 2}, {"tier1.2", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
 }
diff --git a/game/modules/tome/data/birth/races/halfling.lua b/game/modules/tome/data/birth/races/halfling.lua
index 8a9d9afa4ce64dbb023d7621581da01b9fe09850..0fb99aa5e0ce8dbf27251435087eb36caa8f0dcf 100644
--- a/game/modules/tome/data/birth/races/halfling.lua
+++ b/game/modules/tome/data/birth/races/halfling.lua
@@ -54,7 +54,7 @@ newBirthDescriptor{
 		resolvers.inventory{ id=true, {defined="ORB_SCRYING"} },
 		resolvers.generic(function(e) e.hotkey[10] = {"inventory", "Orb of Scrying"} end),
 	},
-	random_escort_possibilities = { {"trollmire", 2, 3}, {"ruins-kor-pul", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
+	random_escort_possibilities = { {"tier1.1", 1, 2}, {"tier1.2", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
 
 	cosmetic_unlock = {
 		cosmetic_race_human_redhead = {
diff --git a/game/modules/tome/data/birth/races/human.lua b/game/modules/tome/data/birth/races/human.lua
index 4e964cefa902638250e0b69d6593774c4c057d08..192133ecc959a2f0eb95a0501708284d0cb29f94 100644
--- a/game/modules/tome/data/birth/races/human.lua
+++ b/game/modules/tome/data/birth/races/human.lua
@@ -55,7 +55,7 @@ newBirthDescriptor{
 		resolvers.inventory{ id=true, {defined="ORB_SCRYING"} },
 		resolvers.generic(function(e) e.hotkey[10] = {"inventory", "Orb of Scrying"} end),
 	},
-	random_escort_possibilities = { {"trollmire", 2, 3}, {"ruins-kor-pul", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
+	random_escort_possibilities = { {"tier1.1", 1, 2}, {"tier1.2", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
 
 	cosmetic_unlock = {
 		cosmetic_race_human_redhead = {
diff --git a/game/modules/tome/data/birth/races/undead.lua b/game/modules/tome/data/birth/races/undead.lua
index e5b643fa56bb2cd2281f39dd24c6c28cea79908d..1e3341000a4bd3b5441ffa72631e8f0a5acd6fef 100644
--- a/game/modules/tome/data/birth/races/undead.lua
+++ b/game/modules/tome/data/birth/races/undead.lua
@@ -65,7 +65,7 @@ newBirthDescriptor{
 		resolvers.inscription("RUNE:_SHIELDING", {cooldown=14, dur=5, power=100}),
 		resolvers.inscription("RUNE:_PHASE_DOOR", {cooldown=7, range=10}),
 	},
-	random_escort_possibilities = { {"trollmire", 2, 3}, {"ruins-kor-pul", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
+	random_escort_possibilities = { {"tier1.1", 1, 2}, {"tier1.2", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
 }
 
 newBirthDescriptor
diff --git a/game/modules/tome/data/birth/races/yeek.lua b/game/modules/tome/data/birth/races/yeek.lua
index a5e0b129850b861f8ceed7aa441503bc235d2496..99491963861ab1ec69dac72f1baa790809b497c0 100644
--- a/game/modules/tome/data/birth/races/yeek.lua
+++ b/game/modules/tome/data/birth/races/yeek.lua
@@ -51,7 +51,7 @@ newBirthDescriptor{
 		resolvers.inscription("INFUSION:_REGENERATION", {cooldown=10, dur=5, heal=60}),
 		resolvers.inscription("INFUSION:_WILD", {cooldown=12, what={physical=true}, dur=4, power=14}),
 	},
-	random_escort_possibilities = { {"trollmire", 2, 3}, {"ruins-kor-pul", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
+	random_escort_possibilities = { {"tier1.1", 1, 2}, {"tier1.2", 1, 2}, {"daikara", 1, 2}, {"old-forest", 1, 4}, {"dreadfell", 1, 8}, {"reknor", 1, 2}, },
 }
 
 ---------------------------------------------------------
diff --git a/game/modules/tome/data/zones/heart-gloom/zone.lua b/game/modules/tome/data/zones/heart-gloom/zone.lua
index 3b8b8b22a147ffcc31d813ce8ccbc09c388bc5ac..b533ab36f3cb05341098ef5b19970829f66e3ceb 100644
--- a/game/modules/tome/data/zones/heart-gloom/zone.lua
+++ b/game/modules/tome/data/zones/heart-gloom/zone.lua
@@ -26,6 +26,7 @@ return {
 	actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level-1 + rng.range(-1,2) end,
 	width = 50, height = 50,
 	tier1 = true,
+	tier1_escort = 1,
 --	all_remembered = true,
 	all_lited = true,
 	persistent = "zone",
diff --git a/game/modules/tome/data/zones/norgos-lair/zone.lua b/game/modules/tome/data/zones/norgos-lair/zone.lua
index 990d9fb56a376174e6cafddeea194ac123d07d0b..5222bc7304b84745f33a8d1f9f4c83006457c017 100644
--- a/game/modules/tome/data/zones/norgos-lair/zone.lua
+++ b/game/modules/tome/data/zones/norgos-lair/zone.lua
@@ -28,6 +28,7 @@ return {
 --	all_remembered = true,
 	all_lited = true,
 	tier1 = true,
+	tier1_escort = 2,
 	day_night = true,
 	persistent = "zone",
 	color_shown = {0.7, 0.7, 0.7, 1},
diff --git a/game/modules/tome/data/zones/ruins-kor-pul/zone.lua b/game/modules/tome/data/zones/ruins-kor-pul/zone.lua
index ec5fd396fde5671d36cc386329dfeae854c33c97..94f718bfe976c7b664b365015416793ba3bc27de 100644
--- a/game/modules/tome/data/zones/ruins-kor-pul/zone.lua
+++ b/game/modules/tome/data/zones/ruins-kor-pul/zone.lua
@@ -26,6 +26,7 @@ return {
 	actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level-1 + rng.range(-1,2) end,
 	width = 50, height = 50,
 	tier1 = true,
+	tier1_escort = 1,
 --	all_remembered = true,
 --	all_lited = true,
 	persistent = "zone",
diff --git a/game/modules/tome/data/zones/scintillating-caves/zone.lua b/game/modules/tome/data/zones/scintillating-caves/zone.lua
index c3dea129a2f1b50d3fbfb693457ad1eaee1a09b5..114a08d76658204958c4cc97bd83347fee2d1ca6 100644
--- a/game/modules/tome/data/zones/scintillating-caves/zone.lua
+++ b/game/modules/tome/data/zones/scintillating-caves/zone.lua
@@ -27,6 +27,7 @@ return {
 	width = 50, height = 50,
 --	all_remembered = true,
 	tier1 = true,
+	tier1_escort = 2,
 	all_lited = true,
 	persistent = "zone",
 	ambient_music = "Mystery.ogg",
diff --git a/game/modules/tome/data/zones/trollmire/zone.lua b/game/modules/tome/data/zones/trollmire/zone.lua
index 67676c0bb98db7f505fe43b6806233618aad72da..f2df83cf035223b9b00143fa51c194aaa3b753a7 100644
--- a/game/modules/tome/data/zones/trollmire/zone.lua
+++ b/game/modules/tome/data/zones/trollmire/zone.lua
@@ -29,6 +29,7 @@ return {
 	all_lited = true,
 	day_night = true,
 	tier1 = true,
+	tier1_escort = 2,
 	persistent = "zone",
 	ambient_music = "Rainy Day.ogg",
 	min_material_level = function() return game.state:isAdvanced() and 3 or 1 end,