diff --git a/game/engine/Actor.lua b/game/engine/Actor.lua
index 3c5b499ace3eb34c397743c31c0ef50b7ee2caf0..ae58809e84916d5414e74c752ad6a1f23d22bed3 100644
--- a/game/engine/Actor.lua
+++ b/game/engine/Actor.lua
@@ -189,7 +189,8 @@ function _M:teleportRandom(x, y, dist, min_dist)
 			if game.level.map:isBound(i, j) and
 			   core.fov.distance(x, y, i, j) <= dist and
 			   core.fov.distance(x, y, i, j) >= min_dist and
-			   self:canMove(i, j) then
+			   self:canMove(i, j) and
+			   not game.level.map.attrs(i, j, "no_teleport") then
 				poss[#poss+1] = {i,j}
 			end
 		end
diff --git a/game/engine/Faction.lua b/game/engine/Faction.lua
index 56b4acc65a72ed4856e5f74a102a6edb75b7b814..df64df8aecbe36a2cf05f5b2cf94425b4001cbf7 100644
--- a/game/engine/Faction.lua
+++ b/game/engine/Faction.lua
@@ -90,6 +90,7 @@ end
 -- @param reaction a numerical value representing the reaction, 0 is neutral, <0 is aggressive, >0 is friendly.
 -- @param mutual if true the same status will be set for f2 toward f1.
 function _M:setFactionReaction(f1, f2, reaction, mutual)
+	reaction = util.bound(reaction, -100, 100)
 	print("[FACTION]", f1, f2, reaction, mutual)
 	-- Faction always like itself
 	if f1 == f2 then return end
diff --git a/game/engine/Map.lua b/game/engine/Map.lua
index 75a9f365a07bee2513364c32e9c0775c2d05265b..636e69674cd21d75ac29c750276222964a662249 100644
--- a/game/engine/Map.lua
+++ b/game/engine/Map.lua
@@ -193,6 +193,7 @@ function _M:init(w, h)
 	self.my = 0
 	self.w, self.h = w, h
 	self.map = {}
+	self.attrs = {}
 	self.lites = {}
 	self.seens = {}
 	self.has_seens = {}
@@ -292,12 +293,21 @@ function _M:loaded()
 		end
 		return t[x + y * self.w]
 	end
+	local mapattrs = function(t, x, y, k, v)
+		if x < 0 or y < 0 or x >= self.w or y >= self.h then return end
+		if v ~= nil then
+			if not t[x + y * self.w] then t[x + y * self.w] = {} end
+			t[x + y * self.w][k] = v
+		end
+		return t[x + y * self.w] and t[x + y * self.w][k]
+	end
 
 	getmetatable(self).__call = _M.call
 	setmetatable(self.lites, {__call = maplite})
 	setmetatable(self.seens, {__call = mapseen})
 	setmetatable(self.has_seens, {__call = maphasseen})
 	setmetatable(self.remembers, {__call = mapremember})
+	setmetatable(self.attrs, {__call = mapattrs})
 
 	self.surface = core.display.newSurface(self.viewport.width, self.viewport.height)
 	self.changed = true
diff --git a/game/engine/generator/map/Static.lua b/game/engine/generator/map/Static.lua
index 11af8de17135d8910955de7d7ce2d6d1b845b631..a87d8485de6a4a6a03a48de2e8609cb6b52999f4 100644
--- a/game/engine/generator/map/Static.lua
+++ b/game/engine/generator/map/Static.lua
@@ -52,10 +52,10 @@ function _M:loadMap(file)
 		defineTile = function(char, grid, obj, actor, trap, status)
 			t[char] = {grid=grid, object=obj, actor=actor, trap=trap, status=status}
 		end,
-		quickEntity = function(char, e)
+		quickEntity = function(char, e, status)
 			if type(e) == "table" then
 				local e = self.zone.grid_class.new(e)
-				t[char] = {grid=e}
+				t[char] = {grid=e, status=status}
 			else
 				t[char] = t[e]
 			end
@@ -174,8 +174,9 @@ function _M:generate(lev, old_lev)
 		end
 
 		if status then
-			if status.lite then self.level.map.lites(i-1, j-1, true) end
-			if status.remember then self.level.map.remembers(i-1, j-1, true) end
+			if status.lite then self.level.map.lites(i-1, j-1, true) status.lite = nil end
+			if status.remember then self.level.map.remembers(i-1, j-1, true) status.remember = nil end
+			if pairs(status) then for k, v in pairs(status) do self.level.map.attrs(i-1, j-1, k, v) end end
 		end
 	end end
 
diff --git a/game/engine/interface/ActorTalents.lua b/game/engine/interface/ActorTalents.lua
index 901901fd1d45bf68dc122175af1d445f1ab34825..3cd98b43317f6f41028e2e235f6fa439210cd7f3 100644
--- a/game/engine/interface/ActorTalents.lua
+++ b/game/engine/interface/ActorTalents.lua
@@ -79,6 +79,7 @@ function _M:newTalent(t)
 
 	table.insert(self.talents_def, t)
 	t.id = #self.talents_def
+	assert(not self["T_"..t.short_name], "talent already exists with id T_"..t.short_name)
 	self["T_"..t.short_name] = #self.talents_def
 	print("[TALENT]", t.name, t.short_name, #self.talents_def)
 
diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 1e34aa028b8d3ce8ffd6316d3a2ecfa803a7f9d5..4d24236809a965dca6b7e8f1b4834a6505de8f28 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -393,9 +393,9 @@ end
 
 function _M:tooltip(x, y, seen_by)
 	if seen_by and not seen_by:canSee(self) then return end
-	local factcolor, factstate = "#ANTIQUE_WHITE#", "neutral"
-	if self:reactionToward(game.player) < 0 then factcolor, factstate = "#LIGHT_RED#", "hostile"
-	elseif self:reactionToward(game.player) > 0 then factcolor, factstate = "#LIGHT_GREEN#", "friendly"
+	local factcolor, factstate, factlevel = "#ANTIQUE_WHITE#", "neutral", self:reactionToward(game.player)
+	if factlevel < 0 then factcolor, factstate = "#LIGHT_RED#", "hostile"
+	elseif factlevel > 0 then factcolor, factstate = "#LIGHT_GREEN#", "friendly"
 	end
 
 	local rank, rank_color = self:TextRank()
@@ -427,7 +427,7 @@ Stats: %d /  %d / %d / %d / %d / %d
 Resists: %s
 Size: #ANTIQUE_WHITE#%s
 %s
-Faction: %s%s (%s)
+Faction: %s%s (%s, %d)
 %s]]):format(
 	self:getDisplayString(), rank_color, self.name,
 	rank_color, rank,
@@ -444,7 +444,7 @@ Faction: %s%s (%s)
 	table.concat(resists, ','),
 	self:TextSizeCategory(),
 	self.desc or "",
-	factcolor, Faction.factions[self.faction].name, factstate,
+	factcolor, Faction.factions[self.faction].name, factstate, factlevel,
 	table.concat(effs, "\n")
 	)
 end
diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index a32fa00b19d652a65fab2c8ba89067b67fc77144..811aaef28f850e62eca0ac064253facf029ce39e 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -474,7 +474,8 @@ function _M:setupCommands()
 				self.player.esp.all = 1
 				self.player.esp.range = 50
 				self.player.inc_damage.all = 100000
-				self:changeLevel(15, "high-peak")
+--				self:changeLevel(15, "high-peak")
+				self:changeLevel(1, "town-gates-of-morning")
 --				self:changeLevel(1, "wilderness-arda-fareast")
 --				game.memory_levels["wilderness-arda-fareast-1"] = game.level
 --				self.player:grantQuest("orc-pride")
diff --git a/game/modules/tome/class/NPC.lua b/game/modules/tome/class/NPC.lua
index dde58a4eb47a07f89b72bf72017f7f26fc8b695e..677730693a0a21f78d15d9e6d15c35c96f54359c 100644
--- a/game/modules/tome/class/NPC.lua
+++ b/game/modules/tome/class/NPC.lua
@@ -60,14 +60,18 @@ function _M:onTakeHit(value, src)
 	end
 
 	if Faction:get(self.faction) and Faction:get(self.faction).hostile_on_attack then
-		Faction:setFactionReaction(self.faction, src.faction, -100, true)
+		Faction:setFactionReaction(self.faction, src.faction, Faction:factionReaction(self.faction, src.faction) - self.rank * 5, true)
 	end
 
 	return mod.class.Actor.onTakeHit(self, value, src)
 end
 
 function _M:die(src)
