diff --git a/game/engines/default/engine/ai/simple.lua b/game/engines/default/engine/ai/simple.lua
index 10e826531bd0e88edded8e3d108c0d44d50aaaca..2ac4679ff93d35ce8bc46a5b976cc613edf312cc 100644
--- a/game/engines/default/engine/ai/simple.lua
+++ b/game/engines/default/engine/ai/simple.lua
@@ -32,10 +32,6 @@ end)
 newAI("move_dmap", function(self)
 	if self.ai_target.actor and self.x and self.y then
 		local a = self.ai_target.actor
-		if self:hasLOS(a.x, a.y) then 
-			local simple = self:runAI("move_simple")
-			if simple then return simple end
-		end
 
 		local c = a:distanceMap(self.x, self.y)
 		if not c then return self:runAI("move_simple") end
@@ -43,60 +39,14 @@ newAI("move_dmap", function(self)
 		for _, i in ipairs(util.adjacentDirs()) do
 			local sx, sy = util.coordAddDir(self.x, self.y, i)
 			local cd = a:distanceMap(sx, sy)
-			print("looking for dmap", dir, i, "::", c, cd)
+--			print("looking for dmap", dir, i, "::", c, cd)
 			if cd and cd > c and self:canMove(sx, sy) then c = cd; dir = i end
 		end
 
-		if dir == 5 then
-			-- Make sure that we are indeed blocked
-			local simple = self:runAI("move_simple")
-			if simple then return simple end
-			-- Wait at least 5 turns of not moving before switching to blocked_astar
-			self.ai_state.blocked_turns = (self.ai_state.blocked_turns or 0) + 1
-			if self.ai_state.blocked_turns >= 5 then
-				self.ai_state._old_ai_move = self.ai_state.ai_move
-				self.ai_state.ai_move = "move_blocked_astar"
-				return self:runAI("move_blocked_astar")
-			end
-		elseif self.ai_state.blocked_turns then
-			self.ai_state.blocked_turns = self.ai_state.blocked_turns - 1
-			if self.ai_state.blocked_turns <= 0 then self.ai_state.blocked_turns = nil end
-		end
-
 		return self:moveDirection(util.coordAddDir(self.x, self.y, dir))
 	end
 end)
 
--- Use A* pathing if we were blocked for several turns, to avoid stacking up in simple chokepoints
-newAI("move_blocked_astar", function(self)
-	if self.ai_target.actor then
-		self.ai_state.blocked_turns = self.ai_state.blocked_turns - 1
-		if self.ai_state.blocked_turns <= 0 then
-			self.ai_state.ai_move = self.ai_state._old_ai_move
-			self.ai_state._old_ai_move = nil
-			self.ai_state.blocked_turns = nil
-			return self:runAI(self.ai_state.ai_move or "move_simple")
-		else
-			local check_all_block_move = function(nx, ny)
-				local actor = game.level.map(nx, ny, engine.Map.ACTOR)
-				if actor and actor == self.ai_target.actor then
-					return true
-				else
-					return not game.level.map:checkAllEntities(nx, ny, "block_move", self)
-				end
-			end
-			local astar = self:runAI("move_astar", check_all_block_move)
-			-- If A* did not work we add a penalty to trying A* again
-			if not astar then
-				self.ai_state.ai_move = self.ai_state._old_ai_move
-				self.ai_state._old_ai_move = nil
-				self.ai_state.blocked_turns = -5
-			end
-			return astar
-		end
-	end
-end)
-
 newAI("flee_dmap", function(self)
 	if self.ai_target.actor then
 		local a = self.ai_target.actor
@@ -165,6 +115,79 @@ newAI("move_astar", function(self, add_check)
 	end
 end)
 
+-- Use A* pathing if we were blocked for several turns, to avoid stacking up in simple chokepoints
+newAI("move_blocked_astar", function(self)
+	if self.ai_target.actor then
+		self.ai_state.blocked_turns = self.ai_state.blocked_turns - 1
+		if self.ai_state.blocked_turns <= 0 then
+			self.ai_state.ai_move = self.ai_state._old_ai_move
+			self.ai_state._old_ai_move = nil
+			self.ai_state.blocked_turns = nil
+			return self:runAI(self.ai_state.ai_move or "move_simple")
+		else
+			local check_all_block_move = function(nx, ny)
+				local actor = game.level.map(nx, ny, engine.Map.ACTOR)
+				if actor and actor == self.ai_target.actor then
+					return true
+				else
+					return not game.level.map:checkAllEntities(nx, ny, "block_move", self)
+				end
+			end
+			local astar = self:runAI("move_astar", check_all_block_move)
+			-- If A* did not work we add a penalty to trying A* again
+			if not astar then
+				self.ai_state.ai_move = self.ai_state._old_ai_move
+				self.ai_state._old_ai_move = nil
+				self.ai_state.blocked_turns = -5
+			end
+			return astar
+		end
+	end
+end)
+
+newAI("move_complex", function(self)
+	if self.ai_target.actor and self.x and self.y then
+		local moved
+		-- Can we use A* due to damage?
+		if not moved and self.ai_state.damaged_turns and self.ai_state.damaged_turns > 0 then
+			moved = self:runAI("move_astar")
+		end
+
+		-- Check if we can use dmap
+		if not moved then
+			moved = self:runAI("move_dmap")
+		end
+
+		-- Check blocking
+		if not moved then 
+			-- Make sure that we are indeed blocked
+			moved = self:runAI("move_simple")
+			if not moved then
+				-- Wait at least 5 turns of not moving before switching to blocked_astar
+				-- add 2 since we remove 1 every turn
+				self.ai_state.blocked_turns = (self.ai_state.blocked_turns or 0) + 2
+				if self.ai_state.blocked_turns >= 5 then
+					self.ai_state._old_ai_move = self.ai_state.ai_move
+					self.ai_state.ai_move = "move_blocked_astar"
+					moved = self:runAI("move_blocked_astar")
+				end
+			end
+		end
+
+		-- Tick down the ai_state counters
+		if self.ai_state.damaged_turns then
+			self.ai_state.damaged_turns = self.ai_state.damaged_turns - 1
+			if self.ai_state.damaged_turns <= 0 then self.ai_state.damaged_turns = nil end
+		end
+		if self.ai_state.blocked_turns then
+			self.ai_state.blocked_turns = self.ai_state.blocked_turns - 1
+			if self.ai_state.blocked_turns <= 0 then self.ai_state.blocked_turns = nil end
+		end
+
+		return moved
+	end
+end)
+
 -- Find an hostile target
 -- this requires the ActorFOV interface, or an interface that provides self.fov.actors*
 newAI("target_simple", function(self)
diff --git a/game/modules/tome/ai/shadow.lua b/game/modules/tome/ai/shadow.lua
index 1a8000bf3818dd133a8986369a7fe4f4784513b3..a9675489ddba81f266449cccc0282ad3beb8c105 100644
--- a/game/modules/tome/ai/shadow.lua
+++ b/game/modules/tome/ai/shadow.lua
@@ -99,10 +99,10 @@ local function shadowMoveToActorTarget(self)
 	end
 
 	-- move to target
-	if self:runAI("move_dmap") then
+	if self:runAI("move_complex") then
 		self.turns_on_target = (self.turns_on_target or 0) + 1
 
-		--game.logPlayer(self.summoner, "#PINK#%s -> move_dmap", self.name:capitalize())
+		--game.logPlayer(self.summoner, "#PINK#%s -> move_complex", self.name:capitalize())
 		return true
 	end
 
diff --git a/game/modules/tome/ai/tactical.lua b/game/modules/tome/ai/tactical.lua
index 76d9a065d9445c225f7216a5a7c4949ae12d4424..3aa22b0f3a280b7dc7e81db99db0b42ba8c374ab 100644
--- a/game/modules/tome/ai/tactical.lua
+++ b/game/modules/tome/ai/tactical.lua
@@ -19,7 +19,7 @@
 
 local DamageType = require "engine.DamageType"
 
-local print = function() end
+--local print = function() end
 
 local canFleeDmapKeepLos = function(self)
 	if self.never_move then return false end -- Dont move, dont flee
@@ -393,14 +393,10 @@ newAI("tactical", function(self)
 	end
 
 	if targeted and not self.energy.used then
-		game.log("%s thinks the player is at %d/%d", self.name:capitalize(), ax, ay)
 		if special_move then
-			game.log("%s moving with %s", self.name:capitalize(), special_move)
 			return self:runAI(special_move)
 		elseif self.ai_tactic.safe_range and not self:hasLOS(ax, ay) then
 			local moved = self:runAI("flee_dmap_keep_los")
-			if moved then game.log("%s moving with %s", self.name:capitalize(), "flee_dmap_keep_los") return moved end
-			game.log("%s moving with %s", self.name:capitalize(), self.ai_state.ai_move or "move_simple")
 			return self:runAI(self.ai_state.ai_move or "move_simple")
 		else
 			return self:runAI(self.ai_state.ai_move or "move_simple")
diff --git a/game/modules/tome/class/NPC.lua b/game/modules/tome/class/NPC.lua
index f3b143ed8a912a07a9c9caf0005585d03a0e0802..caebde0940f0dcac0d2691b78fb9f603cd0b4b13 100644
--- a/game/modules/tome/class/NPC.lua
+++ b/game/modules/tome/class/NPC.lua
@@ -200,7 +200,7 @@ function _M:checkAngered(src, set, value)
 	end
 end
 
---- Counts down timedEffects, but need to avoid the move_damaged_astar pathing
+--- Counts down timedEffects, but need to avoid the damaged A* pathing
 function _M:timedEffects(filter)
 	self._in_timed_effects = true
 	mod.class.Actor.timedEffects(self, filter)
@@ -218,9 +218,7 @@ function _M:onTakeHit(value, src)
 
 	-- Switch to astar pathing temporarily
 	if src and src == self.ai_target.actor and not self._in_timed_effects then
-		self.ai_state._old_ai_move = self.ai_state._old_ai_move or self.ai_state.ai_move
-		self.ai_state.ai_move = "move_damaged_astar"
-		self.ai_state.switch_move = 10
+		self.ai_state.damaged_turns = 10
 	end
 
 	-- Get angry if attacked by a friend
diff --git a/game/modules/tome/class/generator/actor/Arena.lua b/game/modules/tome/class/generator/actor/Arena.lua
index 6d70d6b0bed2c3ae9da311ca03094b2a142bb19c..c55e6ee750e3d44864dbec83f658b5f28ee73eb4 100644
--- a/game/modules/tome/class/generator/actor/Arena.lua
+++ b/game/modules/tome/class/generator/actor/Arena.lua
@@ -32,6 +32,230 @@ function _M:init(zone, map, level, spots)
 	self.turn_scale = game.energy_per_tick / game.energy_to_act
 end
 
+_M.mooks = {
+	{ entity = { type = "vermin", subtype = "rodent" }, --Wave 1
+		wave = 4, power = 2, delay = 3, bonus = 0.1, score = 5, entry = 2,
+		special = function (self) if game.level.arena.bonusMultiplier > 7 then self.entity = {name="giant crystal rat"} self.power = 4 self.wave = 6 end return self end },
+	{ entity = { type = "insect", subtype = "ant" },
+		wave = 2, power = 2, delay = 2, bonus = 0.1, score = 15 , entry = 2 },
+	{ entity = { name = "homeless fighter" },
+		wave = 1, power = 3, delay = 4, bonus = 0.2, score = 20, entry = 2 },
+	{ entity = { type = "animal", subtype = "canine" },
+		wave = 2, power = 3, delay = 3, bonus = 0.1 , score = 25, entry = 2 },
+	{ entity = { name = "white ooze" },
+		wave = 1, power = 3, delay = 3, bonus = 0.1, score = 15, entry = 2,
+		special = function (self) if game.level.arena.currentWave > 10 then self.wave = 2 end if game.level.arena.currentWave > 15 then self.entity = { name = "green ooze" } end return self end },
+	{ entity = { name = "cutpurse" }, --Wave ~5
+		wave = 1, power = 8, delay = 3, bonus = 0.1, score = 40, entry = 1 },
+
+
+	{ entity = { name = "white crystal" },
+		wave = 1, power = 5, delay = 4, bonus = 0.5 , score = 100, entry = 3},
+	{ entity = { name = "slinger" },
+		wave = 1, power = 7, delay = 4, bonus = 0.2, score = 100, entry = 1,
+		special = function (self) if game.level.arena.currentWave > 35 then self.entity = { name = "high slinger" } end return self end },
+	{ entity = { name = "dremling" },
+		wave = 1, power = 6, delay = 2, bonus = 0.3 , score = 100, entry = 2,
+		special = function (self) if game.level.arena.currentWave > 15 then self.wave = 2 end return self end },
+	{ entity = { name = "brown bear" },
+		wave = 1, power = 4, delay = 3, bonus = 0.2, score = 100 , entry = 2},
+	{ entity = { type = "animal", subtype = "snake" },
+		wave = 2, power = 4, delay = 3, bonus = 0.1, score = 100 , entry = 2},
+
+
+	{ entity = { type = "humanoid", subtype = "human", name = "rogue" }, --Wave ~10
+		wave = 1, power = 6, delay = 3, bonus = 0.2, score = 100 , entry = 1,
+		special = function (self) if game.level.arena.currentWave > 30 then self.wave = 2 end return self end },
+	{ entity = { type = "animal", subtype = "bear" },
+		wave = 2, power = 4, delay = 5, bonus = 0.3, score = 80, entry = 2 },
+	{ entity = { name = "drem" },
+		wave = 1, power = 7, delay = 3, bonus = 0.4 , score = 100, entry = 2},
+	{ entity = { type = "vermin", subtype = "ooze" },
+		wave = 4, power = 3, delay = 2, bonus = 0.1, score = 15, entry = 2 },
+	{ entity = { type = "undead", subtype = "skeleton" },
+		wave = 1, power = 8, delay = 4, bonus = 0.2, score = 120, entry = 2,
+		special = function (self) if game.level.arena.currentWave > 15 then self.wave = 2 end return self end },
+
+
+	{ entity = { name = "ghoul" },
+		wave = 1, power = 7, delay = 5, bonus = 0.2, score = 150, entry = 1,
+		special = function (self) if game.level.arena.currentWave > 20 then self.wave, self.entry = 2, 2 end return self end },
+	{ entity = { type = "humanoid", subtype = "human", name = "alchemist" },
+		wave = 1, power = 9, delay = 3, bonus = 0.2, score = 150, entry = 1,
+		special = function (self) if game.level.arena.currentWave > 25 then self.wave = 2 end return self end },
+	{ entity = { type = "immovable", subtype = "crystal" },
+		wave = 2, power = 5, delay = 3, bonus = 0.5 , score = 100, entry = 3,
+		special = function (self) if game.level.arena.currentWave > 20 then self.wave = 3 end if game.level.arena.currentWave > 45 then self.wave = 4 end return self end },
+	{ entity = { type = "giant", subtype = "troll" },
+		wave = 1, power = 4, delay = 2, bonus = 0.2 , score = 150, entry = 1 },
+	{ entity = { name = "blood mage" },
+		wave = 1, power = 10, delay = 2, bonus = 0.5 , score = 200, entry = 1 },
+
+
+	{ entity = { name = "honey tree" },
+		wave = 1, power = 4, delay = 3, bonus = 0.3 , score = 120, entry = 3,
+		special = function (self) if game.level.arena.currentWave > 35 then self.wave, self.score  = 2, 150 end return self end },
+	{ entity = { name = "skeleton mage" },
+		wave = 1, power = 10, delay = 4, bonus = 0.3, score = 150 , entry = 1,
+		special = function (self) if game.player.level > 10 then self.wave = 2 end return self end },
+	{ entity = { name = "high gladiator" },
+		wave = 1, power = 6, delay = 1, bonus = 0.3, score = 200, entry = 1,
+		special = function (self) if game.level.arena.currentWave > 30 then self.wave = 2 end return self end },
+	{ entity = { name = "wisp" },
+		wave = 4, power = 1, delay = 1, bonus = 0.3, score = 50 , entry = 3 },
+	{ entity = { name = "minotaur" },
+		wave = 1, power = 12, delay = 3, bonus = 0.3, score = 150 , entry = 2 },
+
+
+	{ entity = { name = "shadowblade" },
+		wave = 1, power = 13, delay = 1, bonus = 0.4, score = 200 , entry = 1 },
+	{ entity = { name = "trickster" },
+		wave = 1, power = 13, delay = 3, bonus = 0.4, score = 50 , entry = 1 },
+	{ entity = { name = "orc soldier" },
+		wave = 1, power = 10, delay = 4, bonus = 0.3, score = 150 , entry = 1,
+		special = function (self) if game.level.arena.currentWave > 25 then self.entity = {type = "humanoid", subtype = "orc"} end return self end },
+	{ entity = { name = "bone giant" },
+		wave = 1, power = 11, delay = 3, bonus = 0.3, score = 150 , entry = 2,
+		special = function (self) if game.player.level > 30 then self.wave, self.power = 2, 8 end return self end },
+	{ entity = { name = "ziguranth warrior" },
+		wave = 2, power = 8, delay = 2, bonus = 0.3, score = 130 , entry = 1 },
+	{ entity = { name = "orc archer" },
+		wave = 2, power = 10, delay = 5, bonus = 0.2, score = 100, entry = 2,
+		special = function (self) if game.player.level > 25 then self.wave, self.score  = 3, 125 end if game.player.level > 35 then self.wave, self.score  = 4, 150 end return self end },
+
+
+	{ entity = { name = "hexer" },
+		wave = 1, power = 13, delay = 1, bonus = 0.5 , score = 250, entry = 1 },
+	{ entity = { name = "wisp" },
+		wave = 6, power = 1, delay = 1, bonus = 0.3, score = 50 , entry = 3 },
+	{ entity = { name = "orc assassin" },
+		wave = 2, power = 10, delay = 4, bonus = 0.2, score = 200, entry = 2 },
+	{ entity = { name = "fire wyrmic" }, entitySub = { name = "ice wyrmic"},
+		wave = 1, power = 11, delay = 3, bonus = 0.3, score = 250, entry = 1 },
+	{ entity = { name = "sand wyrmic" }, entitySub = { name = "storm wyrmic" },
+		wave = 1, power = 11, delay = 3, bonus = 0.3, score = 250, entry = 1 },
+
+
+	{ entity = { name = "martyr" },
+		wave = 1, power = 13, delay = 1, bonus = 0.5 , score = 250, entry = 1 },
+	{ entity = { type = "vermin", subtype = "sandworm" },
+		wave = 1, power = 10, delay = 3, bonus = 0.2, score = 200, entry = 2 },
+	{ entity = { name = "ritch larva" },
+		wave = 2, power = 4, delay = 3, bonus = 0.1, score = 150, entry = 2 },
+	{ entity = { type = "giant", subtype = "ice" },
+		wave = 1, power = 8, delay = 2, bonus = 0.5, score = 300, entry = 1 },
+	{ entity = { name = "naga myrmidon" },
+		wave = 1, power = 9, delay = 2, bonus = 0.3, score = 300, entry = 1,
+		special = function (self) if game.level.arena.currentWave > 40 then self.wave = 2 end return self end },
+
+
+	{ entity = { name = "quasit" },
+		wave = 1, power = 9, delay = 2, bonus = 0.2, score = 300, entry = 2 },
+	{ entity = { name = "wretchling" },
+		wave = 1, power = 10, delay = 3, bonus = 0.3, score = 250, entry = 2,
+		special = function (self) if game.player.level > 25 then self.wave = 3 end if game.player.level > 35 then self.wave = 4 end return self end },
+	{ entity = { name = "great gladiator" },
+		wave = 2, power = 9, delay = 3, bonus = 0.3, score = 300, entry = 1 },
+	{ entity = { name = "bloated horror" },
+		wave = 2, power = 11, delay = 2, bonus = 0.4, score = 300, entry = 3 },
+	{ entity = { name = "umber hulk" },
+		wave = 1, power = 10, delay = 3, bonus = 0.3, score = 350, entry = 1 },
+
+
+	{ entity = { name = "anorithil" },
+		wave = 1, power = 10, delay = 2, bonus = 0.5, score = 450, entry = 1 },
+	{ entity = { name = "naga tide huntress" },
+		wave = 1, power = 10, delay = 2, bonus = 0.3, score = 300, entry = 2 },
+	{ entity = { name = "ritch hunter" },
+		wave = 4, power = 6, delay = 5, bonus = 0.4, score = 250, entry = 2 },
+	{ entity = { type = "undead", subtype = "wight" },
+		wave = 1, power = 11, delay = 2, bonus = 0.5, score = 400, entry = 1 },
+	{ entity = { name = "sun paladin" },
+		wave = 1, power = 12, delay = 2, bonus = 1, score = 450, entry = 1 },
+
+
+	{ entity = { name = "dread" },
+		wave = 1, power = 13, delay = 2, bonus = 1, score = 450, entry = 2 },
+	{ entity = { name = "naga psyren" },
+		wave = 1, power = 10, delay = 2, bonus = 0.3, score = 400, entry = 2 },
+	{ entity = { name = "star crusader" },
+		wave = 1, power = 14, delay = 2, bonus = 1, score = 450, entry = 2 },
+}
+
+_M.miniboss = {
+	{ name = "SKELERAT", wave = 4, entry = 2, display = "Skeletal rats", score = 100, power = 5, rank = 0.1 },
+	{ name = "GLADIATOR", wave = 2, entry = 1, display = "Gladiators", score = 150, power = 10, rank = 0.2 },
+	{ nil },
+	{ name = "GOLDCRYSTAL", wave = 4, entry = 3, display = "Golden crystals", score = 250, power = 15, rank = 0.1 },
+	{ name = "MASTERSLINGER", wave = 3, entry = 2, display = "Master slingers", score = 350, power = 20, rank = 0.2 },
+	{ nil },
+	{ name = "MASTERALCHEMIST", wave = 1, entry = 1, display = "Master Alchemist", score = 400, power = 25, rank = 0.5 },
+	{ name = "MULTIHUEWYRMIC", wave = 1, entry = 1, display = "Multi-hued Wyrmic", score = 400, power = 30, rank = 0.5 },
+	{ nil },
+	{ name = "REAVER", wave = 2, entry = 2, display = "Reaver", score = 800, power = 40, rank = 0.3 },
+	{ name = "HEADLESSHORROR", wave = 1, entry = 1, display = "Headless horror", score = 1000, power = 50, rank = 1 },
+}
+
+_M.bosses = {
+	{ name = "ARENA_BOSS_RYAL", display = "Ryal the Towering", chat = "arena_boss_ryal",
+	score = 1500, power = 35,
+	start = function ()
+		local Chat = require "engine.Chat"
+		local chat = Chat.new("arena", {name="Boss fight!"}, game.player)
+		chat:invoke("ryal-entry")
+	end,
+	finish = function ()
+		local Chat = require "engine.Chat"
+		local chat = Chat.new("arena", {name="Victory!!"}, game.player)
+		chat:invoke("ryal-defeat")
+	end
+	},
+	{ name = "ARENA_BOSS_FRYJIA", display = "Fryjia the Hailstorm", chat= "arena_boss_fryjia",
+	score = 2500, power = 55,
+	start = function ()
+		local Chat = require "engine.Chat"
+		local chat = Chat.new("arena", {name="Boss fight!"}, game.player)
+		chat:invoke("fryjia-entry")
+	end,
+	finish = function ()
+		local Chat = require "engine.Chat"
+		local chat = Chat.new("arena", {name="Victory!!"}, game.player)
+		chat:invoke("fryjia-defeat")
+	end
+	},
+	{ name = "ARENA_BOSS_RIALA", display = "Riala the Crimson", chat = "arena_boss_riala",
+	score = 3500, power = 85,
+	start = function ()
+		local Chat = require "engine.Chat"
+		local chat = Chat.new("arena", {name="Boss fight!"}, game.player)
+		chat:invoke("riala-entry")
+	end,
+	finish = function ()
+		local Chat = require "engine.Chat"
+		local chat = Chat.new("arena", {name="Victory!!"}, game.player)
+		chat:invoke("riala-defeat")
+	end
+	},
+	{ name = "ARENA_BOSS_VALFREN", display = "Valfren the Rampage", chat = "arena_boss_valfren",
+	score = 4500, power = 125,
+	start = function ()
+		game.level.map:setShown(0.3, 0.3, 0.3, 1)
+		game.level.map:setObscure(0.3*0.6, 0.3*0.6, 0.3*0.6, 1)
+		local Chat = require "engine.Chat"
+		local chat = Chat.new("arena", {name="Boss fight!"}, game.player)
+		chat:invoke("valfren-entry")
+	end,
+	finish = function ()
+		game.level.map:setShown(1, 1, 1, 1)
+		game.level.map:setObscure(1*0.6, 1*0.6, 1*0.6, 1)
+		local Chat = require "engine.Chat"
+		local chat = Chat.new("arena", {name="Victory!!"}, game.player)
+		chat:invoke("valfren-defeat")
+	end
+	},
+}
+
+
 function _M:tick()
 	if game.level.arena.initEvent == true and game.level.arena.lockEvent == false then
 		game.level.arena.lockEvent = true
@@ -73,19 +297,7 @@ function _M:mitigateDelay(val, l)
 end
 
 function _M:summonMiniboss(val)
-	local miniboss = {
-		{ name = "SKELERAT", wave = 4, entry = 2, display = "Skeletal rats", score = 100, power = 5, rank = 0.1 },
-		{ name = "GLADIATOR", wave = 2, entry = 1, display = "Gladiators", score = 150, power = 10, rank = 0.2 },
-		{ nil },
-		{ name = "GOLDCRYSTAL", wave = 4, entry = 3, display = "Golden crystals", score = 250, power = 15, rank = 0.1 },
-		{ name = "MASTERSLINGER", wave = 3, entry = 2, display = "Master slingers", score = 350, power = 20, rank = 0.2 },
-		{ nil },
-		{ name = "MASTERALCHEMIST", wave = 1, entry = 1, display = "Master Alchemist", score = 400, power = 25, rank = 0.5 },
-		{ name = "MULTIHUEWYRMIC", wave = 1, entry = 1, display = "Multi-hued Wyrmic", score = 400, power = 30, rank = 0.5 },
-		{ nil },
-		{ name = "REAVER", wave = 2, entry = 2, display = "Reaver", score = 800, power = 40, rank = 0.3 },
-		{ name = "HEADLESSHORROR", wave = 1, entry = 1, display = "Headless horror", score = 1000, power = 50, rank = 1 },
-	}
+	local miniboss = self.miniboss
 	local e = miniboss[val] or miniboss[1]
 	for i = 1, e.wave do
 		self:generateMiniboss(e)
@@ -118,7 +330,7 @@ function _M:generateMiniboss(e)
 			game.level.arena.danger = game.level.arena.danger + self.arenaPower
 			game.level.map:particleEmitter(self.x, self.y, 1, "teleport")
 			game.level.arena.pinchValue = game.level.arena.pinchValue + self.arenaPower
-			self.on_added = nil
+			self.on_added  = nil
 		end
 		if m.on_die then m.on_die_orig = m.on_die end
 		m.on_die = function (self)
@@ -150,66 +362,8 @@ function _M:place(m, entry, elite)
 	end
 end
 
-
 function _M:generateBoss(val)
-	local bosses = {
-		{ name = "ARENA_BOSS_RYAL", display = "Ryal the Towering", chat = "arena_boss_ryal",
-		score = 1500, power = 35,
-		start = function ()
-			local Chat = require "engine.Chat"
-			local chat = Chat.new("arena", {name="Boss fight!"}, game.player)
-			chat:invoke("ryal-entry")
-		end,
-		finish = function ()
-			local Chat = require "engine.Chat"
-			local chat = Chat.new("arena", {name="Victory!!"}, game.player)
-			chat:invoke("ryal-defeat")
-		end
-		},
-		{ name = "ARENA_BOSS_FRYJIA", display = "Fryjia the Hailstorm", chat= "arena_boss_fryjia",
-		score = 2500, power = 55,
-		start = function ()
-			local Chat = require "engine.Chat"
-			local chat = Chat.new("arena", {name="Boss fight!"}, game.player)
-			chat:invoke("fryjia-entry")
-		end,
-		finish = function ()
-			local Chat = require "engine.Chat"
-			local chat = Chat.new("arena", {name="Victory!!"}, game.player)
-			chat:invoke("fryjia-defeat")
-		end
-		},
-		{ name = "ARENA_BOSS_RIALA", display = "Riala the Crimson", chat = "arena_boss_riala",
-		score = 3500, power = 85,
-		start = function ()
-			local Chat = require "engine.Chat"
-			local chat = Chat.new("arena", {name="Boss fight!"}, game.player)
-			chat:invoke("riala-entry")
-		end,
-		finish = function ()
-			local Chat = require "engine.Chat"
-			local chat = Chat.new("arena", {name="Victory!!"}, game.player)
-			chat:invoke("riala-defeat")
-		end
-		},
-		{ name = "ARENA_BOSS_VALFREN", display = "Valfren the Rampage", chat = "arena_boss_valfren",
-		score = 4500, power = 125,
-		start = function ()
-			game.level.map:setShown(0.3, 0.3, 0.3, 1)
-			game.level.map:setObscure(0.3*0.6, 0.3*0.6, 0.3*0.6, 1)
-			local Chat = require "engine.Chat"
-			local chat = Chat.new("arena", {name="Boss fight!"}, game.player)
-			chat:invoke("valfren-entry")
-		end,
-		finish = function ()
-			game.level.map:setShown(1, 1, 1, 1)
-			game.level.map:setObscure(1*0.6, 1*0.6, 1*0.6, 1)
-			local Chat = require "engine.Chat"
-			local chat = Chat.new("arena", {name="Victory!!"}, game.player)
-			chat:invoke("valfren-defeat")
-		end
-		},
-	}
+	local bosses = self.bosses
 	local e = bosses[val] or bosses[1]
 	local m = self.zone:makeEntityByName(self.level, "actor", e.name)
 	if m then
@@ -280,6 +434,7 @@ function _M:generateMaster()
 				local Chat = require "engine.Chat"
 				local chat = Chat.new("arena", {name="Congratulations!"}, game.player)
 				chat:invoke("master-defeat")
+
 			end
 			self.zone:addEntity(self.level, m, "actor", 7, 1)
 			local rank = math.floor(game.level.arena.rank)
@@ -301,21 +456,21 @@ function _M:generateMaster()
 				self.alchemy_golem.faction = self.faction
 				self.alchemy_golem.life = self.alchemy_golem.max_life
 				game.zone:addEntity(game.level, self.alchemy_golem, "actor", 8, 2)
+				self.on_added = nil
 			end
 			game.level.arena.danger = game.level.arena.danger + 1000
 			game.level.map:particleEmitter(self.x, self.y, 3, "teleport")
 			game:playSoundNear(game.player, "talents/teleport")
 			game.level.arena.pinchValue = game.level.arena.pinchValue + 100
-			self.on_added = nil
 		end
 		m.on_die = function (self)
 			game.level.arena.danger = 0
 			game.level.arena.bonus = 100
 			game.level.map:particleEmitter(self.x, self.y, 1, "ball_fire", {radius = 3})
 			game.level.arena.clear()
-			self.on_die = nil
 			local Chat = require "engine.Chat"
 			local chat = Chat.new("arena", {name="Congratulations!"}, game.player)
+			self.on_die = nil
 			chat:invoke("master-defeat")
 
 		end
@@ -327,137 +482,8 @@ end
 
 function _M:calculateWave()
 --TODO:Apply some reduction in delay based on current wave.
-	local foe = {
---Relative cannon fodder.
-		{ entity = { type = "vermin", subtype = "rodent" }, --Wave 1
-			wave = 4, power = 2, delay = 3, bonus = 0.1, score = 5, entry = 2,
-			special = function (self) if game.level.arena.bonusMultiplier > 7 then self.entity = {name="giant crystal rat"} self.power = 4 self.wave = 6 end return self end },
-		{ entity = { type = "insect", subtype = "ant" },
-			wave = 2, power = 2, delay = 2, bonus = 0.1, score = 15 , entry = 2 },
-		{ entity = { type = "animal", subtype = "canine" },
-			wave = 2, power = 3, delay = 3, bonus = 0.1 , score = 25, entry = 2 },
-		{ entity = { name = "white ooze" },
-			wave = 1, power = 3, delay = 3, bonus = 0.1, score = 15, entry = 2,
-			special = function (self) if game.level.arena.currentWave > 10 then self.wave = 2 end if game.level.arena.currentWave > 15 then self.entity = { name = "green ooze" } end return self end },
-
-		{ entity = { name = "cutpurse" }, --Wave ~5
-			wave = 1, power = 8, delay = 3, bonus = 0.1, score = 40, entry = 1 },
-		{ entity = { name = "white crystal" },
-			wave = 1, power = 5, delay = 4, bonus = 0.5 , score = 100, entry = 3},
-		{ entity = { name = "slinger" },
-			wave = 1, power = 7, delay = 4, bonus = 0.2, score = 100, entry = 1,
-			special = function (self) if game.level.arena.currentWave > 35 then self.entity = { name = "high slinger" } end return self end },
-		{ entity = { name = "dremling" },
-			wave = 1, power = 6, delay = 2, bonus = 0.3 , score = 100, entry = 2,
-			special = function (self) if game.level.arena.currentWave > 15 then self.wave = 2 end return self end },
-		{ entity = { name = "brown bear" },
-			wave = 1, power = 4, delay = 3, bonus = 0.2, score = 100 , entry = 2},
-		{ entity = { type = "animal", subtype = "snake" },
-			wave = 2, power = 4, delay = 3, bonus = 0.1, score = 100 , entry = 2},
-		{ entity = { type = "humanoid", subtype = "human", name = "rogue" }, --Wave ~10
-			wave = 1, power = 6, delay = 3, bonus = 0.2, score = 100 , entry = 1,
-			special = function (self) if game.level.arena.currentWave > 30 then self.wave = 2 end return self end },
-		{ entity = { type = "animal", subtype = "bear" },
-			wave = 2, power = 4, delay = 5, bonus = 0.3, score = 80, entry = 2 },
-		{ entity = { name = "drem" },
-			wave = 1, power = 7, delay = 3, bonus = 0.4 , score = 100, entry = 2},
-		{ entity = { type = "vermin", subtype = "ooze" },
-			wave = 4, power = 3, delay = 2, bonus = 0.1, score = 15, entry = 2 },
-		{ entity = { type = "undead", subtype = "skeleton" },
-			wave = 1, power = 8, delay = 4, bonus = 0.2, score = 120, entry = 2,
-			special = function (self) if game.level.arena.currentWave > 15 then self.wave = 2 end return self end },
-		{ entity = { name = "ghoul" },
-			wave = 1, power = 7, delay = 5, bonus = 0.2, score = 150, entry = 1,
-			special = function (self) if game.level.arena.currentWave > 20 then self.wave, self.entry = 2, 2 end return self end },
-		{ entity = { type = "humanoid", subtype = "human", name = "alchemist" },
-			wave = 1, power = 9, delay = 3, bonus = 0.2, score = 150, entry = 1,
-			special = function (self) if game.level.arena.currentWave > 25 then self.wave = 2 end return self end },
-		{ entity = { type = "immovable", subtype = "crystal" },
-			wave = 2, power = 5, delay = 3, bonus = 0.5 , score = 100, entry = 3,
-			special = function (self) if game.level.arena.currentWave > 20 then self.wave = 3 end if game.level.arena.currentWave > 45 then self.wave = 4 end return self end },
-		{ entity = { type = "giant", subtype = "troll" },
-			wave = 1, power = 4, delay = 2, bonus = 0.2 , score = 150, entry = 1 },
-		{ entity = { name = "blood mage" },
-			wave = 1, power = 10, delay = 2, bonus = 0.5 , score = 200, entry = 1 },
-		{ entity = { name = "honey tree" },
-			wave = 1, power = 4, delay = 3, bonus = 0.3 , score = 120, entry = 3,
-			special = function (self) if game.level.arena.currentWave > 35 then self.wave, self.score  = 2, 150 end return self end },
-		{ entity = { name = "skeleton mage" },
-			wave = 1, power = 10, delay = 4, bonus = 0.3, score = 150 , entry = 1,
-			special = function (self) if game.player.level > 10 then self.wave = 2 end return self end },
-		{ entity = { name = "high gladiator" },
-			wave = 1, power = 6, delay = 1, bonus = 0.3, score = 200, entry = 1,
-			special = function (self) if game.level.arena.currentWave > 30 then self.wave = 2 end return self end },
-		{ entity = { name = "wisp" },
-			wave = 4, power = 1, delay = 1, bonus = 0.3, score = 50 , entry = 3 },
-		{ entity = { name = "minotaur" },
-			wave = 1, power = 12, delay = 3, bonus = 0.3, score = 150 , entry = 2 },
-		{ entity = { name = "shadowblade" },
-			wave = 1, power = 13, delay = 1, bonus = 0.4, score = 200 , entry = 1 },
-		{ entity = { name = "trickster" },
-			wave = 1, power = 13, delay = 3, bonus = 0.4, score = 50 , entry = 1 },
-		{ entity = { name = "orc soldier" },
-			wave = 1, power = 10, delay = 4, bonus = 0.3, score = 150 , entry = 1,
-			special = function (self) if game.level.arena.currentWave > 25 then self.entity = {type = "humanoid", subtype = "orc"} end return self end },
-		{ entity = { name = "bone giant" },
-			wave = 1, power = 11, delay = 3, bonus = 0.3, score = 150 , entry = 2,
-			special = function (self) if game.player.level > 30 then self.wave, self.power = 2, 8 end return self end },
-		{ entity = { name = "ziguranth warrior" },
-			wave = 2, power = 8, delay = 2, bonus = 0.3, score = 130 , entry = 1 },
-		{ entity = { name = "orc archer" },
-			wave = 2, power = 10, delay = 5, bonus = 0.2, score = 100, entry = 2,
-			special = function (self) if game.player.level > 25 then self.wave, self.score  = 3, 125 end if game.player.level > 35 then self.wave, self.score  = 4, 150 end return self end },
-		{ entity = { name = "hexer" },
-			wave = 1, power = 13, delay = 1, bonus = 0.5 , score = 250, entry = 1 },
-		{ entity = { name = "wisp" },
-			wave = 6, power = 1, delay = 1, bonus = 0.3, score = 50 , entry = 3 },
-		{ entity = { name = "orc assassin" },
-			wave = 2, power = 10, delay = 4, bonus = 0.2, score = 200, entry = 2 },
-		{ entity = { name = "fire wyrmic" }, entitySub = { name = "ice wyrmic"},
-			wave = 1, power = 11, delay = 3, bonus = 0.3, score = 250, entry = 1 },
-		{ entity = { name = "sand wyrmic" }, entitySub = { name = "storm wyrmic" },
-			wave = 1, power = 11, delay = 3, bonus = 0.3, score = 250, entry = 1 },
-		{ entity = { name = "martyr" },
-			wave = 1, power = 13, delay = 1, bonus = 0.5 , score = 250, entry = 1 },
-		{ entity = { type = "vermin", subtype = "sandworm" },
-			wave = 1, power = 10, delay = 3, bonus = 0.2, score = 200, entry = 2 },
-		{ entity = { name = "ritch larva" },
-			wave = 2, power = 4, delay = 3, bonus = 0.1, score = 150, entry = 2 },
-		{ entity = { type = "giant", subtype = "ice" },
-			wave = 1, power = 8, delay = 2, bonus = 0.5, score = 300, entry = 1 },
-		{ entity = { name = "naga myrmidon" },
-			wave = 1, power = 9, delay = 2, bonus = 0.3, score = 300, entry = 1,
-			special = function (self) if game.level.arena.currentWave > 40 then self.wave = 2 end return self end },
-		{ entity = { name = "quasit" },
-			wave = 1, power = 9, delay = 2, bonus = 0.2, score = 300, entry = 2 },
-		{ entity = { name = "wretchling" },
-			wave = 1, power = 10, delay = 3, bonus = 0.3, score = 250, entry = 2,
-			special = function (self) if game.player.level > 25 then self.wave = 3 end if game.player.level > 35 then self.wave = 4 end return self end },
-		{ entity = { name = "great gladiator" },
-			wave = 2, power = 9, delay = 3, bonus = 0.3, score = 300, entry = 1 },
-		{ entity = { name = "bloated horror" },
-			wave = 2, power = 11, delay = 2, bonus = 0.4, score = 300, entry = 3 },
-		{ entity = { name = "umber hulk" },
-			wave = 1, power = 10, delay = 3, bonus = 0.3, score = 350, entry = 1 },
-		{ entity = { name = "anorithil" },
-			wave = 1, power = 10, delay = 2, bonus = 0.5, score = 450, entry = 1 },
-		{ entity = { name = "naga tide huntress" },
-			wave = 1, power = 10, delay = 2, bonus = 0.3, score = 300, entry = 2 },
-		{ entity = { name = "ritch hunter" },
-			wave = 4, power = 6, delay = 5, bonus = 0.4, score = 250, entry = 2 },
-
-		{ entity = { type = "undead", subtype = "wight" },
-			wave = 1, power = 11, delay = 2, bonus = 0.5, score = 400, entry = 1 },
-		{ entity = { name = "sun paladin" },
-			wave = 1, power = 12, delay = 2, bonus = 1, score = 450, entry = 1 },
-		{ entity = { name = "dread" },
-			wave = 1, power = 13, delay = 2, bonus = 1, score = 450, entry = 2 },
-		{ entity = { name = "naga psyren" },
-			wave = 1, power = 10, delay = 2, bonus = 0.3, score = 400, entry = 2 },
-		{ entity = { name = "star crusader" },
-			wave = 1, power = 14, delay = 2, bonus = 1, score = 450, entry = 2 },
-
-	}
+--TODO(Hetdegon@2012-09-15): I should define this table elsewhere and keep it in memory instead.
+	local foe = self.mooks
 	local dangerMin = 1 + math.floor(game.level.arena.currentWave * 0.1)
 	local dangerMax = ((game.level.arena.currentWave + 1) ^ game.level.arena.dangerMod) + dangerMin
 	if dangerMax > #foe then dangerMax = #foe end
@@ -547,4 +573,4 @@ function _M:generateOne(e)
 		m:setTarget(game.player)
 		self:place(m, entry, false)
 	end
-end
+end
\ No newline at end of file
diff --git a/game/modules/tome/class/uiset/Minimalist.lua b/game/modules/tome/class/uiset/Minimalist.lua
index 592512f43af4b36ac7d54593cf8c9f4426d580b2..9a3ba74a429ca36874517b7225c84d0fa3347308 100644
--- a/game/modules/tome/class/uiset/Minimalist.lua
+++ b/game/modules/tome/class/uiset/Minimalist.lua
@@ -1113,6 +1113,65 @@ function _M:displayResources(scale, bx, by, a)
 			x, y = self:resourceOrientStep(orient, bx, by, scale, x, y, fshat[6], front[7])
 		elseif game.mouse:getZone("res:hourglass") then game.mouse:unregisterZone("res:hourglass") end
 
+		-----------------------------------------------------------------------------------
+		-- Arena display
+		if game.level and game.level.arena then
+			local h = self.init_font_h + 2
+			if not self.arenaframe then
+				self.arenaframe = UI:makeFrame("ui/textbox", 250, 7 + h * 6)
+				UI:drawFrame(self.arenaframe, x, y, 1, 1, 1, 0.65)
+			else
+				UI:drawFrame(self.arenaframe, x, y, 1, 1, 1, 0.65)
+			end
+			local py = y + 2
+			local px = x + 5
+			local arena = game.level.arena
+			local aprint = function (_x, _y, _text, r, g, b)
+				local surf = { core.display.drawStringBlendedNewSurface(font_sha, _text, r, g, b):glTexture() }
+				surf[1]:toScreenFull(_x, _y, surf[6], surf[7], surf[2], surf[3], 0, 0, 0, 0.7 * a)
+				surf[1]:toScreenFull(_x, _y, surf[6], surf[7], surf[2], surf[3], 1, 1, 1, a)
+			end
+			if arena.score > world.arena.scores[1].score then
+				aprint(px, py, ("Score[1st]: %d"):format(arena.score), 255, 255, 100)
+			else
+				aprint(px, py, ("Score: %d"):format(arena.score), 255, 255, 255)
+			end
+			local _event
+			if arena.event > 0 then
+				if arena.event == 1 then
+					_event = "[MiniBoss]"
+				elseif arena.event == 2 then
+					_event = "[Boss]"
+				elseif arena.event == 3 then
+					_event = "[Final]"
+				end
+			else
+				_event = ""
+			end
+			py = py + h
+			if arena.currentWave > world.arena.bestWave then
+				aprint(px, py, ("Wave(TOP) %d %s"):format(arena.currentWave, _event), 255, 255, 100)
+			elseif arena.currentWave > world.arena.lastScore.wave then
+				aprint(px, py, ("Wave %d %s"):format(arena.currentWave, _event), 100, 100, 255)
+			else
+				aprint(px, py, ("Wave %d %s"):format(arena.currentWave, _event), 255, 255, 255)
+			end
+			py = py + h
+			if arena.pinch == true then
+				aprint(px, py, ("Bonus: %d (x%.1f)"):format(arena.bonus, arena.bonusMultiplier), 255, 50, 50)
+			else
+				aprint(px, py, ("Bonus: %d (x%.1f)"):format(arena.bonus, arena.bonusMultiplier), 255, 255, 255)
+			end
+			py = py + h
+			if arena.display then
+				aprint(px, py, arena.display[1], 255, 0, 255)
+				aprint(px, py + h, " VS", 255, 0, 255)
+				aprint(px, py + h + h,  arena.display[2], 255, 0, 255)
+			else
+				aprint(px, py, "Rank: "..arena.printRank(arena.rank, arena.ranks), 255, 255, 255)
+			end
+		end
+
 		-----------------------------------------------------------------------------------
 		-- Saving
 		if savefile_pipe.saving then
@@ -1954,13 +2013,13 @@ function _M:setupMouse(mouse)
 		else
 			extra.log_str = str
 			if button == "right" and event == "button" then
-				extra.add_map_action = { 
+				extra.add_map_action = {
 					{ name="Show chat user", fct=function() profile.chat:showUserInfo(user.login) end },
 					{ name="Report user for bad behavior", fct=function()
 						game:registerDialog(require('engine.dialogs.GetText').new("Reason to report: "..user.login, "Reason", 4, 500, function(text)
 							profile.chat:reportUser(user.login, text)
 							game.log("#VIOLET#", "Report sent.")
-						end))							
+						end))
 					end },
 				}
 			end
@@ -1968,4 +2027,4 @@ function _M:setupMouse(mouse)
 		game.tooltip.old_tmx = -100
 		game.mouse:delegate(button, mx, my, xrel, yrel, nil, nil, event, "playmap", extra)
 	end)
-end
+end
\ No newline at end of file
diff --git a/game/modules/tome/data/chats/arena-start.lua b/game/modules/tome/data/chats/arena-start.lua
index 38956cbd2c6cb6b9c91dab7061e2363229233267..2ec5c9dc90512b4eee8195f1aed0a8def10fcbaa 100644
--- a/game/modules/tome/data/chats/arena-start.lua
+++ b/game/modules/tome/data/chats/arena-start.lua
@@ -17,6 +17,7 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
+--[[
 local give_boots_rush = function(self, player)
 	local o = game.zone:makeEntityByName(game.level, "object", "ARENA_BOOTS_RUSH")
 	if o then
@@ -120,23 +121,35 @@ local give_debugarms = function(self, player)
 
 	game.level.arena.perk = "Debug"..game.level.arena.modeString
 end
-
+]]--
 local arena_3 = function(self, player)
 	game.level.arena.eventWave = 2
 	game.level.arena.finalWave = 3
 	game.level.arena.modeString = "3"
+	local arenashop = game:getStore("ARENA_SHOP")
+	arenashop:loadup(game.level, game.zone)
+	arenashop:interact(game.player, "Gladiator's wares")
+	arenashop = nil
 end
 
 local arena_30 = function(self, player)
 	game.level.arena.eventWave = 5
 	game.level.arena.finalWave = 31
 	game.level.arena.modeString = "30"
+	local arenashop = game:getStore("ARENA_SHOP")
+	arenashop:loadup(game.level, game.zone)
+	arenashop:interact(game.player, "Gladiator's wares")
+	arenashop = nil
 end
 
 local arena_60 = function(self, player)
 	game.level.arena.eventWave = 5
 	game.level.arena.finalWave = 61
 	game.level.arena.modeString = "60"
+	local arenashop = game:getStore("ARENA_SHOP")
+	arenashop:loadup(game.level, game.zone)
+	arenashop:interact(game.player, "Gladiator's wares")
+	arenashop = nil
 end
 
 local give_bonus = function(self, player)
@@ -162,41 +175,24 @@ local save_clear = function(self, player)
 	if o then game.zone:addEntity(game.level, o, "object", 7, 3) end
 end
 
-
-newChat{ id="perks",
-	text = [[#LIGHT_GREEN#Preparing for the arena, you brought with you...]],
-	answers = {
-		{"A pair of boots of disengagement...", action=give_boots_dise},
-		{"A pair of boots of rushing...", action=give_boots_rush},
-		{"A pair of boots of phasing...", action=give_boots_phas},
-		{"A movement infusion...", action=give_moveinfu},
-		{"A healing infusion...", action=give_healinfu},
-		{"A bow of piercing arrows...", action=give_bow},
-		{"A sling of flare...", action=give_sling},
-		{"The talent to imbue gems...", action=give_imbue},
-		--{"[DEBUG] Debug arms!", action=give_debugarms},
-		{"Nothing!", action=give_bonus},
-	}
-}
-
 newChat{ id="welcome",
 	text = "#LIGHT_GREEN#You take a look at the ranking boards before entering.\n"..text,
 	answers = {
 		--{"Enter the arena for 3 rounds[DEBUG]", action=arena_3, jump="perks"},
-		{"Enter the arena (60 waves)", action=arena_60, jump="perks"},
-		{"Enter the arena (shorter mode, 30 rounds)", action=arena_30, jump="perks"},
+		{"Enter the arena (60 waves)", action=arena_60},
+		{"Enter the arena (shorter mode, 30 rounds)", action=arena_30},
 		--{"Enter the arena for as long as you can last", action=arena_inf, jump="perks"},
-		{"#LIGHT_RED#[Reset all arena save data]", action=save_clear, jump="welcome2"},
+		{"#LIGHT_RED#[Reset all arena save data]", action=save_clear},
 	}
 }
 
 newChat{ id="welcome2",
 	text = "What will you do now?",
 	answers = {
-		{"Enter the arena for 60 rounds", action=arena_60, jump="perks"},
-		{"Enter the arena for 30 rounds", action=arena_30, jump="perks"},
+		{"Enter the arena for 60 rounds", action=arena_60},
+		{"Enter the arena for 30 rounds", action=arena_30},
 		--{"Enter the arena for as long as you can last", action=arena_inf, jump="perks"},
 	}
 }
 
-return "welcome"
+return "welcome"
\ No newline at end of file
diff --git a/game/modules/tome/data/chats/arena.lua b/game/modules/tome/data/chats/arena.lua
index 8c55dafbc92a55e8ac94ae0aa972f5370f7f22fd..9fe6f885ef150cd87f477f0a35a8891b4c9f5369 100644
--- a/game/modules/tome/data/chats/arena.lua
+++ b/game/modules/tome/data/chats/arena.lua
@@ -17,6 +17,13 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
+local entershop = function (self, player)
+	local arenashop = game:getStore("ARENA_SHOP")
+	arenashop:loadup(game.level, game.zone)
+	arenashop:interact(player, "Gladiator's wares")
+	arenashop = nil
+end
+
 newChat{ id="ryal-entry",
 text = [[#LIGHT_GREEN#*A gigantic bone giant walks through the main gate.
 #LIGHT_GREEN#Its shape is intricate and sharp, resembling a drake, but with countless
@@ -41,8 +48,8 @@ text = [[#LIGHT_GREEN#*After taking several hits, the undead giant finally succu
 #LIGHT_GREEN#*Ryal quietly turns towards the gate and leaves, seemingly unharmed*
 ]],
 	answers = {
-		{"It was fun, bone giant!"},
-		{"...what? unharmed?"}
+		{"It was fun, bone giant!", action=entershop},
+		{"...what? unharmed?", action=entershop}
 	}
 }
 
@@ -52,7 +59,7 @@ text = [[#LIGHT_GREEN#*The wind chills as a young girl walks calmly through the
 #LIGHT_GREEN#long black hair. She examines you with eerie calmness*#WHITE#
 I am known as Fryjia the Hailstorm. That's all you need to know, @playerdescriptor.race@. Let us begin.
 #LIGHT_GREEN#*The whole arena starts to get colder as she speaks, and the audience
-#LIGHT_GREEN#starts wearing their finest cloaks*]],
+#LIGHT_GREEN#starts wearing their finest winter cloaks*]],
 	answers = {
 		{"Bring it!"},
 	}
@@ -68,8 +75,8 @@ text = [[#LIGHT_GREEN#*With your final blow, Fryjia falls, unable to continue*
 #LIGHT_GREEN#towards the gate. As it closes, you realize her eyes are wet with tears.
 ]],
 	answers = {
-		{"..."},
-		{"w...what was that about?"}
+		{"...", action=entershop},
+		{"w...what was that about?", action=entershop}
 	}
 }
 
@@ -98,8 +105,8 @@ Oh, and please forgive her behavior. You will understand when you meet her fathe
 And, if you keep fighting like this, it will be really soon.
 So, it's been my pleasure, @playername@. #LIGHT_GREEN#*She vanishes in a spiral of flame*]],
 	answers = {
-		{"I am pumped up! What's next?"},
-		{"Am I the only person with a name that can die here?"}
+		{"I am pumped up! What's next?", action=entershop},
+		{"Am I the only person with a name that can die here?", action=entershop}
 	}
 }
 
@@ -139,9 +146,9 @@ Good luck...
 #RED#The final battle begins when the gate closes, just this final time!!
 ]],
 	answers = {
-		{"I will defeat you, Master of the Arena!!!"},
-		{"I will become Master of the Arena instead of the Master of the Arena!!"},
-		{"Wealth and glory! Wealth and glory!"},
+		{"I will defeat you, Master of the Arena!!!", action=entershop},
+		{"I will become Master of the Arena instead of the Master of the Arena!!", action=entershop},
+		{"Wealth and glory! Wealth and glory!", action=entershop},
 	}
 }
 
@@ -192,4 +199,4 @@ But meanwhile, this is your place! Welcome to paradise, @playerdescriptor.race@!
 		{"I hereby stand victorious, awaiting future challenges!", action=function(npc, player) player:hasQuest("arena"):win() end},
 		{"#LIGHT_GREEN#*dance*", action=function(npc, player) player:hasQuest("arena"):win() end},
 	}
-}
+}
\ No newline at end of file
diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua
index 0c8ebecd8b6f503980831351c54cbc5ddf571c91..e955217004b797b3af4b05a3e8f99664e17160bb 100644
--- a/game/modules/tome/data/damage_types.lua
+++ b/game/modules/tome/data/damage_types.lua
@@ -2151,7 +2151,7 @@ newDamageType{
 			resolvers.racial(),
 			resolvers.sustains_at_birth(),
 			autolevel = "warrior",
-			ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+			ai = "summoned", ai_real = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 			stats = { str=20, dex=8, mag=6, con=16 },
 			name = "orc spirit", color=colors.SALMON, image = "npc/humanoid_orc_orc_berserker.png",
 			desc = [[An orc clad in a massive armour, wielding a huge axe.]],
diff --git a/game/modules/tome/data/general/events/cultists.lua b/game/modules/tome/data/general/events/cultists.lua
index d60f207b7fb805bc05a799596ea1deb404d3e403..2338ac2c2528d11ab55d67bacffe914f31fc98bc 100644
--- a/game/modules/tome/data/general/events/cultists.lua
+++ b/game/modules/tome/data/general/events/cultists.lua
@@ -72,7 +72,7 @@ for i, p in ipairs(list) do
 		silence_immune = 0.5,
 		resolvers.racial(),
 		autolevel = "caster",
-		ai = "tactical", ai_state = { ai_move="move_dmap", talent_in=1, },
+		ai = "tactical", ai_state = { ai_move="move_complex", talent_in=1, },
 		ai_tactic = resolvers.tactic"ranged",
 		stats = { str=10, dex=8, mag=20, con=16 },
 		level_range = {5, nil}, exp_worth = 1,
diff --git a/game/modules/tome/data/general/npcs/ant.lua b/game/modules/tome/data/general/npcs/ant.lua
index 3f22887f11ab631358a1fae14e455809d82cae57..6f64241992faf8c65314fad0b0605c7f4e57cb53 100644
--- a/game/modules/tome/data/general/npcs/ant.lua
+++ b/game/modules/tome/data/general/npcs/ant.lua
@@ -30,7 +30,7 @@ newEntity{
 	sound_moam = {"creatures/ants/ant_%d", 1, 2},
 	sound_die = {"creatures/ants/ant_die_%d", 1, 4},
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=12, dex=10, mag=3, con=13 },
 	energy = { mod=1 },
 	combat_armor = 1, combat_def = 1,
diff --git a/game/modules/tome/data/general/npcs/aquatic_critter.lua b/game/modules/tome/data/general/npcs/aquatic_critter.lua
index b0c5864904bbe6d805d997f2909bec6f3220efcd..e0745cf5f319305814d42a10cb59b0e2b71cc7f8 100644
--- a/game/modules/tome/data/general/npcs/aquatic_critter.lua
+++ b/game/modules/tome/data/general/npcs/aquatic_critter.lua
@@ -27,7 +27,7 @@ newEntity{
 	display = "A", color=colors.WHITE,
 	body = { INVEN = 10 },
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=12, dex=10, mag=3, con=13 },
 	combat_armor = 1, combat_def = 1,
 	combat = { dam=resolvers.levelup(resolvers.mbonus(36, 10), 1, 1), atk=15, apr=7, dammod={str=0.6} },
diff --git a/game/modules/tome/data/general/npcs/aquatic_demon.lua b/game/modules/tome/data/general/npcs/aquatic_demon.lua
index 8c7167cd990683e5e02417308976eb23615dc660..23283d7eca6880260d078a2ade712d8d73864097 100644
--- a/game/modules/tome/data/general/npcs/aquatic_demon.lua
+++ b/game/modules/tome/data/general/npcs/aquatic_demon.lua
@@ -28,7 +28,7 @@ newEntity{
 	blood_color = colors.GREEN,
 	body = { INVEN = 10 },
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=12, dex=10, mag=3, con=13 },
 	combat_armor = 1, combat_def = 1,
 	combat = { dam=resolvers.levelup(resolvers.mbonus(46, 20), 1, 1), atk=15, apr=7, dammod={str=0.7} },
diff --git a/game/modules/tome/data/general/npcs/bear.lua b/game/modules/tome/data/general/npcs/bear.lua
index 444a123c71a9dd1bc961c0c17219123555dcfb37..e2bbcc9547a479b23d122b094c4d5f42b05c9d84 100644
--- a/game/modules/tome/data/general/npcs/bear.lua
+++ b/game/modules/tome/data/general/npcs/bear.lua
@@ -33,7 +33,7 @@ newEntity{
 	max_stamina = 100,
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=5, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=5, },
 	global_speed_base = 0.9,
 	stats = { str=18, dex=13, mag=5, con=15 },
 	infravision = 10,
diff --git a/game/modules/tome/data/general/npcs/bird.lua b/game/modules/tome/data/general/npcs/bird.lua
index b43a513036a27871673ae427d2341f187447c5e8..0d865a23646e2d3954c2989e1264f611b94824bf 100644
--- a/game/modules/tome/data/general/npcs/bird.lua
+++ b/game/modules/tome/data/general/npcs/bird.lua
@@ -27,7 +27,7 @@ newEntity{
 	display = "B", color=colors.WHITE,
 	body = { INVEN = 10 },
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 
 	stats = { str=12, dex=20, mag=3, con=13 },
 	global_speed_base = 1.2,
diff --git a/game/modules/tome/data/general/npcs/bone-giant.lua b/game/modules/tome/data/general/npcs/bone-giant.lua
index e5be1a89c19b71212e70610b0b96b7e69f3d1e34..749e56c7cb38eee82805003ddae577862ca38a36 100644
--- a/game/modules/tome/data/general/npcs/bone-giant.lua
+++ b/game/modules/tome/data/general/npcs/bone-giant.lua
@@ -36,7 +36,7 @@ newEntity{
 	size_category = 4,
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	stats = { str=20, dex=52, mag=16, con=16 },
 
 	resists = { [DamageType.PHYSICAL] = 20, [DamageType.BLIGHT] = 20, [DamageType.COLD] = 50, },
diff --git a/game/modules/tome/data/general/npcs/canine.lua b/game/modules/tome/data/general/npcs/canine.lua
index 35c502cc4a05230eba40e93afe5d670278cd4aba..bc62319b55d896df442059502c37f54683ae6ccc 100644
--- a/game/modules/tome/data/general/npcs/canine.lua
+++ b/game/modules/tome/data/general/npcs/canine.lua
@@ -36,7 +36,7 @@ newEntity{
 	infravision = 10,
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	global_speed_base = 1.2,
 	stats = { str=10, dex=17, mag=3, con=7 },
 	combat = { dammod={str=0.6}, sound="creatures/wolves/wolf_attack_1" },
diff --git a/game/modules/tome/data/general/npcs/cold-drake.lua b/game/modules/tome/data/general/npcs/cold-drake.lua
index c7f904b2f9efb220ce582815017b905afd449399..ca0b9c7f151782ead4aea3df5d466ccffb7dc4ca 100644
--- a/game/modules/tome/data/general/npcs/cold-drake.lua
+++ b/game/modules/tome/data/general/npcs/cold-drake.lua
@@ -33,7 +33,7 @@ newEntity{
 	size_category = 5,
 
 	autolevel = "drake",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	stats = { str=20, dex=20, mag=30, con=16 },
 
 	resists = { [DamageType.COLD] = 100, },
diff --git a/game/modules/tome/data/general/npcs/construct.lua b/game/modules/tome/data/general/npcs/construct.lua
index 1d6fab8a20dab7b2511f895ef2341d4813be055a..bbecd09b92618f16d3b6e228e6ea20e7f7fa583c 100644
--- a/game/modules/tome/data/general/npcs/construct.lua
+++ b/game/modules/tome/data/general/npcs/construct.lua
@@ -45,7 +45,7 @@ newEntity{
 	no_breath = 1,
 
 	autolevel = "warriormage",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	stats = { str=20, mag=16, con=22 },
 	resolvers.talents{
 		[Talents.T_STAMINA_POOL]=1, [Talents.T_MANA_POOL]=1,
diff --git a/game/modules/tome/data/general/npcs/elven-caster.lua b/game/modules/tome/data/general/npcs/elven-caster.lua
index c88944dee7521030f984aa91559d430ba4d5f4c5..e2f81cce4c5ddfd510aa120c62f54e1dd4fa19d9 100644
--- a/game/modules/tome/data/general/npcs/elven-caster.lua
+++ b/game/modules/tome/data/general/npcs/elven-caster.lua
@@ -46,7 +46,7 @@ newEntity{
 	resolvers.talents{ [Talents.T_ARMOUR_TRAINING]=1, },
 
 	autolevel = "caster",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=20, dex=8, mag=6, con=16 },
 	power_source = {arcane=true},
 }
diff --git a/game/modules/tome/data/general/npcs/elven-warrior.lua b/game/modules/tome/data/general/npcs/elven-warrior.lua
index 3c7041cf469a002360ee26dad30a20027d485b1b..dc91c3963faba2365784a359091e0be2b85b1e87 100644
--- a/game/modules/tome/data/general/npcs/elven-warrior.lua
+++ b/game/modules/tome/data/general/npcs/elven-warrior.lua
@@ -45,7 +45,7 @@ newEntity{
 	resolvers.talents{ [Talents.T_ARMOUR_TRAINING]=3, [Talents.T_WEAPON_COMBAT]={base=1, every=10, max=5}, [Talents.T_WEAPONS_MASTERY]={base=1, every=10, max=5} },
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=20, dex=8, mag=6, con=16 },
 	power_source = {technique=true},
 }
diff --git a/game/modules/tome/data/general/npcs/faeros.lua b/game/modules/tome/data/general/npcs/faeros.lua
index b0fe628aadb70395d22d3dd7c71a79da0e664a87..052b6519ab22970d5716cef1bc3643df03b99189 100644
--- a/game/modules/tome/data/general/npcs/faeros.lua
+++ b/game/modules/tome/data/general/npcs/faeros.lua
@@ -37,7 +37,7 @@ newEntity{
 	levitation = 1,
 
 	autolevel = "dexmage",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	stats = { str=10, dex=8, mag=6, con=16 },
 
 	resists = { [DamageType.PHYSICAL] = 10, [DamageType.FIRE] = 100, [DamageType.COLD] = -30, },
diff --git a/game/modules/tome/data/general/npcs/feline.lua b/game/modules/tome/data/general/npcs/feline.lua
index 45bf8f47de9f57c56d13107122a1b9ff919c39fe..410011ea8b7ad10a7a43aea0d7c2a30614c3067c 100644
--- a/game/modules/tome/data/general/npcs/feline.lua
+++ b/game/modules/tome/data/general/npcs/feline.lua
@@ -29,7 +29,7 @@ newEntity{
 	infravision = 10,
 	global_speed_base = 1.25,
 	type = "animal", subtype="feline",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 
 	combat_physspeed = 2, -- Double attack per turn
 
diff --git a/game/modules/tome/data/general/npcs/fire-drake.lua b/game/modules/tome/data/general/npcs/fire-drake.lua
index 164f2cf60be090e46953f2ac27e8deacfa9c8324..836af137ddee3f36eec9d42246452ef652df537e 100644
--- a/game/modules/tome/data/general/npcs/fire-drake.lua
+++ b/game/modules/tome/data/general/npcs/fire-drake.lua
@@ -33,7 +33,7 @@ newEntity{
 	size_category = 5,
 
 	autolevel = "drake",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	stats = { str=20, dex=20, mag=30, con=16 },
 
 	resists = { [DamageType.FIRE] = 100, },
diff --git a/game/modules/tome/data/general/npcs/gwelgoroth.lua b/game/modules/tome/data/general/npcs/gwelgoroth.lua
index e03d0d23cb6402c29c0caec1b7c6690d1c5c4978..9f8c1ab3d048d2ad31ceeb0ff3e88cf4d24ae684 100644
--- a/game/modules/tome/data/general/npcs/gwelgoroth.lua
+++ b/game/modules/tome/data/general/npcs/gwelgoroth.lua
@@ -37,7 +37,7 @@ newEntity{
 
 
 	autolevel = "dexmage",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	stats = { str=10, dex=8, mag=6, con=16 },
 
 	resists = { [DamageType.PHYSICAL] = 10, [DamageType.LIGHTNING] = 100, [DamageType.FIRE] = -30, },
diff --git a/game/modules/tome/data/general/npcs/horror-corrupted.lua b/game/modules/tome/data/general/npcs/horror-corrupted.lua
index a1f17023134ebfea7442e4747915ec4d2b2ae19f..00b506d37669883331cdb9023eb0f8c461b42018 100644
--- a/game/modules/tome/data/general/npcs/horror-corrupted.lua
+++ b/game/modules/tome/data/general/npcs/horror-corrupted.lua
@@ -26,7 +26,7 @@ newEntity{
 	blood_color = colors.BLUE,
 	body = { INVEN = 10 },
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 
 	combat_armor = 0, combat_def = 0,
 	combat = { atk=2, dammod={str=0.6} },
@@ -124,7 +124,7 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	rank = 2,
 	size_category = 3,
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	hate_regen = 2,
 
 	open_door = true,
@@ -225,7 +225,7 @@ newEntity{ base = "BASE_NPC_CORRUPTED_HORROR",
 	rank = 2,
 	size_category = 4,
 	autolevel = "caster",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 
 	global_speed_base = 0.8,
 
diff --git a/game/modules/tome/data/general/npcs/horror.lua b/game/modules/tome/data/general/npcs/horror.lua
index 61c1cbe639ae584295a05331c2e7074df8653095..8f226ba2dbb354ea44d1c19868bc594aeea0e7c0 100644
--- a/game/modules/tome/data/general/npcs/horror.lua
+++ b/game/modules/tome/data/general/npcs/horror.lua
@@ -28,7 +28,7 @@ newEntity{
 	blood_color = colors.BLUE,
 	body = { INVEN = 10 },
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 
 	stats = { str=20, dex=20, wil=20, mag=20, con=20, cun=20 },
 	combat_armor = 5, combat_def = 10,
@@ -54,7 +54,7 @@ Each swing drips pestulant fluid before it, and each droplet writhes and wriggle
 	hate_regen = 10,
 
 	autolevel = "warriormage",
-	ai = "tactical", ai_state = { ai_move="move_dmap", talent_in=1, ally_compassion=0 },
+	ai = "tactical", ai_state = { ai_move="move_complex", talent_in=1, ally_compassion=0 },
 	ai_tactic = resolvers.tactic "melee",
 
 	see_invisible = 100,
@@ -199,7 +199,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 	max_life = resolvers.rngavg(200,220),
 	life_rating = 16,
 	autolevel = "warrior",
-	ai = "tactical", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "tactical", ai_state = { ai_move="move_complex", talent_in=1, },
 	combat = { dam=20, atk=20, apr=10, dammod={str=1} },
 	combat = {damtype=DamageType.PHYSICAL},
 	no_auto_resists = true,
@@ -262,7 +262,7 @@ newEntity{ base = "BASE_NPC_HORROR", define_as = "BASE_NPC_ELDRICTH_EYE",
 	rank = 2,
 	size_category = 1,
 	autolevel = "caster",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	combat_armor = 1, combat_def = 0,
 	levitation = 1,
 	no_auto_resists = true,
@@ -408,7 +408,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 	autolevel = "caster",
 	combat_armor = 1, combat_def = 10,
 	combat = { dam=5, atk=15, apr=20, dammod={mag=0.6}, damtype=DamageType.LIGHT},
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1.5, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1.5, },
 	lite = 3,
 
 	resists = {all = 35, [DamageType.DARKNESS] = -50, [DamageType.LIGHT] = 100, [DamageType.FIRE] = 100},
@@ -445,7 +445,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 	life_rating = 16,
 	combat_armor = 1, combat_def = 10,
 	combat = { dam=20, atk=30, apr=40, dammod={mag=1}, damtype=DamageType.LIGHT},
-	ai = "tactical", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "tactical", ai_state = { ai_move="move_complex", talent_in=1, },
 	lite = 5,
 
 	resists = {all = 40, [DamageType.DARKNESS] = -50, [DamageType.LIGHT] = 100, [DamageType.FIRE] = 100},
@@ -521,7 +521,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 	life_regen = 0.25,
 	combat_armor = 12, combat_def = 24,
 
-	ai = "tactical", ai_state = { ai_move="move_dmap", talent_in=2, ally_compassion=0 },
+	ai = "tactical", ai_state = { ai_move="move_complex", talent_in=2, ally_compassion=0 },
 
 	on_melee_hit = {[DamageType.PHYSICALBLEED]=resolvers.mbonus(14, 2)},
 	combat = { dam=resolvers.levelup(resolvers.rngavg(16,22), 1, 1.5), atk=resolvers.levelup(18, 1, 1), apr=4, dammod={wil=0.25, cun=0.1}, damtype=engine.DamageType.PHYSICALBLEED, },
@@ -584,7 +584,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 		damtype=engine.DamageType.SLIME,
 	},
 
-	ai = "tactical", ai_state = { ai_move="move_dmap", talent_in=1, ally_compassion=0 },
+	ai = "tactical", ai_state = { ai_move="move_complex", talent_in=1, ally_compassion=0 },
 
 	resists = {all=15, [DamageType.PHYSICAL] = -10, [DamageType.NATURE] = 100, [DamageType.ARCANE] = 40, [DamageType.BLIGHT] = 24},
 
@@ -623,7 +623,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 	},
 	combat_physspeed = 2,
 
-	ai = "tactical", ai_state = { ai_move="move_dmap", talent_in=1, ally_compassion=0 },
+	ai = "tactical", ai_state = { ai_move="move_complex", talent_in=1, ally_compassion=0 },
 
 	resists = {[DamageType.PHYSICAL] = -10, [DamageType.DARKNESS] = 100, [DamageType.LIGHT] = -60},
 
@@ -924,7 +924,7 @@ newEntity{ base = "BASE_NPC_HORROR",
 	
 	resolvers.drops{chance=100, nb=1, {defined="BLADE_RIFT"} },
 	
-	ai = "tactical", ai_state = { ai_move="move_dmap", talent_in=2, ally_compassion=0 },
+	ai = "tactical", ai_state = { ai_move="move_complex", talent_in=2, ally_compassion=0 },
 		
 	on_melee_hit = {[DamageType.PHYSICALBLEED]=resolvers.mbonus(30, 4)},
 	combat = { dam=resolvers.levelup(resolvers.rngavg(20,28), 1, 1.5), physspeed = 0.25,atk=resolvers.levelup(24, 1.2, 1.2), apr=4, dammod={wil=0.3, cun=0.15}, damtype=engine.DamageType.PHYSICALBLEED, },
diff --git a/game/modules/tome/data/general/npcs/horror_temporal.lua b/game/modules/tome/data/general/npcs/horror_temporal.lua
index 7cd976aa0eec2c8a28ed38e5cd24a373bdef54f8..95fc5daf2ea14eddf36f2902cf9f59e3a5ea3471 100644
--- a/game/modules/tome/data/general/npcs/horror_temporal.lua
+++ b/game/modules/tome/data/general/npcs/horror_temporal.lua
@@ -28,7 +28,7 @@ newEntity{
 	blood_color = colors.BLUE,
 	body = { INVEN = 10 },
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 
 	stats = { str=20, dex=20, wil=20, mag=20, con=20, cun=20 },
 	combat_armor = 5, combat_def = 10,
@@ -106,7 +106,7 @@ newEntity{ base = "BASE_NPC_HORROR_TEMPORAL",
 	size_category = 3,
 	max_life = resolvers.rngavg(60,80),
 	autolevel = "warriormage",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	combat_armor = 1, combat_def = 0,
 
 	resists = {all = 10, [DamageType.TEMPORAL] = 50},
@@ -138,7 +138,7 @@ newEntity{ base = "BASE_NPC_HORROR_TEMPORAL",
 	life_rating = 12,
 	global_speed_base = 1.2,
 	autolevel = "rogue",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	combat_armor = 10, combat_def = 10,
 	combat = { dam=resolvers.levelup(resolvers.rngavg(25,100), 1, 1.2), atk=resolvers.rngavg(25,100), apr=25, dammod={dex=1.1} },
 
diff --git a/game/modules/tome/data/general/npcs/losgoroth.lua b/game/modules/tome/data/general/npcs/losgoroth.lua
index d96d986fc913d7fe87a74b76bd2356099a1ee4d1..d571144346ad8194bf2bf4aa8320f131ee2a2fb6 100644
--- a/game/modules/tome/data/general/npcs/losgoroth.lua
+++ b/game/modules/tome/data/general/npcs/losgoroth.lua
@@ -39,7 +39,7 @@ newEntity{
 	can_pass = {pass_void=70},
 
 	autolevel = "dexmage",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	stats = { str=10, dex=8, mag=6, con=16 },
 
 	resists = { [DamageType.PHYSICAL] = -30, [DamageType.ARCANE] = 100 },
diff --git a/game/modules/tome/data/general/npcs/major-demon.lua b/game/modules/tome/data/general/npcs/major-demon.lua
index 673bb4c08d7751f8a7a3439a8878fdc90948813f..0de62f57461ecf1c3e78def50a603b8164f7f9b5 100644
--- a/game/modules/tome/data/general/npcs/major-demon.lua
+++ b/game/modules/tome/data/general/npcs/major-demon.lua
@@ -29,7 +29,7 @@ newEntity{
 	faction = "fearscape",
 	body = { INVEN = 10 },
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=22, dex=10, mag=20, con=13 },
 	combat_armor = 1, combat_def = 1,
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, QUIVER=1 },
diff --git a/game/modules/tome/data/general/npcs/minor-demon.lua b/game/modules/tome/data/general/npcs/minor-demon.lua
index 2b714485104c39a8d451610a3221d35eac9e5f05..803a2f76223eae71bca29e2a628b3146ac7dcd1b 100644
--- a/game/modules/tome/data/general/npcs/minor-demon.lua
+++ b/game/modules/tome/data/general/npcs/minor-demon.lua
@@ -29,7 +29,7 @@ newEntity{
 	faction = "fearscape",
 	body = { INVEN = 10 },
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=12, dex=10, mag=3, con=13 },
 	life_rating = 7,
 	combat_armor = 1, combat_def = 1,
diff --git a/game/modules/tome/data/general/npcs/minotaur.lua b/game/modules/tome/data/general/npcs/minotaur.lua
index 64f65a54db22400bf18e00d9ad29b659d7c7cfe8..9891c4200b41c6ed3f6fedffe03dfe50ad67bbb7 100644
--- a/game/modules/tome/data/general/npcs/minotaur.lua
+++ b/game/modules/tome/data/general/npcs/minotaur.lua
@@ -44,7 +44,7 @@ newEntity{
 	resolvers.inscriptions(1, "infusion"),
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=5, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=5, },
 	global_speed_base = 1.2,
 	stats = { str=15, dex=12, mag=6, cun=12, con=15 },
 
diff --git a/game/modules/tome/data/general/npcs/multihued-drake.lua b/game/modules/tome/data/general/npcs/multihued-drake.lua
index 0ce4a9a2a5faf8d3bc6313cf04796345ef3f847f..d286f83ace0ca0eedad77fc0aea5be98f574aed1 100644
--- a/game/modules/tome/data/general/npcs/multihued-drake.lua
+++ b/game/modules/tome/data/general/npcs/multihued-drake.lua
@@ -34,7 +34,7 @@ newEntity{
 	size_category = 5,
 
 	autolevel = "drake",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=20, dex=20, mag=30, con=16 },
 
 	knockback_immune = 1,
diff --git a/game/modules/tome/data/general/npcs/mummy.lua b/game/modules/tome/data/general/npcs/mummy.lua
index 60521af418b86da0386927310c1907cf0789be2c..dc672c19a135913fde1595f34c9054f70cc088be 100644
--- a/game/modules/tome/data/general/npcs/mummy.lua
+++ b/game/modules/tome/data/general/npcs/mummy.lua
@@ -29,7 +29,7 @@ newEntity{
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	global_speed_base = 0.8,
 	stats = { str=14, dex=12, mag=10, con=12 },
 	infravision = 10,
diff --git a/game/modules/tome/data/general/npcs/naga.lua b/game/modules/tome/data/general/npcs/naga.lua
index 4bc14d7e46ad74b13c4054d5803047a4eb8ac833..a5ab3ae0e9b015d75bb6837bad85b234e74452fa 100644
--- a/game/modules/tome/data/general/npcs/naga.lua
+++ b/game/modules/tome/data/general/npcs/naga.lua
@@ -43,7 +43,7 @@ newEntity{
 	resolvers.inscriptions(1, "rune"),
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	global_speed_base = 1.2,
 	stats = { str=15, dex=15, mag=15, con=10 },
 	ingredient_on_death = "NAGA_TONGUE",
diff --git a/game/modules/tome/data/general/npcs/ooze.lua b/game/modules/tome/data/general/npcs/ooze.lua
index 3908d9c373a386ebefd4ba5bf33d03e7b31b86b8..0da5dd044c8ce21efdbf1dbe5640ad31a7204206 100644
--- a/game/modules/tome/data/general/npcs/ooze.lua
+++ b/game/modules/tome/data/general/npcs/ooze.lua
@@ -31,7 +31,7 @@ newEntity{
 	sound_random = {"creatures/jelly/jelly_%d", 1, 3},
 	body = { INVEN = 10 },
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=10, dex=15, mag=3, con=10 },
 	global_speed_base = 0.7,
 	combat = {sound="creatures/jelly/jelly_hit"},
diff --git a/game/modules/tome/data/general/npcs/orc-gorbat.lua b/game/modules/tome/data/general/npcs/orc-gorbat.lua
index af1d44640c2a51b3c8f987a1c95910b42938b552..011db67ac8c4273e0340ca0e36e21be83d50e430 100644
--- a/game/modules/tome/data/general/npcs/orc-gorbat.lua
+++ b/game/modules/tome/data/general/npcs/orc-gorbat.lua
@@ -45,7 +45,7 @@ newEntity{
 	resolvers.inscriptions(2, "infusion"),
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=20, dex=8, mag=6, con=16 },
 	ingredient_on_death = "ORC_HEART",
 }
diff --git a/game/modules/tome/data/general/npcs/orc-grushnak.lua b/game/modules/tome/data/general/npcs/orc-grushnak.lua
index 02a488450253009c34aa794612640408ac9b14fe..0b69ab8416c49889101bc867d99e78e8f8c24fcb 100644
--- a/game/modules/tome/data/general/npcs/orc-grushnak.lua
+++ b/game/modules/tome/data/general/npcs/orc-grushnak.lua
@@ -44,7 +44,7 @@ newEntity{
 	resolvers.inscriptions(3, "infusion"),
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=20, dex=8, mag=6, con=16 },
 	ingredient_on_death = "ORC_HEART",
 }
diff --git a/game/modules/tome/data/general/npcs/orc-rak-shor.lua b/game/modules/tome/data/general/npcs/orc-rak-shor.lua
index 8efa12528cd499d73aee18bd73ebf42330229efa..973dc764568cade576b163d0b1845b5abde85e52 100644
--- a/game/modules/tome/data/general/npcs/orc-rak-shor.lua
+++ b/game/modules/tome/data/general/npcs/orc-rak-shor.lua
@@ -43,7 +43,7 @@ newEntity{
 	resolvers.inscriptions(3, "rune"),
 
 	autolevel = "caster",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=20, dex=8, mag=6, con=16 },
 	ingredient_on_death = "ORC_HEART",
 }
diff --git a/game/modules/tome/data/general/npcs/orc-vor.lua b/game/modules/tome/data/general/npcs/orc-vor.lua
index 1b017b78c80423e681a5cb5c68983978eb2ce696..bc623da32feffa03927fee6092bbbf6a144767f0 100644
--- a/game/modules/tome/data/general/npcs/orc-vor.lua
+++ b/game/modules/tome/data/general/npcs/orc-vor.lua
@@ -45,7 +45,7 @@ newEntity{
 	resolvers.inscriptions(2, "rune"),
 
 	autolevel = "caster",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=10, dex=8, mag=20, con=16 },
 	ingredient_on_death = "ORC_HEART",
 }
diff --git a/game/modules/tome/data/general/npcs/orc.lua b/game/modules/tome/data/general/npcs/orc.lua
index 72a75f9a87b613e691769e1626ac0894b41043a9..9eb3d792846dcf48bf00a204ea68fbb7865ae8af 100644
--- a/game/modules/tome/data/general/npcs/orc.lua
+++ b/game/modules/tome/data/general/npcs/orc.lua
@@ -40,7 +40,7 @@ newEntity{
 	open_door = true,
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=20, dex=8, mag=6, con=16 },
 	resolvers.talents{ [Talents.T_WEAPON_COMBAT]={base=1, every=10, max=5}, },
 	ingredient_on_death = "ORC_HEART",
diff --git a/game/modules/tome/data/general/npcs/ritch.lua b/game/modules/tome/data/general/npcs/ritch.lua
index 60fcb69b714cdcb553f4cecd93b855ea9114f46e..66589fb697054a9e9bcad366334c11172633bb5d 100644
--- a/game/modules/tome/data/general/npcs/ritch.lua
+++ b/game/modules/tome/data/general/npcs/ritch.lua
@@ -36,7 +36,7 @@ Vicious predators, they inject corrupting diseases into their foes, and their sh
 	rank = 2,
 
 	autolevel = "slinger",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	global_speed_base = 1.2,
 	stats = { str=15, dex=15, mag=8, con=10 },
 
diff --git a/game/modules/tome/data/general/npcs/rodent.lua b/game/modules/tome/data/general/npcs/rodent.lua
index 5e723dc87468d75cb3def706892a41e3619664a9..a7efa97213be5e2c225434f8ae9daace5d88a026 100644
--- a/game/modules/tome/data/general/npcs/rodent.lua
+++ b/game/modules/tome/data/general/npcs/rodent.lua
@@ -31,7 +31,7 @@ newEntity{ --rodent base
 	sound_random = {"creatures/rats/rat_%d", 1, 3},
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=8, dex=15, mag=3, con=5 },
 	combat = {sound="creatures/rats/rat_attack"},
 	combat_armor = 1, combat_def = 1,
diff --git a/game/modules/tome/data/general/npcs/sandworm.lua b/game/modules/tome/data/general/npcs/sandworm.lua
index 9120262c5cd9cc1c7aeeb05e71496144479a1071..5ccc7eb3dffb7e35ba3021c43835e4d4d81592bf 100644
--- a/game/modules/tome/data/general/npcs/sandworm.lua
+++ b/game/modules/tome/data/general/npcs/sandworm.lua
@@ -40,7 +40,7 @@ newEntity{
 	drops = resolvers.drops{chance=5, nb=1, {type="scroll"} },
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=15, dex=7, mag=3, con=3 },
 	combat_armor = 1, combat_def = 1,
 	ingredient_on_death = "SANDWORM_TOOTH",
diff --git a/game/modules/tome/data/general/npcs/shertul.lua b/game/modules/tome/data/general/npcs/shertul.lua
index cab0c056bb4aebb50dce1fd4c0056e855ada9762..7b2029067af786dad7e3135d032ea26fe378989e 100644
--- a/game/modules/tome/data/general/npcs/shertul.lua
+++ b/game/modules/tome/data/general/npcs/shertul.lua
@@ -28,7 +28,7 @@ newEntity{
 	blood_color = colors.BLUE,
 	body = { INVEN = 10 },
 	autolevel = "caster",
-	ai = "tactical", ai_state = { ai_move="move_dmap",  },
+	ai = "tactical", ai_state = { ai_move="move_complex",  },
 
 	stats = { str=40, dex=40, wil=40, con=40, mag=40, cun=40, lck=100 },
 	combat_armor = 0, combat_def = 0,
diff --git a/game/modules/tome/data/general/npcs/skeleton.lua b/game/modules/tome/data/general/npcs/skeleton.lua
index 6b066ca9d8a2baf10f25be8193c033fd403cb0ff..c3171875bafb2b7dbed0a302b7dbc10d29e613a8 100644
--- a/game/modules/tome/data/general/npcs/skeleton.lua
+++ b/game/modules/tome/data/general/npcs/skeleton.lua
@@ -38,7 +38,7 @@ newEntity{
 	size_category = 3,
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=4, },
 	stats = { str=14, dex=12, mag=10, con=12 },
 
 	resolvers.racial(),
diff --git a/game/modules/tome/data/general/npcs/snow-giant.lua b/game/modules/tome/data/general/npcs/snow-giant.lua
index 1de2edd5129e267801b532128299a36eb080b666..5286d3c01389ec12176e35d8416ab9200565046c 100644
--- a/game/modules/tome/data/general/npcs/snow-giant.lua
+++ b/game/modules/tome/data/general/npcs/snow-giant.lua
@@ -36,7 +36,7 @@ newEntity{
 	size_category = 4,
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	stats = { str=20, dex=8, mag=6, con=16 },
 
 	resolvers.inscriptions(1, "infusion"),
diff --git a/game/modules/tome/data/general/npcs/spider.lua b/game/modules/tome/data/general/npcs/spider.lua
index c5154a57054006e122c159c61b886956b092a1fd..e06ad67b00145ee6a5a96332329718f97d60868b 100644
--- a/game/modules/tome/data/general/npcs/spider.lua
+++ b/game/modules/tome/data/general/npcs/spider.lua
@@ -34,7 +34,7 @@ newEntity{
 	rank = 1,
 
 	autolevel = "spider",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=4, },
 	global_speed_base = 1.2,
 	stats = { str=15, dex=15, mag=8, con=10 },
 
@@ -302,7 +302,7 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	rank = 3,
 
 	ai = "tactical",
-	ai_tactic = resolvers.tactic"melee", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai_tactic = resolvers.tactic"melee", ai_state = { ai_move="move_complex", talent_in=2, },
 
 	combat = { dam=resolvers.levelup(resolvers.mbonus(40, 70), 1, 0.9), atk=16, apr=9, damtype=DamageType.WASTING, dammod={dex=1.2} },
 
@@ -340,7 +340,7 @@ newEntity{ base = "BASE_NPC_SPIDER",
 	resolvers.drops{chance=100, nb=5, {ego_chance=100} },
 
 	ai = "tactical",
-	ai_tactic = resolvers.tactic"melee", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai_tactic = resolvers.tactic"melee", ai_state = { ai_move="move_complex", talent_in=1, },
 
 	combat = { dam=resolvers.levelup(resolvers.mbonus(100, 15), 1, 0.9), atk=16, apr=9, damtype=DamageType.WASTING, dammod={dex=1.2} },
 
@@ -398,7 +398,7 @@ newEntity{
 	infravision = 10,
 
 	autolevel = "spider",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	global_speed_base = 1.2,
 	stats = { str=10, dex=17, mag=3, con=7 },
 	combat = { dammod={dex=0.8} },
diff --git a/game/modules/tome/data/general/npcs/storm-drake.lua b/game/modules/tome/data/general/npcs/storm-drake.lua
index a535734b429b087b1e78ffe286662cfd23d83d7f..3b1e9b66af0a28ed220fed87cb6eb04243bac3e6 100644
--- a/game/modules/tome/data/general/npcs/storm-drake.lua
+++ b/game/modules/tome/data/general/npcs/storm-drake.lua
@@ -33,7 +33,7 @@ newEntity{
 	size_category = 5,
 
 	autolevel = "drake",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	stats = { str=20, dex=20, mag=30, con=16 },
 
 	resists = { [DamageType.LIGHTNING] = 100, },
diff --git a/game/modules/tome/data/general/npcs/sunwall-town.lua b/game/modules/tome/data/general/npcs/sunwall-town.lua
index 903def3fc412c4a9da551b5648bf051a244afa06..602e2006650478786eb60ef2ddf384a485b2f766 100644
--- a/game/modules/tome/data/general/npcs/sunwall-town.lua
+++ b/game/modules/tome/data/general/npcs/sunwall-town.lua
@@ -38,7 +38,7 @@ newEntity{
 	open_door = true,
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=12, dex=8, mag=6, con=10 },
 }
 
diff --git a/game/modules/tome/data/general/npcs/swarm.lua b/game/modules/tome/data/general/npcs/swarm.lua
index 7ae2e46a227a5a86d9e2d3b36ee97ff7d4b35c63..a27df07bdae1e5e779486c4e33b1c7da7d772280 100644
--- a/game/modules/tome/data/general/npcs/swarm.lua
+++ b/game/modules/tome/data/general/npcs/swarm.lua
@@ -32,7 +32,7 @@ newEntity{
 	sound_moam = {"creatures/swarm/mswarm_%d", 1, 4},
 	sound_die = "creatures/swarm/mswarm_die",
 	sound_random = {"creatures/swarm/mswarm_%d", 1, 4},
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=1, dex=20, mag=3, con=1 },
 	global_speed_base = 2,
 	infravision = 10,
diff --git a/game/modules/tome/data/general/npcs/telugoroth.lua b/game/modules/tome/data/general/npcs/telugoroth.lua
index 18a9b2dbb83246b6fb1556d54dd33ae5d42c482e..0f5445d820f747d12c4417c4fa7a5898bc58af8c 100644
--- a/game/modules/tome/data/general/npcs/telugoroth.lua
+++ b/game/modules/tome/data/general/npcs/telugoroth.lua
@@ -80,7 +80,7 @@ newEntity{
 	levitation = 1,
 
 	autolevel = "dexmage",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	global_speed_base = 1.5,
 	stats = { str=8, dex=12, mag=12, wil=12, con=10 },
 
diff --git a/game/modules/tome/data/general/npcs/thieve.lua b/game/modules/tome/data/general/npcs/thieve.lua
index 1393911244ad7dc521da9765230d96847df43fbc..918f6fba10bf56b4b1f6babc57c04da2f5c4eb9c 100644
--- a/game/modules/tome/data/general/npcs/thieve.lua
+++ b/game/modules/tome/data/general/npcs/thieve.lua
@@ -48,7 +48,7 @@ newEntity{
 	resolvers.inscriptions(1, "infusion"),
 
 	autolevel = "rogue",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=5, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=5, },
 	stats = { str=8, dex=15, mag=6, cun=15, con=7 },
 
 	resolvers.talents{ [Talents.T_LETHALITY]={base=1, every=6, max=5}, },
diff --git a/game/modules/tome/data/general/npcs/troll.lua b/game/modules/tome/data/general/npcs/troll.lua
index d16ff56171cc7f4c08e9a0409657d68020284962..8820199284a9946f786ccc960480c2c53a633d1d 100644
--- a/game/modules/tome/data/general/npcs/troll.lua
+++ b/game/modules/tome/data/general/npcs/troll.lua
@@ -41,7 +41,7 @@ newEntity{
 	size_category = 4,
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=20, dex=8, mag=6, con=16 },
 
 	open_door = true,
diff --git a/game/modules/tome/data/general/npcs/undead-rat.lua b/game/modules/tome/data/general/npcs/undead-rat.lua
index 46c4a4bdd6b10e7cce7b8cccda59867a2fa30274..8719eb0e7f82098ee0285a1051c7df95dc435bea 100644
--- a/game/modules/tome/data/general/npcs/undead-rat.lua
+++ b/game/modules/tome/data/general/npcs/undead-rat.lua
@@ -34,7 +34,7 @@ newEntity{
 	size_category = 1,
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	stats = { str=10, dex=8, mag=10, con=8 },
 
 	cut_immune = 1,
diff --git a/game/modules/tome/data/general/npcs/vampire.lua b/game/modules/tome/data/general/npcs/vampire.lua
index 5ca20e9d66767e50f3f553bdb592d2a0b0dcd662..5796b45171ed12fb4d41a4ceaf4505b9e01dde6f 100644
--- a/game/modules/tome/data/general/npcs/vampire.lua
+++ b/game/modules/tome/data/general/npcs/vampire.lua
@@ -31,7 +31,7 @@ newEntity{
 	drops = resolvers.drops{chance=20, nb=1, {} },
 
 	autolevel = "warriormage",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=9, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=9, },
 	stats = { str=12, dex=12, mag=12, con=12 },
 	infravision = 10,
 	life_regen = 3, life_rating = 14,
diff --git a/game/modules/tome/data/general/npcs/venom-drake.lua b/game/modules/tome/data/general/npcs/venom-drake.lua
index 7e3eb4349c8813ebc0f1c9f32613901cb789a435..179605f958287af33a0c059d9ed18d75603d4115 100644
--- a/game/modules/tome/data/general/npcs/venom-drake.lua
+++ b/game/modules/tome/data/general/npcs/venom-drake.lua
@@ -33,7 +33,7 @@ newEntity{
 	size_category = 5,
 
 	autolevel = "drake",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	stats = { str=20, dex=20, mag=30, con=16 },
 
 	resists = { [DamageType.ACID] = 100, },
diff --git a/game/modules/tome/data/general/npcs/vermin.lua b/game/modules/tome/data/general/npcs/vermin.lua
index 14f39f33ff799c6980bc9d3f92ae407f13aa881c..b345ea18e9056b1fe67d88116ab1c21c6186d3fd 100644
--- a/game/modules/tome/data/general/npcs/vermin.lua
+++ b/game/modules/tome/data/general/npcs/vermin.lua
@@ -30,7 +30,7 @@ newEntity{
 	combat = {sound={"creatures/worms/worm_%d", 1, 4}},
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	global_speed_base = 0.9,
 	stats = { str=10, dex=15, mag=3, con=3 },
 	combat_armor = 1, combat_def = 1,
diff --git a/game/modules/tome/data/general/npcs/wight.lua b/game/modules/tome/data/general/npcs/wight.lua
index b3dbd7e8b00d346d52ea61a7cd9767a258315d3c..a268d4818da62cb606e5b518990415ea0188b526 100644
--- a/game/modules/tome/data/general/npcs/wight.lua
+++ b/game/modules/tome/data/general/npcs/wight.lua
@@ -39,7 +39,7 @@ newEntity{
 	resolvers.drops{chance=20, nb=1, {ego_chance=20} },
 
 	autolevel = "caster",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=4, },
 	stats = { str=11, dex=11, mag=15, con=12 },
 	infravision = 10,
 	rank = 2,
diff --git a/game/modules/tome/data/general/npcs/wild-drake.lua b/game/modules/tome/data/general/npcs/wild-drake.lua
index a02b610270c5ac50d488c04ddd1585cbd9823e9a..b69062a61f136f6116a8d6a187da7c526f7b1921 100644
--- a/game/modules/tome/data/general/npcs/wild-drake.lua
+++ b/game/modules/tome/data/general/npcs/wild-drake.lua
@@ -33,7 +33,7 @@ newEntity{
 	size_category = 5,
 
 	autolevel = "drake",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 	stats = { str=20, dex=20, mag=30, con=16 },
 
 	knockback_immune = 1,
diff --git a/game/modules/tome/data/general/npcs/yaech.lua b/game/modules/tome/data/general/npcs/yaech.lua
index 6599688a8b848a38caad2530ce56844dc11e84f7..b0f7a5ce6af6b2a1a37d98d4d03f032d903fc7f8 100644
--- a/game/modules/tome/data/general/npcs/yaech.lua
+++ b/game/modules/tome/data/general/npcs/yaech.lua
@@ -40,7 +40,7 @@ newEntity{
 	open_door = true,
 
 	autolevel = "wildcaster",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=15, dex=15, mag=15, con=10 },
 }
 
diff --git a/game/modules/tome/data/general/npcs/ziguranth.lua b/game/modules/tome/data/general/npcs/ziguranth.lua
index 2bc6052ee5afe15bc25ac36d0074e6efcfba8708..65a51050b4060066100261cb91905d2c24805105 100644
--- a/game/modules/tome/data/general/npcs/ziguranth.lua
+++ b/game/modules/tome/data/general/npcs/ziguranth.lua
@@ -47,7 +47,7 @@ newEntity{
 	resolvers.inscriptions(1, "infusion"),
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=20, dex=15, mag=1, con=16, wil=19 },
 	not_power_source = {arcane=true},
 }
@@ -91,7 +91,7 @@ newEntity{ base = "BASE_NPC_ZIGURANTH",
 	equilibrium_regen = -20,
 
 	autolevel = "wildcaster",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 
 	resolvers.talents{
 		[Talents.T_RESOLVE]={base=4, every=5, max=8},
@@ -121,7 +121,7 @@ newEntity{ base = "BASE_NPC_ZIGURANTH",
 	equilibrium_regen = -20,
 
 	autolevel = "warriorwill",
-	ai_state = { ai_move="move_dmap", talent_in=2, },
+	ai_state = { ai_move="move_complex", talent_in=2, },
 	ai = "tactical",
 
 	resolvers.talents{
diff --git a/game/modules/tome/data/general/stores/basic.lua b/game/modules/tome/data/general/stores/basic.lua
index e175b92ff785e1a16609d19d5412695a2116af82..a488dd64950e9b3c8e22c3e4f48ea01bc5f183f2 100644
--- a/game/modules/tome/data/general/stores/basic.lua
+++ b/game/modules/tome/data/general/stores/basic.lua
@@ -499,3 +499,54 @@ newEntity{
 		},
 	},
 }
+
+
+-------------------------------------------------------------
+-- Arena
+-------------------------------------------------------------
+newEntity{
+	define_as = "ARENA_SHOP",
+	name = "gladiator's wares",
+	display = '*', colors=colors.BLACK,
+	store = {
+		purse = 100,
+		nb_fill = 64,
+		empty_before_restock = false,
+		filters = {
+			{type="weapon", subtype="longsword", id=true, tome_drops="boss"},
+			{type="weapon", subtype="greatsword", id=true, tome_drops="boss"},
+			{type="weapon", subtype="waraxe", id=true, tome_drops="boss"},
+			{type="weapon", subtype="battleaxe", id=true, tome_drops="boss"},
+			{type="weapon", subtype="mace", id=true, tome_drops="boss"},
+			{type="weapon", subtype="greatmaul", id=true, tome_drops="boss"},
+			{type="weapon", subtype="mindstar", id=true, tome_drops="boss"},
+			{type="weapon", subtype="dagger", id=true, tome_drops="boss"},
+			{type="weapon", subtype="staff", id=true, tome_drops="boss"},
+			{type="weapon", subtype="longbow", id=true, tome_drops="boss"},
+			{type="weapon", subtype="sling", id=true, tome_drops="boss"},
+			{type="ammo", id=true, tome_drops="boss"},
+			{type="ammo", id=true, tome_drops="store"},
+			{type="armor", subtype="heavy", id=true, tome_drops="boss"},
+			{type="armor", subtype="massive", id=true, tome_drops="boss"},
+			{type="armor", subtype="shield", id=true, tome_drops="boss"},
+			{type="armor", subtype="head", id=true, tome_drops="boss"},
+			{type="armor", subtype="light", id=true, tome_drops="boss"},
+			{type="armor", subtype="hands", id=true, tome_drops="boss"},
+			{type="armor", subtype="feet", id=true, tome_drops="boss"},
+			{type="armor", subtype="belt", id=true, tome_drops="boss"},
+			{type="armor", subtype="cloth", id=true, tome_drops="store"},
+			{type="armor", subtype="robe", id=true, tome_drops="store"},
+			{type="armor", subtype="cloak", id=true, tome_drops="store"},
+			{type="armor", subtype="belt", id=true, tome_drops="store"},
+			{type="charm", subtype="torque", id=true, tome_drops="boss"},
+			{type="charm", subtype="totem", id=true, tome_drops="boss"},
+			{type="charm", subtype="wand", id=true, tome_drops="boss"},
+			{type="scroll", subtype="infusion", id=true},
+			{type="scroll", subtype="rune", id=true},
+			{type="jewelry", id=true, tome_drops="store"},
+			{type="jewelry", id=true, tome_drops="boss"},
+
+
+		}
+	}
+}
\ No newline at end of file
diff --git a/game/modules/tome/data/talents/psionic/thought-forms.lua b/game/modules/tome/data/talents/psionic/thought-forms.lua
index 2d59f2aed69a2155ecbaf4875cd7cc7618bc2d3b..1471e8e076eecb62456e6841912c5b44902ec6b6 100644
--- a/game/modules/tome/data/talents/psionic/thought-forms.lua
+++ b/game/modules/tome/data/talents/psionic/thought-forms.lua
@@ -200,7 +200,7 @@ newTalent{
 			body = { INVEN = 10, MAINHAND = 1, BODY = 1, QUIVER=1, HANDS = 1, FEET = 1},
 
 			ai = "summoned", ai_real = "tactical",
-			ai_state = { ai_move="move_dmap", talent_in=3, ally_compassion=10 },
+			ai_state = { ai_move="move_complex", talent_in=3, ally_compassion=10 },
 			ai_tactic = resolvers.tactic("ranged"),
 			
 			max_life = resolvers.rngavg(100,110),
@@ -311,7 +311,7 @@ newTalent{
 			body = { INVEN = 10, MAINHAND = 1, BODY = 1, HANDS = 1, FEET = 1},
 		
 			ai = "summoned", ai_real = "tactical",
-			ai_state = { ai_move="move_dmap", talent_in=3, ally_compassion=10 },
+			ai_state = { ai_move="move_complex", talent_in=3, ally_compassion=10 },
 			ai_tactic = resolvers.tactic("melee"),
 			
 			max_life = resolvers.rngavg(100,110),
@@ -412,7 +412,7 @@ newTalent{
 			body = { INVEN = 10, MAINHAND = 1, OFFHAND = 1, BODY = 1, HANDS = 1, FEET = 1},
 			
 			ai = "summoned", ai_real = "tactical",
-			ai_state = { ai_move="move_dmap", talent_in=3, ally_compassion=10 },
+			ai_state = { ai_move="move_complex", talent_in=3, ally_compassion=10 },
 			ai_tactic = resolvers.tactic("tank"),
 			
 			max_life = resolvers.rngavg(100,110),
diff --git a/game/modules/tome/data/talents/spells/advanced-necrotic-minions.lua b/game/modules/tome/data/talents/spells/advanced-necrotic-minions.lua
index 43e00d6bc2b33b70cc9f2d5953745e694b9aa771..ce8535fe53e2f75d5476822b4af83b0298c6ff9e 100644
--- a/game/modules/tome/data/talents/spells/advanced-necrotic-minions.lua
+++ b/game/modules/tome/data/talents/spells/advanced-necrotic-minions.lua
@@ -30,7 +30,7 @@ local minions_list = {
 		rank = 2,
 		size_category = 4,
 		autolevel = "warrior",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 		stats = { str=20, dex=52, mag=16, con=16 },
 		resists = { [DamageType.PHYSICAL] = 20, [DamageType.BLIGHT] = 20, [DamageType.COLD] = 50, },
 		open_door = 1,
@@ -64,7 +64,7 @@ local minions_list = {
 		rank = 2,
 		size_category = 4,
 		autolevel = "warrior",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 		stats = { str=20, dex=52, mag=16, con=16 },
 		resists = { [DamageType.PHYSICAL] = 20, [DamageType.BLIGHT] = 20, [DamageType.COLD] = 50, },
 		open_door = 1,
@@ -98,7 +98,7 @@ local minions_list = {
 		rank = 2,
 		size_category = 4,
 		autolevel = "warrior",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 		stats = { str=20, dex=52, mag=16, con=16 },
 		resists = { [DamageType.PHYSICAL] = 20, [DamageType.BLIGHT] = 20, [DamageType.COLD] = 50, },
 		open_door = 1,
@@ -134,7 +134,7 @@ local minions_list = {
 		rank = 2,
 		size_category = 4,
 		autolevel = "warrior",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=2, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=2, },
 		stats = { str=20, dex=52, mag=16, con=16 },
 		resists = { [DamageType.PHYSICAL] = 20, [DamageType.BLIGHT] = 20, [DamageType.COLD] = 50, },
 		open_door = 1,
diff --git a/game/modules/tome/data/talents/spells/necrotic-minions.lua b/game/modules/tome/data/talents/spells/necrotic-minions.lua
index ea696057190385a88af5abb9fd5467f518f40305..6e17cad123d8fd15f71af6fc90ed1ce1d324f77f 100644
--- a/game/modules/tome/data/talents/spells/necrotic-minions.lua
+++ b/game/modules/tome/data/talents/spells/necrotic-minions.lua
@@ -105,7 +105,7 @@ local minions_list = {
 		rank = 2,
 		size_category = 3,
 		autolevel = "warrior",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=4, },
 		stats = { str=14, dex=12, mag=10, con=12 },
 		resolvers.racial(),
 		resolvers.tmasteries{ ["technique/other"]=0.3, ["technique/2hweapon-offense"]=0.3, ["technique/2hweapon-cripple"]=0.3 },
@@ -134,7 +134,7 @@ local minions_list = {
 		rank = 2,
 		size_category = 3,
 		autolevel = "warrior",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=4, },
 		stats = { str=14, dex=12, mag=10, con=12 },
 		resolvers.racial(),
 		resolvers.tmasteries{ ["technique/other"]=0.3, ["technique/2hweapon-offense"]=0.3, ["technique/2hweapon-cripple"]=0.3 },
@@ -165,7 +165,7 @@ local minions_list = {
 		rank = 2,
 		size_category = 3,
 		autolevel = "warrior",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=4, },
 		stats = { str=14, dex=12, mag=10, con=12 },
 		resolvers.racial(),
 		resolvers.tmasteries{ ["technique/other"]=0.3, ["technique/2hweapon-offense"]=0.3, ["technique/2hweapon-cripple"]=0.3 },
@@ -203,7 +203,7 @@ local minions_list = {
 		rank = 2,
 		size_category = 3,
 		autolevel = "warrior",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=4, },
 		stats = { str=14, dex=12, mag=10, con=12 },
 		resolvers.racial(),
 		resolvers.tmasteries{ ["technique/other"]=0.3, ["technique/2hweapon-offense"]=0.3, ["technique/2hweapon-cripple"]=0.3 },
@@ -235,7 +235,7 @@ local minions_list = {
 		rank = 2,
 		size_category = 3,
 		autolevel = "warrior",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=4, },
 		stats = { str=14, dex=12, mag=10, con=12 },
 		resolvers.racial(),
 		resolvers.tmasteries{ ["technique/other"]=0.3, ["technique/2hweapon-offense"]=0.3, ["technique/2hweapon-cripple"]=0.3 },
@@ -268,7 +268,7 @@ local minions_list = {
 		rank = 2,
 		size_category = 3,
 		autolevel = "warrior",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=4, },
 		stats = { str=14, dex=12, mag=10, con=12 },
 		resolvers.racial(),
 		resolvers.tmasteries{ ["technique/other"]=0.3, ["technique/2hweapon-offense"]=0.3, ["technique/2hweapon-cripple"]=0.3 },
@@ -386,7 +386,7 @@ local minions_list = {
 		level_range = {1, nil}, exp_worth = 0,
 		body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 		autolevel = "warriormage",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=9, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=9, },
 		stats = { str=12, dex=12, mag=12, con=12 },
 		infravision = 10,
 		life_regen = 3,
@@ -413,7 +413,7 @@ local minions_list = {
 		level_range = {1, nil}, exp_worth = 0,
 		body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 		autolevel = "warriormage",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=9, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=9, },
 		stats = { str=12, dex=12, mag=12, con=12 },
 		infravision = 10,
 		life_regen = 3,
@@ -442,7 +442,7 @@ local minions_list = {
 		body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 		level_range = {1, nil}, exp_worth = 0,
 		autolevel = "caster",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=4, },
 		stats = { str=11, dex=11, mag=15, con=12 },
 		infravision = 10,
 		rank = 2,
@@ -469,7 +469,7 @@ local minions_list = {
 		body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1 },
 		level_range = {1, nil}, exp_worth = 0,
 		autolevel = "caster",
-		ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
+		ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=4, },
 		stats = { str=11, dex=11, mag=15, con=12 },
 		infravision = 10,
 		rank = 2,
diff --git a/game/modules/tome/data/timed_effects/other.lua b/game/modules/tome/data/timed_effects/other.lua
index 913e27cac26eb7d43059078dd66c9390770773ae..70767a48bfc7d91daa7e8210aad074633e4d49da 100644
--- a/game/modules/tome/data/timed_effects/other.lua
+++ b/game/modules/tome/data/timed_effects/other.lua
@@ -1620,7 +1620,7 @@ newEffect{
 				summoner = eff.target, summoner_gain_exp=true,
 				ai_target = {actor=nil},
 				ai = "summoned", ai_real = "tactical",
-				ai_state = eff.target.ai_state or { ai_move="move_dmap", talent_in=1 },
+				ai_state = eff.target.ai_state or { ai_move="move_complex", talent_in=1 },
 				name = eff.target.name.."'s dream projection",
 			})
 			m.ai_state.ally_compassion = 10
diff --git a/game/modules/tome/data/zones/arena-unlock/npcs.lua b/game/modules/tome/data/zones/arena-unlock/npcs.lua
index 5468071b0c4588e59bc3fcd20259b0c1a7d17459..c472d283d89069a48d5d2c418d77785b1448acd6 100644
--- a/game/modules/tome/data/zones/arena-unlock/npcs.lua
+++ b/game/modules/tome/data/zones/arena-unlock/npcs.lua
@@ -37,7 +37,7 @@ newEntity{ name = "gladiator",
 	open_door = true,
 	stun_immune = 0.4,
 	autolevel = "warrior",
-	ai = "tactical", ai_state = { ai_move = "move_dmap", talent_in = 1 },
+	ai = "tactical", ai_state = { ai_move = "move_complex", talent_in = 1 },
 
 	stats = { str=15, dex=15, mag=1, con=15 },
 	desc = [[A menacing man in heavy armor, wielding a mace. He looks battle-hardened.]],
@@ -84,7 +84,7 @@ newEntity{ name = "halfling slinger",
 	lite = 2,
 	open_door = true,
 	autolevel = "slinger",
-	ai = "tactical", ai_state = { ai_move = "move_dmap", talent_in = 1 },
+	ai = "tactical", ai_state = { ai_move = "move_complex", talent_in = 1 },
 
 	stats = { str=10, dex=15, cun=15, con=8 },
 	desc = [[A halfling slinger. He seems adept at combat.]],
@@ -136,7 +136,7 @@ newEntity{ name = "arcane blade",
 	lite = 2,
 	open_door = true,
 	autolevel = "warrior",
-	ai = "tactical", ai_state = { ai_move = "move_dmap", talent_in = 1 },
+	ai = "tactical", ai_state = { ai_move = "move_complex", talent_in = 1 },
 
 	stats = { str=20, dex=20, mag=8, con=16 },
 	desc = [[A human Arcane Blade. His body shows multiple scars from battle.]],
diff --git a/game/modules/tome/data/zones/arena/npcs.lua b/game/modules/tome/data/zones/arena/npcs.lua
index 06b1b0160db204b9d9162bce54235f12367ae494..9ff4dd2037eb9e5aecb0ce82e9392a94b4251698 100644
--- a/game/modules/tome/data/zones/arena/npcs.lua
+++ b/game/modules/tome/data/zones/arena/npcs.lua
@@ -34,43 +34,6 @@ load("/data/general/npcs/horror-corrupted.lua")
 
 local Talents = require("engine.interface.ActorTalents")
 
---Fodder
-newEntity{ name = "flying skull",
-	type = "undead", subtype = "skull",
-	display = "*", color=colors.BLACK, tint=colors.BLACK,
-	desc = [[A floating disembodied skull with an aura of darkness.]],
-	combat = { dam=10, atk=5, apr=10, physspeed=1 },
-	blood_color = colors.YELLOW,
-	level_range = {1, nil},
-	exp_worth = 1,
-	max_life = 10,
-	body = { INVEN = 1, MAINHAND=1, OFFHAND=1, BODY=1, QUIVER=1 },
-	no_drops = true, open_door = false,
-	infravision = 10,
-	rarity = false,
-	lite = 4,
-	life_rating = 1, rank = 1, size_category = 1,
-	autolevel = "caster",
-	ai = "dumb_talented_simple", ai_state = { ai_move = "move_astar", talent_in = 1 },
-	global_speed_base = 1,
-	stats = { str = 9, dex = 20, mag = 20 },
-	resolvers.talents{
-		[Talents.T_EXPLODE] = 3,
-	},
-	no_breath = 1,
-	blind_immune = 1,
-	fear_immune = 1,
-	rank = 2,
-	size_category = 1,
-	poison_immune = 1,
-	disease_immune = 1,
-	poison_immune = 1,
-	stun_immune = 1,
-	undead = 1,
-	resolvers.sustains_at_birth(),
-}
-
-
 --Base arena human
 newEntity{ define_as = "BASE_NPC_ARENA1",
 	type = "humanoid", subtype = "human",
@@ -79,7 +42,6 @@ newEntity{ define_as = "BASE_NPC_ARENA1",
 	combat = { dam=resolvers.rngavg(5,12), atk=2, apr=6, physspeed=2 },
 
 	body = { INVEN = 10, MAINHAND=1, OFFHAND=1, BODY=1, QUIVER=1 },
-	resolvers.drops{chance=25, nb=1, {} },
 	resolvers.drops{chance=100, nb=1, {type="money"} },
 	resolvers.inscriptions(1, {}),
 	infravision = 10,
@@ -90,9 +52,9 @@ newEntity{ define_as = "BASE_NPC_ARENA1",
 	stun_immune = 0.2,
 	confusion_immune = 0.1,
 	fear_immune = 0.1,
-	ai = "tactical", ai_state = { ai_move = "move_dmap", talent_in = 1 },
-	stats = { str = 10, dex = 10, mag = 10, con = 10 },
-	resolvers.talents{ [Talents.T_ARMOUR_TRAINING] = 2, },
+	ai = "tactical", ai_state = { ai_move = "move_complex", talent_in = 1 },
+	stats = { str = 10, dex = 10, mag = 10, con = 10, cun = 10, wil = 10 },
+	resolvers.talents{ [Talents.T_ARMOUR_TRAINING] = 4, },
 	resolvers.equip{
 		{type="armor", subtype="feet", autoreq=true},
 	},
@@ -119,6 +81,25 @@ newEntity{ name = "skeletal rat",
 	resolvers.sustains_at_birth(),
 }
 
+newEntity{ name = "homeless fighter",
+	base = "BASE_NPC_ARENA1",
+	type = "humanoid", subtype = "human",
+	color = colors.BROWN,
+	life_rating = 4,
+	desc = "Will fight for a meal.",
+	equipment = resolvers.equip{
+		{ type="weapon", force_drop=true, autoreq = true },
+		{ type="armor", force_drop=true, autoreq = true },
+	},
+	max_life = resolvers.rngavg(80,90),
+	level_range = {2, 25}, exp_worth = 1,
+	rarity = 0,
+	combat_def = 1,
+	resolvers.talents{
+		[Talents.T_DIRTY_FIGHTING] = 1,
+	}
+}
+
 newEntity{ name = "golden crystal",
 	base = "BASE_NPC_CRYSTAL",
 	define_as = "GOLDCRYSTAL",
@@ -313,7 +294,7 @@ newEntity{ name = "headless horror",
 	rarity = 3,
 	rank = 3,
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	combat = { dam=18, atk=18, apr=10, dammod={str=1} },
 	combat = {damtype=DamageType.PHYSICAL},
 	no_auto_resists = true,
@@ -1031,10 +1012,10 @@ newEntity{ name = "anorithil",
 	autolevel = "caster", ai_tactic = resolvers.tactic("ranged"),
 	resolvers.drops{chance=50, nb=1, {type="weapon", subtype="staff", force_drop=true, tome_drops="boss"}},
 	combat_def = 4,
-	positive_regen = 5, negative_regen = 5,
 	resolvers.talents{
 		[Talents.T_CIRCLE_OF_SHIFTING_SHADOWS]=2,
 		[Talents.T_CIRCLE_OF_BLAZING_LIGHT]=2,
+		[Talents.T_TWILIGHT]=2,
 		[Talents.T_SEARING_LIGHT]=2,
 		[Talents.T_MOONLIGHT_RAY]=1,
 		[Talents.T_HYMN_OF_SHADOWS]=2,
@@ -1068,7 +1049,7 @@ newEntity{ name = "sun paladin",
 		[Talents.T_CRUSADE]=3,
 		[Talents.T_SHIELD_OF_LIGHT]=1,
 		[Talents.T_BRANDISH]=1,
-		[Talents.T_ARMOUR_TRAINING]=1,
+		[Talents.T_ARMOUR_TRAINING]=2,
 		[Talents.T_WEAPON_COMBAT]=2,
 	},
 }
@@ -1097,10 +1078,10 @@ newEntity{ name = "star crusader",
 	resolvers.drops{ chance=50, nb=1, {type="weapon", subtype="staff", force_drop=true, tome_drops="boss"} },
 	combat_def = 4,
 	autolevel = "warriormage", ai_tactic = resolvers.tactic("melee"),
-	positive_regen = 5, negative_regen = 5,
 	resolvers.talents{
 		[Talents.T_CIRCLE_OF_SHIFTING_SHADOWS]=2,
 		[Talents.T_CIRCLE_OF_BLAZING_LIGHT]=2,
+		[Talents.T_TWILIGHT]=2,
 		[Talents.T_SEARING_LIGHT]=2,
 		[Talents.T_MOONLIGHT_RAY]=1,
 		[Talents.T_HYMN_OF_SHADOWS]=2,
@@ -1113,4 +1094,4 @@ newEntity{ name = "star crusader",
 		[Talents.T_WEAPON_COMBAT]=1,
 		[Talents.T_WEAPONS_MASTERY]=1,
 	},
-}
+}
\ No newline at end of file
diff --git a/game/modules/tome/data/zones/arena/zone.lua b/game/modules/tome/data/zones/arena/zone.lua
index e0b8626f20df1017fa22388aaefc9724aea8f698..86f42a6e4217888d90e8fe66d56623db40743553 100644
--- a/game/modules/tome/data/zones/arena/zone.lua
+++ b/game/modules/tome/data/zones/arena/zone.lua
@@ -39,7 +39,7 @@ return {
 		map = {
 			class = "engine.generator.map.Static",
 			map = "zones/arena",
-			zoom = 4,
+			zoom = 5,
 		},
 		actor = { },
 		--object = { },
@@ -63,9 +63,6 @@ return {
 				elseif game.level.arena.event == 3 then game.log("#LIGHT_RED#Final round starts!!!!")
 				end
 				game.level.arena.removeStuff()
-				if game.player.money > 0 then
-					game.level.arena.goldToScore()
-				end
 				game.level.arena.openGates()
 			end
 		end
@@ -87,7 +84,7 @@ return {
 
 
 	post_process = function(level)
-		game.player.money = 0
+		game.player.money = 100
 		game.player.no_resurrect = true
 		game.player.on_die = function (self, src)
 			local rank = math.floor(game.level.arena.rank)
@@ -96,7 +93,6 @@ return {
 			local lastScore = {
 				name = game.player.name.." the "..drank,
 				score = game.level.arena.score,
-				perk = game.level.arena.perk,
 				wave = game.level.arena.currentWave,
 				sex = game.player.descriptor.sex,
 				race = game.player.descriptor.subrace,
@@ -112,9 +108,13 @@ return {
 		level.max_turn_counter = 60 --5 turns before action starts.
 		level.turn_counter_desc = ""
 
+--TODO(Hetdegon@2012-12-11):Finish display, add shop, enforce enemy drops to be more regular.
+--TODO(Hetdegon@2012-12-11):Drops on high combo.
+
+
 		--world.arena = nil
 		if not world.arena or not world.arena.ver then
-			local emptyScore = {name = nil, score = 0, perk = nil, wave = 1, sex = nil, race = nil, class = nil}
+			local emptyScore = {name = nil, score = 0, wave = 1, sex = nil, race = nil, class = nil}
 			world.arena = {
 				master30 = nil,
 				master60 = nil,
@@ -127,9 +127,8 @@ return {
 			if o then game.zone:addEntity(game.level, o, "object", 7, 3) end
 		end
 		level.arena = {
-			ranks = { "nobody", "rat stomper", "aspirant", "fighter", "brave", "dangerous", "promise", "powerful", "rising star", "destroyer", "obliterator", "annihilator", "grandious", "glorious", "victorious", "ultimate", "ultimate", "ultimate", "ultimate", "ultimate", "grand master" },
+			ranks = { "nobody", "rat stomper", "bear beater", "aspirant", "fighter", "bold", "gladiator", "brave", "dangerous", "promise", "powerful", "rising star", "destroyer", "obliterator", "annihilator", "grandious", "glorious", "victorious", "ultimate", "ultimate", "ultimate", "ultimate", "ultimate", "grand master" },
 			rank = 1,
-			perk = nil,
 			event = 0,
 			initEvent = false,
 			lockEvent = false,
@@ -202,6 +201,7 @@ return {
 					function () return 12, 10 end,
 				}
 			},
+
 			clear = function()
 				game.player:setQuestStatus("arena", engine.Quest.COMPLETED)
 				local master = game.player:cloneFull()
@@ -235,6 +235,7 @@ return {
 					world.arena.master30 = master
 				end
 			end,
+
 			printRankings = function (val)
 				local scores = world.arena.scores
 				if not scores or not scores[1] or not scores[1].name then return "#LIGHT_GREEN#...but it's been wiped out recently."
@@ -246,20 +247,22 @@ return {
 					local i = 1
 					while(scores[i] and scores[i].name) do
 						p = scores[i]
-						tmp = stri:format(p.name:capitalize(), p.sex or "???", p.race or "???", p.class or "???", p.score or 0, p.perk or "???", p.wave or 0)
+						tmp = stri:format(p.name:capitalize(), p.sex or "???", p.race or "???", p.class or "???", p.score or 0, p.wave or 0)
 						text = text..line(tmp, "#LIGHT_BLUE#")
 						i = i + 1
 					end
 					p = world.arena.lastScore
-					tmp = "\n#YELLOW#LAST:"..stri:format(p.name:capitalize(), p.sex or "unknown", p.race or "unknown", p.class or "unknown", p.score or 0, p.perk or "", p.wave or 0)
+					tmp = "\n#YELLOW#LAST SCORE:"..stri:format(p.name:capitalize(), p.sex or "unknown", p.race or "unknown", p.class or "unknown", p.score or 0, p.wave or 0)
 					return text..line(tmp, "#YELLOW#")
 				end
 			end,
+
 			printRank = function (r, ranks)
 				local rank = math.floor(r)
 				if rank > #ranks then rank = #ranks end
 				return ranks[rank]
 			end,
+
 			updateScores = function(l)
 				local scores = world.arena.scores or {}
 				table.insert(scores, l)
@@ -269,6 +272,7 @@ return {
 				if l.wave > world.arena.bestWave then world.arena.bestWave = l.wave end
 				world.arena.lastScore = l
 			end,
+
 			openGates = function()
 				local gates = game.level.arena.entry.door
 				local g = game.zone:makeEntityByName(game.level, "terrain", "LOCK_OPEN")
@@ -279,8 +283,9 @@ return {
 					game.nicer_tiles:updateAround(game.level, x, y)
 				end
 				game:playSoundNear(game.player, "talents/earth")
-				game.log("#LIGHT_GREEN#The gates open!")
+				game.log("#YELLOW#The gates open!")
 			end,
+
 			closeGates = function()
 				local gates = game.level.arena.entry.door
 				local g = game.zone:makeEntityByName(game.level, "terrain", "LOCK")
@@ -294,6 +299,7 @@ return {
 				game:playSoundNear(game.player, "talents/earth")
 				game.log("#LIGHT_RED#The gates close!")
 			end,
+
 			raiseRank = function (val)
 				if game.level.arena.rank >= 21 then return end
 				local currentRank = math.floor(game.level.arena.rank)
@@ -302,13 +308,14 @@ return {
 				local newRank = math.floor(game.level.arena.rank)
 				if currentRank < newRank then --Player's rank increases!
 					local x, y = game.level.map:getTileToScreen(game.player.x, game.player.y)
-					if newRank == 10 then world:gainAchievement("XXX_THE_DESTROYER", game.player)
+					if newRank == 13 then world:gainAchievement("XXX_THE_DESTROYER", game.player)
 					elseif newRank == 21 then world:gainAchievement("GRAND_MASTER", game.player)
 					end
 					game.flyers:add(x, y, 90, 0, -0.5, "RANK UP!!", { 2, 57, 185 }, true)
-					game.log("#LIGHT_GREEN#The public is pleased by your performance! You now have the rank of #WHITE#"..game.level.arena.ranks[newRank].."!")
+					game.log("#LIGHT_GREEN#The public is pleased by your performance! You now have the rank of #WHITE#"..game.level.arena.ranks[newRank].."#LIGHT_GREEN#!")
 				end
 			end,
+
 			checkCombo = function (k)
 				if k >= 10 then world:gainAchievement("TEN_AT_ONE_BLOW", game.player) end
 				if k > 2 then
@@ -317,35 +324,24 @@ return {
 					game.level.arena.raiseRank(b)
 					game.flyers:add(x, y, 90, 0.5, 0, k.." kills!", { 2, 57, 185 }, false)
 					game.log("#YELLOW#You killed "..k.." enemies in a single turn! The public is excited!")
+					if k >= 4 and k < 6 then
+						local drop = game.zone:makeEntity(game.level, "object", {tome = { ego=30, double_ego=15, greater=7, greater_normal=1 }}, nil, true)
+						game.zone:addEntity(game.level, drop, "object", game.player.x, game.player.y)
+					elseif k >= 6 and k < 8 then
+						local drop = game.zone:makeEntity(game.level, "object", {tome = { ego=60, double_ego=30, greater=15, greater_normal=10, double_greater=1 }}, nil, true)
+						game.zone:addEntity(game.level, drop, "object", game.player.x, game.player.y)
+					elseif k >= 8 and k < 10 then
+						local drop = game.zone:makeEntity(game.level, "object", {tome = { double_ego=60, greater=35, greater_normal=20, double_greater=5 }}, nil, true)
+						game.zone:addEntity(game.level, drop, "object", game.player.x, game.player.y)
+					elseif k >= 10 then
+						local drop = game.zone:makeEntity(game.level, "object", {tome = { greater=70, greater_normal=40, double_greater=25 }}, nil, true)
+						game.zone:addEntity(game.level, drop, "object", game.player.x, game.player.y)
+					end
+
 				else return
 				end
 			end,
-			addTrap = function ()
-				local g = game.zone:makeEntity(game.level, "trap", nil, nil, true)
-				local d = game.level.arena.currentWave
-				g.dam = 5 + (d * 2) + rng.range(d, d * 1.5)
-				game.zone:addEntity(game.level, g, "trap", 7, 7)
-				g:setKnown(game.player, true)
-				game.level.map:updateMap(7, 7)
-				game.level.map:particleEmitter(7, 7, 0.3, "demon_teleport")
-				if d > 1 then game.log("#YELLOW#The trap changes...") end
-			end,
-			goldToScore = function ()
-				local x, y = game.level.map:getTileToScreen(game.player.x, game.player.y)
-				local goldAward = game.player.money * 100
-				local healthAward = game.player.money * 10
-				local regStamina = goldAward * 0.5
-				game.level.arena.score = game.level.arena.score + goldAward
-				game.flyers:add(x, y, 90, 0, -0.6, "GOLD BONUS! +"..goldAward.." SCORE!", { 2, 57, 185 }, false)
-				game.log("#ROYAL_BLUE#Gold bonus! Score increased by #WHITE#"..goldAward.."#ROYAL_BLUE#! #LIGHT_GREEN#You also recover some health(#WHITE#+"..healthAward.."#LIGHT_GREEN#!)#LAST#")
-				if game.player:knowTalent(game.player.T_STAMINA_POOL) then
-					game.player:incStamina(regStamina)
-					game.log("#LIGHT_GREEN#Stamina(#WHITE#+"..regStamina.."#LIGHT_GREEN#)")
-				end
-				game.player.money = 0
-				game.player:heal(healthAward)
-				game.player.changed = true
-			end,
+
 			initWave = function (val) --Clean up and start a new wave.
 				if val > 20 then --If the player has more than 20 turns of rest, clean up all items lying around.
 					game.level.arena.clearItems = true
@@ -360,6 +356,7 @@ return {
 				game.level.arena.pinchValue = 0
 				game.level.arena.pinch = false
 				if game.level.arena.display then game.level.arena.display = nil end
+				--NOTE(Hetdegon@2012-10-02):Replace this to an event table.
 				if game.level.arena.currentWave % game.level.arena.eventWave == 0 then
 					if game.level.arena.currentWave % (game.level.arena.eventWave * 3) == 0 then --Boss round!
 						game.log("#VIOLET#Boss round!!!")
@@ -376,11 +373,11 @@ return {
 				end
 				game.level.arena.initEvent = false
 				game.level.arena.lockEvent = false
-				game.level.arena.addTrap()
 				if game.level.arena.currentWave == 21 then world:gainAchievement("ARENA_BATTLER_20", game.player)
 				elseif game.level.arena.currentWave == 51 then world:gainAchievement("ARENA_BATTLER_50", game.player)
 				end
 			end,
+
 			removeStuff = function ()
 				for i = 0, game.level.map.w - 1 do
 					for j = 0, game.level.map.h - 1 do
@@ -389,6 +386,7 @@ return {
 					end
 				end
 			end,
+
 			doReward = function (val)
 				local col = "#ROYAL_BLUE#"
 				local hgh = "#WHITE#"
@@ -406,6 +404,7 @@ return {
 				game.log(col.."Your experience increases by"..hgh..expAward..col.."!")
 				game.player.changed = true
 			end,
+
 			clearRound = function () --Relax and give rewards.
 				--Do rewarding.
 				local val = game.level.arena.pinchValue
@@ -424,6 +423,7 @@ return {
 				game.level.max_turn_counter = rest_time * 10
 				game.level.arena.initWave(val)
 			end,
+
 			checkPinch = function ()
 				if game.level.arena.danger > game.level.arena.dangerTop and game.level.arena.pinch == false then --The player is in a pinch!
 					if game.level.arena.danger - game.level.arena.dangerTop < 10 then return end --Ignore minimal excess of power.
@@ -445,6 +445,5 @@ return {
 		local Chat = require "engine.Chat"
 		local chat = Chat.new("arena-start", {name="Arena mode"}, game.player, {text = level.arena.printRankings()})
 		chat:invoke()
-		game.level.arena.addTrap()
 	end
-}
+}
\ No newline at end of file
diff --git a/game/modules/tome/data/zones/blighted-ruins/npcs.lua b/game/modules/tome/data/zones/blighted-ruins/npcs.lua
index bf41a2804c9432bffe04f4886bafc0c6d9158a9c..08fb6dee7742d4523f561e9abad15aa23702d3aa 100644
--- a/game/modules/tome/data/zones/blighted-ruins/npcs.lua
+++ b/game/modules/tome/data/zones/blighted-ruins/npcs.lua
@@ -47,7 +47,7 @@ newEntity{
 	open_door = true,
 
 	autolevel = "caster",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=10, dex=8, mag=16, con=6 },
 
 	max_life = resolvers.rngavg(70,80), life_rating = 7,
diff --git a/game/modules/tome/data/zones/crypt-kryl-feijan/npcs.lua b/game/modules/tome/data/zones/crypt-kryl-feijan/npcs.lua
index 6ec38e53b83eb1a8a22f9d1c54bf4d7322957289..c18bae05896452ddf6ed76d5a69e4bb1cd7f0d69 100644
--- a/game/modules/tome/data/zones/crypt-kryl-feijan/npcs.lua
+++ b/game/modules/tome/data/zones/crypt-kryl-feijan/npcs.lua
@@ -85,7 +85,7 @@ newEntity{ define_as = "MELINDA",
 	resolvers.generic(function(e) if engine.Map.tiles.nicer_tiles then e.display_w = 2 end end),
 	desc = [[A female human with twisted sigils scored into her naked flesh. Her wrists and ankles are sore and hurt by ropes and chains. You can discern great beauty beyond the stains of blood covering her skin.]],
 	autolevel = "tank",
-	ai = "summoned", ai_real = "move_dmap", ai_state = { ai_target="target_player", talent_in=4, },
+	ai = "summoned", ai_real = "move_complex", ai_state = { ai_target="target_player", talent_in=4, },
 	stats = { str=8, dex=7, mag=8, con=12 },
 	faction = "victim", hard_faction = "victim",
 	never_anger = true,
diff --git a/game/modules/tome/data/zones/keepsake-meadow/npcs.lua b/game/modules/tome/data/zones/keepsake-meadow/npcs.lua
index ecc499ce58e724956a0bfa5420c5af896f34a37d..ee20fd987b2a7c1bedab5e8ff063f961501a110f 100644
--- a/game/modules/tome/data/zones/keepsake-meadow/npcs.lua
+++ b/game/modules/tome/data/zones/keepsake-meadow/npcs.lua
@@ -44,7 +44,7 @@ newEntity{
 	resolvers.talents{ [Talents.T_ARMOUR_TRAINING]=2, [Talents.T_WEAPON_COMBAT]={base=1, every=10, max=5}, [Talents.T_WEAPONS_MASTERY]={base=1, every=10, max=5} },
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=20, dex=8, mag=6, con=16 },
 	
 	emote_random = {chance=10, "To arms!", "Monster!", "Die!", "You will not kill us!", "We will end this!"},
@@ -165,7 +165,7 @@ newEntity{
 	resolvers.talents{ [Talents.T_ARMOUR_TRAINING]=2, [Talents.T_WEAPON_COMBAT]={base=1, every=10, max=5}, [Talents.T_WEAPONS_MASTERY]={base=1, every=10, max=5} },
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 }
 
 newEntity{ base = "BASE_SHADOW", define_as = "SHADOW_CLAW",
@@ -244,7 +244,7 @@ newEntity{ base = "BASE_SHADOW", define_as = "SHADOW_CASTER",
 		[Talents.T_REPROACH]={base=1, every=10, max=5},
 		[Talents.T_MIND_SEAR]={base=1, every=10, max=5},
 	},
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 }
 
 newEntity{
@@ -266,7 +266,7 @@ newEntity{
 
 	open_door = true,
 
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	power_source = {technique=true},
 }
 
diff --git a/game/modules/tome/data/zones/ring-of-blood/npcs.lua b/game/modules/tome/data/zones/ring-of-blood/npcs.lua
index 476e32a24b4de65e0cf7d3a2cd0fee2dca17264d..6c1ad5757d28d169e73930eb7e3e6c5a4cd197f8 100644
--- a/game/modules/tome/data/zones/ring-of-blood/npcs.lua
+++ b/game/modules/tome/data/zones/ring-of-blood/npcs.lua
@@ -164,7 +164,7 @@ newEntity{
 	resolvers.talents{ [Talents.T_ARMOUR_TRAINING]=2, [Talents.T_WEAPON_COMBAT]={base=1, every=10, max=5}, [Talents.T_WEAPONS_MASTERY]={base=1, every=10, max=5} },
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=20, dex=8, mag=6, con=16 },
 }
 
diff --git a/game/modules/tome/data/zones/ritch-tunnels/npcs.lua b/game/modules/tome/data/zones/ritch-tunnels/npcs.lua
index dc7337d7d63c2df79adc2fafe08385cb94f8e334..86e172774893de06e8583779d3e1c9dd020d1fc6 100644
--- a/game/modules/tome/data/zones/ritch-tunnels/npcs.lua
+++ b/game/modules/tome/data/zones/ritch-tunnels/npcs.lua
@@ -41,7 +41,7 @@ Vicious predators, they inject corrupting diseases into their foes, and their sh
 	rank = 2,
 
 	autolevel = "slinger",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=15, dex=15, mag=8, con=10 },
 
 	poison_immune = 0.5,
@@ -60,7 +60,7 @@ newEntity{ base = "BASE_NPC_RITCH_REL",
 
 	rank = 2,
 
-	ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai_state = { ai_move="move_complex", talent_in=1, },
 	resolvers.talents{
 		[Talents.T_RITCH_FLAMESPITTER_BOLT]=1,
 	},
@@ -75,7 +75,7 @@ newEntity{ base = "BASE_NPC_RITCH_REL",
 
 	rank = 2,
 
-	ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai_state = { ai_move="move_complex", talent_in=1, },
 	resolvers.talents{
 		[Talents.T_RUSHING_CLAWS]=1,
 	},
@@ -91,7 +91,7 @@ newEntity{ base = "BASE_NPC_RITCH_REL",
 	rank = 2,
 	combat_armor = 6,
 
-	ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai_state = { ai_move="move_complex", talent_in=1, },
 }
 
 newEntity{ base = "BASE_NPC_RITCH_REL", define_as = "HIVE_MOTHER",
diff --git a/game/modules/tome/data/zones/slazish-fen/npcs.lua b/game/modules/tome/data/zones/slazish-fen/npcs.lua
index bd7635aae23851b5ae7c02ead58e0a8c84d096ac..b49df729eeca3b8a1e473a5c06a0becbae6be66d 100644
--- a/game/modules/tome/data/zones/slazish-fen/npcs.lua
+++ b/game/modules/tome/data/zones/slazish-fen/npcs.lua
@@ -53,7 +53,7 @@ newEntity{
 	resolvers.inscriptions(1, "rune"),
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=15, dex=15, mag=15, con=10 },
 	ingredient_on_death = "NAGA_TONGUE",
 }
diff --git a/game/modules/tome/data/zones/town-angolwen/npcs.lua b/game/modules/tome/data/zones/town-angolwen/npcs.lua
index 3a116b3ac45300eb2ee8ac89b97dd16bb1936fd0..7b5b439f7df59adfa0533b2d8988f0c0fc8ee2bc 100644
--- a/game/modules/tome/data/zones/town-angolwen/npcs.lua
+++ b/game/modules/tome/data/zones/town-angolwen/npcs.lua
@@ -179,7 +179,7 @@ newEntity{
 	open_door = true,
 
 	autolevel = "caster",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=8, dex=8, mag=16, wil=18, con=10 },
 
 	emote_random = resolvers.emote_random{allow_backup_guardian=true},
diff --git a/game/modules/tome/data/zones/town-derth/npcs.lua b/game/modules/tome/data/zones/town-derth/npcs.lua
index b21641ec7d2e740bc493173d3fbaa16fc48c3eb7..5fb1cdce6eb9e79de300ccaa9a2a9c367acc8be2 100644
--- a/game/modules/tome/data/zones/town-derth/npcs.lua
+++ b/game/modules/tome/data/zones/town-derth/npcs.lua
@@ -43,7 +43,7 @@ newEntity{
 	resolvers.inscriptions(1, "infusion"),
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=12, dex=8, mag=6, con=10 },
 
 	emote_random = resolvers.emote_random{allow_backup_guardian=true},
diff --git a/game/modules/tome/data/zones/town-elvala/npcs.lua b/game/modules/tome/data/zones/town-elvala/npcs.lua
index d25ba422a984a8bb4e67cba711c2e335e628a862..0270584aeaa661bce18f0cf1d3d58050c54163c4 100644
--- a/game/modules/tome/data/zones/town-elvala/npcs.lua
+++ b/game/modules/tome/data/zones/town-elvala/npcs.lua
@@ -43,7 +43,7 @@ newEntity{
 	resolvers.inscriptions(1, "rune"),
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=12, dex=8, mag=6, con=10 },
 
 	emote_random = resolvers.emote_random{allow_backup_guardian=true},
diff --git a/game/modules/tome/data/zones/town-irkkk/npcs.lua b/game/modules/tome/data/zones/town-irkkk/npcs.lua
index b9d680d8fe8006fd45bd4f1e3ab8f3bfb818afdc..f682d8d84dafffee4609822dfd04a70554c8e6da 100644
--- a/game/modules/tome/data/zones/town-irkkk/npcs.lua
+++ b/game/modules/tome/data/zones/town-irkkk/npcs.lua
@@ -43,7 +43,7 @@ newEntity{
 	resolvers.inscriptions(1, "infusion"),
 
 	autolevel = "wildcaster",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=7, dex=8, mag=6, wil=15, con=10 },
 
 	emote_random = resolvers.emote_random{allow_backup_guardian=true},
diff --git a/game/modules/tome/data/zones/town-iron-council/npcs.lua b/game/modules/tome/data/zones/town-iron-council/npcs.lua
index ff722adf610c24c74a12b35167bfb64c3e6e7c63..6eec78a41754c09f13c3cf7b8e3466a11ed01a2e 100644
--- a/game/modules/tome/data/zones/town-iron-council/npcs.lua
+++ b/game/modules/tome/data/zones/town-iron-council/npcs.lua
@@ -44,7 +44,7 @@ newEntity{
 	resolvers.inscriptions(1, "rune"),
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=12, dex=8, mag=6, con=10 },
 
 	emote_random = resolvers.emote_random{allow_backup_guardian=true},
diff --git a/game/modules/tome/data/zones/town-last-hope/npcs.lua b/game/modules/tome/data/zones/town-last-hope/npcs.lua
index 309f4fdd48bb2efa6b1979c14e1ac95e162bb621..423961eb5ccf65e0096445882e1122ef360ef285 100644
--- a/game/modules/tome/data/zones/town-last-hope/npcs.lua
+++ b/game/modules/tome/data/zones/town-last-hope/npcs.lua
@@ -43,7 +43,7 @@ newEntity{
 	resolvers.inscriptions(1, "infusion"),
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=1, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=1, },
 	stats = { str=12, dex=8, mag=6, con=10 },
 
 	emote_random = resolvers.emote_random{allow_backup_guardian=true},
diff --git a/game/modules/tome/data/zones/town-shatur/npcs.lua b/game/modules/tome/data/zones/town-shatur/npcs.lua
index 8bf86300142b37d76a35c4b733f467fddebaee97..cabf308a1e8a8f186c7577905fbf27004dc6f6b6 100644
--- a/game/modules/tome/data/zones/town-shatur/npcs.lua
+++ b/game/modules/tome/data/zones/town-shatur/npcs.lua
@@ -41,7 +41,7 @@ newEntity{
 	resolvers.inscriptions(1, "rune"),
 
 	autolevel = "warrior",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=3, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=3, },
 	stats = { str=12, dex=8, mag=6, con=10 },
 
 	emote_random = resolvers.emote_random{allow_backup_guardian=true},
diff --git a/game/modules/tome/data/zones/tutorial-combat-stats/npcs.lua b/game/modules/tome/data/zones/tutorial-combat-stats/npcs.lua
index ae174db5c7eb4a76b3d4f0a0b76bcb8f29437bf6..2f62510378f2b6340cfbc2d95261fa1eb067e7ce 100644
--- a/game/modules/tome/data/zones/tutorial-combat-stats/npcs.lua
+++ b/game/modules/tome/data/zones/tutorial-combat-stats/npcs.lua
@@ -393,7 +393,7 @@ newEntity{
 	rank = 1,
 
 	autolevel = "spider",
-	ai = "dumb_talented_simple", ai_state = { ai_move="move_dmap", talent_in=4, },
+	ai = "dumb_talented_simple", ai_state = { ai_move="move_complex", talent_in=4, },
 	global_speed_base = 1,
 	stats = { str=15, dex=15, mag=8, con=10 },
 	resolvers.tmasteries{ ["technique/other"]=0.3 },