On investigation, the offending code appears to be in Game:changeLevelReal(), lines 1198-1208:
Code: Select all
elseif self.zone.wilderness then
local x, y = self.player.wild_x, self.player.wild_y
local blocking_actor = self.level.map(x, y, engine.Map.ACTOR)
if blocking_actor then
-- This is mostly protecting the Angolwen Apprentice from misc stuff like leaving Timepoint Zero
local newx, newy = util.findFreeGrid(x, y, 2, true, {[Map.ACTOR]=true})
if newx and newy then blocking_actor:move(newx, newy, true)
else blocking_actor:teleportRandom(x, y, 10) end
end
-- Place the player on the level
else