-	-- Sefl resurrect, mouhaha!
+	if Faction:get(self.faction) and Faction:get(self.faction).hostile_on_attack then
+		Faction:setFactionReaction(self.faction, src.faction, Faction:factionReaction(self.faction, src.faction) - self.rank * 15, true)
+	end
+
+	-- Self resurrect, mouhaha!
 	if self:attr("self_resurrect") then
 		self:attr("self_resurrect", -1)
 		game.logSeen(src, "#LIGHT_RED#%s raises from the dead!", self.name:capitalize()) -- src, not self as the source, to make sure the player knows his doom ;>
diff --git a/game/modules/tome/data/maps/towns/gates-of-morning.lua b/game/modules/tome/data/maps/towns/gates-of-morning.lua
index b80bd8c01775a6005e5c5bdf51b9d489295d7e22..122d5c1f63e38843932c5306cb035c34ade0f6d7 100644
--- a/game/modules/tome/data/maps/towns/gates-of-morning.lua
+++ b/game/modules/tome/data/maps/towns/gates-of-morning.lua
@@ -17,38 +17,39 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-defineTile(' ', "FLOOR")
-quickEntity('M', {always_remember = true, show_tooltip=true, name='Sun Wall', display='^', color=colors.GOLD, back_color=colors.CRIMSON, image="terrain/mountain.png", tint=colors.GOLD, block_move=true})
-quickEntity('<', {show_tooltip=true, name='into the wild', display='<', color=colors.WHITE, change_level=1, change_zone="wilderness-arda-fareast"})
-quickEntity('S', {name='brick roof top', display='#', color=colors.RED, block_move=true, block_sight=true, image="terrain/wood_wall1.png"})
-quickEntity('s', {name='brick roof', display='#', color=colors.RED, block_move=true, block_sight=true, image="terrain/wood_wall1.png"})
-quickEntity('t', {name='brick roof chimney', display='#', color=colors.LIGHT_RED, block_move=true, block_sight=true, image="terrain/wood_wall1.png"})
-quickEntity('#', {name='wall', display='#', color=colors.WHITE, block_move=true, block_sight=true, image="terrain/wood_wall1.png"})
-quickEntity('T', {name='tree', display='#', color=colors.LIGHT_GREEN, block_move=true, block_sight=true, image="terrain/grass.png", add_displays = {mod.class.Grid.new{image="terrain/tree_alpha2.png"}}})
-quickEntity('P', {name='palm tree', display='#', color=colors.LIGHT_GREEN, back_color={r=163,g=149,b=42}, image="terrain/palmtree.png", block_move=true})
-quickEntity('~', {name='river', display='~', color=colors.BLUE, block_move=true, image="terrain/river.png", add_displays = mod.class.Grid:makeWater(true)})
-quickEntity('O', {name='cobblestone road', display='.', color=colors.WHITE, image="terrain/stone_road1.png"})
-quickEntity(':', {name='sand', display='.', color={r=203,g=189,b=72}, back_color={r=163,g=149,b=42}, image="terrain/sand.png", can_encounter="desert", equilibrium_level=-10})
+defineTile(' ', "FLOOR", nil, nil, nil, {no_teleport=true})
+quickEntity('M', {always_remember = true, show_tooltip=true, name='Sun Wall', display='^', color=colors.GOLD, back_color=colors.CRIMSON, image="terrain/mountain.png", tint=colors.GOLD, block_move=true}, {no_teleport=true})
+quickEntity('<', {show_tooltip=true, name='into the wild', display='<', color=colors.WHITE, change_level=1, change_zone="wilderness-arda-fareast"}, {no_teleport=true})
+quickEntity('S', {name='brick roof top', display='#', color=colors.RED, block_move=true, block_sight=true, image="terrain/wood_wall1.png"}, {no_teleport=true})
+quickEntity('s', {name='brick roof', display='#', color=colors.RED, block_move=true, block_sight=true, image="terrain/wood_wall1.png"}, {no_teleport=true})
+quickEntity('t', {name='brick roof chimney', display='#', color=colors.LIGHT_RED, block_move=true, block_sight=true, image="terrain/wood_wall1.png"}, {no_teleport=true})
+quickEntity('#', {name='wall', display='#', color=colors.WHITE, block_move=true, block_sight=true, image="terrain/wood_wall1.png"}, {no_teleport=true})
+quickEntity('T', {name='tree', display='#', color=colors.LIGHT_GREEN, block_move=true, block_sight=true, image="terrain/grass.png", add_displays = {mod.class.Grid.new{image="terrain/tree_alpha2.png"}}}, {no_teleport=true})
+quickEntity('P', {name='palm tree', display='#', color=colors.LIGHT_GREEN, back_color={r=163,g=149,b=42}, image="terrain/palmtree.png", block_move=true}, {no_teleport=true})
+quickEntity('~', {name='river', display='~', color=colors.BLUE, block_move=true, image="terrain/river.png", add_displays = mod.class.Grid:makeWater(true)}, {no_teleport=true})
+quickEntity('O', {name='cobblestone road', display='.', color=colors.WHITE, image="terrain/stone_road1.png"}, {no_teleport=true})
+quickEntity(':', {name='sand', display='.', color={r=203,g=189,b=72}, back_color={r=163,g=149,b=42}, image="terrain/sand.png", can_encounter="desert", equilibrium_level=-10}, {no_teleport=true})
+quickEntity('"', {name='grass', display='.', color=colors.LIGHT_GREEN, image="terrain/grass.png"}, {no_teleport=true})
 quickEntity('-', {name='grass', display='.', color=colors.LIGHT_GREEN, image="terrain/grass.png"})
