diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 077418dbfdd09d1ccd1a45f50eba90338a4b5775..e74bf12465cbb0e249c0030eed2c68946cbef2b4 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -4057,7 +4057,7 @@ function _M:worthExp(target)
 end
 
 --- Remove all effects based on a filter
-function _M:removeEffectsFilter(t, nb)
+function _M:removeEffectsFilter(t, nb, silent, force)
 	nb = nb or 100000
 	local effs = {}
 	local removed = 0
@@ -4073,7 +4073,7 @@ function _M:removeEffectsFilter(t, nb)
 
 	while #effs > 0 and nb > 0 do
 		local eff = rng.tableRemove(effs)
-		self:removeEffect(eff)
+		self:removeEffect(eff, silent, force)
 		nb = nb - 1
 		removed = removed + 1
 	end
@@ -4445,6 +4445,12 @@ function _M:addedToLevel(level, x, y)
 	if game.level.data.zero_gravity then self:setEffect(self.EFF_ZERO_GRAVITY, 1, {})
 	else self:removeEffect(self.EFF_ZERO_GRAVITY, nil, true) end
 
+	if game.level.data.effects and game.level.data.effects_allow then
+		for _, effid in ipairs(game.level.data.effects) do
+			self:setEffect(effid, 1, {})
+		end
+	end
+
 	self:check("on_added_to_level", level, x, y)
 end
 
diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index 98a21c8bdb74b1756ff19bb3b7d01fa857c2d8db..fc43b8223182f2ec67b3b9d2364274d345ba9cfe 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -850,12 +850,21 @@ function _M:changeLevelReal(lev, zone, params)
 	self.zone_name_s = nil
 
 	-- Special stuff
+	for uid, act in pairs(self.level.entities) do if act.setEffect then act:removeEffectsFilter(function(e) return e.zone_wide_effect end, nil, nil, true) end end
 	for uid, act in pairs(self.level.entities) do
 		if act.setEffect then
 			if self.level.data.zero_gravity then act:setEffect(act.EFF_ZERO_GRAVITY, 1, {})
 			else act:removeEffect(act.EFF_ZERO_GRAVITY, nil, true) end
 		end
 	end
+	if self.level.data.effects then
+		for uid, act in pairs(self.level.entities) do 
+			if act.setEffect then for _, effid in ipairs(self.level.data.effects) do
+				act:setEffect(effid, 1, {})
+			end end
+		end
+	end
+	self.level.data.effects_allow = true
 
 	-- Level feeling
 	local feeling