-quickEntity('^', {name='hills', display='^', color=colors.SLATE, image="terrain/mountain.png", block_move=true, block_sight=true})
+quickEntity('^', {name='hills', display='^', color=colors.SLATE, image="terrain/mountain.png", block_move=true, block_sight=true}, {no_teleport=true})
 
 defineTile('@', "GRASS", nil, "HIGH_SUN_PALADIN_AERYN")
 
-quickEntity('1', {show_tooltip=true, name="Closed store", display='1', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"})
-quickEntity('2', {show_tooltip=true, name="Armour Smith", display='2', color=colors.UMBER, resolvers.store("ARMOR"), image="terrain/wood_store_armor.png"})
-quickEntity('3', {show_tooltip=true, name="Weapon Smith", display='3', color=colors.UMBER, resolvers.store("WEAPON"), image="terrain/wood_store_weapon.png"})
-quickEntity('4', {show_tooltip=true, name="Alchemist", display='4', color=colors.LIGHT_BLUE, resolvers.store("POTION"), image="terrain/wood_store_potion.png"})
-quickEntity('5', {show_tooltip=true, name="Scribe", display='5', color=colors.WHITE, resolvers.store("SCROLL"), resolvers.chatfeature("magic-store"), image="terrain/wood_store_book.png"})
-quickEntity('6', {show_tooltip=true, name="Closed store", display='6', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"})
-quickEntity('7', {show_tooltip=true, name="Closed store", display='7', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"})
-quickEntity('8', {show_tooltip=true, name="Closed store", display='8', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"})
-quickEntity('9', {show_tooltip=true, name="Closed store", display='9', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"})
-quickEntity('0', {show_tooltip=true, name="Closed store", display='0', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"})
-quickEntity('a', {show_tooltip=true, name="Closed store", display='*', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"})
-quickEntity('b', {show_tooltip=true, name="Closed store", display='*', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"})
-quickEntity('c', {show_tooltip=true, name="Closed store", display='*', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"})
-quickEntity('d', {show_tooltip=true, name="Closed store", display='*', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"})
-quickEntity('e', {show_tooltip=true, name="Closed store", display='*', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"})
+quickEntity('1', {show_tooltip=true, name="Closed store", display='1', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"}, {no_teleport=true})
+quickEntity('2', {show_tooltip=true, name="Armour Smith", display='2', color=colors.UMBER, resolvers.store("ARMOR"), image="terrain/wood_store_armor.png"}, {no_teleport=true})
+quickEntity('3', {show_tooltip=true, name="Weapon Smith", display='3', color=colors.UMBER, resolvers.store("WEAPON"), image="terrain/wood_store_weapon.png"}, {no_teleport=true})
+quickEntity('4', {show_tooltip=true, name="Alchemist", display='4', color=colors.LIGHT_BLUE, resolvers.store("POTION"), image="terrain/wood_store_potion.png"}, {no_teleport=true})
+quickEntity('5', {show_tooltip=true, name="Scribe", display='5', color=colors.WHITE, resolvers.store("SCROLL"), resolvers.chatfeature("magic-store"), image="terrain/wood_store_book.png"}, {no_teleport=true})
+quickEntity('6', {show_tooltip=true, name="Closed store", display='6', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"}, {no_teleport=true})
+quickEntity('7', {show_tooltip=true, name="Closed store", display='7', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"}, {no_teleport=true})
+quickEntity('8', {show_tooltip=true, name="Closed store", display='8', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"}, {no_teleport=true})
+quickEntity('9', {show_tooltip=true, name="Closed store", display='9', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"}, {no_teleport=true})
+quickEntity('0', {show_tooltip=true, name="Closed store", display='0', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"}, {no_teleport=true})
+quickEntity('a', {show_tooltip=true, name="Closed store", display='*', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"}, {no_teleport=true})
+quickEntity('b', {show_tooltip=true, name="Closed store", display='*', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"}, {no_teleport=true})
+quickEntity('c', {show_tooltip=true, name="Closed store", display='*', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"}, {no_teleport=true})
+quickEntity('d', {show_tooltip=true, name="Closed store", display='*', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"}, {no_teleport=true})
+quickEntity('e', {show_tooltip=true, name="Closed store", display='*', color=colors.LIGHT_UMBER, block_move=true, block_sight=true, image="terrain/wood_store_closed.png"}, {no_teleport=true})
 
 startx = 0
 starty = 27
@@ -91,18 +92,18 @@ MMMMMM         O            OO                 MMM
 MMM                       O                    MMM
 MMM                      OO                   MMMM
 MMM          TTTTT       O                   MMMMM
-MMM       TTTT-----------O-------            MMMMM
-MMMM     TT-----~~~----------------------    MMMMM
-MMMMMM  TT-----~~~~~------------------::----MMMMMM
-MMMMMMMMM------~~~~~-------TT-------::P:::::MMMMMM
-MMMMMMMMM-------~~~-----TT-T------::::::::::MMMMMM
-MMMMMMMMM-------~~------TTTT-----::::::::P:::MMMMM
-MMMMMMMMM-----TT~-------TT------:::::P:::::MMMMMMM
-MMMMMMMMM---TTTT~--------------::::::::::::MMMMMMM
-MMMMMMMMMM--TTT~~------------::::P::::::::::MMMMMM
-MMMMMMMMMMM-TT~~-------------::::::::::::P::::MMMM
-MMMMMMMMMMMMMM~MMMMMMMMMM----::::P:::P::::::::MMMM
-MMMMMMMMMMMMM~~MMMMMMMMMMM--::::::P::::::::::::MMM
+MMM       TTTT"""""""""""O"""""""            MMMMM
+MMMM     TT"""""~~~""""""""""""""""""""""    MMMMM
+MMMMMM  TT"""""~~~~~""""""""""""""""""::""""MMMMMM
+MMMMMMMMM""""""~~~~~"""""""TT"""""""::P:::::MMMMMM
+MMMMMMMMM"""""""~~~"""""TT"T""""""::::::::::MMMMMM
+MMMMMMMMM"""""""~~""""""TTTT"""""::::::::P:::MMMMM
+MMMMMMMMM"""""TT~"""""""TT"""""":::::P:::::MMMMMMM
+MMMMMMMMM"""TTTT~""""""""""""""::::::::::::MMMMMMM
+MMMMMMMMMM""TTT~~""""""""""""::::P::::::::::MMMMMM
+MMMMMMMMMMM"TT~~"""""""""""""::::::::::::P::::MMMM
+MMMMMMMMMMMMMM~MMMMMMMMMM""""::::P:::P::::::::MMMM
+MMMMMMMMMMMMM~~MMMMMMMMMMM""::::::P::::::::::::MMM
 MMMMMMMM~~~~~~MMMMMMMMMMMMMM:::::::::::::::::MMMMM
 MMMMMMM~~MMMMMMMMMMMMMMMMMMMMMM::::MMMMMMMMMMMMMMM
 MMMMMMM~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM]]
diff --git a/game/modules/tome/data/talents/corruptions/rituals.lua b/game/modules/tome/data/talents/corruptions/rituals.lua
index 7966a729f16188c8e578e04708cf1dd83f3e5168..7a1d18e65e8238895e0746f721c5b3bf2784c610 100644
--- a/game/modules/tome/data/talents/corruptions/rituals.lua
+++ b/game/modules/tome/data/talents/corruptions/rituals.lua
@@ -18,7 +18,7 @@
 -- darkgod@te4.org
 
 newTalent{
-	name = "???",
+	name = "c1???",
 	type = {"corruption/ritual", 1},
 	require = corrs_req1,
 	points = 5,
@@ -40,7 +40,7 @@ newTalent{
 }
 
 newTalent{
-	name = "???",
+	name = "c2???",
 	type = {"corruption/ritual", 2},
 	require = corrs_req2,
 	points = 5,
@@ -66,7 +66,7 @@ newTalent{
 }
 
 newTalent{
-	name = "???",
+	name = "c3???",
 	type = {"corruption/ritual", 3},
 	require = corrs_req3,
 	points = 5,
@@ -88,7 +88,7 @@ newTalent{
 }
 
 newTalent{
-	name = "???",
+	name = "c4???",
 	type = {"corruption/ritual", 4},
 	require = corrs_req4,
 	points = 5,
diff --git a/game/modules/tome/data/talents/spells/storm.lua b/game/modules/tome/data/talents/spells/storm.lua
index e4ef64f7fa0d4b3b6aaba67bde04c08fa51b830e..493fe1bdcca59f236a53af519eacae48e24cb2e1 100644
--- a/game/modules/tome/data/talents/spells/storm.lua
+++ b/game/modules/tome/data/talents/spells/storm.lua
@@ -40,7 +40,7 @@ newTalent{
 }
 
 newTalent{
-	name = "???",
+	name = "???1",
 	type = {"spell/storm",2},
 	require = spells_req2,
 	points = 5,
@@ -62,7 +62,7 @@ newTalent{
 }
 
 newTalent{
-	name = "???",
+	name = "???2",
 	type = {"spell/storm",3},
 	require = spells_req3,
 	points = 5,
diff --git a/game/modules/tome/data/zones/high-peak/zone.lua b/game/modules/tome/data/zones/high-peak/zone.lua
index cc2e4cf61797f3603693bc30e24bb58134bdb42e..9126c17391290a6433d4cc6fcc9a4a8aa1bda4d1 100644
--- a/game/modules/tome/data/zones/high-peak/zone.lua
+++ b/game/modules/tome/data/zones/high-peak/zone.lua
@@ -55,6 +55,9 @@ return {
 			nb_trap = {15, 20},
 		},
 	},
+	post_process = function(level)
+		for uid, e in pairs(level.entities) do e.faction="blue-wizards" end
+	end,
 	levels =
 	{
 		[1] = {
diff --git a/ideas/zones.ods b/ideas/zones.ods
index 7c077172f8b891b8e12b6d5f89cd6a990d099b0c..c36a97b1e0704375b28a8648010aac9f11e42cb2 100644
Binary files a/ideas/zones.ods and b/ideas/zones.ods differ