diff --git a/game/modules/tome/data/gfx/effects/zone_aura_acid.png b/game/modules/tome/data/gfx/effects/zone_aura_acid.png
new file mode 100644
index 0000000000000000000000000000000000000000..64d9fb319f58b46f7d61cad32e51ecbc7ad9b6a5
Binary files /dev/null and b/game/modules/tome/data/gfx/effects/zone_aura_acid.png differ
diff --git a/game/modules/tome/data/gfx/effects/zone_aura_arcane.png b/game/modules/tome/data/gfx/effects/zone_aura_arcane.png
new file mode 100644
index 0000000000000000000000000000000000000000..143aee899de34beee7efd47fd730c15a469758b9
Binary files /dev/null and b/game/modules/tome/data/gfx/effects/zone_aura_arcane.png differ
diff --git a/game/modules/tome/data/gfx/effects/zone_aura_blight.png b/game/modules/tome/data/gfx/effects/zone_aura_blight.png
new file mode 100644
index 0000000000000000000000000000000000000000..7dd8362e32d32b6a2415fb4f1b5673b5e763352d
Binary files /dev/null and b/game/modules/tome/data/gfx/effects/zone_aura_blight.png differ
diff --git a/game/modules/tome/data/gfx/effects/zone_aura_cold.png b/game/modules/tome/data/gfx/effects/zone_aura_cold.png
new file mode 100644
index 0000000000000000000000000000000000000000..68cbb39b23ed7a08b863535fa1ec86eb9360ca46
Binary files /dev/null and b/game/modules/tome/data/gfx/effects/zone_aura_cold.png differ
diff --git a/game/modules/tome/data/gfx/effects/zone_aura_darkness.png b/game/modules/tome/data/gfx/effects/zone_aura_darkness.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb83ecf1fd3fcdf6d87e06871261a5604c7eec89
Binary files /dev/null and b/game/modules/tome/data/gfx/effects/zone_aura_darkness.png differ
diff --git a/game/modules/tome/data/gfx/effects/zone_aura_fire.png b/game/modules/tome/data/gfx/effects/zone_aura_fire.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b051171bd59fd3685fa52c25ece0389edaf2ece
Binary files /dev/null and b/game/modules/tome/data/gfx/effects/zone_aura_fire.png differ
diff --git a/game/modules/tome/data/gfx/effects/zone_aura_light.png b/game/modules/tome/data/gfx/effects/zone_aura_light.png
new file mode 100644
index 0000000000000000000000000000000000000000..62847bd48e432b6cfa2d5481229c0f379ab35c81
Binary files /dev/null and b/game/modules/tome/data/gfx/effects/zone_aura_light.png differ
diff --git a/game/modules/tome/data/gfx/effects/zone_aura_lightning.png b/game/modules/tome/data/gfx/effects/zone_aura_lightning.png
new file mode 100644
index 0000000000000000000000000000000000000000..8bd972553f3bd5b46b853f9365149dcac129acfd
Binary files /dev/null and b/game/modules/tome/data/gfx/effects/zone_aura_lightning.png differ
diff --git a/game/modules/tome/data/gfx/effects/zone_aura_mind.png b/game/modules/tome/data/gfx/effects/zone_aura_mind.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce030dca06cc52dbfe9051b9aca56d99125208f1
Binary files /dev/null and b/game/modules/tome/data/gfx/effects/zone_aura_mind.png differ
diff --git a/game/modules/tome/data/gfx/effects/zone_aura_nature.png b/game/modules/tome/data/gfx/effects/zone_aura_nature.png
new file mode 100644
index 0000000000000000000000000000000000000000..bafba0ad5c4754b2859cb394c423728e81e37881
Binary files /dev/null and b/game/modules/tome/data/gfx/effects/zone_aura_nature.png differ
diff --git a/game/modules/tome/data/gfx/effects/zone_aura_physical.png b/game/modules/tome/data/gfx/effects/zone_aura_physical.png
new file mode 100644
index 0000000000000000000000000000000000000000..f2b735f73e52901e46998a42cda99fc4836fd006
Binary files /dev/null and b/game/modules/tome/data/gfx/effects/zone_aura_physical.png differ
diff --git a/game/modules/tome/data/gfx/effects/zone_aura_temporal.png b/game/modules/tome/data/gfx/effects/zone_aura_temporal.png
new file mode 100644
index 0000000000000000000000000000000000000000..180f8d106b9f1702c1f2ef6d913f1b3031ebfd15
Binary files /dev/null and b/game/modules/tome/data/gfx/effects/zone_aura_temporal.png differ
diff --git a/game/modules/tome/data/timed_effects/other.lua b/game/modules/tome/data/timed_effects/other.lua
index 1f67aff59d722fbd676b0dcf3d83bfec221658fa..0e53d746662d22ef869422160ac81fb208c95b3d 100644
--- a/game/modules/tome/data/timed_effects/other.lua
+++ b/game/modules/tome/data/timed_effects/other.lua
@@ -617,7 +617,7 @@ newEffect{
 	type = "other",
 	subtype = { spacetime=true },
 	status = "detrimental",
-	cancel_on_level_change = true,
+	zone_wide_effect = true,
 	parameters = {},
 	on_merge = function(self, old_eff, new_eff)
 		return old_eff
@@ -1848,3 +1848,255 @@ newEffect{
 		end
 	end,
 }
+
+newEffect{
+	name = "ZONE_AURA_FIRE",
+	desc = "Oil mist",
+	no_stop_enter_worlmap = true,
+	long_desc = function(self, eff) return ("Zone-wide effect: +10% fire damage, -10% fire resistance, -10% armour, -2 sight range.") end,
+	decrease = 0, no_remove = true,
+	type = "other",
+	subtype = { aura=true },
+	status = "detrimental",
+	zone_wide_effect = true,
+	parameters = {},
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "resists", {[DamageType.FIRE]=-10})
+		self:effectTemporaryValue(eff, "inc_damage", {[DamageType.FIRE]=10})
+		self:effectTemporaryValue(eff, "sight", -2)
+		self:effectTemporaryValue(eff, "combat_armor", -math.ceil(self:combatArmor() * 0.1))
+	end,
+	deactivate = function(self, eff)
+	end,
+}
+
+newEffect{
+	name = "ZONE_AURA_COLD",
+	desc = "Grave chill",
+	no_stop_enter_worlmap = true,
+	long_desc = function(self, eff) return ("Zone-wide effect: +10% cold damage, -10% cold resistance, -10% physical save, -20% confusion immunity.") end,
+	decrease = 0, no_remove = true,
+	type = "other",
+	subtype = { aura=true },
+	status = "detrimental",
+	zone_wide_effect = true,
+	parameters = {},
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "resists", {[DamageType.COLD]=-10})
+		self:effectTemporaryValue(eff, "inc_damage", {[DamageType.COLD]=10})
+		self:effectTemporaryValue(eff, "confusion_immune", -0.2)
+		self:effectTemporaryValue(eff, "combat_physresist", -math.ceil(self:combatPhysicalResist(true) * 0.1))
+	end,
+	deactivate = function(self, eff)
+	end,
+}
+
+newEffect{
+	name = "ZONE_AURA_LIGHTNING",
+	desc = "Static discharge",
+	no_stop_enter_worlmap = true,
+	long_desc = function(self, eff) return ("Zone-wide effect: +10% lightning damage, -10% lightning resistance, -10% physical power, -20% stun immunity.") end,
+	decrease = 0, no_remove = true,
+	type = "other",
+	subtype = { aura=true },
+	status = "detrimental",
+	zone_wide_effect = true,
+	parameters = {},
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "resists", {[DamageType.LIGHTNING]=-10})
+		self:effectTemporaryValue(eff, "inc_damage", {[DamageType.LIGHTNING]=10})
+		self:effectTemporaryValue(eff, "stun_immune", -0.2)
+		self:effectTemporaryValue(eff, "combat_dam", -math.ceil(self:combatPhysicalpower() * 0.1))
+	end,
+	deactivate = function(self, eff)
+	end,
+}
+
+newEffect{
+	name = "ZONE_AURA_ACID",
+	desc = "Noxious fumes",
+	no_stop_enter_worlmap = true,
+	long_desc = function(self, eff) return ("Zone-wide effect: +10% acid damage, -10% acid resistance, -10% defense, -20% disarm immunity.") end,
+	decrease = 0, no_remove = true,
+	type = "other",
+	subtype = { aura=true },
+	status = "detrimental",
+	zone_wide_effect = true,
+	parameters = {},
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "resists", {[DamageType.ACID]=-10})
+		self:effectTemporaryValue(eff, "inc_damage", {[DamageType.ACID]=10})
+		self:effectTemporaryValue(eff, "disarm_immune", -0.2)
+		self:effectTemporaryValue(eff, "combat_def", -math.ceil(self:combatDefense(true) * 0.1))
+	end,
+	deactivate = function(self, eff)
+	end,
+}
+
+newEffect{
+	name = "ZONE_AURA_DARKNESS",
+	desc = "Echoes of the void",
+	no_stop_enter_worlmap = true,
+	long_desc = function(self, eff) return ("Zone-wide effect: +10% darkness damage, -10% darkness resistance, -10% mental save, -20% fear immunity.") end,
+	decrease = 0, no_remove = true,
+	type = "other",
+	subtype = { aura=true },
+	status = "detrimental",
+	zone_wide_effect = true,
+	parameters = {},
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "resists", {[DamageType.DARKNESS]=-10})
+		self:effectTemporaryValue(eff, "inc_damage", {[DamageType.DARKNESS]=10})
+		self:effectTemporaryValue(eff, "fear_immune", -0.2)
+		self:effectTemporaryValue(eff, "combat_mentalresist", -math.ceil(self:combatMentalResist(true) * 0.1))
+	end,
+	deactivate = function(self, eff)
+	end,
+}
+
+newEffect{
+	name = "ZONE_AURA_MIND",
+	desc = "Eerie silence",
+	no_stop_enter_worlmap = true,
+	long_desc = function(self, eff) return ("Zone-wide effect: +10% mind damage, -10% mind resistance, -10% spellpower, -20% silence immunity.") end,
+	decrease = 0, no_remove = true,
+	type = "other",
+	subtype = { aura=true },
+	status = "detrimental",
+	zone_wide_effect = true,
+	parameters = {},
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "resists", {[DamageType.MIND]=-10})
+		self:effectTemporaryValue(eff, "inc_damage", {[DamageType.MIND]=10})
+		self:effectTemporaryValue(eff, "silence_immune", -0.2)
+		self:effectTemporaryValue(eff, "combat_spellpower", -math.ceil(self:combatSpellpower() * 0.1))
+	end,
+	deactivate = function(self, eff)
+	end,
+}
+
+newEffect{
+	name = "ZONE_AURA_LIGHT",
+	desc = "Aura of light",
+	no_stop_enter_worlmap = true,
+	long_desc = function(self, eff) return ("Zone-wide effect: +10% light damage, -10% light resistance, -10% accuracy, -20% blind immunity.") end,
+	decrease = 0, no_remove = true,
+	type = "other",
+	subtype = { aura=true },
+	status = "detrimental",
+	zone_wide_effect = true,
+	parameters = {},
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "resists", {[DamageType.LIGHT]=-10})
+		self:effectTemporaryValue(eff, "inc_damage", {[DamageType.LIGHT]=10})
+		self:effectTemporaryValue(eff, "blind_immune", -0.2)
+		self:effectTemporaryValue(eff, "combat_atk", -math.ceil(self:combatAttack() * 0.1))
+	end,
+	deactivate = function(self, eff)
+	end,
+}
+
+newEffect{
+	name = "ZONE_AURA_ARCANE",
+	desc = "Aether residue",
+	no_stop_enter_worlmap = true,
+	long_desc = function(self, eff) return ("Zone-wide effect: +10% arcane damage, -10% arcane resistance, -10% armour hardiness, -20% stoning immunity.") end,
+	decrease = 0, no_remove = true,
+	type = "other",
+	subtype = { aura=true },
+	status = "detrimental",
+	zone_wide_effect = true,
+	parameters = {},
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "resists", {[DamageType.ARCANE]=-10})
+		self:effectTemporaryValue(eff, "inc_damage", {[DamageType.ARCANE]=10})
+		self:effectTemporaryValue(eff, "stone_immune", -0.2)
+		self:effectTemporaryValue(eff, "combat_armor_hardiness", -math.ceil(self:combatArmorHardiness() * 0.1))
+	end,
+	deactivate = function(self, eff)
+	end,
+}
+
+newEffect{
+	name = "ZONE_AURA_TEMPORAL",
+	desc = "Impossible geometries",
+	no_stop_enter_worlmap = true,
+	long_desc = function(self, eff) return ("Zone-wide effect: +10% temporal damage, -10% temporal resistance, -10% spell save, -20% pinning immunity.") end,
+	decrease = 0, no_remove = true,
+	type = "other",
+	subtype = { aura=true },
+	status = "detrimental",
+	zone_wide_effect = true,
+	parameters = {},
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "resists", {[DamageType.TEMPORAL]=-10})
+		self:effectTemporaryValue(eff, "inc_damage", {[DamageType.TEMPORAL]=10})
+		self:effectTemporaryValue(eff, "pin_immune", -0.2)
+		self:effectTemporaryValue(eff, "combat_spellresist", -math.ceil(self:combatSpellResist(true) * 0.1))
+	end,
+	deactivate = function(self, eff)
+	end,
+}
+
+newEffect{
+	name = "ZONE_AURA_PHYSICAL",
+	desc = "Uncontrolled anger",
+	no_stop_enter_worlmap = true,
+	long_desc = function(self, eff) return ("Zone-wide effect: +10% physical damage, -10% physical resistance, -10% mindpower, -20% knockback immunity.") end,
+	decrease = 0, no_remove = true,
+	type = "other",
+	subtype = { aura=true },
+	status = "detrimental",
+	zone_wide_effect = true,
+	parameters = {},
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "resists", {[DamageType.PHYSICAL]=-10})
+		self:effectTemporaryValue(eff, "inc_damage", {[DamageType.PHYSICAL]=10})
+		self:effectTemporaryValue(eff, "knockback_immune", -0.2)
+		self:effectTemporaryValue(eff, "combat_mindpower", -math.ceil(self:combatMindpower() * 0.1))
+	end,
+	deactivate = function(self, eff)
+	end,
+}
+
+newEffect{
+	name = "ZONE_AURA_BLIGHT",
+	desc = "Miasma",
+	no_stop_enter_worlmap = true,
+	long_desc = function(self, eff) return ("Zone-wide effect: +10% blight damage, -10% blight resistance, -20% healing mod, -20% disease immunity.") end,
+	decrease = 0, no_remove = true,
+	type = "other",
+	subtype = { aura=true },
+	status = "detrimental",
+	zone_wide_effect = true,
+	parameters = {},
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "resists", {[DamageType.BLIGHT]=-10})
+		self:effectTemporaryValue(eff, "inc_damage", {[DamageType.BLIGHT]=10})
+		self:effectTemporaryValue(eff, "stone_immune", -0.2)
+		self:effectTemporaryValue(eff, "healing_factor", -0.2)
+	end,
+	deactivate = function(self, eff)
+	end,
+}
+
+newEffect{
+	name = "ZONE_AURA_NATURE",
+	desc = "Slimy floor",
+	no_stop_enter_worlmap = true,
+	long_desc = function(self, eff) return ("Zone-wide effect: +10% nature damage, -10% nature resistance, -10% ranged defense, -20% poison immunity.") end,
+	decrease = 0, no_remove = true,
+	type = "other",
+	subtype = { aura=true },
+	status = "detrimental",
+	zone_wide_effect = true,
+	parameters = {},
+	activate = function(self, eff)
+		self:effectTemporaryValue(eff, "resists", {[DamageType.NATURE]=-10})
+		self:effectTemporaryValue(eff, "inc_damage", {[DamageType.NATURE]=10})
+		self:effectTemporaryValue(eff, "poison_immune", -0.2)
+		self:effectTemporaryValue(eff, "combat_def_ranged", -math.ceil(self:combatDefenseRanged(true) * 0.1))
+	end,
+	deactivate = function(self, eff)
+	end,
+}
diff --git a/game/modules/tome/data/zones/high-peak/zone.lua b/game/modules/tome/data/zones/high-peak/zone.lua
index 062147f7fee2232521b9f7b1588b4e36d3732fdf..d821cbdcb70775df147fe0567d17964a13372fb4 100644
--- a/game/modules/tome/data/zones/high-peak/zone.lua
+++ b/game/modules/tome/data/zones/high-peak/zone.lua
@@ -40,7 +40,7 @@ return {
 		map = {
 			class = "engine.generator.map.Roomer",
 			nb_rooms = 10,
-			rooms = {"random_room", {"pit",3}, {"lesser_vault",3}, {"greater_vault",5}},
+			rooms = {"random_room", {"pit",3}, {"lesser_vault",2}, {"greater_vault",3}},
 			rooms_config = {pit={filters={{type="orc"}, {type="naga"}, {type="dragon"}, {type="demon"}}}},
 			lesser_vaults_list = {"circle"},
 			lite_room_chance = 10,
@@ -83,6 +83,16 @@ return {
 				game.player:hasQuest("high-peak"):failed_charred_scar(level)
 			end
 		end
+
+		if level.level <= 10 then
+			local p = game.player
+			local effid = rng.table{
+				p.EFF_ZONE_AURA_FIRE, p.EFF_ZONE_AURA_COLD, p.EFF_ZONE_AURA_LIGHTNING, p.EFF_ZONE_AURA_ACID,
+				p.EFF_ZONE_AURA_DARKNESS, p.EFF_ZONE_AURA_MIND, p.EFF_ZONE_AURA_LIGHT, p.EFF_ZONE_AURA_ARCANE,
+				p.EFF_ZONE_AURA_TEMPORAL, p.EFF_ZONE_AURA_PHYSICAL, p.EFF_ZONE_AURA_BLIGHT, p.EFF_ZONE_AURA_NATURE,
+			}
+			level.data.effects = {effid}
+		end
 	end,
 	on_turn = function(self)
 		if not game.level.allow_portals then return end
diff --git a/ideas/todo b/ideas/todo
index 92ed6e9385e96899bd082bcc361f4c2ae7bf1648..21d846de98f2e5cfbf80bcf24b54c89321fca28c 100644
--- a/ideas/todo
+++ b/ideas/todo
@@ -1,7 +1,6 @@
 * RSS feed of events in a character's life, exportable to FB
 * auto-leveling for beginners/lazy
 * sleep => replace all talents with spcial dream talents, freeze all tmp effects
-* daze => ???
 
 after v1:
 * donator's fight club