[Scummvm-git-logs] scummvm master -> b907ccce96dff37cb61f7149e5d483dd00e540e9

dreammaster dreammaster at scummvm.org
Thu Dec 7 03:51:09 CET 2017


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
b907ccce96 XEEN: Rename InterfaceMap class to InterfaceScene


Commit: b907ccce96dff37cb61f7149e5d483dd00e540e9
    https://github.com/scummvm/scummvm/commit/b907ccce96dff37cb61f7149e5d483dd00e540e9
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-12-06T21:50:30-05:00

Commit Message:
XEEN: Rename InterfaceMap class to InterfaceScene

This is avoid confusion with the minimap and map dialog classes

Changed paths:
  A engines/xeen/interface_scene.cpp
  A engines/xeen/interface_scene.h
  R engines/xeen/interface_map.cpp
  R engines/xeen/interface_map.h
    engines/xeen/interface.cpp
    engines/xeen/interface.h
    engines/xeen/interface_minimap.cpp
    engines/xeen/module.mk


diff --git a/engines/xeen/interface.cpp b/engines/xeen/interface.cpp
index b3df1f6..3579c91 100644
--- a/engines/xeen/interface.cpp
+++ b/engines/xeen/interface.cpp
@@ -128,9 +128,10 @@ void PartyDrawer::unhighlightChar() {
 void PartyDrawer::resetHighlight() {
 	_hiliteChar = HILIGHT_CHAR_NONE;
 }
+
 /*------------------------------------------------------------------------*/
 
-Interface::Interface(XeenEngine *vm) : ButtonContainer(vm), InterfaceMap(vm),
+Interface::Interface(XeenEngine *vm) : ButtonContainer(vm), InterfaceScene(vm),
 		PartyDrawer(vm), _vm(vm) {
 	_buttonsLoaded = false;
 	_intrIndex1 = 0;
diff --git a/engines/xeen/interface.h b/engines/xeen/interface.h
index d28b249..3516928 100644
--- a/engines/xeen/interface.h
+++ b/engines/xeen/interface.h
@@ -25,8 +25,8 @@
 
 #include "common/scummsys.h"
 #include "xeen/dialogs.h"
-#include "xeen/interface_map.h"
 #include "xeen/interface_minimap.h"
+#include "xeen/interface_scene.h"
 #include "xeen/party.h"
 #include "xeen/window.h"
 
@@ -62,7 +62,7 @@ public:
 /**
  * Implements the main in-game interface
  */
-class Interface: public ButtonContainer, public InterfaceMap, 
+class Interface: public ButtonContainer, public InterfaceScene,
 		public InterfaceMinimap, public PartyDrawer {
 private:
 	XeenEngine *_vm;
diff --git a/engines/xeen/interface_map.cpp b/engines/xeen/interface_map.cpp
deleted file mode 100644
index 21064b3..0000000
--- a/engines/xeen/interface_map.cpp
+++ /dev/null
@@ -1,4449 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "xeen/interface.h"
-#include "xeen/dialogs_error.h"
-#include "xeen/resources.h"
-#include "xeen/xeen.h"
-
-namespace Xeen {
-
-OutdoorDrawList::OutdoorDrawList() : _sky1(_data[0]), _sky2(_data[1]),
-	_groundSprite(_data[2]), _attackImgs1(&_data[124]), _attackImgs2(&_data[95]),
-	_attackImgs3(&_data[76]), _attackImgs4(&_data[53]), _groundTiles(&_data[3]) {
-	_data[0] = DrawStruct(0, 8, 8);
-	_data[1] = DrawStruct(1, 8, 25);
-	_data[2] = DrawStruct(0, 8, 67);
-	_data[3] = DrawStruct(0, 8, 67);
-	_data[4] = DrawStruct(0, 38, 67);
-	_data[5] = DrawStruct(0, 84, 67);
-	_data[6] = DrawStruct(0, 134, 67);
-	_data[7] = DrawStruct(0, 117, 67);
-	_data[8] = DrawStruct(0, 117, 67);
-	_data[9] = DrawStruct(0, 103, 67);
-	_data[10] = DrawStruct(0, 8, 73);
-	_data[11] = DrawStruct(0, 8, 73);
-	_data[12] = DrawStruct(0, 30, 73);
-	_data[13] = DrawStruct(0, 181, 73);
-	_data[14] = DrawStruct(0, 154, 73);
-	_data[15] = DrawStruct(0, 129, 73);
-	_data[16] = DrawStruct(0, 87, 73);
-	_data[17] = DrawStruct(0, 8, 81);
-	_data[18] = DrawStruct(0, 8, 81);
-	_data[19] = DrawStruct(0, 202, 81);
-	_data[20] = DrawStruct(0, 145, 81);
-	_data[21] = DrawStruct(0, 63, 81);
-	_data[22] = DrawStruct(0, 8, 93);
-	_data[23] = DrawStruct(0, 169, 93);
-	_data[24] = DrawStruct(0, 31, 93);
-	_data[25] = DrawStruct(0, 8, 109);
-	_data[26] = DrawStruct(0, 201, 109);
-	_data[27] = DrawStruct(0, 8, 109);
-	_data[28] = DrawStruct(1, -64, 61, 14, SPRFLAG_SCENE_CLIPPED);
-	_data[29] = DrawStruct(1, -40, 61, 14, 0);
-	_data[30] = DrawStruct(1, -16, 61, 14, 0);
-	_data[31] = DrawStruct(1, 8, 61, 14, 0);
-	_data[32] = DrawStruct(1, 128, 61, 14, SPRFLAG_HORIZ_FLIPPED | SPRFLAG_SCENE_CLIPPED);
-	_data[33] = DrawStruct(1, 104, 61, 14, SPRFLAG_HORIZ_FLIPPED);
-	_data[34] = DrawStruct(1, 80, 61, 14, SPRFLAG_HORIZ_FLIPPED);
-	_data[35] = DrawStruct(1, 56, 61, 14, SPRFLAG_HORIZ_FLIPPED);
-	_data[36] = DrawStruct(1, 32, 61, 14, 0);
-	_data[37] = DrawStruct(0, -9, 61, 14, 0);
-	_data[38] = DrawStruct(0, -58, 61, 14, 0);
-	_data[39] = DrawStruct(0, 40, 61, 14, 0);
-	_data[40] = DrawStruct(0, -82, 61, 14, 0);
-	_data[41] = DrawStruct(0, 64, 61, 14, 0);
-	_data[42] = DrawStruct(0, -41, 61, 14, 0);
-	_data[43] = DrawStruct(0, -26, 61, 14, 0);
-	_data[44] = DrawStruct(0, -34, 61, 14, 0);
-	_data[45] = DrawStruct(0, -16, 61, 14, 0);
-	_data[46] = DrawStruct(0, 23, 61, 14, 0);
-	_data[47] = DrawStruct(0, 16, 61, 14, 0);
-	_data[48] = DrawStruct(0, -58, 61, 14, 0);
-	_data[49] = DrawStruct(0, 40, 61, 14, 0);
-	_data[50] = DrawStruct(0, -17, 61, 14, 0);
-	_data[51] = DrawStruct(0, -1, 58, 14, 0);
-	_data[52] = DrawStruct(0, -9, 58, 14, 0);
-	_data[53] = DrawStruct(0, 72, 58, 12, 0);
-	_data[54] = DrawStruct(0, 72, 58, 12, SPRFLAG_HORIZ_FLIPPED);
-	_data[55] = DrawStruct(0, 69, 63, 12, 0);
-	_data[56] = DrawStruct(0, 75, 63, 12, SPRFLAG_HORIZ_FLIPPED);
-	_data[57] = DrawStruct(0, 73, 53, 12, 0);
-	_data[58] = DrawStruct(0, 71, 53, 12, SPRFLAG_HORIZ_FLIPPED);
-	_data[59] = DrawStruct(0, 80, 57, 12, 0);
-	_data[60] = DrawStruct(0, 64, 57, 12, SPRFLAG_HORIZ_FLIPPED);
-	_data[61] = DrawStruct(2, -11, 54, 8, 0);
-	_data[62] = DrawStruct(1, -21, 54, 11, 0);
-	_data[63] = DrawStruct(2, 165, 54, 8, SPRFLAG_HORIZ_FLIPPED);
-	_data[64] = DrawStruct(1, 86, 54, 11, SPRFLAG_HORIZ_FLIPPED);
-	_data[65] = DrawStruct(1, 33, 54, 11, 0);
-	_data[66] = DrawStruct(0, -8, 54, 12, 0);
-	_data[67] = DrawStruct(0, -73, 54, 12, 0);
-	_data[68] = DrawStruct(0, 57, 54, 12, 0);
-	_data[69] = DrawStruct(0, -65, 54, 12, 0);
-	_data[70] = DrawStruct(0, -81, 54, 12, 0);
-	_data[71] = DrawStruct(0, 49, 54, 12, 0);
-	_data[72] = DrawStruct(0, 65, 54, 12, 0);
-	_data[73] = DrawStruct(0, -24, 54, 12, 0);
-	_data[74] = DrawStruct(0, 9, 50, 12, 0);
-	_data[75] = DrawStruct(0, -8, 50, 12, 0);
-	_data[76] = DrawStruct(0, 72, 53, 8, 0);
-	_data[77] = DrawStruct(0, 72, 53, 8, SPRFLAG_HORIZ_FLIPPED);
-	_data[78] = DrawStruct(0, 77, 58, 8, 0);
-	_data[79] = DrawStruct(0, 67, 58, 8, SPRFLAG_HORIZ_FLIPPED);
-	_data[80] = DrawStruct(0, 81, 47, 8, 0);
-	_data[81] = DrawStruct(0, 63, 47, 8, SPRFLAG_HORIZ_FLIPPED);
-	_data[82] = DrawStruct(0, 94, 52, 8, 0);
-	_data[83] = DrawStruct(0, 50, 52, 8, SPRFLAG_HORIZ_FLIPPED);
-	_data[84] = DrawStruct(2, 8, 40);
-	_data[85] = DrawStruct(2, 146, 40, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[86] = DrawStruct(1, 32, 40, 6, 0);
-	_data[87] = DrawStruct(0, -7, 30, 7, 0);
-	_data[88] = DrawStruct(0, -112, 30, 7, SPRFLAG_SCENE_CLIPPED);
-	_data[89] = DrawStruct(0, 98, 30, 7, SPRFLAG_SCENE_CLIPPED);
-	_data[90] = DrawStruct(0, -112, 30, 8, SPRFLAG_SCENE_CLIPPED);
-	_data[91] = DrawStruct(0, 98, 30, 8, SPRFLAG_SCENE_CLIPPED);
-	_data[92] = DrawStruct(0, -38, 30, 8, 0);
-	_data[93] = DrawStruct(0, 25, 30, 8, 0);
-	_data[94] = DrawStruct(0, -7, 30, 8, 0);
-	_data[95] = DrawStruct(0, 72, 48, 4, 0);
-	_data[96] = DrawStruct(0, 72, 48, 4, SPRFLAG_HORIZ_FLIPPED);
-	_data[97] = DrawStruct(0, 85, 53, 4, 0);
-	_data[98] = DrawStruct(0, 59, 53, 4, SPRFLAG_HORIZ_FLIPPED);
-	_data[99] = DrawStruct(0, 89, 41, 4, 0);
-	_data[100] = DrawStruct(0, 55, 41, 4, SPRFLAG_HORIZ_FLIPPED);
-	_data[101] = DrawStruct(0, 106, 47, 4, 0);
-	_data[102] = DrawStruct(0, 38, 47, 4, SPRFLAG_HORIZ_FLIPPED);
-	_data[103] = DrawStruct(0, 8, 24);
-	_data[104] = DrawStruct(0, 169, 24, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[105] = DrawStruct(1, 32, 24);
-	_data[106] = DrawStruct(0, -23, 40, 0, SPRFLAG_SCENE_CLIPPED);
-	_data[107] = DrawStruct(0, 200, 40, 0, SPRFLAG_HORIZ_FLIPPED | SPRFLAG_SCENE_CLIPPED);
-	_data[108] = DrawStruct(0, 8, 47);
-	_data[109] = DrawStruct(0, 169, 47, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[110] = DrawStruct(1, -56, -4, 0x8000, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
-	_data[111] = DrawStruct(0, -5, 2, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
-	_data[112] = DrawStruct(0, -67, 2, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
-	_data[113] = DrawStruct(0, 44, 73);
-	_data[114] = DrawStruct(0, 44, 73);
-	_data[115] = DrawStruct(0, 58, 14, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
-	_data[116] = DrawStruct(0, 169, 73);
-	_data[117] = DrawStruct(0, 169, 73);
-	_data[118] = DrawStruct(0, -5, 14, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
-	_data[119] = DrawStruct(0, 110, 73);
-	_data[120] = DrawStruct(0, 110, 73);
-	_data[121] = DrawStruct(0, -5, 14, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
-	_data[122] = DrawStruct(0, 110, 73);
-	_data[123] = DrawStruct(0, 110, 73);
-	_data[124] = DrawStruct(0, 72, 43);
-	_data[125] = DrawStruct(0, 72, 43, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[126] = DrawStruct(0, 93, 48);
-	_data[127] = DrawStruct(0, 51, 48, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[128] = DrawStruct(0, 97, 36);
-	_data[129] = DrawStruct(0, 47, 36, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[130] = DrawStruct(0, 118, 42);
-	_data[131] = DrawStruct(0, 26, 42, 0, SPRFLAG_HORIZ_FLIPPED);
-}
-
-/*------------------------------------------------------------------------*/
-
-IndoorDrawList::IndoorDrawList() :
-	_sky1(_data[0]), _sky2(_data[1]), _ground(_data[2]), _horizon(_data[28]),
-	_swl_0F1R(_data[146]), _swl_0F1L(_data[144]), _swl_1F1R(_data[134]),
-	_swl_1F1L(_data[133]), _swl_2F2R(_data[110]), _swl_2F1R(_data[109]),
-	_swl_2F1L(_data[108]), _swl_2F2L(_data[107]), _swl_3F1R(_data[ 78]),
-	_swl_3F2R(_data[ 77]), _swl_3F3R(_data[ 76]), _swl_3F4R(_data[ 75]),
-	_swl_3F1L(_data[ 74]), _swl_3F2L(_data[ 73]), _swl_3F3L(_data[ 72]),
-	_swl_3F4L(_data[ 71]), _swl_4F4R(_data[ 33]), _swl_4F3R(_data[ 34]),
-	_swl_4F2R(_data[ 35]), _swl_4F1R(_data[ 36]), _swl_4F1L(_data[ 32]),
-	_swl_4F2L(_data[ 31]), _swl_4F3L(_data[ 30]), _swl_4F4L(_data[ 29]),
-	_fwl_4F4R(_data[ 45]), _fwl_4F3R(_data[ 44]), _fwl_4F2R(_data[ 43]),
-	_fwl_4F1R(_data[ 42]), _fwl_4F(  _data[ 41]), _fwl_4F1L(_data[ 40]),
-	_fwl_4F2L(_data[ 39]), _fwl_4F3L(_data[ 38]), _fwl_4F4L(_data[ 37]),
-	_fwl_2F1R(_data[121]), _fwl_2F(  _data[120]), _fwl_2F1L(_data[119]),
-	_fwl_3F2R(_data[ 91]), _fwl_3F1R(_data[ 90]), _fwl_3F(  _data[ 89]),
-	_fwl_3F1L(_data[ 88]), _fwl_3F2L(_data[ 87]), _fwl_1F(  _data[147]),
-	_fwl_1F1R(_data[145]), _fwl_1F1L(_data[143]),
-	_groundTiles(&_data[3]),
-	_objects0(_data[149]), _objects1(_data[125]), _objects2(_data[126]),
-	_objects3(_data[127]), _objects4(_data[97]), _objects5(_data[98]),
-	_objects6(_data[99]), _objects7(_data[55]), _objects8(_data[56]),
-	_objects9(_data[58]), _objects10(_data[57]), _objects11(_data[59]),
-	_attackImgs1(&_data[162]), _attackImgs2(&_data[135]),
-	_attackImgs3(&_data[111]), _attackImgs4(&_data[79]) {
-	// Setup draw structure positions
-	_data[0] = DrawStruct(0, 8, 8);
-	_data[1] = DrawStruct(1, 8, 25);
-	_data[2] = DrawStruct(0, 8, 67);
-	_data[3] = DrawStruct(0, 8, 67);
-	_data[4] = DrawStruct(0, 38, 67);
-	_data[5] = DrawStruct(0, 84, 67);
-	_data[6] = DrawStruct(0, 134, 67);
-	_data[7] = DrawStruct(0, 117, 67);
-	_data[8] = DrawStruct(0, 117, 67);
-	_data[9] = DrawStruct(0, 103, 67);
-	_data[10] = DrawStruct(0, 8, 73);
-	_data[11] = DrawStruct(0, 8, 73);
-	_data[12] = DrawStruct(0, 30, 73);
-	_data[13] = DrawStruct(0, 181, 73);
-	_data[14] = DrawStruct(0, 154, 73);
-	_data[15] = DrawStruct(0, 129, 73);
-	_data[16] = DrawStruct(0, 87, 73);
-	_data[17] = DrawStruct(0, 8, 81);
-	_data[18] = DrawStruct(0, 8, 81);
-	_data[19] = DrawStruct(0, 202, 81);
-	_data[20] = DrawStruct(0, 145, 81);
-	_data[21] = DrawStruct(0, 63, 81);
-	_data[22] = DrawStruct(0, 8, 93);
-	_data[23] = DrawStruct(0, 169, 93);
-	_data[24] = DrawStruct(0, 31, 93);
-	_data[25] = DrawStruct(0, 8, 109);
-	_data[26] = DrawStruct(0, 201, 109);
-	_data[27] = DrawStruct(0, 8, 109);
-	_data[28] = DrawStruct(7, 8, 64);
-	_data[29] = DrawStruct(22, 32, 60);
-	_data[30] = DrawStruct(20, 56, 60);
-	_data[31] = DrawStruct(18, 80, 60);
-	_data[32] = DrawStruct(16, 104, 60);
-	_data[33] = DrawStruct(23, 152, 60, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[34] = DrawStruct(21, 144, 60, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[35] = DrawStruct(19, 131, 60, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[36] = DrawStruct(17, 120, 60, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[37] = DrawStruct(14, 8, 60);
-	_data[38] = DrawStruct(12, 32, 60);
-	_data[39] = DrawStruct(10, 56, 60);
-	_data[40] = DrawStruct(14, 80, 60);
-	_data[41] = DrawStruct(14, 104, 60);
-	_data[42] = DrawStruct(14, 128, 60);
-	_data[43] = DrawStruct(14, 152, 60);
-	_data[44] = DrawStruct(8, 176, 60);
-	_data[45] = DrawStruct(8, 200, 60);
-	_data[46] = DrawStruct(0, -64, 61, 14, 0);
-	_data[47] = DrawStruct(0, -40, 61, 14, 0);
-	_data[48] = DrawStruct(0, -16, 61, 14, 0);
-	_data[49] = DrawStruct(0, 8, 61, 14, 0);
-	_data[50] = DrawStruct(0, 32, 61, 14, 0);
-	_data[51] = DrawStruct(0, 56, 61, 14, 0);
-	_data[52] = DrawStruct(0, 80, 61, 14, 0);
-	_data[53] = DrawStruct(0, 104, 61, 14, 0);
-	_data[54] = DrawStruct(0, 128, 61, 14, 0);
-	_data[55] = DrawStruct(0, -9, 58, 14, 0);
-	_data[56] = DrawStruct(0, -34, 58, 14, 0);
-	_data[57] = DrawStruct(0, 16, 58, 14, 0);
-	_data[58] = DrawStruct(0, -58, 58, 14, 0);
-	_data[59] = DrawStruct(0, 40, 58, 14, 0);
-	_data[60] = DrawStruct(0, -41, 58, 14, 0);
-	_data[61] = DrawStruct(0, -26, 58, 14, 0);
-	_data[62] = DrawStruct(0, -34, 58, 14, 0);
-	_data[63] = DrawStruct(0, -16, 58, 14, 0);
-	_data[64] = DrawStruct(0, 23, 58, 14, 0);
-	_data[65] = DrawStruct(0, 16, 58, 14, 0);
-	_data[66] = DrawStruct(0, -58, 58, 14, 0);
-	_data[67] = DrawStruct(0, 40, 58, 14, 0);
-	_data[68] = DrawStruct(0, -17, 58, 14, 0);
-	_data[69] = DrawStruct(0, -1, 58, 14, 0);
-	_data[70] = DrawStruct(0, -9, 58, 14, 0);
-	_data[71] = DrawStruct(14, 8, 58);
-	_data[72] = DrawStruct(12, 8, 55);
-	_data[73] = DrawStruct(10, 32, 52);
-	_data[74] = DrawStruct(14, 88, 52);
-	_data[75] = DrawStruct(14, 128, 52, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[76] = DrawStruct(14, 152, 52, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[77] = DrawStruct(0, 176, 55, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[78] = DrawStruct(0, 200, 58, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[79] = DrawStruct(0, 72, 58, 12, 0);
-	_data[80] = DrawStruct(0, 72, 58, 12, SPRFLAG_HORIZ_FLIPPED);
-	_data[81] = DrawStruct(0, 69, 63, 12, 0);
-	_data[82] = DrawStruct(0, 75, 63, 12, SPRFLAG_HORIZ_FLIPPED);
-	_data[83] = DrawStruct(0, 73, 53, 12, 0);
-	_data[84] = DrawStruct(0, 71, 53, 12, SPRFLAG_HORIZ_FLIPPED);
-	_data[85] = DrawStruct(0, 80, 57, 12, 0);
-	_data[86] = DrawStruct(0, 64, 57, 12, SPRFLAG_HORIZ_FLIPPED);
-	_data[87] = DrawStruct(7, -24, 52, 0, SPRFLAG_SCENE_CLIPPED);
-	_data[88] = DrawStruct(7, 32, 52);
-	_data[89] = DrawStruct(7, 88, 52);
-	_data[90] = DrawStruct(0, 144, 52);
-	_data[91] = DrawStruct(0, 200, 52, 0, SPRFLAG_SCENE_CLIPPED);
-	_data[92] = DrawStruct(0, -79, 52, 11, SPRFLAG_SCENE_CLIPPED);
-	_data[93] = DrawStruct(0, -27, 52, 11, 0);
-	_data[94] = DrawStruct(0, 32, 52, 11, 0);
-	_data[95] = DrawStruct(0, 89, 52, 11, 0);
-	_data[96] = DrawStruct(0, 145, 52, 11, SPRFLAG_SCENE_CLIPPED);
-	_data[97] = DrawStruct(0, -8, 50, 12, 0);
-	_data[98] = DrawStruct(0, -65, 50, 12, 0);
-	_data[99] = DrawStruct(0, 49, 50, 12, 0);
-	_data[100] = DrawStruct(0, -65, 50, 12, 0);
-	_data[101] = DrawStruct(0, -81, 50, 12, 0);
-	_data[102] = DrawStruct(0, 49, 50, 12, 0);
-	_data[103] = DrawStruct(0, 65, 50, 12, 0);
-	_data[104] = DrawStruct(0, -24, 50, 12, 0);
-	_data[105] = DrawStruct(0, 9, 50, 12, 0);
-	_data[106] = DrawStruct(0, -8, 50, 12, 0);
-	_data[107] = DrawStruct(7, 8, 48);
-	_data[108] = DrawStruct(7, 64, 40);
-	_data[109] = DrawStruct(6, 144, 40, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[110] = DrawStruct(6, 200, 48, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[111] = DrawStruct(0, 72, 53, 8, 0);
-	_data[112] = DrawStruct(0, 72, 53, 8, SPRFLAG_HORIZ_FLIPPED);
-	_data[113] = DrawStruct(0, 77, 58, 8, 0);
-	_data[114] = DrawStruct(0, 67, 58, 8, SPRFLAG_HORIZ_FLIPPED);
-	_data[115] = DrawStruct(0, 81, 47, 8, 0);
-	_data[116] = DrawStruct(0, 63, 47, 8, SPRFLAG_HORIZ_FLIPPED);
-	_data[117] = DrawStruct(0, 94, 52, 8, 0);
-	_data[118] = DrawStruct(0, 50, 52, 8, SPRFLAG_HORIZ_FLIPPED);
-	_data[119] = DrawStruct(6, -40, 40, 0, SPRFLAG_SCENE_CLIPPED);
-	_data[120] = DrawStruct(6, 64, 40);
-	_data[121] = DrawStruct(0, 168, 40, 0, SPRFLAG_SCENE_CLIPPED);
-	_data[122] = DrawStruct(0, -72, 40, 6, SPRFLAG_SCENE_CLIPPED);
-	_data[123] = DrawStruct(0, 32, 40, 6, 0);
-	_data[124] = DrawStruct(0, 137, 40, 6, SPRFLAG_SCENE_CLIPPED);
-	_data[125] = DrawStruct(0, -7, 25, 7, 0);
-	_data[126] = DrawStruct(0, -112, 25, 7, SPRFLAG_SCENE_CLIPPED);
-	_data[127] = DrawStruct(0, 98, 25, 7, SPRFLAG_SCENE_CLIPPED);
-	_data[128] = DrawStruct(0, -112, 29, 8, SPRFLAG_SCENE_CLIPPED);
-	_data[129] = DrawStruct(0, 98, 29, 8, SPRFLAG_SCENE_CLIPPED);
-	_data[130] = DrawStruct(0, -38, 29, 8, 0);
-	_data[131] = DrawStruct(0, 25, 29, 8, 0);
-	_data[132] = DrawStruct(0, -7, 29, 8, 0);
-	_data[133] = DrawStruct(6, 32, 24);
-	_data[134] = DrawStruct(0, 168, 24, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[135] = DrawStruct(0, 72, 48, 4, 0);
-	_data[136] = DrawStruct(0, 72, 48, 4, SPRFLAG_HORIZ_FLIPPED);
-	_data[137] = DrawStruct(0, 85, 53, 4, 0);
-	_data[138] = DrawStruct(0, 59, 53, 4, SPRFLAG_HORIZ_FLIPPED);
-	_data[139] = DrawStruct(0, 89, 41, 4, 0);
-	_data[140] = DrawStruct(0, 55, 41, 4, SPRFLAG_HORIZ_FLIPPED);
-	_data[141] = DrawStruct(0, 106, 47, 4, 0);
-	_data[142] = DrawStruct(0, 38, 47, 4, SPRFLAG_HORIZ_FLIPPED);
-	_data[143] = DrawStruct(0, -136, 24, 0, SPRFLAG_SCENE_CLIPPED);
-	_data[144] = DrawStruct(0, 8, 12);
-	_data[145] = DrawStruct(0, 32, 24);
-	_data[146] = DrawStruct(0, 200, 12, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[147] = DrawStruct(0, 200, 24, 0, SPRFLAG_SCENE_CLIPPED);
-	_data[148] = DrawStruct(0, 32, 24);
-	_data[149] = DrawStruct(0, -5, 2, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
-	_data[150] = DrawStruct(0, -67, 10, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
-	_data[151] = DrawStruct(0, 44, 73);
-	_data[152] = DrawStruct(0, 44, 73);
-	_data[153] = DrawStruct(0, 58, 14, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
-	_data[154] = DrawStruct(0, 169, 73);
-	_data[155] = DrawStruct(0, 169, 73);
-	_data[156] = DrawStruct(0, -5, 14, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
-	_data[157] = DrawStruct(0, 110, 73);
-	_data[158] = DrawStruct(0, 110, 73);
-	_data[159] = DrawStruct(0, -5, 14, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
-	_data[160] = DrawStruct(0, 110, 73);
-	_data[161] = DrawStruct(0, 110, 73);
-	_data[162] = DrawStruct(0, 72, 43);
-	_data[163] = DrawStruct(0, 72, 43, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[164] = DrawStruct(0, 93, 48);
-	_data[165] = DrawStruct(0, 51, 48, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[166] = DrawStruct(0, 97, 36);
-	_data[167] = DrawStruct(0, 47, 36, 0, SPRFLAG_HORIZ_FLIPPED);
-	_data[168] = DrawStruct(0, 118, 42);
-	_data[169] = DrawStruct(0, 26, 42, 0, SPRFLAG_HORIZ_FLIPPED);
-}
-
-/*------------------------------------------------------------------------*/
-
-InterfaceMap::InterfaceMap(XeenEngine *vm): _vm(vm) {
-	Common::fill(&_wp[0], &_wp[20], 0);
-	Common::fill(&_wo[0], &_wo[308], 0);
-	_overallFrame = 0;
-	_flipWater = false;
-	_flipGround = false;
-	_flipSky = false;
-	_flipDefaultGround = false;
-	_isAttacking = false;
-	_charsShooting = false;
-	_objNumber = 0;
-	_combatFloatCounter = 0;
-	_thinWall = false;
-	_isAnimReset = false;
-	_overallFrame = 0;
-	_openDoor = false;
-}
-
-void InterfaceMap::drawMap() {
-	Combat &combat = *_vm->_combat;
-	Map &map = *_vm->_map;
-	Scripts &scripts = *_vm->_scripts;
-
-	const int COMBAT_POS_X[3][2] = { { 102, 134 }, { 36, 67 }, { 161, 161 } };
-	const int INDOOR_INDEXES[3] = { 157, 151, 154 };
-	const int OUTDOOR_INDEXES[3] = { 119, 113, 116 };
-	const int COMBAT_OFFSET_X[4] = { 8, 6, 4, 2 };
-
-	MazeObject &objObject = map._mobData._objects[_objNumber];
-	Direction partyDirection = _vm->_party->_mazeDirection;
-	int objNum = _objNumber - 1;
-
-	// Loop to update the frame numbers for each maze object, applying the animation frame
-	// limits as specified by the map's _animationInfo listing
-	for (uint idx = 0; idx < map._mobData._objects.size(); ++idx) {
-		MazeObject &mazeObject = map._mobData._objects[idx];
-		AnimationEntry &animEntry = map._animationInfo[mazeObject._spriteId];
-		int directionIndex = Res.DIRECTION_ANIM_POSITIONS[mazeObject._direction][partyDirection];
-
-		if (_isAnimReset) {
-			mazeObject._frame = animEntry._frame1._frames[directionIndex];
-		} else {
-			++mazeObject._frame;
-			if ((int)idx == objNum && scripts._animCounter > 0 && (
-				objObject._spriteId == (_vm->_files->_isDarkCc ? 15 : 16) ||
-				objObject._spriteId == 58 || objObject._spriteId == 73)) {
-				if (mazeObject._frame > 4 || mazeObject._spriteId == 58)
-					mazeObject._frame = 1;
-			} else if (mazeObject._frame >= animEntry._frame2._frames[directionIndex]) {
-				mazeObject._frame = animEntry._frame1._frames[directionIndex];
-			}
-		}
-
-		mazeObject._flipped = animEntry._flipped._flags[directionIndex];
-	}
-
-	if (map._isOutdoors) {
-		// Outdoors drawing
-		for (int idx = 0; idx < 44; ++idx)
-			_outdoorList[Res.OUTDOOR_DRAWSTRCT_INDEXES[idx]]._frame = -1;
-
-		if (combat._monstersAttacking) {
-			for (int idx = 0; idx < 8; ++idx) {
-				if (_outdoorList._attackImgs4[idx]._sprites)
-					_outdoorList._attackImgs4[idx]._frame = 0;
-				else if (_outdoorList._attackImgs3[idx]._sprites)
-					_outdoorList._attackImgs3[idx]._frame = 1;
-				else if (_outdoorList._attackImgs2[idx]._sprites)
-					_outdoorList._attackImgs2[idx]._frame = 2;
-				else if (_outdoorList._attackImgs1[idx]._sprites)
-					_outdoorList._attackImgs1[idx]._frame = 0;
-			}
-		} else if (_charsShooting) {
-			for (int idx = 0; idx < 8; ++idx) {
-				if (_outdoorList._attackImgs1[idx]._sprites)
-					_outdoorList._attackImgs1[idx]._frame = 0;
-				else if (_outdoorList._attackImgs2[idx]._sprites)
-					_outdoorList._attackImgs2[idx]._frame = 1;
-				else if (_outdoorList._attackImgs3[idx]._sprites)
-					_outdoorList._attackImgs3[idx]._frame = 2;
-				else if (_outdoorList._attackImgs4[idx]._sprites)
-					_outdoorList._attackImgs1[idx]._frame = 0;
-			}
-		}
-
-		_isAnimReset = false;
-		int attackMon2 = combat._attackMonsters[2];
-
-		for (int idx = 0; idx < 3; ++idx) {
-			DrawStruct &ds1 = _outdoorList[OUTDOOR_INDEXES[idx] + 1];
-			DrawStruct &ds2 = _outdoorList[OUTDOOR_INDEXES[idx]];
-			ds1._sprites = nullptr;
-			ds2._sprites = nullptr;
-
-			if (combat._charsArray1[idx]) {
-				int vIndex = combat._attackMonsters[1] && !attackMon2 ? 1 : 0;
-				combat._charsArray1[idx]--;
-
-				if (combat._monPow[idx]) {
-					ds2._x = COMBAT_POS_X[idx][vIndex];
-					ds2._frame = 0;
-					ds2._scale = combat._monsterScale[idx];
-
-					if (ds2._scale == 0x8000) {
-						ds2._x /= 3;
-						ds2._y = 60;
-					} else {
-						ds2._y = 73;
-					}
-
-					ds2._flags = SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED;
-					ds2._sprites = &_charPowSprites;
-				}
-
-				if (combat._elemPow[idx]) {
-					ds1._x = COMBAT_POS_X[idx][vIndex] + COMBAT_OFFSET_X[idx];
-					ds1._frame = combat._elemPow[idx];
-					ds1._scale = combat._elemScale[idx];
-
-					if (ds1._scale == 0x8000)
-						ds1._x /= 3;
-					ds1._flags = SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED;
-					ds1._sprites = &_charPowSprites;
-				}
-			}
-		}
-
-		setOutdoorsMonsters();
-		setOutdoorsObjects();
-
-		_outdoorList[123]._sprites = nullptr;
-		_outdoorList[122]._sprites = nullptr;
-		_outdoorList[121]._sprites = nullptr;
-
-		int monsterIndex;
-		if (combat._attackMonsters[0] != -1 && map._mobData._monsters[combat._attackMonsters[0]]._frame >= 8) {
-			_outdoorList[121] = _outdoorList[118];
-			_outdoorList[122] = _outdoorList[119];
-			_outdoorList[123] = _outdoorList[120];
-			_outdoorList[118]._sprites = nullptr;
-			_outdoorList[119]._sprites = nullptr;
-			_outdoorList[120]._sprites = nullptr;
-			monsterIndex = 1;
-		} else if (combat._attackMonsters[1] != -1 && map._mobData._monsters[combat._attackMonsters[1]]._frame >= 8) {
-			_outdoorList[121] = _outdoorList[112];
-			_outdoorList[122] = _outdoorList[113];
-			_outdoorList[123] = _outdoorList[114];
-			_outdoorList[112]._sprites = nullptr;
-			_outdoorList[113]._sprites = nullptr;
-			_outdoorList[124]._sprites = nullptr;
-			monsterIndex = 2;
-		} else if (combat._attackMonsters[2] != -1 && map._mobData._monsters[combat._attackMonsters[2]]._frame >= 8) {
-			_outdoorList[121] = _outdoorList[115];
-			_outdoorList[122] = _outdoorList[116];
-			_outdoorList[123] = _outdoorList[117];
-			_outdoorList[115]._sprites = nullptr;
-			_outdoorList[116]._sprites = nullptr;
-			_outdoorList[117]._sprites = nullptr;
-			monsterIndex = 3;
-		} else {
-			monsterIndex = 0;
-		}
-
-		drawOutdoors();
-
-		switch (monsterIndex) {
-		case 1:
-			_outdoorList[118] = _outdoorList[121];
-			_outdoorList[119] = _outdoorList[122];
-			_outdoorList[120] = _outdoorList[123];
-			break;
-		case 2:
-			_outdoorList[112] = _outdoorList[121];
-			_outdoorList[113] = _outdoorList[122];
-			_outdoorList[114] = _outdoorList[123];
-			break;
-		case 3:
-			_outdoorList[115] = _outdoorList[121];
-			_outdoorList[116] = _outdoorList[122];
-			_outdoorList[117] = _outdoorList[123];
-			break;
-		default:
-			break;
-		}
-	} else {
-		// Indoor drawing
-		// Default all the parts of draw struct not to be drawn by default
-		for (int idx = 3; idx < _indoorList.size(); ++idx)
-			_indoorList[idx]._frame = -1;
-
-		if (combat._monstersAttacking) {
-			for (int idx = 0; idx < 96; ++idx) {
-				if (_indoorList[79 + idx]._sprites != nullptr) {
-					_indoorList[79 + idx]._frame = 0;
-				}
-				else if (_indoorList[111 + idx]._sprites != nullptr) {
-					_indoorList[111 + idx]._frame = 1;
-				}
-				else if (_indoorList[135 + idx]._sprites != nullptr) {
-					_indoorList[135 + idx]._frame = 2;
-				}
-				else if (_indoorList[162 + idx]._sprites != nullptr) {
-					_indoorList[162 + idx]._frame = 0;
-				}
-			}
-		} else if (_charsShooting) {
-			for (int idx = 0; idx < 8; ++idx) {
-				if (_indoorList._attackImgs1[idx]._sprites != nullptr) {
-					_indoorList._attackImgs1[idx]._frame = 0;
-				} else if (_indoorList._attackImgs2[idx]._sprites != nullptr) {
-					_indoorList._attackImgs2[idx]._frame = 1;
-				} else if (_indoorList._attackImgs3[idx]._sprites != nullptr) {
-					_indoorList._attackImgs3[idx]._frame = 2;
-				} else if (_indoorList._attackImgs4[idx]._sprites != nullptr) {
-					_indoorList._attackImgs4[idx]._frame = 0;
-				}
-			}
-		}
-
-		setMazeBits();
-		_isAnimReset = false;
-
-		// Code in the original that's not being used
-		//MazeObject &objObject = map._mobData._objects[_objNumber - 1];
-
-		for (int idx = 0; idx < 3; ++idx) {
-			DrawStruct &ds1 = _indoorList[INDOOR_INDEXES[idx]];
-			DrawStruct &ds2 = _indoorList[INDOOR_INDEXES[idx] + 1];
-			ds1._sprites = nullptr;
-			ds2._sprites = nullptr;
-
-			if (combat._charsArray1[idx]) {
-				int posIndex = combat._attackMonsters[1] && !combat._attackMonsters[2] ? 1 : 0;
-				--combat._charsArray1[idx];
-
-				if (combat._monPow[idx]) {
-					ds1._x = COMBAT_POS_X[idx][posIndex];
-					ds1._frame = 0;
-					ds1._scale = combat._monsterScale[idx];
-					if (ds1._scale == 0x8000) {
-						ds1._x /= 3;
-						ds1._y = 60;
-					} else {
-						ds1._y = 73;
-					}
-
-					ds1._flags = SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED;
-					ds1._sprites = &_charPowSprites;
-				}
-
-				if (combat._elemPow[idx]) {
-					ds2._x = COMBAT_POS_X[idx][posIndex] + COMBAT_OFFSET_X[idx];
-					ds2._frame = combat._elemPow[idx];
-					ds2._scale = combat._elemScale[idx];
-					if (ds2._scale == 0x8000)
-						ds2._x /= 3;
-					ds2._flags = SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED;
-					ds2._sprites = &_charPowSprites;
-				}
-			}
-		}
-
-		setIndoorsMonsters();
-		setIndoorsObjects();
-		setIndoorsWallPics();
-
-		_indoorList[161]._sprites = nullptr;
-		_indoorList[160]._sprites = nullptr;
-		_indoorList[159]._sprites = nullptr;
-
-		// Handle attacking monsters
-		int monsterIndex = 0;
-		if (combat._attackMonsters[0] != -1 && map._mobData._monsters[combat._attackMonsters[0]]._frame >= 8) {
-			_indoorList[159] = _indoorList[156];
-			_indoorList[160] = _indoorList[157];
-			_indoorList[161] = _indoorList[158];
-			_indoorList[158]._sprites = nullptr;
-			_indoorList[156]._sprites = nullptr;
-			_indoorList[157]._sprites = nullptr;
-			monsterIndex = 1;
-		} else if (combat._attackMonsters[1] != -1 && map._mobData._monsters[combat._attackMonsters[1]]._frame >= 8) {
-			_indoorList[159] = _indoorList[150];
-			_indoorList[160] = _indoorList[151];
-			_indoorList[161] = _indoorList[152];
-			_indoorList[152]._sprites = nullptr;
-			_indoorList[151]._sprites = nullptr;
-			_indoorList[150]._sprites = nullptr;
-			monsterIndex = 2;
-		} else if (combat._attackMonsters[2] != -1 && map._mobData._monsters[combat._attackMonsters[2]]._frame >= 8) {
-			_indoorList[159] = _indoorList[153];
-			_indoorList[160] = _indoorList[154];
-			_indoorList[161] = _indoorList[155];
-			_indoorList[153]._sprites = nullptr;
-			_indoorList[154]._sprites = nullptr;
-			_indoorList[155]._sprites = nullptr;
-			monsterIndex = 3;
-		}
-
-		drawIndoors();
-
-		switch (monsterIndex) {
-		case 1:
-			_indoorList[156] = _indoorList[159];
-			_indoorList[157] = _indoorList[160];
-			_indoorList[158] = _indoorList[161];
-			break;
-		case 2:
-			_indoorList[150] = _indoorList[159];
-			_indoorList[151] = _indoorList[160];
-			_indoorList[152] = _indoorList[161];
-			break;
-		case 3:
-			_indoorList[153] = _indoorList[159];
-			_indoorList[154] = _indoorList[160];
-			_indoorList[155] = _indoorList[161];
-			break;
-		default:
-			break;
-		}
-	}
-
-	animate3d();
-}
-
-void InterfaceMap::animate3d() {
-	Combat &combat = *_vm->_combat;
-	Map &map = *_vm->_map;
-	_overallFrame = (_overallFrame + 1) % 5;
-	_combatFloatCounter = (_combatFloatCounter + 1) % 8;
-
-	for (uint idx = 0; idx < map._mobData._monsters.size(); ++idx) {
-		MazeMonster &monster = map._mobData._monsters[idx];
-		if (!monster._damageType) {
-			if (monster._frame < 8) {
-				MonsterStruct &monsterData = *monster._monsterData;
-				if (!monsterData._loopAnimation) {
-					// Monster isn't specially looped, so cycle through the 8 frames
-					monster._frame = (monster._frame + 1) % 8;
-				} else if (!monster._field9) {
-					monster._frame = (monster._frame + 1) % 8;
-					if (monster._frame == 0) {
-						monster._field9 ^= 1;
-						monster._frame = 6;
-					}
-				} else {
-					if (monster._frame)
-						--monster._frame;
-					if (monster._frame == 0)
-						monster._field9 = 0;
-				}
-			} else if (monster._frame == 11) {
-				--monster._fieldA;
-				if (monster._fieldA == 0)
-					monster._frame = 0;
-			} else {
-				++monster._frame;
-				if (monster._frame == 11) {
-					--monster._frame;
-					monster._frame = monster._fieldA ? 10 : 0;
-				}
-			}
-		}
-
-		// Block 2
-		if (monster._effect2) {
-			if (monster._effect1) {
-				if (monster._effect1 & 0x80) {
-					if (monster._effect3)
-						--monster._effect3;
-					if (monster._effect3 == 0)
-						monster._effect1 ^= 0x80;
-				} else {
-					monster._effect3 = (monster._effect3 + 1) % 3;
-					if (monster._effect3 == 0) {
-						monster._effect1 ^= 0x80;
-						monster._effect3 = 2;
-					}
-				}
-			}
-		} else {
-			monster._effect3 = (monster._effect3 + 1) % 8;
-			if (monster._effect3 == 0) {
-				MonsterStruct &monsterData = *monster._monsterData;
-				monster._effect1 = monster._effect2 = monsterData._animationEffect;
-			}
-		}
-	}
-
-	DrawStruct *combatImgs1 = map._isOutdoors ? _outdoorList._attackImgs1 : _indoorList._attackImgs1;
-	DrawStruct *combatImgs2 = map._isOutdoors ? _outdoorList._attackImgs2 : _indoorList._attackImgs2;
-	DrawStruct *combatImgs3 = map._isOutdoors ? _outdoorList._attackImgs3 : _indoorList._attackImgs3;
-	DrawStruct *combatImgs4 = map._isOutdoors ? _outdoorList._attackImgs4 : _indoorList._attackImgs4;
-
-	if (combat._monstersAttacking) {
-		for (int idx = 0; idx < 8; ++idx) {
-			if (combatImgs1[idx]._sprites) {
-				combatImgs1[idx]._sprites = nullptr;
-				combat._shooting[idx] = false;
-			} else if (combatImgs2[idx]._sprites) {
-				combatImgs1[idx]._sprites = combatImgs2[idx]._sprites;
-				combatImgs2[idx]._sprites = nullptr;
-			} else if (combatImgs3[idx]._sprites) {
-				combatImgs2[idx]._sprites = combatImgs3[idx]._sprites;
-				combatImgs3[idx]._sprites = nullptr;
-			} else if (combatImgs4[idx]._sprites) {
-				combatImgs3[idx]._sprites = combatImgs4[idx]._sprites;
-				combatImgs4[idx]._sprites = nullptr;
-			}
-		}
-	} else if (_charsShooting) {
-		for (int idx = 0; idx < 8; ++idx) {
-			if (combatImgs4[idx]._sprites) {
-				combatImgs4[idx]._sprites = nullptr;
-			} else if (combatImgs3[idx]._sprites) {
-				combatImgs4[idx]._sprites = combatImgs3[idx]._sprites;
-				combatImgs3[idx]._sprites = nullptr;
-			} else if (combatImgs2[idx]._sprites) {
-				combatImgs3[idx]._sprites = combatImgs2[idx]._sprites;
-				combatImgs2[idx]._sprites = nullptr;
-			} else if (combatImgs1[idx]._sprites) {
-				combatImgs2[idx]._sprites = combatImgs1[idx]._sprites;
-				combatImgs1[idx]._sprites = nullptr;
-			}
-		}
-	}
-
-	for (uint idx = 0; idx < map._mobData._wallItems.size(); ++idx) {
-		MazeWallItem &wallItem = map._mobData._wallItems[idx];
-		wallItem._frame = (wallItem._frame + 1) % wallItem._sprites->size();
-	}
-}
-
-void InterfaceMap::setMazeBits() {
-	Common::fill(&_wo[0], &_wo[308], 0);
-
-	switch (_vm->_map->getCell(0) - 1) {
-	case 0:
-		++_wo[125];
-		break;
-	case 1:
-		++_wo[69];
-		break;
-	case 2:
-		++_wo[185];
-		break;
-	case 3:
-	case 12:
-		++_wo[105];
-		break;
-	case 4:
-	case 7:
-		++_wo[25];
-		break;
-	case 5:
-		++_wo[225];
-		break;
-	case 6:
-		++_wo[205];
-		break;
-	case 8:
-		++_wo[145];
-		break;
-	case 9:
-		++_wo[305];
-		break;
-	case 10:
-		++_wo[245];
-		break;
-	case 11:
-		++_wo[165];
-		break;
-	case 13:
-		++_wo[265];
-		break;
-	case 14:
-		++_wo[285];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(1) - 1) {
-	case 1:
-		++_wo[72];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[28];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(2) - 1) {
-	case 0:
-		++_wo[127];
-		break;
-	case 1:
-		++_wo[71];
-		break;
-	case 2:
-		++_wo[187];
-		break;
-	case 3:
-	case 12:
-		++_wo[107];
-		break;
-	case 4:
-	case 7:
-		++_wo[27];
-		break;
-	case 5:
-		++_wo[227];
-		break;
-	case 6:
-		++_wo[207];
-		break;
-	case 8:
-		++_wo[147];
-		break;
-	case 9:
-		++_wo[307];
-		break;
-	case 10:
-		++_wo[247];
-		break;
-	case 11:
-		++_wo[167];
-		break;
-	case 13:
-		++_wo[267];
-		break;
-	case 14:
-		++_wo[287];
-		break;
-	default:
-		break;
-	}
-
-	_vm->_party->handleLight();
-
-	switch (_vm->_map->getCell(3) - 1) {
-	case 1:
-		++_wo[73];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[29];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(4) - 1) {
-	case 0:
-		++_wo[126];
-		break;
-	case 1:
-		++_wo[70];
-		break;
-	case 2:
-		++_wo[186];
-		break;
-	case 3:
-	case 12:
-		++_wo[106];
-		break;
-	case 4:
-	case 7:
-		++_wo[26];
-		break;
-	case 5:
-		++_wo[226];
-		break;
-	case 6:
-		++_wo[206];
-		break;
-	case 8:
-		++_wo[146];
-		break;
-	case 9:
-		++_wo[306];
-		break;
-	case 10:
-		++_wo[246];
-		break;
-		break;
-	case 11:
-		++_wo[166];
-		break;
-	case 13:
-		++_wo[266];
-		break;
-	case 14:
-		++_wo[286];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(5) - 1) {
-	case 0:
-		++_wo[122];
-		break;
-	case 1:
-		++_wo[64];
-		break;
-	case 2:
-		++_wo[182];
-		break;
-	case 3:
-	case 12:
-		++_wo[102];
-		break;
-	case 4:
-	case 7:
-		++_wo[20];
-		break;
-	case 5:
-		++_wo[222];
-		break;
-	case 6:
-		++_wo[202];
-		break;
-	case 8:
-		++_wo[142];
-		break;
-	case 9:
-		++_wo[302];
-		break;
-	case 10:
-		++_wo[242];
-		break;
-	case 11:
-		++_wo[162];
-		break;
-	case 13:
-		++_wo[262];
-		break;
-	case 14:
-		++_wo[282];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(6) - 1) {
-	case 1:
-		++_wo[67];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[23];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(7) - 1) {
-	case 0:
-		++_wo[124];
-		break;
-	case 1:
-		++_wo[66];
-		break;
-	case 2:
-		++_wo[184];
-		break;
-	case 3:
-	case 12:
-		++_wo[104];
-		break;
-	case 4:
-	case 7:
-		++_wo[22];
-		break;
-	case 5:
-		++_wo[224];
-		break;
-	case 6:
-		++_wo[204];
-		break;
-	case 8:
-		++_wo[144];
-		break;
-	case 9:
-		++_wo[304];
-		break;
-	case 10:
-		++_wo[244];
-		break;
-	case 11:
-		++_wo[164];
-		break;
-	case 13:
-		++_wo[264];
-		break;
-	case 14:
-		++_wo[284];
-		break;
-	default:
-		break;
-	}
-
-	_thinWall = (_vm->_map->_currentWall != INVALID_CELL) && _wo[27];
-
-	switch (_vm->_map->getCell(8) - 1) {
-	case 1:
-		++_wo[68];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[24];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(9) - 1) {
-	case 0:
-		++_wo[123];
-		break;
-	case 1:
-		++_wo[65];
-		break;
-	case 2:
-		++_wo[183];
-		break;
-	case 3:
-	case 12:
-		++_wo[103];
-		break;
-	case 4:
-	case 7:
-		++_wo[21];
-		break;
-	case 5:
-		++_wo[223];
-		break;
-	case 6:
-		++_wo[203];
-		break;
-	case 8:
-		++_wo[143];
-		break;
-	case 9:
-		++_wo[303];
-		break;
-	case 10:
-		++_wo[243];
-		break;
-	case 11:
-		++_wo[163];
-		break;
-	case 13:
-		++_wo[263];
-		break;
-	case 14:
-		++_wo[283];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(10) - 1) {
-	case 0:
-		++_wo[117];
-		break;
-	case 1:
-		++_wo[55];
-		break;
-	case 2:
-		++_wo[177];
-		break;
-	case 3:
-	case 12:
-		++_wo[97];
-		break;
-	case 4:
-	case 7:
-		++_wo[11];
-		break;
-	case 5:
-		++_wo[217];
-		break;
-	case 6:
-		++_wo[197];
-		break;
-	case 8:
-		++_wo[137];
-		break;
-	case 9:
-		++_wo[297];
-		break;
-	case 10:
-		++_wo[237];
-		break;
-	case 11:
-		++_wo[157];
-		break;
-	case 13:
-		++_wo[257];
-		break;
-	case 14:
-		++_wo[277];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(11) - 1) {
-	case 1:
-		++_wo[60];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[16];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(12) - 1) {
-	case 0:
-		++_wo[118];
-		break;
-	case 1:
-		++_wo[56];
-		break;
-	case 2:
-		++_wo[178];
-		break;
-	case 3:
-	case 12:
-		++_wo[98];
-		break;
-	case 4:
-	case 7:
-		++_wo[12];
-		break;
-	case 5:
-		++_wo[218];
-		break;
-	case 6:
-		++_wo[198];
-		break;
-	case 8:
-		++_wo[138];
-		break;
-	case 9:
-		++_wo[298];
-		break;
-	case 10:
-		++_wo[238];
-		break;
-	case 11:
-		++_wo[158];
-		break;
-	case 13:
-		++_wo[258];
-		break;
-	case 14:
-		++_wo[278];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(13) - 1) {
-	case 1:
-		++_wo[61];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[17];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(14) - 1) {
-	case 0:
-		++_wo[121];
-		break;
-	case 1:
-		++_wo[59];
-		break;
-	case 2:
-		++_wo[181];
-		break;
-	case 3:
-	case 12:
-		++_wo[101];
-		break;
-	case 4:
-	case 7:
-		++_wo[15];
-		break;
-	case 5:
-		++_wo[221];
-		break;
-	case 6:
-		++_wo[201];
-		break;
-	case 8:
-		++_wo[141];
-		break;
-	case 9:
-		++_wo[301];
-		break;
-	case 10:
-		++_wo[241];
-		break;
-	case 11:
-		++_wo[161];
-		break;
-	case 13:
-		++_wo[261];
-		break;
-	case 14:
-		++_wo[281];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(15) - 1) {
-	case 1:
-		++_wo[63];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[19];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(16) - 1) {
-	case 0:
-		++_wo[120];
-		break;
-	case 1:
-		++_wo[58];
-		break;
-	case 2:
-		++_wo[180];
-		break;
-	case 3:
-	case 12:
-		++_wo[100];
-		break;
-	case 4:
-	case 7:
-		++_wo[14];
-		break;
-	case 5:
-		++_wo[220];
-		break;
-	case 6:
-		++_wo[200];
-		break;
-	case 8:
-		++_wo[140];
-		break;
-	case 9:
-		++_wo[300];
-		break;
-	case 10:
-		++_wo[240];
-		break;
-	case 11:
-		++_wo[160];
-		break;
-	case 13:
-		++_wo[260];
-		break;
-	case 14:
-		++_wo[280];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(17) - 1) {
-	case 1:
-		++_wo[62];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[18];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(18) - 1) {
-	case 0:
-		++_wo[119];
-		break;
-	case 1:
-		++_wo[57];
-		break;
-	case 2:
-		++_wo[179];
-		break;
-	case 3:
-	case 12:
-		++_wo[99];
-		break;
-	case 4:
-	case 7:
-		++_wo[13];
-		break;
-	case 5:
-		++_wo[219];
-		break;
-	case 6:
-		++_wo[199];
-		break;
-	case 8:
-		++_wo[139];
-		break;
-	case 9:
-		++_wo[299];
-		break;
-	case 10:
-		++_wo[239];
-		break;
-	case 11:
-		++_wo[159];
-		break;
-	case 13:
-		++_wo[259];
-		break;
-	case 14:
-		++_wo[279];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(19) - 1) {
-	case 0:
-		++_wo[108];
-		break;
-	case 1:
-		++_wo[78];
-		break;
-	case 2:
-		++_wo[168];
-		break;
-	case 3:
-	case 12:
-		++_wo[88];
-		break;
-	case 4:
-	case 7:
-		++_wo[34];
-		break;
-	case 5:
-		++_wo[208];
-		break;
-	case 6:
-		++_wo[188];
-		break;
-	case 8:
-		++_wo[128];
-		break;
-	case 9:
-		++_wo[288];
-		break;
-	case 10:
-		++_wo[228];
-		break;
-	case 11:
-		++_wo[148];
-		break;
-	case 13:
-		++_wo[248];
-		break;
-	case 14:
-		++_wo[268];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(20) - 1) {
-	case 1:
-		++_wo[76];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[32];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(21) - 1) {
-	case 0:
-		++_wo[109];
-		break;
-	case 1:
-		++_wo[44];
-		break;
-	case 2:
-		++_wo[169];
-		break;
-	case 3:
-	case 12:
-		++_wo[89];
-		break;
-	case 4:
-	case 7:
-		++_wo[0];
-		break;
-	case 5:
-		++_wo[209];
-		break;
-	case 6:
-		++_wo[189];
-		break;
-	case 8:
-		++_wo[129];
-		break;
-	case 9:
-		++_wo[289];
-		break;
-	case 10:
-		++_wo[229];
-		break;
-	case 11:
-		++_wo[149];
-		break;
-	case 13:
-		++_wo[249];
-		break;
-	case 14:
-		++_wo[269];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(22) - 1) {
-	case 1:
-		++_wo[74];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[30];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(23) - 1) {
-	case 0:
-		++_wo[110];
-		break;
-	case 1:
-		++_wo[45];
-		break;
-	case 2:
-		++_wo[170];
-		break;
-	case 3:
-	case 12:
-		++_wo[90];
-		break;
-	case 4:
-	case 7:
-		++_wo[1];
-		break;
-	case 5:
-		++_wo[210];
-		break;
-	case 6:
-		++_wo[190];
-		break;
-	case 8:
-		++_wo[130];
-		break;
-	case 9:
-		++_wo[290];
-		break;
-	case 10:
-		++_wo[230];
-		break;
-	case 11:
-		++_wo[150];
-		break;
-	case 13:
-		++_wo[250];
-		break;
-	case 14:
-		++_wo[270];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(24) - 1) {
-	case 1:
-		++_wo[52];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[8];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(25) - 1) {
-	case 0:
-		++_wo[111];
-		break;
-	case 1:
-		++_wo[46];
-		break;
-	case 2:
-		++_wo[171];
-		break;
-	case 3:
-	case 12:
-		++_wo[91];
-		break;
-	case 4:
-	case 7:
-		++_wo[2];
-		break;
-	case 5:
-		++_wo[211];
-		break;
-	case 6:
-		++_wo[191];
-		break;
-	case 8:
-		++_wo[131];
-		break;
-	case 9:
-		++_wo[291];
-		break;
-	case 10:
-		++_wo[231];
-		break;
-	case 11:
-		++_wo[151];
-		break;
-	case 13:
-		++_wo[251];
-		break;
-	case 14:
-		++_wo[271];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(26) - 1) {
-	case 1:
-		++_wo[51];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[7];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(27) - 1) {
-	case 0:
-		++_wo[116];
-		break;
-	case 1:
-		++_wo[50];
-		break;
-	case 2:
-		++_wo[176];
-		break;
-	case 3:
-	case 12:
-		++_wo[96];
-		break;
-	case 4:
-	case 7:
-		++_wo[6];
-		break;
-	case 5:
-		++_wo[216];
-		break;
-	case 6:
-		++_wo[196];
-		break;
-	case 8:
-		++_wo[136];
-		break;
-	case 9:
-		++_wo[296];
-		break;
-	case 10:
-		++_wo[236];
-		break;
-	case 11:
-		++_wo[156];
-		break;
-	case 13:
-		++_wo[256];
-		break;
-	case 14:
-		++_wo[276];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(28) - 1) {
-	case 1:
-		++_wo[53];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[9];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(29) - 1) {
-	case 0:
-		++_wo[115];
-		break;
-	case 1:
-		++_wo[49];
-		break;
-	case 2:
-		++_wo[175];
-		break;
-	case 3:
-	case 12:
-		++_wo[95];
-		break;
-	case 4:
-	case 7:
-		++_wo[5];
-		break;
-	case 5:
-		++_wo[215];
-		break;
-	case 6:
-		++_wo[195];
-		break;
-	case 8:
-		++_wo[135];
-		break;
-	case 9:
-		++_wo[295];
-		break;
-	case 10:
-		++_wo[235];
-		break;
-	case 11:
-		++_wo[155];
-		break;
-	case 13:
-		++_wo[255];
-		break;
-	case 14:
-		++_wo[275];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(30) - 1) {
-	case 1:
-		++_wo[54];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[10];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(31) - 1) {
-	case 0:
-		++_wo[114];
-		break;
-	case 1:
-		++_wo[48];
-		break;
-	case 2:
-		++_wo[174];
-		break;
-	case 3:
-	case 12:
-		++_wo[94];
-		break;
-	case 4:
-	case 7:
-		++_wo[4];
-		break;
-	case 5:
-		++_wo[214];
-		break;
-	case 6:
-		++_wo[194];
-		break;
-	case 8:
-		++_wo[134];
-		break;
-	case 9:
-		++_wo[294];
-		break;
-	case 10:
-		++_wo[234];
-		break;
-	case 11:
-		++_wo[154];
-		break;
-	case 13:
-		++_wo[254];
-		break;
-	case 14:
-		++_wo[274];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(32) - 1) {
-	case 1:
-		++_wo[75];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[31];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(33) - 1) {
-	case 0:
-		++_wo[112];
-		break;
-	case 1:
-		++_wo[47];
-		break;
-	case 2:
-		++_wo[172];
-		break;
-	case 3:
-	case 12:
-		++_wo[92];
-		break;
-	case 4:
-	case 7:
-		++_wo[3];
-		break;
-	case 5:
-		++_wo[212];
-		break;
-	case 6:
-		++_wo[192];
-		break;
-	case 8:
-		++_wo[132];
-		break;
-	case 9:
-		++_wo[292];
-		break;
-	case 10:
-		++_wo[232];
-		break;
-	case 11:
-		++_wo[152];
-		break;
-	case 13:
-		++_wo[252];
-		break;
-	case 14:
-		++_wo[272];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(34) - 1) {
-	case 1:
-		++_wo[77];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[33];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(35) - 1) {
-	case 0:
-		++_wo[113];
-		break;
-	case 1:
-		++_wo[79];
-		break;
-	case 2:
-		++_wo[173];
-		break;
-	case 3:
-	case 12:
-		++_wo[93];
-		break;
-	case 4:
-	case 7:
-		++_wo[35];
-		break;
-	case 5:
-		++_wo[213];
-		break;
-	case 6:
-		++_wo[193];
-		break;
-	case 8:
-		++_wo[133];
-		break;
-	case 9:
-		++_wo[293];
-		break;
-	case 10:
-		++_wo[233];
-		break;
-	case 11:
-		++_wo[153];
-		break;
-	case 13:
-		++_wo[253];
-		break;
-	case 14:
-		++_wo[273];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(36) - 1) {
-	case 1:
-		++_wo[83];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[39];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(37) - 1) {
-	case 1:
-		++_wo[82];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[38];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(38) - 1) {
-	case 1:
-		++_wo[81];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[37];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(39) - 1) {
-	case 1:
-		++_wo[80];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[36];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(40) - 1) {
-	case 1:
-		++_wo[84];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[40];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(41) - 1) {
-	case 1:
-		++_wo[85];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[41];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(42) - 1) {
-	case 1:
-		++_wo[86];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[42];
-		break;
-	default:
-		break;
-	}
-
-	switch (_vm->_map->getCell(43) - 1) {
-	case 1:
-		++_wo[87];
-		break;
-	case 0:
-	case 2:
-	case 3:
-	case 4:
-	case 5:
-	case 6:
-	case 7:
-	case 8:
-	case 9:
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-	case 14:
-		++_wo[43];
-		break;
-	default:
-		break;
-	}
-}
-
-void InterfaceMap::setIndoorsMonsters() {
-	Combat &combat = *_vm->_combat;
-	Map &map = *_vm->_map;
-	Common::Point mazePos = _vm->_party->_mazePosition;
-	Direction dir = _vm->_party->_mazeDirection;
-
-	combat.clear();
-	for (uint monsterIdx = 0; monsterIdx < map._mobData._monsters.size(); ++monsterIdx) {
-		MazeMonster &monster = map._mobData._monsters[monsterIdx];
-		SpriteResource *sprites = monster._sprites;
-		int frame = monster._frame;
-
-		if (frame >= 8) {
-			sprites = monster._attackSprites;
-			frame -= 8;
-		}
-
-		// The following long sequence sets up monsters in the various positions
-		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][2]) &&
-				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][2])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[0] == -1) {
-				combat._attackMonsters[0] = monsterIdx;
-				setMonsterSprite(_indoorList[156], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[0]);
-			} else if (combat._attackMonsters[1] == -1) {
-				combat._attackMonsters[1] = monsterIdx;
-				setMonsterSprite(_indoorList[150], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[0]);
-			} else if (combat._attackMonsters[2] == -1) {
-				combat._attackMonsters[2] = monsterIdx;
-				setMonsterSprite(_indoorList[153], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[0]);
-			}
-		}
-
-		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][7]) &&
-				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][7])) {
-			monster._isAttacking = true;
-			if (!_wo[27]) {
-				if (combat._attackMonsters[3] == -1) {
-					combat._attackMonsters[3] = monsterIdx;
-					setMonsterSprite(_indoorList[132], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[1]);
-				} else if (combat._attackMonsters[4] == -1) {
-					combat._attackMonsters[4] = monsterIdx;
-					setMonsterSprite(_indoorList[130], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[1]);
-				} else if (combat._attackMonsters[2] == -1) {
-					combat._attackMonsters[5] = monsterIdx;
-					setMonsterSprite(_indoorList[131], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[1]);
-				}
-			}
-		}
-
-		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][5]) &&
-				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][5])) {
-			if (_wo[27] && _wo[25]) {
-			} else if (_wo[27] && _wo[28]) {
-			} else if (_wo[23] & _wo[25]) {
-			} else if (_wo[23] && _wo[28]) {
-			} else {
-				monster._isAttacking = true;
-
-				if (combat._attackMonsters[12] == -1) {
-					combat._attackMonsters[12] = monsterIdx;
-					setMonsterSprite(_indoorList[128], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[1]);
-				}
-			}
-		}
-
-		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][9]) &&
-				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][9])) {
-			if (_wo[27] && _wo[26]) {
-			} else if (_wo[27] && _wo[29]) {
-			} else if (_wo[24] & _wo[26]) {
-			} else if (_wo[24] && _wo[29]) {
-			} else {
-				monster._isAttacking = true;
-
-				if (combat._attackMonsters[13] == -1) {
-					combat._attackMonsters[13] = monsterIdx;
-					setMonsterSprite(_indoorList[129], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[1]);
-				}
-			}
-		}
-
-		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][14]) &&
-				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][14])) {
-			monster._isAttacking = true;
-
-			if (!_wo[22] && !_wo[27]) {
-				if (combat._attackMonsters[6] == -1) {
-					combat._attackMonsters[6] = monsterIdx;
-					setMonsterSprite(_indoorList[106], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
-				} else  if (combat._attackMonsters[7] == -1) {
-					combat._attackMonsters[7] = monsterIdx;
-					setMonsterSprite(_indoorList[104], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
-				} else if (combat._attackMonsters[8] == -1) {
-					combat._attackMonsters[8] = monsterIdx;
-					setMonsterSprite(_indoorList[105], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
-				}
-			}
-		}
-
-		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][12]) &&
-				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][12])) {
-			if (_wo[27]) {
-			} else if (_wo[22] && _wo[23]) {
-			} else if (_wo[22] & _wo[20]) {
-			} else if (_wo[23] && _wo[17]) {
-			} else {
-				monster._isAttacking = true;
-
-				if (combat._attackMonsters[14] == -1) {
-					combat._attackMonsters[14] = monsterIdx;
-					setMonsterSprite(_indoorList[100], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
-				} else if (combat._attackMonsters[20] == -1) {
-					combat._attackMonsters[20] = monsterIdx;
-					setMonsterSprite(_indoorList[101], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
-				}
-			}
-		}
-
-		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][16]) &&
-				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][16])) {
-			if (_wo[27]) {
-			} else if (_wo[22] && _wo[24]) {
-			} else if (_wo[22] & _wo[21]) {
-			} else if (_wo[24] && _wo[19]) {
-			} else if (_wo[21] && _wo[19]) {
-			} else {
-				monster._isAttacking = true;
-
-				if (combat._attackMonsters[15] == -1) {
-					combat._attackMonsters[15] = monsterIdx;
-					setMonsterSprite(_indoorList[102], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
-				} else if (combat._attackMonsters[21] == -1) {
-					combat._attackMonsters[21] = monsterIdx;
-					setMonsterSprite(_indoorList[103], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
-				}
-			}
-		}
-
-		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][27]) &&
-				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][27])) {
-			if (!_wo[27] && !_wo[22] && !_wo[15]) {
-				monster._isAttacking = true;
-
-				if (combat._attackMonsters[9] == -1) {
-					combat._attackMonsters[9] = monsterIdx;
-					setMonsterSprite(_indoorList[70], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				} else if (combat._attackMonsters[10] == -1) {
-					combat._attackMonsters[10] = monsterIdx;
-					setMonsterSprite(_indoorList[68], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				} else if (combat._attackMonsters[11] == -1) {
-					combat._attackMonsters[11] = monsterIdx;
-					setMonsterSprite(_indoorList[69], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				}
-			}
-		}
-
-		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][25]) &&
-				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][25])) {
-			if (_wo[27] || _wo[22]) {
-			} else if (_wo[15] && _wo[17]) {
-			} else if (_wo[15] && _wo[12]) {
-			} else if (_wo[12] && _wo[7]) {
-			} else if (_wo[17] && _wo[7]) {
-			} else {
-				monster._isAttacking = true;
-
-				if (combat._attackMonsters[16] == -1) {
-					combat._attackMonsters[16] = monsterIdx;
-					setMonsterSprite(_indoorList[62], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				} else if (combat._attackMonsters[22] == -1) {
-					combat._attackMonsters[22] = monsterIdx;
-					setMonsterSprite(_indoorList[60], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				} else if (combat._attackMonsters[24] == -1) {
-					combat._attackMonsters[24] = monsterIdx;
-					setMonsterSprite(_indoorList[61], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				}
-			}
-		}
-
-		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][23]) &&
-				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][23])) {
-			if (_wo[27]) {
-			} else if (_wo[22] && _wo[20]) {
-			} else if (_wo[22] && _wo[23]) {
-			} else if (_wo[20] && _wo[17]) {
-			} else if (_wo[23] && _wo[17]) {
-			} else if (_wo[12] || _wo[8]) {
-			} else {
-				monster._isAttacking = true;
-
-				if (combat._attackMonsters[18] == -1) {
-					combat._attackMonsters[18] = monsterIdx;
-					setMonsterSprite(_indoorList[66], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				}
-			}
-		}
-
-		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][29]) &&
-				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][29])) {
-			if (_wo[27] || _wo[22]) {
-			} else if (_wo[15] && _wo[19]) {
-			} else if (_wo[15] && _wo[14]) {
-			} else if (_wo[14] && _wo[9]) {
-			} else if (_wo[19] && _wo[9]) {
-			} else {
-				monster._isAttacking = true;
-
-				if (combat._attackMonsters[17] == -1) {
-					combat._attackMonsters[17] = monsterIdx;
-					setMonsterSprite(_indoorList[65], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				} else if (combat._attackMonsters[23] == -1) {
-					combat._attackMonsters[23] = monsterIdx;
-					setMonsterSprite(_indoorList[63], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				} else if (combat._attackMonsters[25] == -1) {
-					combat._attackMonsters[25] = monsterIdx;
-					setMonsterSprite(_indoorList[64], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				}
-			}
-		}
-
-		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][31]) &&
-				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][31])) {
-			if (_wo[27]) {
-			} else if (_wo[22] && _wo[21]) {
-			} else if (_wo[22] && _wo[24]) {
-			} else if (_wo[21] && _wo[19]) {
-			} else if (_wo[24] && _wo[19]) {
-			} else if (_wo[14] || _wo[10]) {
-			} else {
-				monster._isAttacking = true;
-
-				if (combat._attackMonsters[19] == -1) {
-					combat._attackMonsters[19] = monsterIdx;
-					setMonsterSprite(_indoorList[67], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				} else if (combat._attackMonsters[23] == -1) {
-					combat._attackMonsters[23] = monsterIdx;
-					setMonsterSprite(_indoorList[63], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				} else if (combat._attackMonsters[25] == -1) {
-					combat._attackMonsters[25] = monsterIdx;
-					setMonsterSprite(_indoorList[64], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
-				}
-			}
-		}
-	}
-
-	_indoorList[153]._x += 58;
-	_indoorList[131]._x += 25;
-	_indoorList[105]._x += 9;
-	_indoorList[69]._x--;
-	_indoorList[61]._x -= 26;
-	_indoorList[64]._x += 23;
-	_indoorList[66]._x -= 58;
-	_indoorList[67]._x += 40;
-	_indoorList[100]._x -= 65;
-	_indoorList[101]._x -= 85;
-	_indoorList[102]._x += 49;
-	_indoorList[103]._x += 65;
-	_indoorList[128]._x -= 112;
-	_indoorList[129]._x += 98;
-
-	if (combat._attackMonsters[1] != -1 && combat._attackMonsters[2] == -1) {
-		_indoorList[156]._x += 31;
-		_indoorList[150]._x -= 36;
-	} else {
-		_indoorList[156]._x -= 5;
-		_indoorList[150]._x -= 67;
-	}
-
-	if (combat._attackMonsters[4] != -1 && combat._attackMonsters[5] == -1) {
-		_indoorList[132]._x += 8;
-		_indoorList[130]._x -= 23;
-	} else {
-		_indoorList[132]._x -= 7;
-		_indoorList[130]._x -= 38;
-	}
-
-	if (combat._attackMonsters[7] != -1 && combat._attackMonsters[8] == -1) {
-		_indoorList[104]._x -= 16;
-	} else {
-		_indoorList[106]._x -= 8;
-		_indoorList[104]._x -= 24;
-	}
-
-	if (combat._attackMonsters[10] != -1 && combat._attackMonsters[11] == -1) {
-		_indoorList[70]._x -= 5;
-		_indoorList[68]._x -= 13;
-	} else {
-		_indoorList[70]._x -= 9;
-		_indoorList[68]._x -= 17;
-	}
-
-	if (combat._attackMonsters[22] == -1 && combat._attackMonsters[24] == -1) {
-		_indoorList[62]._x -= 27;
-		_indoorList[60]._x -= 37;
-	} else {
-		_indoorList[62]._x -= 34;
-		_indoorList[60]._x -= 41;
-	}
-
-	if (combat._attackMonsters[23] != -1 && combat._attackMonsters[25] == -1) {
-		_indoorList[65]._x += 20;
-		_indoorList[63]._x -= 12;
-	} else {
-		_indoorList[65]._x += 16;
-		_indoorList[63]._x -= 16;
-	}
-}
-
-void InterfaceMap::setMonsterSprite(DrawStruct &drawStruct, MazeMonster &monster, SpriteResource *sprites,
-		int frame, int defaultY) {
-	MonsterStruct &monsterData = *monster._monsterData;
-	bool flying = monsterData._flying;
-
-	drawStruct._frame = frame;
-	drawStruct._sprites = sprites;
-	drawStruct._y = defaultY;
-
-	if (flying) {
-		drawStruct._x = Res.COMBAT_FLOAT_X[_combatFloatCounter];
-		drawStruct._y = Res.COMBAT_FLOAT_Y[_combatFloatCounter];
-	} else {
-		drawStruct._x = 0;
-	}
-
-	drawStruct._flags &= ~0xFFF;
-	if (monster._effect2)
-		drawStruct._flags = Res.MONSTER_EFFECT_FLAGS[monster._effect2][monster._effect3];
-}
-
-void InterfaceMap::setIndoorsObjects() {
-	Common::Point mazePos = _vm->_party->_mazePosition;
-	Direction dir = _vm->_party->_mazeDirection;
-	Common::Point pt;
-	_objNumber = 0;
-
-	Common::Array<MazeObject> &objects = _vm->_map->_mobData._objects;
-	for (uint idx = 0; idx < objects.size(); ++idx) {
-		MazeObject &mazeObject = objects[idx];
-
-		// Determine which half of the X/Y lists to use
-		int listOffset;
-		if (_vm->_files->_isDarkCc) {
-			listOffset = mazeObject._spriteId == 47 ? 1 : 0;
-		} else {
-			listOffset = mazeObject._spriteId == 113 ? 1 : 0;
-		}
-
-		// Position 1
-		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][2]) == mazeObject._position.x
-			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][2]) == mazeObject._position.y
-			&& _indoorList._objects0._frame == -1) {
-			_indoorList._objects0._x = Res.INDOOR_OBJECT_X[listOffset][0];
-			_indoorList._objects0._y = Res.MAP_OBJECT_Y[listOffset][0];
-			_indoorList._objects0._frame = mazeObject._frame;
-			_indoorList._objects0._sprites = mazeObject._sprites;
-			_indoorList._objects0._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (mazeObject._flipped)
-				_indoorList._objects0._flags |= SPRFLAG_HORIZ_FLIPPED;
-			_objNumber = idx;
-		}
-
-		// Position 2
-		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][7]) == mazeObject._position.x
-			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][7]) == mazeObject._position.y
-			&& !_wo[27] && _indoorList._objects1._frame == -1) {
-			_indoorList._objects1._x = Res.INDOOR_OBJECT_X[listOffset][1];
-			_indoorList._objects1._y = Res.MAP_OBJECT_Y[listOffset][1];
-			_indoorList._objects1._frame = mazeObject._frame;
-			_indoorList._objects1._sprites = mazeObject._sprites;
-			_indoorList._objects1._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (mazeObject._flipped)
-				_indoorList._objects1._flags |= SPRFLAG_HORIZ_FLIPPED;
-		}
-
-		// Position 3
-		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][5]) == mazeObject._position.x
-			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][5]) == mazeObject._position.y) {
-			if (_wo[27] && _wo[25]) {
-			} else if (_wo[27] && _wo[28]) {
-			} else if (_wo[23] && _wo[25]) {
-			} else if (_wo[23] && _wo[28]) {
-			} else if (_indoorList._objects2._frame == -1) {
-				_indoorList._objects2._x = Res.INDOOR_OBJECT_X[listOffset][2];
-				_indoorList._objects2._y = Res.MAP_OBJECT_Y[listOffset][2];
-				_indoorList._objects2._frame = mazeObject._frame;
-				_indoorList._objects2._sprites = mazeObject._sprites;
-				_indoorList._objects2._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-				if (mazeObject._flipped)
-					_indoorList._objects2._flags |= SPRFLAG_HORIZ_FLIPPED;
-			}
-		}
-
-		// Position 4
-		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][9]) == mazeObject._position.x
-			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][9]) == mazeObject._position.y) {
-			if (_wo[27] && _wo[26]) {
-			} else if (_wo[27] && _wo[29]) {
-			} else if (_wo[24] && _wo[26]) {
-			} else if (_wo[24] && _wo[29]) {
-			} else if (_indoorList._objects3._frame == -1) {
-				_indoorList._objects3._x = Res.INDOOR_OBJECT_X[listOffset][3];
-				_indoorList._objects3._y = Res.MAP_OBJECT_Y[listOffset][3];
-				_indoorList._objects3._frame = mazeObject._frame;
-				_indoorList._objects3._sprites = mazeObject._sprites;
-				_indoorList._objects3._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-				if (mazeObject._flipped)
-					_indoorList._objects3._flags |= SPRFLAG_HORIZ_FLIPPED;
-			}
-		}
-
-		// Position 5
-		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][14]) == mazeObject._position.x
-			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][14]) == mazeObject._position.y) {
-			if (!_wo[22] && !_wo[27] && _indoorList._objects4._frame == -1) {
-				_indoorList._objects4._x = Res.INDOOR_OBJECT_X[listOffset][4];
-				_indoorList._objects4._y = Res.MAP_OBJECT_Y[listOffset][4];
-				_indoorList._objects4._frame = mazeObject._frame;
-				_indoorList._objects4._sprites = mazeObject._sprites;
-				_indoorList._objects4._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-				if (mazeObject._flipped)
-					_indoorList._objects4._flags |= SPRFLAG_HORIZ_FLIPPED;
-			}
-		}
-
-		// Position 6
-		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][12]) == mazeObject._position.x
-			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][12]) == mazeObject._position.y) {
-			if (_wo[27]) {
-			} else if (_wo[22] && _wo[23]) {
-			} else if (_wo[22] && _wo[20]) {
-			} else if (_wo[23] && _wo[17]) {
-			} else if (_wo[20] && _wo[17]) {
-			} else if (_indoorList._objects5._frame == -1) {
-				_indoorList._objects5._x = Res.INDOOR_OBJECT_X[listOffset][5];
-				_indoorList._objects5._y = Res.MAP_OBJECT_Y[listOffset][5];
-				_indoorList._objects5._frame = mazeObject._frame;
-				_indoorList._objects5._sprites = mazeObject._sprites;
-				_indoorList._objects5._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-				if (mazeObject._flipped)
-					_indoorList._objects5._flags |= SPRFLAG_HORIZ_FLIPPED;
-			}
-		}
-
-		// Position 7
-		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][16]) == mazeObject._position.x
-			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][16]) == mazeObject._position.y) {
-			if (_wo[27]) {
-			} else if (_wo[22] && _wo[24]) {
-			} else if (_wo[22] && _wo[21]) {
-			} else if (_wo[24] && _wo[19]) {
-			} else if (_wo[21] && _wo[19]) {
-			} else if (_indoorList._objects6._frame == -1) {
-				_indoorList._objects6._x = Res.INDOOR_OBJECT_X[listOffset][6];
-				_indoorList._objects6._y = Res.MAP_OBJECT_Y[listOffset][6];
-				_indoorList._objects6._frame = mazeObject._frame;
-				_indoorList._objects6._sprites = mazeObject._sprites;
-				_indoorList._objects6._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-				if (mazeObject._flipped)
-					_indoorList._objects6._flags |= SPRFLAG_HORIZ_FLIPPED;
-			}
-		}
-
-		// Position 8
-		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][27]) == mazeObject._position.x
-			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][27]) == mazeObject._position.y) {
-			if (!_wo[27] && !_wo[22] && !_wo[15] && _indoorList._objects7._frame == -1) {
-				_indoorList._objects7._x = Res.INDOOR_OBJECT_X[listOffset][7];
-				_indoorList._objects7._y = Res.MAP_OBJECT_Y[listOffset][7];
-				_indoorList._objects7._frame = mazeObject._frame;
-				_indoorList._objects7._sprites = mazeObject._sprites;
-				_indoorList._objects7._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-				if (mazeObject._flipped)
-					_indoorList._objects7._flags |= SPRFLAG_HORIZ_FLIPPED;
-			}
-		}
-
-		// Position 9
-		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][25]) == mazeObject._position.x
-			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][25]) == mazeObject._position.y) {
-			if (_wo[27] || _wo[22]) {
-			} else if (_wo[15] && _wo[17]) {
-			} else if (_wo[15] && _wo[12]) {
-			} else if (_wo[12] && _wo[7]) {
-			} else if (_wo[17] && _wo[7]) {
-			} else if (_indoorList._objects8._frame == -1) {
-				_indoorList._objects8._x = Res.INDOOR_OBJECT_X[listOffset][8];
-				_indoorList._objects8._y = Res.MAP_OBJECT_Y[listOffset][8];
-				_indoorList._objects8._frame = mazeObject._frame;
-				_indoorList._objects8._sprites = mazeObject._sprites;
-				_indoorList._objects8._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-				if (mazeObject._flipped)
-					_indoorList._objects8._flags |= SPRFLAG_HORIZ_FLIPPED;
-			}
-		}
-
-		// Position 10
-		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][23]) == mazeObject._position.x
-			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][23]) == mazeObject._position.y) {
-			if (_wo[27]) {
-			} else if (_wo[22] && _wo[20]) {
-			} else if (_wo[22] && _wo[23]) {
-			} else if (_wo[20] && _wo[17]) {
-			} else if (_wo[23] && _wo[17]) {
-			} else if (!_wo[12] && !_wo[8] && _indoorList._objects9._frame == -1) {
-				_indoorList._objects9._x = Res.INDOOR_OBJECT_X[listOffset][10];
-				_indoorList._objects9._y = Res.MAP_OBJECT_Y[listOffset][10];
-				_indoorList._objects9._frame = mazeObject._frame;
-				_indoorList._objects9._sprites = mazeObject._sprites;
-				_indoorList._objects9._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-				if (mazeObject._flipped)
-					_indoorList._objects9._flags |= SPRFLAG_HORIZ_FLIPPED;
-			}
-		}
-
-		// Block 11
-		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][29]) == mazeObject._position.x
-			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][29]) == mazeObject._position.y) {
-			if (_wo[27]) {
-			} else if (_wo[15] && _wo[19]) {
-			} else if (_wo[15] && _wo[14]) {
-			} else if (_wo[14] && _wo[9]) {
-			} else if (_wo[19] && _wo[9]) {
-			} else if (_indoorList._objects10._frame == -1) {
-				_indoorList._objects10._x = Res.INDOOR_OBJECT_X[listOffset][9];
-				_indoorList._objects10._y = Res.MAP_OBJECT_Y[listOffset][9];
-				_indoorList._objects10._frame = mazeObject._frame;
-				_indoorList._objects10._sprites = mazeObject._sprites;
-				_indoorList._objects10._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-				if (mazeObject._flipped)
-					_indoorList._objects10._flags |= SPRFLAG_HORIZ_FLIPPED;
-			}
-		}
-
-		// Block 12
-		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][31]) == mazeObject._position.x
-			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][31]) == mazeObject._position.y) {
-			if (_wo[27]) {
-			} else if (_wo[22] && _wo[21]) {
-			} else if (_wo[22] && _wo[24]) {
-			} else if (_wo[21] && _wo[19]) {
-			} else if (_wo[24] && _wo[19]) {
-			} else if (!_wo[14] && !_wo[10] && _indoorList._objects11._frame == -1) {
-				_indoorList._objects11._x = Res.INDOOR_OBJECT_X[listOffset][11];
-				_indoorList._objects11._y = Res.MAP_OBJECT_Y[listOffset][11];
-				_indoorList._objects11._frame = mazeObject._frame;
-				_indoorList._objects11._sprites = mazeObject._sprites;
-				_indoorList._objects11._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-				if (mazeObject._flipped)
-					_indoorList._objects11._flags |= SPRFLAG_HORIZ_FLIPPED;
-			}
-		}
-	}
-}
-
-void InterfaceMap::setIndoorsWallPics() {
-	Map &map = *_vm->_map;
-	const Common::Point &mazePos = _vm->_party->_mazePosition;
-	Direction dir = _vm->_party->_mazeDirection;
-
-	Common::fill(&_wp[0], &_wp[20], -1);
-
-	for (uint idx = 0; idx < map._mobData._wallItems.size(); ++idx) {
-		MazeWallItem &wallItem = map._mobData._wallItems[idx];
-		if (wallItem._direction != dir)
-			continue;
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][2]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][2])) {
-			if (_wp[1] == -1) {
-				_indoorList[148]._frame = wallItem._frame;
-				_indoorList[148]._sprites = wallItem._sprites;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][7]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][7])) {
-			if (!_wo[27] && _wp[1] == -1) {
-				_indoorList[123]._frame = wallItem._frame;
-				_indoorList[123]._sprites = wallItem._sprites;
-				_wp[4] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][5]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][5])) {
-			if (_wo[27] && _wo[25]) {
-			} else if (_wo[27] && _wo[28]) {
-			} else if (_wo[23] && _wo[25]) {
-			} else if (_wo[23] && _wo[28]) {
-			} else if (_wp[3] == -1) {
-				_indoorList[122]._frame = wallItem._frame;
-				_indoorList[122]._sprites = wallItem._sprites;
-				_wp[3] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][9]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][9])) {
-			if (_wo[27] && _wo[26]) {
-			} else if (_wo[27] && _wo[29]) {
-			} else if (_wo[24] && _wo[26]) {
-			} else if (_wo[24] && _wo[29]) {
-			} else if (_wp[5] == -1) {
-				_indoorList[124]._frame = wallItem._frame;
-				_indoorList[124]._sprites = wallItem._sprites;
-				_wp[5] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][14]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][14])) {
-			if (!_wo[22] && !_wo[27] && !_wp[8]) {
-				_indoorList[94]._frame = wallItem._frame;
-				_indoorList[94]._sprites = wallItem._sprites;
-				_wp[8] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][12]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][12])) {
-			if (_wo[27]) {
-			} else if (_wo[22] && _wo[23]) {
-			} else if (_wo[22] && _wo[20]) {
-			} else if (_wo[23] && _wo[17]) {
-			} else if (_wo[20] && _wo[17]) {
-			} else if (_wp[7] == -1) {
-				_indoorList[93]._frame = wallItem._frame;
-				_indoorList[93]._sprites = wallItem._sprites;
-				_wp[7] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][16]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][16])) {
-			if (_wo[27]) {
-			} else if (_wo[22] && _wo[24]) {
-			} else if (_wo[22] && _wo[21]) {
-			} else if (_wo[24] && _wo[19]) {
-			} else if (_wo[21] && _wo[19]) {
-			} else if (_wp[9] == -1) {
-				_indoorList[95]._frame = wallItem._frame;
-				_indoorList[95]._sprites = wallItem._sprites;
-				_wp[9] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][12]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][12])) {
-			if (_wo[27]) {
-			} else if (_wo[25] && _wo[28]) {
-			} else if (_wo[20] && _wo[16]) {
-			} else if (_wp[6] == -1) {
-				_indoorList[92]._frame = wallItem._frame;
-				_indoorList[92]._sprites = wallItem._sprites;
-				_wp[6] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][16]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][16])) {
-			if (!_wo[26] && !_wo[29] && !_wo[21] && !_wo[18] && _wp[10] == -1) {
-				_indoorList[96]._frame = wallItem._frame;
-				_indoorList[96]._sprites = wallItem._sprites;
-				_wp[10] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][27]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][27])) {
-			if (!_wo[27] && !_wo[22] && !_wo[15] && _wp[15] == -1) {
-				_indoorList[50]._frame = wallItem._frame;
-				_indoorList[50]._sprites = wallItem._sprites;
-				_wp[15] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][25]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][25])) {
-			if (_wo[27]) {
-			} else if (_wo[27] && _wo[22]) {
-			} else if (_wo[15] && _wo[17]) {
-			} else if (_wo[15] && _wo[12]) {
-			} else if (_wo[12] && _wo[7]) {
-			} else if (_wo[17] && _wo[7]) {
-			} else if (_wp[14] == -1) {
-				_indoorList[49]._frame = wallItem._frame;
-				_indoorList[49]._sprites = wallItem._sprites;
-				_wp[14] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][23]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][23])) {
-			if (_wo[27]) {
-			} else if (_wo[22] && _wo[20]) {
-			} else if (_wo[22] && _wo[23]) {
-			} else if (_wo[20] && _wo[17]) {
-			} else if (_wo[23] && _wo[17]) {
-			} else if (_wo[12] && _wo[8]) {
-			} else if (_wp[13] == -1) {
-				_indoorList[48]._frame = wallItem._frame;
-				_indoorList[48]._sprites = wallItem._sprites;
-				_wp[13] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][29]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][29])) {
-			if (_wo[27] || _wo[22]) {
-			} else if (_wo[15] && _wo[19]) {
-			} else if (_wo[15] && _wo[14]) {
-			} else if (_wo[14] && _wo[9]) {
-			} else if (_wo[19] && _wo[9]) {
-			} else if (_wp[16] == -1) {
-				_indoorList[51]._frame = wallItem._frame;
-				_indoorList[51]._sprites = wallItem._sprites;
-				_wp[16] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][31]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][31])) {
-			if (_wo[27]) {
-			} else if (_wo[22] && _wo[21]) {
-			} else if (_wo[22] && _wo[24]) {
-			} else if (_wo[21] && _wo[19]) {
-			} else if (_wo[24] && _wo[19]) {
-			} else if (!_wo[14] && !_wo[10] && _wp[17] == -1) {
-				_indoorList[52]._frame = wallItem._frame;
-				_indoorList[52]._sprites = wallItem._sprites;
-				_wp[17] = idx;
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][23]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][23])) {
-			if (!_wo[27] && !_wo[20] && !_wo[12] && !_wo[23] && !_wo[8] && !_wo[30]) {
-				if (_wp[12] == -1) {
-					_indoorList[47]._frame = wallItem._frame;
-					_indoorList[47]._sprites = wallItem._sprites;
-					_wp[12] = idx;
-				}
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][31]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][31])) {
-			if (!_wo[27] && !_wo[21] && !_wo[14] && !_wo[24] && !_wo[10] && !_wo[31]) {
-				if (_wp[18] == -1) {
-					_indoorList[53]._frame = wallItem._frame;
-					_indoorList[53]._sprites = wallItem._sprites;
-					_wp[18] = idx;
-				}
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][23]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][23])) {
-			if (!_wo[25] && !_wo[28] && !_wo[20] && !_wo[11] && !_wo[16] && !_wo[30] && !_wo[32]) {
-				if (_wp[11] == -1) {
-					_indoorList[46]._frame = wallItem._frame;
-					_indoorList[46]._sprites = wallItem._sprites;
-					_wp[11] = idx;
-				}
-			}
-		}
-
-		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][31]) &&
-				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][31])) {
-			if (!_wo[26] && !_wo[20] && !_wo[21] && !_wo[13] && !_wo[18] && !_wo[31] && !_wo[33]) {
-				if (_wp[19] == -1) {
-					_indoorList[54]._frame = wallItem._frame;
-					_indoorList[54]._sprites = wallItem._sprites;
-					_wp[19] = idx;
-				}
-			}
-		}
-	}
-}
-
-void InterfaceMap::setOutdoorsMonsters() {
-	Combat &combat = *_vm->_combat;
-	Map &map = *_vm->_map;
-	Party &party = *_vm->_party;
-	Direction dir = party._mazeDirection;
-	Common::Point pt = party._mazePosition;
-
-	for (uint idx = 0; idx < map._mobData._monsters.size(); ++idx) {
-		MazeMonster &monster = map._mobData._monsters[idx];
-
-		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][2]) &&
-				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][2])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[0] == -1) {
-				_outdoorList[118]._frame = idx;
-				combat._attackMonsters[0] = idx;
-			} else if (combat._attackMonsters[1] == -1) {
-				_outdoorList[112]._frame = idx;
-				combat._attackMonsters[1] = idx;
-			} else if (combat._attackMonsters[2] == -1) {
-				_outdoorList[115]._frame = idx;
-				combat._attackMonsters[2] = idx;
-			}
-		}
-
-		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][7]) &&
-				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][7])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[3] == -1) {
-				_outdoorList[94]._frame = idx;
-				combat._attackMonsters[3] = idx;
-			} else if (combat._attackMonsters[4] == -1) {
-				_outdoorList[92]._frame = idx;
-				combat._attackMonsters[4] = idx;
-			} else if (combat._attackMonsters[5] == -1) {
-				_outdoorList[93]._frame = idx;
-				combat._attackMonsters[5] = idx;
-			}
-		}
-
-		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][5]) &&
-				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][5])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[12] == -1) {
-				_outdoorList[90]._frame = idx;
-				combat._attackMonsters[12] = idx;
-			}
-		}
-
-		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][9]) &&
-				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][9])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[13] == -1) {
-				_outdoorList[91]._frame = idx;
-				combat._attackMonsters[13] = idx;
-			}
-		}
-
-		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][14]) &&
-				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][14])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[6] == -1) {
-				_outdoorList[75]._frame = idx;
-				combat._attackMonsters[6] = idx;
-			} else if (combat._attackMonsters[7] == -1) {
-				_outdoorList[73]._frame = idx;
-				combat._attackMonsters[7] = idx;
-			} else if (combat._attackMonsters[8] == -1) {
-				_outdoorList[74]._frame = idx;
-				combat._attackMonsters[8] = idx;
-			}
-		}
-
-		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][12]) &&
-				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][12])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[14] == -1) {
-				_outdoorList[69]._frame = idx;
-				combat._attackMonsters[14] = idx;
-			} else if (combat._attackMonsters[20] == -1) {
-				_outdoorList[70]._frame = idx;
-				combat._attackMonsters[20] = idx;
-			}
-		}
-
-		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][16]) &&
-				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][16])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[15] == -1) {
-				_outdoorList[71]._frame = idx;
-				combat._attackMonsters[15] = idx;
-			} else if (combat._attackMonsters[21] == -1) {
-				_outdoorList[72]._frame = idx;
-				combat._attackMonsters[21] = idx;
-			}
-		}
-
-		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][27]) &&
-				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][27])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[9] == -1) {
-				_outdoorList[52]._frame = idx;
-				combat._attackMonsters[9] = idx;
-			} else if (combat._attackMonsters[10] == -1) {
-				_outdoorList[50]._frame = idx;
-				combat._attackMonsters[10] = idx;
-			} else if (combat._attackMonsters[11] == -1) {
-				_outdoorList[51]._frame = idx;
-				combat._attackMonsters[11] = idx;
-			}
-		}
-
-		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][25]) &&
-				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][25])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[16] == -1) {
-				_outdoorList[44]._frame = idx;
-				combat._attackMonsters[16] = idx;
-			} else if (combat._attackMonsters[22] == -1) {
-				_outdoorList[42]._frame = idx;
-				combat._attackMonsters[22] = idx;
-			} else if (combat._attackMonsters[24] == -1) {
-				_outdoorList[43]._frame = idx;
-				combat._attackMonsters[24] = idx;
-			}
-		}
-
-		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][23]) &&
-				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][23])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[18] == -1) {
-				_outdoorList[48]._frame = idx;
-				combat._attackMonsters[18] = idx;
-			}
-		}
-
-		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][29]) &&
-				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][29])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[17] == -1) {
-				_outdoorList[47]._frame = idx;
-				combat._attackMonsters[17] = idx;
-			} else if (combat._attackMonsters[23] == -1) {
-				_outdoorList[45]._frame = idx;
-				combat._attackMonsters[23] = idx;
-			} else if (combat._attackMonsters[25] == -1) {
-				_outdoorList[46]._frame = idx;
-				combat._attackMonsters[25] = idx;
-			}
-		}
-
-		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][31]) &&
-				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][31])) {
-			monster._isAttacking = true;
-			if (combat._attackMonsters[19] == -1) {
-				_outdoorList[49]._frame = idx;
-				combat._attackMonsters[19] = idx;
-			}
-		}
-	}
-
-	_outdoorList[115]._x = 58;
-	_outdoorList[93]._x = 25;
-	_outdoorList[74]._x = 9;
-	_outdoorList[51]._x = -1;
-	_outdoorList[43]._x = -26;
-	_outdoorList[46]._x = 23;
-	_outdoorList[48]._x = -58;
-	_outdoorList[49]._x = 40;
-	_outdoorList[69]._x = -65;
-	_outdoorList[70]._x = -85;
-	_outdoorList[71]._x = 49;
-	_outdoorList[72]._x = 65;
-	_outdoorList[90]._x = -112;
-	_outdoorList[91]._x = 98;
-
-	if (combat._attackMonsters[1] != -1 && combat._attackMonsters[2] == -1) {
-		_outdoorList[118]._x = 31;
-		_outdoorList[112]._x = -36;
-	} else {
-		_outdoorList[118]._x = -5;
-		_outdoorList[112]._x = -67;
-	}
-	if (combat._attackMonsters[4] != -1 && combat._attackMonsters[5] == -1) {
-		_outdoorList[94]._x = 8;
-		_outdoorList[92]._x = -23;
-	} else {
-		_outdoorList[94]._x = -7;
-		_outdoorList[92]._x = -38;
-	}
-	if (combat._attackMonsters[7] != -1 && combat._attackMonsters[8] == -1) {
-		_outdoorList[75]._x = 0;
-		_outdoorList[73]._x = -16;
-	} else {
-		_outdoorList[75]._x = -8;
-		_outdoorList[73]._x = -24;
-	}
-	if (combat._attackMonsters[10] != -1 && combat._attackMonsters[11] == -1) {
-		_outdoorList[52]._x = -5;
-		_outdoorList[50]._x = -13;
-	} else {
-		_outdoorList[52]._x = -9;
-		_outdoorList[50]._x = -17;
-	}
-	if (combat._attackMonsters[22] != -1 && combat._attackMonsters[24] == -1) {
-		_outdoorList[44]._x = -27;
-		_outdoorList[42]._x = -37;
-	} else {
-		_outdoorList[44]._x = -34;
-		_outdoorList[42]._x = -41;
-	}
-	if (combat._attackMonsters[23] != -1 && combat._attackMonsters[25] == -1) {
-		_outdoorList[47]._x = 20;
-		_outdoorList[45]._x = -12;
-	} else {
-		_outdoorList[47]._x = 16;
-		_outdoorList[45]._x = -16;
-	}
-
-	for (int idx = 0; idx < 26; ++idx) {
-		DrawStruct &ds = _outdoorList[Res.OUTDOOR_MONSTER_INDEXES[idx]];
-
-		if (ds._frame != -1) {
-			ds._flags &= ~0xfff;
-
-			// TODO: Double-check.. this section looks *weird*
-			MazeMonster &monster = map._mobData._monsters[ds._frame];
-			MonsterStruct &monsterData = *monster._monsterData;
-
-			ds._frame = monster._frame;
-
-			if (monster._effect2) {
-				ds._flags = Res.MONSTER_EFFECT_FLAGS[monster._effect2 - 1][monster._effect3];
-			}
-
-			if (monster._frame > 7) {
-				monster._frame -= 8;
-				ds._sprites = monster._attackSprites;
-			} else {
-				ds._sprites = monster._sprites;
-			}
-
-			ds._y = Res.OUTDOOR_MONSTERS_Y[idx];
-
-			if (monsterData._flying) {
-				ds._x += Res.COMBAT_FLOAT_X[_combatFloatCounter];
-				ds._y += Res.COMBAT_FLOAT_Y[_combatFloatCounter];
-			}
-		}
-	}
-	// TODO
-}
-
-void InterfaceMap::setOutdoorsObjects() {
-	Map &map = *_vm->_map;
-	Party &party = *_vm->_party;
-	const Common::Point &pt = party._mazePosition;
-	Direction dir = party._mazeDirection;
-	int posIndex;
-
-	for (uint idx = 0; idx < map._mobData._objects.size(); ++idx) {
-		MazeObject &obj = map._mobData._objects[idx];
-
-		if (_vm->_files->_isDarkCc) {
-			posIndex = obj._spriteId == 47 ? 1 : 0;
-		} else {
-			posIndex = obj._spriteId == 113 ? 1 : 0;
-		}
-
-		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][2]) &&
-				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][2]) &&
-				_outdoorList[111]._frame == -1) {
-			DrawStruct &ds = _outdoorList[111];
-			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][0];
-			ds._y = Res.MAP_OBJECT_Y[posIndex][0];
-			ds._frame = obj._frame;
-			ds._sprites = obj._sprites;
-
-			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (obj._flipped)
-				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
-			_objNumber = idx;
-		}
-
-		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][7]) &&
-				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][7]) &&
-				_outdoorList[87]._frame == -1) {
-			DrawStruct &ds = _outdoorList[87];
-			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][1];
-			ds._y = Res.MAP_OBJECT_Y[posIndex][1];
-			ds._frame = obj._frame;
-			ds._sprites = obj._sprites;
-
-			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (obj._flipped)
-				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
-		}
-
-		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][5]) &&
-				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][5]) &&
-				_outdoorList[88]._frame == -1) {
-			DrawStruct &ds = _outdoorList[88];
-			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][2];
-			ds._y = Res.MAP_OBJECT_Y[posIndex][2];
-			ds._frame = obj._frame;
-			ds._sprites = obj._sprites;
-
-			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (obj._flipped)
-				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
-		}
-
-		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][9]) &&
-				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][9]) &&
-				_outdoorList[89]._frame == -1) {
-			DrawStruct &ds = _outdoorList[89];
-			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][3];
-			ds._y = Res.MAP_OBJECT_Y[posIndex][3];
-			ds._frame = obj._frame;
-			ds._sprites = obj._sprites;
-
-			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (obj._flipped)
-				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
-		}
-
-		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][14]) &&
-				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][14]) &&
-				_outdoorList[66]._frame == -1) {
-			DrawStruct &ds = _outdoorList[66];
-			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][4];
-			ds._y = Res.MAP_OBJECT_Y[posIndex][4];
-			ds._frame = obj._frame;
-			ds._sprites = obj._sprites;
-
-			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (obj._flipped)
-				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
-		}
-
-		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][12]) &&
-				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][12]) &&
-				_outdoorList[67]._frame == -1) {
-			DrawStruct &ds = _outdoorList[67];
-			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][5];
-			ds._y = Res.MAP_OBJECT_Y[posIndex][5];
-			ds._frame = obj._frame;
-			ds._sprites = obj._sprites;
-
-			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (obj._flipped)
-				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
-		}
-
-		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][16]) &&
-				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][16]) &&
-				_outdoorList[68]._frame == -1) {
-			DrawStruct &ds = _outdoorList[68];
-			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][6];
-			ds._y = Res.MAP_OBJECT_Y[posIndex][6];
-			ds._frame = obj._frame;
-			ds._sprites = obj._sprites;
-
-			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (obj._flipped)
-				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
-		}
-
-		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][27]) &&
-				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][27]) &&
-				_outdoorList[37]._frame == -1) {
-			DrawStruct &ds = _outdoorList[37];
-			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][7];
-			ds._y = Res.MAP_OBJECT_Y[posIndex][7];
-			ds._frame = obj._frame;
-			ds._sprites = obj._sprites;
-
-			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (obj._flipped)
-				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
-		}
-
-		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][25]) &&
-				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][25]) &&
-				_outdoorList[38]._frame == -1) {
-			DrawStruct &ds = _outdoorList[38];
-			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][8];
-			ds._y = Res.MAP_OBJECT_Y[posIndex][8];
-			ds._frame = obj._frame;
-			ds._sprites = obj._sprites;
-
-			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (obj._flipped)
-				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
-		}
-
-		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][23]) &&
-				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][23]) &&
-				_outdoorList[40]._frame == -1) {
-			DrawStruct &ds = _outdoorList[40];
-			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][10];
-			ds._y = Res.MAP_OBJECT_Y[posIndex][10];
-			ds._frame = obj._frame;
-			ds._sprites = obj._sprites;
-
-			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (obj._flipped)
-				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
-		}
-
-		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][29]) &&
-				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][29]) &&
-				_outdoorList[39]._frame == -1) {
-			DrawStruct &ds = _outdoorList[39];
-			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][9];
-			ds._y = Res.MAP_OBJECT_Y[posIndex][9];
-			ds._frame = obj._frame;
-			ds._sprites = obj._sprites;
-
-			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (obj._flipped)
-				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
-		}
-
-		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][31]) &&
-				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][31]) &&
-				_outdoorList[41]._frame == -1) {
-			DrawStruct &ds = _outdoorList[41];
-			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][11];
-			ds._y = Res.MAP_OBJECT_Y[posIndex][11];
-			ds._frame = obj._frame;
-			ds._sprites = obj._sprites;
-
-			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
-			if (obj._flipped)
-				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
-		}
-	}
-}
-
-void InterfaceMap::drawIndoors() {
-	Map &map = *_vm->_map;
-	Windows &windows = *_vm->_windows;
-	int surfaceId;
-
-	// Draw any surface tiles on top of the default ground
-	for (int cellIndex = 0; cellIndex < 25; ++cellIndex) {
-		map.getCell(Res.DRAW_NUMBERS[cellIndex]);
-
-		DrawStruct &drawStruct = _indoorList._groundTiles[cellIndex];
-		SpriteResource &sprites = map._surfaceSprites[map._currentSurfaceId];
-		drawStruct._sprites = sprites.empty() ? (SpriteResource *)nullptr : &sprites;
-
-		surfaceId = map.mazeData()._surfaceTypes[map._currentSurfaceId];
-		if (surfaceId == SURFTYPE_WATER || surfaceId == SURFTYPE_LAVA ||
-				surfaceId == SURFTYPE_SEWER) {
-			drawStruct._frame = Res.DRAW_FRAMES[cellIndex][_flipWater ? 1 : 0];
-			drawStruct._flags = _flipWater ? SPRFLAG_HORIZ_FLIPPED : 0;
-		} else {
-			drawStruct._frame = Res.DRAW_FRAMES[cellIndex][_flipGround ? 1 : 0];
-			drawStruct._flags = _flipGround ? SPRFLAG_HORIZ_FLIPPED : 0;
-		}
-	}
-
-	if (!_wo[27] && !_wo[20] && !_wo[23] && !_wo[12] && !_wo[8] && !_wo[30]) {
-		if (_wo[39])
-			_indoorList._swl_4F4L._frame = 22;
-		else if (_wo[83])
-			_indoorList._swl_4F4L._frame = 46;
-	}
-
-	if (!_wo[27] && !_wo[22] && !_wo[17] && !_wo[12] && !_wo[8]) {
-		if (_wo[38])
-			_indoorList._swl_4F3L._frame = 20;
-		else if (_wo[82])
-			_indoorList._swl_4F3L._frame = 44;
-	}
-
-	if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[2] && !_wo[7]) {
-		if (_wo[37])
-			_indoorList._swl_4F2L._frame = 18;
-		else if (_wo[81])
-			_indoorList._swl_4F2L._frame = 42;
-	}
-
-	if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[6]) {
-		if (_wo[36])
-			_indoorList._swl_4F1L._frame = 16;
-		else if (_wo[80])
-			_indoorList._swl_4F1L._frame = 40;
-	}
-
-	if (!_wo[27] && !_wo[21] && !_wo[24] && !_wo[14] && !_wo[10] && !_wo[31]) {
-		if (_wo[43])
-			_indoorList._swl_4F4R._frame = 23;
-		else if (_wo[87])
-			_indoorList._swl_4F4R._frame = 47;
-	}
-
-	if (!_wo[27] && !_wo[22] && !_wo[19] && !_wo[14] && !_wo[10]) {
-		if (_wo[42])
-			_indoorList._swl_4F3R._frame = 21;
-		else if (_wo[86])
-			_indoorList._swl_4F3R._frame = 45;
-	}
-
-	if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[5] && !_wo[9]) {
-		if (_wo[41])
-			_indoorList._swl_4F2R._frame = 19;
-		else if (_wo[85])
-			_indoorList._swl_4F2R._frame = 43;
-	}
-
-	if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[6]) {
-		if (_wo[40])
-			_indoorList._swl_4F1R._frame = 17;
-		else if (_wo[84])
-			_indoorList._swl_4F1R._frame = 41;
-	}
-
-	if (!_wo[25] && !_wo[28] && !_wo[20] && !_wo[11] &&
-		!_wo[16] && !_wo[30] && !_wo[32]) {
-		if (_wo[88])
-			_indoorList._fwl_4F4L._frame = 7;
-		else if (_wo[78])
-			_indoorList._fwl_4F4L._frame = 16;
-		else if (_wo[148])
-			_indoorList._fwl_4F4L._frame = _overallFrame + 1;
-		else if (_wo[108])
-			_indoorList._fwl_4F4L._frame = 8;
-		else if (_wo[168])
-			_indoorList._fwl_4F4L._frame = 10;
-		else if (_wo[128])
-			_indoorList._fwl_4F4L._frame = 9;
-		else if (_wo[34])
-			_indoorList._fwl_4F4L._frame = 0;
-		else if (_wo[188])
-			_indoorList._fwl_4F4L._frame = 15;
-		else if (_wo[208])
-			_indoorList._fwl_4F4L._frame = 14;
-		else if (_wo[228])
-			_indoorList._fwl_4F4L._frame = 6;
-		else if (_wo[248])
-			_indoorList._fwl_4F4L._frame = 11;
-		else if (_wo[268])
-			_indoorList._fwl_4F4L._frame = 12;
-		else if (_wo[288])
-			_indoorList._fwl_4F4L._frame = 13;
-	}
-
-	if (!_wo[26] && !_wo[29] && !_wo[21] && !_wo[13] && !_wo[18] && !_wo[31] && !_wo[33]) {
-		if (_wo[93])
-			_indoorList._fwl_4F4R._frame = 7;
-		else if (_wo[79])
-			_indoorList._fwl_4F4R._frame = 16;
-		else if (_wo[153])
-			_indoorList._fwl_4F4R._frame = _overallFrame + 1;
-		else if (_wo[113])
-			_indoorList._fwl_4F4R._frame = 8;
-		else if (_wo[173])
-			_indoorList._fwl_4F4R._frame = 10;
-		else if (_wo[133])
-			_indoorList._fwl_4F4R._frame = 9;
-		else if (_wo[35])
-			_indoorList._fwl_4F4R._frame = 0;
-		else if (_wo[79])
-			_indoorList._fwl_4F4R._frame = 15;
-		else if (_wo[213])
-			_indoorList._fwl_4F4R._frame = 14;
-		else if (_wo[233])
-			_indoorList._fwl_4F4R._frame = 6;
-		else if (_wo[253])
-			_indoorList._fwl_4F4R._frame = 11;
-		else if (_wo[273])
-			_indoorList._fwl_4F4R._frame = 12;
-		else if (_wo[293])
-			_indoorList._fwl_4F4R._frame = 13;
-	}
-
-	if (!_wo[25] && !_wo[28] && !_wo[20] && !_wo[11] && !_wo[16] && !_wo[30]) {
-		if (_wo[32])
-			_indoorList._swl_3F4L._frame = 14;
-		else if (_wo[76])
-			_indoorList._swl_3F4L._frame = 38;
-	}
-
-	if (!_wo[26] && !_wo[29] && !_wo[21] && !_wo[13] && !_wo[18] && !_wo[31]) {
-		if (_wo[33])
-			_indoorList._swl_3F1R._frame = 15;
-		else if (_wo[77])
-			_indoorList._swl_3F1R._frame = 39;
-	}
-
-	if (_wo[28] && _wo[27]) {
-	} else if (_wo[28] && _wo[12]) {
-	} else if (_wo[28] && _wo[23]) {
-	} else if (_wo[28] && _wo[8]) {
-	} else if (_wo[25] && _wo[27]) {
-	} else if (_wo[25] && _wo[12]) {
-	} else if (_wo[25] && _wo[23]) {
-	} else if (_wo[25] && _wo[8]) {
-	} else if (_wo[11] && _wo[27]) {
-	} else if (_wo[11] && _wo[12]) {
-	} else if (_wo[11] && _wo[23]) {
-	} else if (_wo[11] && _wo[8]) {
-	} else if (_wo[17] && _wo[27]) {
-	} else if (_wo[17] && _wo[12]) {
-	} else if (_wo[17] && _wo[23]) {
-	} else if (_wo[17] && _wo[8]) {
-	} else if (_wo[20]) {
-	} else if (_wo[30]) {
-		_indoorList._swl_3F3L._frame = 12;
-	} else if (_wo[74]) {
-		_indoorList._swl_3F3L._frame = 36;
-	}
-
-	if (_wo[29] && _wo[27]) {
-	} else if (_wo[29] && _wo[14]) {
-	} else if (_wo[29] && _wo[24]) {
-	} else if (_wo[29] && _wo[10]) {
-	} else if (_wo[26] && _wo[27]) {
-	} else if (_wo[26] && _wo[14]) {
-	} else if (_wo[26] && _wo[24]) {
-	} else if (_wo[26] && _wo[10]) {
-	} else if (_wo[13] && _wo[27]) {
-	} else if (_wo[13] && _wo[14]) {
-	} else if (_wo[13] && _wo[24]) {
-	} else if (_wo[13] && _wo[10]) {
-	} else if (_wo[19] && _wo[27]) {
-	} else if (_wo[19] && _wo[24]) {
-	} else if (_wo[19] && _wo[10]) {
-	} else if (_wo[21]) {
-	} else if (_wo[31]) {
-		_indoorList._swl_3F2R._frame = 13;
-	} else if (_wo[75]) {
-		_indoorList._swl_3F2R._frame = 37;
-	}
-
-	if (!_wo[27] && !_wo[20] && !_wo[12] && !_wo[23] && !_wo[8] && !_wo[30]) {
-		if (_wo[89])
-			_indoorList._fwl_4F3L._frame = 7;
-		else if (_wo[44])
-			_indoorList._fwl_4F3L._frame = 16;
-		else if (_wo[149])
-			_indoorList._fwl_4F3L._frame = _overallFrame + 1;
-		else if (_wo[109])
-			_indoorList._fwl_4F3L._frame = 8;
-		else if (_wo[169])
-			_indoorList._fwl_4F3L._frame = 10;
-		else if (_wo[129])
-			_indoorList._fwl_4F3L._frame = 9;
-		else if (_wo[0])
-			_indoorList._fwl_4F3L._frame = 0;
-		else if (_wo[189])
-			_indoorList._fwl_4F3L._frame = 15;
-		else if (_wo[209])
-			_indoorList._fwl_4F3L._frame = 14;
-		else if (_wo[229])
-			_indoorList._fwl_4F3L._frame = 6;
-		else if (_wo[249])
-			_indoorList._fwl_4F3L._frame = 11;
-		else if (_wo[269])
-			_indoorList._fwl_4F3L._frame = 12;
-		else if (_wo[289])
-			_indoorList._fwl_4F3L._frame = 13;
-	}
-
-	if (_wo[22] && _wo[20]) {
-	} else if (_wo[22] && _wo[23]) {
-	} else if (_wo[20] && _wo[17]) {
-	} else if (_wo[23] && _wo[17]) {
-	} else if (_wo[12]) {
-	} else if (_wo[8]) {
-	} else if (_wo[90]) {
-		_indoorList._fwl_4F2L._frame = 7;
-	} else if (_wo[45])  {
-		_indoorList._fwl_4F2L._frame = 16;
-	} else if (_wo[150]) {
-		_indoorList._fwl_4F2L._frame = _overallFrame + 1;
-	} else if (_wo[110]) {
-		_indoorList._fwl_4F2L._frame = 8;
-	} else if (_wo[170]) {
-		_indoorList._fwl_4F2L._frame = 10;
-	} else if (_wo[130]) {
-		_indoorList._fwl_4F2L._frame = 9;
-	} else if (_wo[1]) {
-		_indoorList._fwl_4F2L._frame = 0;
-	} else if (_wo[190]) {
-		_indoorList._fwl_4F2L._frame = 15;
-	} else if (_wo[210]) {
-		_indoorList._fwl_4F2L._frame = 14;
-	} else if (_wo[230]) {
-		_indoorList._fwl_4F2L._frame = 6;
-	} else if (_wo[250]) {
-		_indoorList._fwl_4F2L._frame = 11;
-	} else if (_wo[270]) {
-		_indoorList._fwl_4F2L._frame = 12;
-	} else if (_wo[290]) {
-		_indoorList._fwl_4F2L._frame = 13;
-	}
-
-	if (_wo[15] && _wo[17]) {
-	} else if (_wo[15] && _wo[12]) {
-	} else if (_wo[12] && _wo[7]) {
-	} else if (_wo[17] && _wo[7]) {
-	} else if (_wo[91]) {
-		_indoorList._fwl_4F1L._frame = 7;
-	} else if (_wo[46]) {
-		_indoorList._fwl_4F1L._frame = 16;
-	} else if (_wo[151]) {
-		_indoorList._fwl_4F1L._frame = _overallFrame + 1;
-	} else if (_wo[111]) {
-		_indoorList._fwl_4F1L._frame = 8;
-	} else if (_wo[171]) {
-		_indoorList._fwl_4F1L._frame = 10;
-	} else if (_wo[131]) {
-		_indoorList._fwl_4F1L._frame = 9;
-	} else if (_wo[2]) {
-		_indoorList._fwl_4F1L._frame = 0;
-	} else if (_wo[191]) {
-		_indoorList._fwl_4F1L._frame = 15;
-	} else if (_wo[211]) {
-		_indoorList._fwl_4F1L._frame = 14;
-	} else if (_wo[231]) {
-		_indoorList._fwl_4F1L._frame = 6;
-	} else if (_wo[251]) {
-		_indoorList._fwl_4F1L._frame = 11;
-	} else if (_wo[271]) {
-		_indoorList._fwl_4F1L._frame = 12;
-	} else if (_wo[291]) {
-		_indoorList._fwl_4F1L._frame = 13;
-	}
-
-	if (!_wo[27] && !_wo[21] && !_wo[14] && !_wo[24] && !_wo[10] && !_wo[31]) {
-		if (_wo[92]) {
-			_indoorList._fwl_4F3R._frame = 7;
-		} else if (_wo[47]) {
-			_indoorList._fwl_4F3R._frame = 16;
-		} else if (_wo[152]) {
-			_indoorList._fwl_4F3R._frame = _overallFrame + 1;
-		} else if (_wo[112]) {
-			_indoorList._fwl_4F3R._frame = 8;
-		} else if (_wo[172]) {
-			_indoorList._fwl_4F3R._frame = 10;
-		} else if (_wo[132]) {
-			_indoorList._fwl_4F3R._frame = 9;
-		} else if (_wo[3]) {
-			_indoorList._fwl_4F3R._frame = 0;
-		} else if (_wo[192]) {
-			_indoorList._fwl_4F3R._frame = 15;
-		} else if (_wo[212]) {
-			_indoorList._fwl_4F3R._frame = 14;
-		} else if (_wo[232]) {
-			_indoorList._fwl_4F3R._frame = 6;
-		} else if (_wo[252]) {
-			_indoorList._fwl_4F3R._frame = 11;
-		} else if (_wo[272]) {
-			_indoorList._fwl_4F3R._frame = 12;
-		} else if (_wo[292]) {
-			_indoorList._fwl_4F3R._frame = 13;
-		}
-	}
-
-	if (_wo[22] && _wo[21]) {
-	} else if (_wo[22] && _wo[24]) {
-	} else if (_wo[21] && _wo[19]) {
-	} else if (_wo[24] && _wo[19]) {
-	} else if (_wo[14] || _wo[10]) {
-	} else if (_wo[94]) {
-		_indoorList._fwl_4F2R._frame = 7;
-	} else if (_wo[48]) {
-		_indoorList._fwl_4F2R._frame = 16;
-	} else if (_wo[154]) {
-		_indoorList._fwl_4F2R._frame = _overallFrame + 1;
-	} else if (_wo[114]) {
-		_indoorList._fwl_4F2R._frame = 8;
-	} else if (_wo[174]) {
-		_indoorList._fwl_4F2R._frame = 10;
-	} else if (_wo[134]) {
-		_indoorList._fwl_4F2R._frame = 9;
-	} else if (_wo[4]) {
-		_indoorList._fwl_4F2R._frame = 0;
-	} else if (_wo[194]) {
-		_indoorList._fwl_4F2R._frame = 15;
-	} else if (_wo[214]) {
-		_indoorList._fwl_4F2R._frame = 14;
-	} else if (_wo[234]) {
-		_indoorList._fwl_4F2R._frame = 6;
-	} else if (_wo[254]) {
-		_indoorList._fwl_4F2R._frame = 11;
-	} else if (_wo[274]) {
-		_indoorList._fwl_4F2R._frame = 12;
-	} else if (_wo[294]) {
-		_indoorList._fwl_4F2R._frame = 13;
-	}
-
-	if (_wo[15] && _wo[19]) {
-	} else if (_wo[15] && _wo[14]) {
-	} else if (_wo[14] && _wo[9]) {
-	} else if (_wo[19] && _wo[9]) {
-	} else if (_wo[95]) {
-		_indoorList._fwl_4F1R._frame = 7;
-	} else if (_wo[49]) {
-		_indoorList._fwl_4F1R._frame = 16;
-	} else if (_wo[155]) {
-		_indoorList._fwl_4F1R._frame = _overallFrame + 1;
-	} else if (_wo[115]) {
-		_indoorList._fwl_4F1R._frame = 8;
-	} else if (_wo[175]) {
-		_indoorList._fwl_4F1R._frame = 10;
-	} else if (_wo[135]) {
-		_indoorList._fwl_4F1R._frame = 9;
-	} else if (_wo[5]) {
-		_indoorList._fwl_4F1R._frame = 0;
-	} else if (_wo[195]) {
-		_indoorList._fwl_4F1R._frame = 15;
-	} else if (_wo[215]) {
-		_indoorList._fwl_4F1R._frame = 14;
-	} else if (_wo[235]) {
-		_indoorList._fwl_4F1R._frame = 6;
-	} else if (_wo[255]) {
-		_indoorList._fwl_4F1R._frame = 11;
-	} else if (_wo[275]) {
-		_indoorList._fwl_4F1R._frame = 12;
-	} else if (_wo[295]) {
-		_indoorList._fwl_4F1R._frame = 13;
-	}
-
-	if (_wo[27] || _wo[22] || _wo[15] || _wo[96]) {
-	} else if (_wo[50]) {
-		_indoorList._fwl_4F._frame = 16;
-	} else if (_wo[156]) {
-		_indoorList._fwl_4F._frame = _overallFrame + 1;
-	} else if (_wo[116]) {
-		_indoorList._fwl_4F._frame = 8;
-	} else if (_wo[176]) {
-		_indoorList._fwl_4F._frame = 10;
-	} else if (_wo[136]) {
-		_indoorList._fwl_4F._frame = 9;
-	} else if (_wo[6]) {
-		_indoorList._fwl_4F._frame = 0;
-	} else if (_wo[196]) {
-		_indoorList._fwl_4F._frame = 15;
-	} else if (_wo[216]) {
-		_indoorList._fwl_4F._frame = 14;
-	} else if (_wo[236]) {
-		_indoorList._fwl_4F._frame = 6;
-	} else if (_wo[256]) {
-		_indoorList._fwl_4F._frame = 11;
-	} else if (_wo[276]) {
-		_indoorList._fwl_4F._frame = 12;
-	} else if (_wo[296]) {
-		_indoorList._fwl_4F._frame = 13;
-	}
-
-	if (!_wo[27] && !_wo[22] && !_wo[15]) {
-		if (_wo[7])
-			_indoorList._swl_3F1L._frame = 8;
-		else if (_wo[51])
-			_indoorList._swl_3F1L._frame = 32;
-	}
-
-	if (_wo[22] && _wo[23]) {
-	} else if (_wo[22] && _wo[20]) {
-	} else if (_wo[17] && _wo[23]) {
-	} else if (_wo[17] && _wo[20]) {
-	} else if (_wo[8]) {
-		_indoorList._swl_3F2L._frame = 10;
-	} else if (_wo[52]) {
-		_indoorList._swl_3F2L._frame = 34;
-	}
-
-	if (_wo[27] || _wo[22] || _wo[15]) {
-	} else if (_wo[9]) {
-		_indoorList._swl_3F4R._frame = 9;
-	} else if (_wo[53]) {
-		_indoorList._swl_3F4R._frame = 33;
-	}
-
-	if (_wo[22] && _wo[24]) {
-	} else if (_wo[22] && _wo[21]) {
-	} else if (_wo[19] && _wo[24]) {
-	} else if (_wo[19] && _wo[21]) {
-	} else if (_wo[14]) {
-	} else if (_wo[10]) {
-		_indoorList._swl_3F3R._frame = 11;
-	} else if (_wo[54]) {
-		_indoorList._swl_3F3R._frame = 35;
-	}
-
-	if (_wo[25] || _wo[28] || _wo[20] || _wo[16]) {
-	} else if (_wo[97]) {
-		_indoorList._fwl_3F2L._frame = 24;
-	} else if (_wo[55]) {
-		_indoorList._fwl_3F2L._frame = 33;
-	} else if (_wo[137]) {
-		_indoorList._fwl_3F2L._frame = 26;
-	} else if (_wo[157]) {
-		_indoorList._fwl_3F2L._frame = _overallFrame + 18;
-	} else if (_wo[117]) {
-		_indoorList._fwl_3F2L._frame = 25;
-	} else if (_wo[177]) {
-		_indoorList._fwl_3F2L._frame = 27;
-	} else if (_wo[11]) {
-		_indoorList._fwl_3F2L._frame = 17;
-	} else if (_wo[197]) {
-		_indoorList._fwl_3F2L._frame = 32;
-	} else if (_wo[217]) {
-		_indoorList._fwl_3F2L._frame = 31;
-	} else if (_wo[237]) {
-		_indoorList._fwl_3F2L._frame = 23;
-	} else if (_wo[257]) {
-		_indoorList._fwl_3F2L._frame = 28;
-	} else if (_wo[277]) {
-		_indoorList._fwl_3F2L._frame = 29;
-	} else if (_wo[297]) {
-		_indoorList._fwl_3F2L._frame = 30;
-	}
-
-	if (_wo[22] && _wo[23]) {
-	} else if (_wo[22] && _wo[20]) {
-	} else if (_wo[23] && _wo[17]) {
-	} else if (_wo[20] && _wo[17]) {
-	} else if (_wo[98]) {
-		_indoorList._fwl_3F1L._frame = 24;
-	} else if (_wo[56]) {
-		_indoorList._fwl_3F1L._frame = 33;
-	} else if (_wo[178]) {
-		_indoorList._fwl_3F1L._frame = 27;
-	} else if (_wo[118]) {
-		_indoorList._fwl_3F1L._frame = 25;
-	} else if (_wo[158]) {
-		_indoorList._fwl_3F1L._frame = _overallFrame + 18;
-	} else if (_wo[138]) {
-		_indoorList._fwl_3F1L._frame = 26;
-	} else if (_wo[12]) {
-		_indoorList._fwl_3F1L._frame = 17;
-	} else if (_wo[198]) {
-		_indoorList._fwl_3F1L._frame = 32;
-	} else if (_wo[218]) {
-		_indoorList._fwl_3F1L._frame = 31;
-	} else if (_wo[238]) {
-		_indoorList._fwl_3F1L._frame = 23;
-	} else if (_wo[258]) {
-		_indoorList._fwl_3F1L._frame = 28;
-	} else if (_wo[278]) {
-		_indoorList._fwl_3F1L._frame = 29;
-	} else if (_wo[298]) {
-		_indoorList._fwl_3F1L._frame = 30;
-	}
-
-	if (_wo[26] || _wo[29] || _wo[21] || _wo[18]) {
-	} else if (_wo[99]) {
-		_indoorList._fwl_3F2R._frame = 24;
-	} else if (_wo[57]) {
-		_indoorList._fwl_3F2R._frame = 33;
-	} else if (_wo[139]) {
-		_indoorList._fwl_3F2R._frame = 26;
-	} else if (_wo[159]) {
-		_indoorList._fwl_3F2R._frame = _overallFrame + 18;
-	} else if (_wo[119]) {
-		_indoorList._fwl_3F2R._frame = 25;
-	} else if (_wo[179]) {
-		_indoorList._fwl_3F2R._frame = 27;
-	} else if (_wo[13]) {
-		_indoorList._fwl_3F2R._frame = 17;
-	} else if (_wo[199]) {
-		_indoorList._fwl_3F2R._frame = 32;
-	} else if (_wo[219]) {
-		_indoorList._fwl_3F2R._frame = 31;
-	} else if (_wo[239]) {
-		_indoorList._fwl_3F2R._frame = 23;
-	} else if (_wo[259]) {
-		_indoorList._fwl_3F2R._frame = 28;
-	} else if (_wo[279]) {
-		_indoorList._fwl_3F2R._frame = 29;
-	} else if (_wo[299]) {
-		_indoorList._fwl_3F2R._frame = 30;
-	}
-
-	if (_wo[22] && _wo[24]) {
-	} else if (_wo[22] && _wo[21]) {
-	} else if (_wo[24] && _wo[19]) {
-	} else if (_wo[21] && _wo[19]) {
-	} else if (_wo[100]) {
-		_indoorList._fwl_3F1R._frame = 24;
-	} else if (_wo[58]) {
-		_indoorList._fwl_3F1R._frame = 33;
-	} else if (_wo[140]) {
-		_indoorList._fwl_3F1R._frame = 26;
-	} else if (_wo[160]) {
-		_indoorList._fwl_3F1R._frame = _overallFrame + 18;
-	} else if (_wo[120]) {
-		_indoorList._fwl_3F1R._frame = 25;
-	} else if (_wo[180]) {
-		_indoorList._fwl_3F1R._frame = 27;
-	} else if (_wo[14]) {
-		_indoorList._fwl_3F1R._frame = 17;
-	} else if (_wo[200]) {
-		_indoorList._fwl_3F1R._frame = 32;
-	} else if (_wo[220]) {
-		_indoorList._fwl_3F1R._frame = 31;
-	} else if (_wo[240]) {
-		_indoorList._fwl_3F1R._frame = 23;
-	} else if (_wo[260]) {
-		_indoorList._fwl_3F1R._frame = 28;
-	} else if (_wo[280]) {
-		_indoorList._fwl_3F1R._frame = 29;
-	} else if (_wo[300]) {
-		_indoorList._fwl_3F1R._frame = 30;
-	}
-
-	if (_wo[22] || _wo[27]) {
-	} else if (_wo[101]) {
-		_indoorList._fwl_3F._frame = 24;
-	} else if (_wo[59]) {
-		_indoorList._fwl_3F._frame = 33;
-	} else if (_wo[141]) {
-		_indoorList._fwl_3F._frame = 26;
-	} else if (_wo[161]) {
-		_indoorList._fwl_3F._frame = _overallFrame + 18;
-	} else if (_wo[121]) {
-		_indoorList._fwl_3F._frame = 25;
-	} else if (_wo[181]) {
-		_indoorList._fwl_3F._frame = 27;
-	} else if (_wo[15]) {
-		_indoorList._fwl_3F._frame = 17;
-	} else if (_wo[201]) {
-		_indoorList._fwl_3F._frame = 32;
-	} else if (_wo[221]) {
-		_indoorList._fwl_3F._frame = 31;
-	} else if (_wo[241]) {
-		_indoorList._fwl_3F._frame = 23;
-	} else if (_wo[261]) {
-		_indoorList._fwl_3F._frame = 28;
-	} else if (_wo[281]) {
-		_indoorList._fwl_3F._frame = 29;
-	} else if (_wo[301]) {
-		_indoorList._fwl_3F._frame = 30;
-	}
-
-	if (_wo[25] || _wo[28] || _wo[20]) {
-	} else if (_wo[16]) {
-		_indoorList._swl_2F2L._frame = 6;
-	} else if (_wo[60]) {
-		_indoorList._swl_2F2L._frame = 30;
-	}
-
-	if (_wo[27] || _wo[22]) {
-	} else if (_wo[17]) {
-		_indoorList._swl_2F1L._frame = 4;
-	} else if (_wo[61]) {
-		_indoorList._swl_2F1L._frame = 28;
-	}
-
-	if (_wo[26] || _wo[29] || _wo[21]) {
-	} else if (_wo[18]) {
-		_indoorList._swl_2F2R._frame = 7;
-	} else if (_wo[62]) {
-		_indoorList._swl_2F2R._frame = 31;
-	}
-
-	if (_wo[27] || _wo[22]) {
-	} else if (_wo[19]) {
-		_indoorList._swl_2F1R._frame = 5;
-	} else if (_wo[63]) {
-		_indoorList._swl_2F1R._frame = 29;
-	}
-
-	if (_wo[27] && _wo[25]) {
-	} else if (_wo[27] && _wo[28]) {
-	} else if (_wo[23] & _wo[25]) {
-	} else if (_wo[23] && _wo[28]) {
-	} else if (_wo[102]) {
-		_indoorList._fwl_2F1L._frame = 7;
-	} else if (_wo[64]) {
-		_indoorList._fwl_2F1L._frame = 16;
-	} else if (_wo[182]) {
-		_indoorList._fwl_2F1L._frame = 10;
-	} else if (_wo[122]) {
-		_indoorList._fwl_2F1L._frame = 8;
-	} else if (_wo[142]) {
-		_indoorList._fwl_2F1L._frame = 9;
-	} else if (_wo[162]) {
-		_indoorList._fwl_2F1L._frame = _overallFrame + 1;
-	} else if (_wo[20]) {
-		_indoorList._fwl_2F1L._frame = 0;
-	} else if (_wo[202]) {
-		_indoorList._fwl_2F1L._frame = 15;
-	} else if (_wo[222]) {
-		_indoorList._fwl_2F1L._frame = 14;
-	} else if (_wo[242]) {
-		_indoorList._fwl_2F1L._frame = 6;
-	} else if (_wo[262]) {
-		_indoorList._fwl_2F1L._frame = 11;
-	} else if (_wo[282]) {
-		_indoorList._fwl_2F1L._frame = 12;
-	} else if (_wo[302]) {
-		_indoorList._fwl_2F1L._frame = 13;
-	}
-
-	if (_wo[27] && _wo[26]) {
-	} else if (_wo[27] && _wo[29]) {
-	} else if (_wo[24] && _wo[26]) {
-	} else if (_wo[24] && _wo[29]) {
-	} else if (_wo[103]) {
-		_indoorList._fwl_2F1R._frame = 7;
-	} else if (_wo[65]) {
-		_indoorList._fwl_2F1R._frame = 16;
-	} else if (_wo[183]) {
-		_indoorList._fwl_2F1R._frame = 10;
-	} else if (_wo[123]) {
-		_indoorList._fwl_2F1R._frame = 8;
-	} else if (_wo[143]) {
-		_indoorList._fwl_2F1R._frame = 9;
-	} else if (_wo[163]) {
-		_indoorList._fwl_2F1R._frame = _overallFrame + 1;
-	} else if (_wo[21]) {
-		_indoorList._fwl_2F1R._frame = 0;
-	} else if (_wo[203]) {
-		_indoorList._fwl_2F1R._frame = 15;
-	} else if (_wo[223]) {
-		_indoorList._fwl_2F1R._frame = 14;
-	} else if (_wo[243]) {
-		_indoorList._fwl_2F1R._frame = 6;
-	} else if (_wo[263]) {
-		_indoorList._fwl_2F1R._frame = 11;
-	} else if (_wo[283]) {
-		_indoorList._fwl_2F1R._frame = 12;
-	} else if (_wo[303]) {
-		_indoorList._fwl_2F1R._frame = 13;
-	}
-
-	if (_wo[27]) {
-	} else if (_wo[104]) {
-		_indoorList._fwl_2F._frame = 7;
-	} else if (_wo[66]) {
-		_indoorList._fwl_2F._frame = 16;
-	} else if (_wo[184]) {
-		_indoorList._fwl_2F._frame = 10;
-	} else if (_wo[124]) {
-		_indoorList._fwl_2F._frame = 8;
-	} else if (_wo[144]) {
-		_indoorList._fwl_2F._frame = 9;
-	} else if (_wo[164]) {
-		_indoorList._fwl_2F._frame = _overallFrame + 1;
-	} else if (_wo[22]) {
-		_indoorList._fwl_2F._frame = 0;
-	} else if (_wo[204]) {
-		_indoorList._fwl_2F._frame = 15;
-	} else if (_wo[224]) {
-		_indoorList._fwl_2F._frame = 14;
-	} else if (_wo[244]) {
-		_indoorList._fwl_2F._frame = 6;
-	} else if (_wo[264]) {
-		_indoorList._fwl_2F._frame = 11;
-	} else if (_wo[284]) {
-		_indoorList._fwl_2F._frame = 12;
-	} else if (_wo[304]) {
-		_indoorList._fwl_2F._frame = 13;
-	}
-
-	if (_wo[27]) {
-	} else if (_wo[23]) {
-		_indoorList._swl_1F1L._frame = 2;
-	} else if (_wo[67]) {
-		_indoorList._swl_1F1L._frame = 26;
-	}
-
-	if (_wo[27]) {
-	} else if (_wo[24]) {
-		_indoorList._swl_1F1R._frame = 3;
-	} else if (_wo[68]) {
-		_indoorList._swl_1F1R._frame = 27;
-	}
-
-	if (_wo[28]) {
-	} else if (_wo[105] || _wo[25] || _wo[165] || _wo[125] || _wo[185] || _wo[145]) {
-		_indoorList._fwl_1F1L._frame = 0;
-		_indoorList._fwl_1F1L._sprites = &map._wallSprites._fwl1;
-	} else if (_wo[69]) {
-		_indoorList._fwl_1F1L._frame = 9;
-		_indoorList._fwl_1F1L._sprites = &map._wallSprites._fwl2;
-	}
-
-	if (_wo[29]) {
-	} else if (_wo[106] || _wo[26] || _wo[166] || _wo[126] || _wo[186] || _wo[146]) {
-		_indoorList._fwl_1F._frame = 0;
-		_indoorList._fwl_1F._sprites = &map._wallSprites._fwl1;
-	} else if (_wo[70]) {
-		_indoorList._fwl_1F._frame = 9;
-		_indoorList._fwl_1F._sprites = &map._wallSprites._fwl2;
-	}
-
-	if (_wo[107]) {
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
-		if (!_openDoor)
-			_indoorList._fwl_1F1R._frame = 0;
-		else
-			_indoorList._fwl_1F1R._frame = map.mazeData()._wallKind ? 1 : 10;
-	} else if (_wo[71]) {
-		_indoorList._fwl_1F1R._frame = 9;
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
-	} else if (_wo[167]) {
-		_indoorList._fwl_1F1R._frame = _overallFrame + 1;
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl1;
-	} else if (_wo[127]) {
-		_indoorList._fwl_1F1R._frame = 1;
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
-	} else if (_wo[147]) {
-		_indoorList._fwl_1F1R._frame = 2;
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
-	} else if (_wo[187]) {
-		_indoorList._fwl_1F1R._frame = 3;
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
-	} else if (_wo[27]) {
-		_indoorList._fwl_1F1R._frame = 0;
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl1;
-	} else if (_wo[207]) {
-		_indoorList._fwl_1F1R._frame = 8;
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
-	} else if (_wo[227]) {
-		_indoorList._fwl_1F1R._frame = 7;
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
-	} else if (_wo[247]) {
-		_indoorList._fwl_1F1R._frame = 6;
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl1;
-	} else if (_wo[267]) {
-		_indoorList._fwl_1F1R._frame = 4;
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
-	} else if (_wo[287]) {
-		_indoorList._fwl_1F1R._frame = 5;
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
-	} else if (_wo[307]) {
-		_indoorList._fwl_1F1R._frame = 6;
-		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
-	}
-
-	if (_wo[28]) {
-		_indoorList._swl_0F1L._frame = 0;
-	} else if (_wo[72]) {
-		_indoorList._swl_0F1L._frame = 24;
-	}
-
-	if (_wo[29]) {
-		_indoorList._swl_0F1R._frame = 1;
-	} else if (_wo[73]) {
-		_indoorList._swl_0F1R._frame = 25;
-	}
-
-	map.cellFlagLookup(_vm->_party->_mazePosition);
-
-	assert(map._currentSky < 2);
-	_indoorList[0]._sprites = &map._skySprites[map._currentSky];
-	_indoorList[0]._flags = _flipSky ? SPRFLAG_HORIZ_FLIPPED : 0;
-
-	if (_openDoor) {
-		Common::Point pt(
-			_vm->_party->_mazePosition.x + Res.SCREEN_POSITIONING_X[
-				_vm->_party->_mazeDirection][_vm->_party->_mazePosition.x],
-			_vm->_party->_mazePosition.y + Res.SCREEN_POSITIONING_Y[
-				_vm->_party->_mazeDirection][_vm->_party->_mazePosition.y]
-			);
-		map.cellFlagLookup(pt);
-
-		_indoorList._sky2._sprites = &map._skySprites[0];
-	} else {
-		_indoorList._sky2._sprites = _indoorList[0]._sprites;
-	}
-
-	_indoorList._sky2._flags = _flipSky ? SPRFLAG_HORIZ_FLIPPED : 0;
-	_indoorList._ground._flags = _flipDefaultGround ? SPRFLAG_HORIZ_FLIPPED : 0;
-	_indoorList._horizon._frame = 7;
-
-	// Finally draw the darn indoor scene
-	windows[3].drawList(&_indoorList[0], _indoorList.size());
-
-	// Check for any character shooting
-	_isAttacking = false;
-	for (uint idx = 0; idx < _vm->_party->_activeParty.size(); ++idx) {
-		if (_vm->_combat->_shooting[idx])
-			_isAttacking = true;
-	}
-
-	_charsShooting = _isAttacking;
-}
-
-void InterfaceMap::drawOutdoors() {
-	Map &map = *_vm->_map;
-	Party &party = *_vm->_party;
-	Windows &windows = *_vm->_windows;
-	int surfaceId;
-
-	// Draw any surface tiles on top of the default ground
-	for (int cellIndex = 0; cellIndex < 25; ++cellIndex) {
-		map.getCell(cellIndex == 24 ? 2 : Res.DRAW_NUMBERS[cellIndex]);
-
-		DrawStruct &drawStruct = _outdoorList._groundTiles[cellIndex];
-		SpriteResource &sprites = map._surfaceSprites[map._currentSurfaceId];
-		drawStruct._sprites = sprites.empty() ? (SpriteResource *)nullptr : &sprites;
-
-		surfaceId = map.mazeData()._surfaceTypes[map._currentSurfaceId];
-		if (surfaceId == SURFTYPE_DWATER || surfaceId == SURFTYPE_LAVA) {
-			drawStruct._frame = Res.DRAW_FRAMES[cellIndex][_flipWater ? 1 : 0];
-			drawStruct._flags = _flipWater ? SPRFLAG_HORIZ_FLIPPED : 0;
-		} else {
-			drawStruct._frame = Res.DRAW_FRAMES[cellIndex][_flipGround ? 1 : 0];
-			drawStruct._flags = _flipGround ? SPRFLAG_HORIZ_FLIPPED : 0;
-		}
-	}
-
-	party.handleLight();
-
-	// Set up terrain draw entries
-	const int TERRAIN_INDEXES1[9] = { 44, 36, 37, 38, 45, 43, 42, 41, 39 };
-	const int TERRAIN_INDEXES2[5] = { 22, 24, 31, 29, 26 };
-	const int TERRAIN_INDEXES3[3] = { 11, 16, 13 };
-	const int TERRAIN_INDEXES4[5] = { 5, 9, 7, 0, 4 };
-
-	// Loops to set draw entries for the terrain
-	assert(map._currentWall != INVALID_CELL);
-	for (int idx = 0; idx < 9; ++idx) {
-		map.getCell(TERRAIN_INDEXES1[idx]);
-		SpriteResource &spr = map._wallSprites._surfaces[map._currentWall];
-		_outdoorList[28 + idx]._sprites = spr.size() == 0 ? (SpriteResource *)nullptr : &spr;
-	}
-	for (int idx = 0; idx < 5; ++idx) {
-		map.getCell(TERRAIN_INDEXES2[idx]);
-		SpriteResource &spr = map._wallSprites._surfaces[map._currentWall];
-		_outdoorList[61 + idx]._sprites = spr.size() == 0 ? (SpriteResource *)nullptr : &spr;
-	}
-	for (int idx = 0; idx < 3; ++idx) {
-		map.getCell(TERRAIN_INDEXES3[idx]);
-		SpriteResource &spr = map._wallSprites._surfaces[map._currentWall];
-		_outdoorList[84 + idx]._sprites = spr.size() == 0 ? (SpriteResource *)nullptr : &spr;
-	}
-	for (int idx = 0; idx < 5; ++idx) {
-		map.getCell(TERRAIN_INDEXES4[idx]);
-		SpriteResource &spr = map._wallSprites._surfaces[map._currentWall];
-		_outdoorList[103 + idx]._sprites = spr.size() == 0 ? (SpriteResource *)nullptr : &spr;
-	}
-
-	map.getCell(1);
-	SpriteResource &surface = map._wallSprites._surfaces[map._currentWall];
-	_outdoorList[108]._sprites = surface.size() == 0 ? (SpriteResource *)nullptr : &surface;
-	_outdoorList[109]._sprites = _outdoorList[108]._sprites;
-	_outdoorList[110]._sprites = _outdoorList[108]._sprites;
-	_outdoorList._sky1._flags = _outdoorList._sky2._flags = _flipSky ? SPRFLAG_HORIZ_FLIPPED : 0;
-	_outdoorList._groundSprite._flags = _flipWater ? SPRFLAG_HORIZ_FLIPPED : 0;
-
-	// Finally render the outdoor scene
-	windows[3].drawList(&_outdoorList[0], _outdoorList.size());
-
-	// Check for any character shooting
-	_isAttacking = false;
-	for (uint idx = 0; idx < _vm->_party->_activeParty.size(); ++idx) {
-		if (_vm->_combat->_shooting[idx])
-			_isAttacking = true;
-	}
-
-	_charsShooting = _isAttacking;
-}
-
-} // End of namespace Xeen
diff --git a/engines/xeen/interface_map.h b/engines/xeen/interface_map.h
deleted file mode 100644
index aaa5478..0000000
--- a/engines/xeen/interface_map.h
+++ /dev/null
@@ -1,175 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef XEEN_INTERFACE_MAP_H
-#define XEEN_INTERFACE_MAP_H
-
-#include "common/scummsys.h"
-#include "xeen/map.h"
-#include "xeen/window.h"
-
-namespace Xeen {
-
-class XeenEngine;
-
-class OutdoorDrawList {
-public:
-	DrawStruct _data[132];
-	DrawStruct &_sky1, &_sky2;
-	DrawStruct &_groundSprite;
-	DrawStruct * const _groundTiles;
-	DrawStruct * const _attackImgs1;
-	DrawStruct * const _attackImgs2;
-	DrawStruct * const _attackImgs3;
-	DrawStruct * const _attackImgs4;
-public:
-	OutdoorDrawList();
-
-	DrawStruct &operator[](int idx) {
-		assert(idx < size());
-		return _data[idx];
-	}
-
-	int size() const { return 132; }
-};
-
-class IndoorDrawList {
-public:
-	DrawStruct _data[170];
-	DrawStruct &_sky1, &_sky2;
-	DrawStruct &_ground;
-	DrawStruct &_horizon;
-	DrawStruct * const _groundTiles;
-	DrawStruct &_swl_0F1R, &_swl_0F1L, &_swl_1F1R, &_swl_1F1L,
-		&_swl_2F2R, &_swl_2F1R, &_swl_2F1L, &_swl_2F2L,
-		&_swl_3F1R, &_swl_3F2R, &_swl_3F3R, &_swl_3F4R,
-		&_swl_3F1L, &_swl_3F2L, &_swl_3F3L, &_swl_3F4L,
-		&_swl_4F4R, &_swl_4F3R, &_swl_4F2R, &_swl_4F1R,
-		&_swl_4F1L, &_swl_4F2L, &_swl_4F3L, &_swl_4F4L;
-	DrawStruct &_fwl_4F4R, &_fwl_4F3R, &_fwl_4F2R, &_fwl_4F1R,
-		&_fwl_4F, &_fwl_4F1L, &_fwl_4F2L, &_fwl_4F3L, &_fwl_4F4L;
-	DrawStruct &_fwl_2F1R, &_fwl_2F, &_fwl_2F1L, &_fwl_3F2R,
-		&_fwl_3F1R, &_fwl_3F, &_fwl_3F1L, &_fwl_3F2L;
-	DrawStruct &_fwl_1F, &_fwl_1F1R, &_fwl_1F1L;
-	DrawStruct &_objects0, &_objects1, &_objects2, &_objects3;
-	DrawStruct &_objects4, &_objects5, &_objects6, &_objects7;
-	DrawStruct &_objects8, &_objects9, &_objects10, &_objects11;
-	DrawStruct * const _attackImgs1;
-	DrawStruct * const _attackImgs2;
-	DrawStruct * const _attackImgs3;
-	DrawStruct * const _attackImgs4;
-public:
-	IndoorDrawList();
-
-	DrawStruct &operator[](int idx) {
-		assert(idx < size());
-		return _data[idx];
-	}
-
-	int size() const { return 170; }
-};
-
-class InterfaceMap {
-private:
-	XeenEngine *_vm;
-	int _combatFloatCounter;
-
-	void initDrawStructs();
-
-	/**
-	 * Helper method for setIndoorsMonsters to set a draw structure
-	 * with the deatils for a given monster
-	 */
-	void setMonsterSprite(DrawStruct &drawStruct, MazeMonster &monster,
-		SpriteResource *sprites, int frame, int defaultY);
-protected:
-	int8 _wp[20];
-	byte _wo[308];
-	bool _flipWater;
-	bool _flipGround;
-	bool _flipSky;
-	bool _flipDefaultGround;
-	bool _thinWall;
-	bool _isAnimReset;
-
-	void setMazeBits();
-
-	/**
-	 * Handles animation of monsters, wall items, and combat within the 3d
-	 * view by cycling the appropriate frame numbers
-	 */
-	void animate3d();
-
-	void drawMap();
-public:
-	OutdoorDrawList _outdoorList;
-	IndoorDrawList _indoorList;
-	SpriteResource _charPowSprites;
-	int _objNumber;
-	int _overallFrame;
-	bool _charsShooting;
-	bool _openDoor;
-	bool _isAttacking;
-public:
-	InterfaceMap(XeenEngine *vm);
-
-	virtual ~InterfaceMap() {}
-
-	/**
-	 * Set up draw structures for displaying on-screen monsters
-	 */
-	void setIndoorsMonsters();
-
-	/**
-	 * Set up draw structures for displaying on-screen objects
-	 */
-	void setIndoorsObjects();
-
-	/**
-	 * Set up draw structures for displaying on-screen wall items
-	 */
-	void setIndoorsWallPics();
-
-	/**
-	 * Draw the contents of the current 3d view of an indoor map
-	 */
-	void drawIndoors();
-
-	/**
-	 * Set up the draw structures for displaying monsters on outdoor maps
-	 */
-	void setOutdoorsMonsters();
-
-	/**
-	 * Set up the draw structures for displaying objects on outdoor maps
-	 */
-	void setOutdoorsObjects();
-
-	/**
-	 * Draw the contents of the current 3d view of an outdoor map
-	 */
-	void drawOutdoors();
-};
-
-} // End of namespace Xeen
-
-#endif /* XEEN_INTERFACE_MAP_H */
diff --git a/engines/xeen/interface_minimap.cpp b/engines/xeen/interface_minimap.cpp
index ba15204..fbebd3b 100644
--- a/engines/xeen/interface_minimap.cpp
+++ b/engines/xeen/interface_minimap.cpp
@@ -121,7 +121,7 @@ void InterfaceMinimap::drawIndoorsMinimap() {
 	const Common::Point &pt = party._mazePosition;
 	int frame2 = _animFrame;
 	_animFrame = (_animFrame + 2) % 8;
-	party._wizardEyeActive = true;//***DEBUG****
+
 	// Draw default ground for all the valid explored areas
 	for (int yp = MINIMAP_YSTART, mazeY = pt.y + MINIMAP_DIFF; mazeY >= (pt.y - MINIMAP_DIFF);
 			yp += TILE_HEIGHT, --mazeY) {
diff --git a/engines/xeen/interface_scene.cpp b/engines/xeen/interface_scene.cpp
new file mode 100644
index 0000000..92e9338
--- /dev/null
+++ b/engines/xeen/interface_scene.cpp
@@ -0,0 +1,4449 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "xeen/interface_scene.h"
+#include "xeen/dialogs_error.h"
+#include "xeen/resources.h"
+#include "xeen/xeen.h"
+
+namespace Xeen {
+
+OutdoorDrawList::OutdoorDrawList() : _sky1(_data[0]), _sky2(_data[1]),
+	_groundSprite(_data[2]), _attackImgs1(&_data[124]), _attackImgs2(&_data[95]),
+	_attackImgs3(&_data[76]), _attackImgs4(&_data[53]), _groundTiles(&_data[3]) {
+	_data[0] = DrawStruct(0, 8, 8);
+	_data[1] = DrawStruct(1, 8, 25);
+	_data[2] = DrawStruct(0, 8, 67);
+	_data[3] = DrawStruct(0, 8, 67);
+	_data[4] = DrawStruct(0, 38, 67);
+	_data[5] = DrawStruct(0, 84, 67);
+	_data[6] = DrawStruct(0, 134, 67);
+	_data[7] = DrawStruct(0, 117, 67);
+	_data[8] = DrawStruct(0, 117, 67);
+	_data[9] = DrawStruct(0, 103, 67);
+	_data[10] = DrawStruct(0, 8, 73);
+	_data[11] = DrawStruct(0, 8, 73);
+	_data[12] = DrawStruct(0, 30, 73);
+	_data[13] = DrawStruct(0, 181, 73);
+	_data[14] = DrawStruct(0, 154, 73);
+	_data[15] = DrawStruct(0, 129, 73);
+	_data[16] = DrawStruct(0, 87, 73);
+	_data[17] = DrawStruct(0, 8, 81);
+	_data[18] = DrawStruct(0, 8, 81);
+	_data[19] = DrawStruct(0, 202, 81);
+	_data[20] = DrawStruct(0, 145, 81);
+	_data[21] = DrawStruct(0, 63, 81);
+	_data[22] = DrawStruct(0, 8, 93);
+	_data[23] = DrawStruct(0, 169, 93);
+	_data[24] = DrawStruct(0, 31, 93);
+	_data[25] = DrawStruct(0, 8, 109);
+	_data[26] = DrawStruct(0, 201, 109);
+	_data[27] = DrawStruct(0, 8, 109);
+	_data[28] = DrawStruct(1, -64, 61, 14, SPRFLAG_SCENE_CLIPPED);
+	_data[29] = DrawStruct(1, -40, 61, 14, 0);
+	_data[30] = DrawStruct(1, -16, 61, 14, 0);
+	_data[31] = DrawStruct(1, 8, 61, 14, 0);
+	_data[32] = DrawStruct(1, 128, 61, 14, SPRFLAG_HORIZ_FLIPPED | SPRFLAG_SCENE_CLIPPED);
+	_data[33] = DrawStruct(1, 104, 61, 14, SPRFLAG_HORIZ_FLIPPED);
+	_data[34] = DrawStruct(1, 80, 61, 14, SPRFLAG_HORIZ_FLIPPED);
+	_data[35] = DrawStruct(1, 56, 61, 14, SPRFLAG_HORIZ_FLIPPED);
+	_data[36] = DrawStruct(1, 32, 61, 14, 0);
+	_data[37] = DrawStruct(0, -9, 61, 14, 0);
+	_data[38] = DrawStruct(0, -58, 61, 14, 0);
+	_data[39] = DrawStruct(0, 40, 61, 14, 0);
+	_data[40] = DrawStruct(0, -82, 61, 14, 0);
+	_data[41] = DrawStruct(0, 64, 61, 14, 0);
+	_data[42] = DrawStruct(0, -41, 61, 14, 0);
+	_data[43] = DrawStruct(0, -26, 61, 14, 0);
+	_data[44] = DrawStruct(0, -34, 61, 14, 0);
+	_data[45] = DrawStruct(0, -16, 61, 14, 0);
+	_data[46] = DrawStruct(0, 23, 61, 14, 0);
+	_data[47] = DrawStruct(0, 16, 61, 14, 0);
+	_data[48] = DrawStruct(0, -58, 61, 14, 0);
+	_data[49] = DrawStruct(0, 40, 61, 14, 0);
+	_data[50] = DrawStruct(0, -17, 61, 14, 0);
+	_data[51] = DrawStruct(0, -1, 58, 14, 0);
+	_data[52] = DrawStruct(0, -9, 58, 14, 0);
+	_data[53] = DrawStruct(0, 72, 58, 12, 0);
+	_data[54] = DrawStruct(0, 72, 58, 12, SPRFLAG_HORIZ_FLIPPED);
+	_data[55] = DrawStruct(0, 69, 63, 12, 0);
+	_data[56] = DrawStruct(0, 75, 63, 12, SPRFLAG_HORIZ_FLIPPED);
+	_data[57] = DrawStruct(0, 73, 53, 12, 0);
+	_data[58] = DrawStruct(0, 71, 53, 12, SPRFLAG_HORIZ_FLIPPED);
+	_data[59] = DrawStruct(0, 80, 57, 12, 0);
+	_data[60] = DrawStruct(0, 64, 57, 12, SPRFLAG_HORIZ_FLIPPED);
+	_data[61] = DrawStruct(2, -11, 54, 8, 0);
+	_data[62] = DrawStruct(1, -21, 54, 11, 0);
+	_data[63] = DrawStruct(2, 165, 54, 8, SPRFLAG_HORIZ_FLIPPED);
+	_data[64] = DrawStruct(1, 86, 54, 11, SPRFLAG_HORIZ_FLIPPED);
+	_data[65] = DrawStruct(1, 33, 54, 11, 0);
+	_data[66] = DrawStruct(0, -8, 54, 12, 0);
+	_data[67] = DrawStruct(0, -73, 54, 12, 0);
+	_data[68] = DrawStruct(0, 57, 54, 12, 0);
+	_data[69] = DrawStruct(0, -65, 54, 12, 0);
+	_data[70] = DrawStruct(0, -81, 54, 12, 0);
+	_data[71] = DrawStruct(0, 49, 54, 12, 0);
+	_data[72] = DrawStruct(0, 65, 54, 12, 0);
+	_data[73] = DrawStruct(0, -24, 54, 12, 0);
+	_data[74] = DrawStruct(0, 9, 50, 12, 0);
+	_data[75] = DrawStruct(0, -8, 50, 12, 0);
+	_data[76] = DrawStruct(0, 72, 53, 8, 0);
+	_data[77] = DrawStruct(0, 72, 53, 8, SPRFLAG_HORIZ_FLIPPED);
+	_data[78] = DrawStruct(0, 77, 58, 8, 0);
+	_data[79] = DrawStruct(0, 67, 58, 8, SPRFLAG_HORIZ_FLIPPED);
+	_data[80] = DrawStruct(0, 81, 47, 8, 0);
+	_data[81] = DrawStruct(0, 63, 47, 8, SPRFLAG_HORIZ_FLIPPED);
+	_data[82] = DrawStruct(0, 94, 52, 8, 0);
+	_data[83] = DrawStruct(0, 50, 52, 8, SPRFLAG_HORIZ_FLIPPED);
+	_data[84] = DrawStruct(2, 8, 40);
+	_data[85] = DrawStruct(2, 146, 40, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[86] = DrawStruct(1, 32, 40, 6, 0);
+	_data[87] = DrawStruct(0, -7, 30, 7, 0);
+	_data[88] = DrawStruct(0, -112, 30, 7, SPRFLAG_SCENE_CLIPPED);
+	_data[89] = DrawStruct(0, 98, 30, 7, SPRFLAG_SCENE_CLIPPED);
+	_data[90] = DrawStruct(0, -112, 30, 8, SPRFLAG_SCENE_CLIPPED);
+	_data[91] = DrawStruct(0, 98, 30, 8, SPRFLAG_SCENE_CLIPPED);
+	_data[92] = DrawStruct(0, -38, 30, 8, 0);
+	_data[93] = DrawStruct(0, 25, 30, 8, 0);
+	_data[94] = DrawStruct(0, -7, 30, 8, 0);
+	_data[95] = DrawStruct(0, 72, 48, 4, 0);
+	_data[96] = DrawStruct(0, 72, 48, 4, SPRFLAG_HORIZ_FLIPPED);
+	_data[97] = DrawStruct(0, 85, 53, 4, 0);
+	_data[98] = DrawStruct(0, 59, 53, 4, SPRFLAG_HORIZ_FLIPPED);
+	_data[99] = DrawStruct(0, 89, 41, 4, 0);
+	_data[100] = DrawStruct(0, 55, 41, 4, SPRFLAG_HORIZ_FLIPPED);
+	_data[101] = DrawStruct(0, 106, 47, 4, 0);
+	_data[102] = DrawStruct(0, 38, 47, 4, SPRFLAG_HORIZ_FLIPPED);
+	_data[103] = DrawStruct(0, 8, 24);
+	_data[104] = DrawStruct(0, 169, 24, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[105] = DrawStruct(1, 32, 24);
+	_data[106] = DrawStruct(0, -23, 40, 0, SPRFLAG_SCENE_CLIPPED);
+	_data[107] = DrawStruct(0, 200, 40, 0, SPRFLAG_HORIZ_FLIPPED | SPRFLAG_SCENE_CLIPPED);
+	_data[108] = DrawStruct(0, 8, 47);
+	_data[109] = DrawStruct(0, 169, 47, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[110] = DrawStruct(1, -56, -4, 0x8000, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
+	_data[111] = DrawStruct(0, -5, 2, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
+	_data[112] = DrawStruct(0, -67, 2, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
+	_data[113] = DrawStruct(0, 44, 73);
+	_data[114] = DrawStruct(0, 44, 73);
+	_data[115] = DrawStruct(0, 58, 14, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
+	_data[116] = DrawStruct(0, 169, 73);
+	_data[117] = DrawStruct(0, 169, 73);
+	_data[118] = DrawStruct(0, -5, 14, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
+	_data[119] = DrawStruct(0, 110, 73);
+	_data[120] = DrawStruct(0, 110, 73);
+	_data[121] = DrawStruct(0, -5, 14, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
+	_data[122] = DrawStruct(0, 110, 73);
+	_data[123] = DrawStruct(0, 110, 73);
+	_data[124] = DrawStruct(0, 72, 43);
+	_data[125] = DrawStruct(0, 72, 43, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[126] = DrawStruct(0, 93, 48);
+	_data[127] = DrawStruct(0, 51, 48, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[128] = DrawStruct(0, 97, 36);
+	_data[129] = DrawStruct(0, 47, 36, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[130] = DrawStruct(0, 118, 42);
+	_data[131] = DrawStruct(0, 26, 42, 0, SPRFLAG_HORIZ_FLIPPED);
+}
+
+/*------------------------------------------------------------------------*/
+
+IndoorDrawList::IndoorDrawList() :
+	_sky1(_data[0]), _sky2(_data[1]), _ground(_data[2]), _horizon(_data[28]),
+	_swl_0F1R(_data[146]), _swl_0F1L(_data[144]), _swl_1F1R(_data[134]),
+	_swl_1F1L(_data[133]), _swl_2F2R(_data[110]), _swl_2F1R(_data[109]),
+	_swl_2F1L(_data[108]), _swl_2F2L(_data[107]), _swl_3F1R(_data[ 78]),
+	_swl_3F2R(_data[ 77]), _swl_3F3R(_data[ 76]), _swl_3F4R(_data[ 75]),
+	_swl_3F1L(_data[ 74]), _swl_3F2L(_data[ 73]), _swl_3F3L(_data[ 72]),
+	_swl_3F4L(_data[ 71]), _swl_4F4R(_data[ 33]), _swl_4F3R(_data[ 34]),
+	_swl_4F2R(_data[ 35]), _swl_4F1R(_data[ 36]), _swl_4F1L(_data[ 32]),
+	_swl_4F2L(_data[ 31]), _swl_4F3L(_data[ 30]), _swl_4F4L(_data[ 29]),
+	_fwl_4F4R(_data[ 45]), _fwl_4F3R(_data[ 44]), _fwl_4F2R(_data[ 43]),
+	_fwl_4F1R(_data[ 42]), _fwl_4F(  _data[ 41]), _fwl_4F1L(_data[ 40]),
+	_fwl_4F2L(_data[ 39]), _fwl_4F3L(_data[ 38]), _fwl_4F4L(_data[ 37]),
+	_fwl_2F1R(_data[121]), _fwl_2F(  _data[120]), _fwl_2F1L(_data[119]),
+	_fwl_3F2R(_data[ 91]), _fwl_3F1R(_data[ 90]), _fwl_3F(  _data[ 89]),
+	_fwl_3F1L(_data[ 88]), _fwl_3F2L(_data[ 87]), _fwl_1F(  _data[147]),
+	_fwl_1F1R(_data[145]), _fwl_1F1L(_data[143]),
+	_groundTiles(&_data[3]),
+	_objects0(_data[149]), _objects1(_data[125]), _objects2(_data[126]),
+	_objects3(_data[127]), _objects4(_data[97]), _objects5(_data[98]),
+	_objects6(_data[99]), _objects7(_data[55]), _objects8(_data[56]),
+	_objects9(_data[58]), _objects10(_data[57]), _objects11(_data[59]),
+	_attackImgs1(&_data[162]), _attackImgs2(&_data[135]),
+	_attackImgs3(&_data[111]), _attackImgs4(&_data[79]) {
+	// Setup draw structure positions
+	_data[0] = DrawStruct(0, 8, 8);
+	_data[1] = DrawStruct(1, 8, 25);
+	_data[2] = DrawStruct(0, 8, 67);
+	_data[3] = DrawStruct(0, 8, 67);
+	_data[4] = DrawStruct(0, 38, 67);
+	_data[5] = DrawStruct(0, 84, 67);
+	_data[6] = DrawStruct(0, 134, 67);
+	_data[7] = DrawStruct(0, 117, 67);
+	_data[8] = DrawStruct(0, 117, 67);
+	_data[9] = DrawStruct(0, 103, 67);
+	_data[10] = DrawStruct(0, 8, 73);
+	_data[11] = DrawStruct(0, 8, 73);
+	_data[12] = DrawStruct(0, 30, 73);
+	_data[13] = DrawStruct(0, 181, 73);
+	_data[14] = DrawStruct(0, 154, 73);
+	_data[15] = DrawStruct(0, 129, 73);
+	_data[16] = DrawStruct(0, 87, 73);
+	_data[17] = DrawStruct(0, 8, 81);
+	_data[18] = DrawStruct(0, 8, 81);
+	_data[19] = DrawStruct(0, 202, 81);
+	_data[20] = DrawStruct(0, 145, 81);
+	_data[21] = DrawStruct(0, 63, 81);
+	_data[22] = DrawStruct(0, 8, 93);
+	_data[23] = DrawStruct(0, 169, 93);
+	_data[24] = DrawStruct(0, 31, 93);
+	_data[25] = DrawStruct(0, 8, 109);
+	_data[26] = DrawStruct(0, 201, 109);
+	_data[27] = DrawStruct(0, 8, 109);
+	_data[28] = DrawStruct(7, 8, 64);
+	_data[29] = DrawStruct(22, 32, 60);
+	_data[30] = DrawStruct(20, 56, 60);
+	_data[31] = DrawStruct(18, 80, 60);
+	_data[32] = DrawStruct(16, 104, 60);
+	_data[33] = DrawStruct(23, 152, 60, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[34] = DrawStruct(21, 144, 60, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[35] = DrawStruct(19, 131, 60, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[36] = DrawStruct(17, 120, 60, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[37] = DrawStruct(14, 8, 60);
+	_data[38] = DrawStruct(12, 32, 60);
+	_data[39] = DrawStruct(10, 56, 60);
+	_data[40] = DrawStruct(14, 80, 60);
+	_data[41] = DrawStruct(14, 104, 60);
+	_data[42] = DrawStruct(14, 128, 60);
+	_data[43] = DrawStruct(14, 152, 60);
+	_data[44] = DrawStruct(8, 176, 60);
+	_data[45] = DrawStruct(8, 200, 60);
+	_data[46] = DrawStruct(0, -64, 61, 14, 0);
+	_data[47] = DrawStruct(0, -40, 61, 14, 0);
+	_data[48] = DrawStruct(0, -16, 61, 14, 0);
+	_data[49] = DrawStruct(0, 8, 61, 14, 0);
+	_data[50] = DrawStruct(0, 32, 61, 14, 0);
+	_data[51] = DrawStruct(0, 56, 61, 14, 0);
+	_data[52] = DrawStruct(0, 80, 61, 14, 0);
+	_data[53] = DrawStruct(0, 104, 61, 14, 0);
+	_data[54] = DrawStruct(0, 128, 61, 14, 0);
+	_data[55] = DrawStruct(0, -9, 58, 14, 0);
+	_data[56] = DrawStruct(0, -34, 58, 14, 0);
+	_data[57] = DrawStruct(0, 16, 58, 14, 0);
+	_data[58] = DrawStruct(0, -58, 58, 14, 0);
+	_data[59] = DrawStruct(0, 40, 58, 14, 0);
+	_data[60] = DrawStruct(0, -41, 58, 14, 0);
+	_data[61] = DrawStruct(0, -26, 58, 14, 0);
+	_data[62] = DrawStruct(0, -34, 58, 14, 0);
+	_data[63] = DrawStruct(0, -16, 58, 14, 0);
+	_data[64] = DrawStruct(0, 23, 58, 14, 0);
+	_data[65] = DrawStruct(0, 16, 58, 14, 0);
+	_data[66] = DrawStruct(0, -58, 58, 14, 0);
+	_data[67] = DrawStruct(0, 40, 58, 14, 0);
+	_data[68] = DrawStruct(0, -17, 58, 14, 0);
+	_data[69] = DrawStruct(0, -1, 58, 14, 0);
+	_data[70] = DrawStruct(0, -9, 58, 14, 0);
+	_data[71] = DrawStruct(14, 8, 58);
+	_data[72] = DrawStruct(12, 8, 55);
+	_data[73] = DrawStruct(10, 32, 52);
+	_data[74] = DrawStruct(14, 88, 52);
+	_data[75] = DrawStruct(14, 128, 52, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[76] = DrawStruct(14, 152, 52, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[77] = DrawStruct(0, 176, 55, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[78] = DrawStruct(0, 200, 58, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[79] = DrawStruct(0, 72, 58, 12, 0);
+	_data[80] = DrawStruct(0, 72, 58, 12, SPRFLAG_HORIZ_FLIPPED);
+	_data[81] = DrawStruct(0, 69, 63, 12, 0);
+	_data[82] = DrawStruct(0, 75, 63, 12, SPRFLAG_HORIZ_FLIPPED);
+	_data[83] = DrawStruct(0, 73, 53, 12, 0);
+	_data[84] = DrawStruct(0, 71, 53, 12, SPRFLAG_HORIZ_FLIPPED);
+	_data[85] = DrawStruct(0, 80, 57, 12, 0);
+	_data[86] = DrawStruct(0, 64, 57, 12, SPRFLAG_HORIZ_FLIPPED);
+	_data[87] = DrawStruct(7, -24, 52, 0, SPRFLAG_SCENE_CLIPPED);
+	_data[88] = DrawStruct(7, 32, 52);
+	_data[89] = DrawStruct(7, 88, 52);
+	_data[90] = DrawStruct(0, 144, 52);
+	_data[91] = DrawStruct(0, 200, 52, 0, SPRFLAG_SCENE_CLIPPED);
+	_data[92] = DrawStruct(0, -79, 52, 11, SPRFLAG_SCENE_CLIPPED);
+	_data[93] = DrawStruct(0, -27, 52, 11, 0);
+	_data[94] = DrawStruct(0, 32, 52, 11, 0);
+	_data[95] = DrawStruct(0, 89, 52, 11, 0);
+	_data[96] = DrawStruct(0, 145, 52, 11, SPRFLAG_SCENE_CLIPPED);
+	_data[97] = DrawStruct(0, -8, 50, 12, 0);
+	_data[98] = DrawStruct(0, -65, 50, 12, 0);
+	_data[99] = DrawStruct(0, 49, 50, 12, 0);
+	_data[100] = DrawStruct(0, -65, 50, 12, 0);
+	_data[101] = DrawStruct(0, -81, 50, 12, 0);
+	_data[102] = DrawStruct(0, 49, 50, 12, 0);
+	_data[103] = DrawStruct(0, 65, 50, 12, 0);
+	_data[104] = DrawStruct(0, -24, 50, 12, 0);
+	_data[105] = DrawStruct(0, 9, 50, 12, 0);
+	_data[106] = DrawStruct(0, -8, 50, 12, 0);
+	_data[107] = DrawStruct(7, 8, 48);
+	_data[108] = DrawStruct(7, 64, 40);
+	_data[109] = DrawStruct(6, 144, 40, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[110] = DrawStruct(6, 200, 48, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[111] = DrawStruct(0, 72, 53, 8, 0);
+	_data[112] = DrawStruct(0, 72, 53, 8, SPRFLAG_HORIZ_FLIPPED);
+	_data[113] = DrawStruct(0, 77, 58, 8, 0);
+	_data[114] = DrawStruct(0, 67, 58, 8, SPRFLAG_HORIZ_FLIPPED);
+	_data[115] = DrawStruct(0, 81, 47, 8, 0);
+	_data[116] = DrawStruct(0, 63, 47, 8, SPRFLAG_HORIZ_FLIPPED);
+	_data[117] = DrawStruct(0, 94, 52, 8, 0);
+	_data[118] = DrawStruct(0, 50, 52, 8, SPRFLAG_HORIZ_FLIPPED);
+	_data[119] = DrawStruct(6, -40, 40, 0, SPRFLAG_SCENE_CLIPPED);
+	_data[120] = DrawStruct(6, 64, 40);
+	_data[121] = DrawStruct(0, 168, 40, 0, SPRFLAG_SCENE_CLIPPED);
+	_data[122] = DrawStruct(0, -72, 40, 6, SPRFLAG_SCENE_CLIPPED);
+	_data[123] = DrawStruct(0, 32, 40, 6, 0);
+	_data[124] = DrawStruct(0, 137, 40, 6, SPRFLAG_SCENE_CLIPPED);
+	_data[125] = DrawStruct(0, -7, 25, 7, 0);
+	_data[126] = DrawStruct(0, -112, 25, 7, SPRFLAG_SCENE_CLIPPED);
+	_data[127] = DrawStruct(0, 98, 25, 7, SPRFLAG_SCENE_CLIPPED);
+	_data[128] = DrawStruct(0, -112, 29, 8, SPRFLAG_SCENE_CLIPPED);
+	_data[129] = DrawStruct(0, 98, 29, 8, SPRFLAG_SCENE_CLIPPED);
+	_data[130] = DrawStruct(0, -38, 29, 8, 0);
+	_data[131] = DrawStruct(0, 25, 29, 8, 0);
+	_data[132] = DrawStruct(0, -7, 29, 8, 0);
+	_data[133] = DrawStruct(6, 32, 24);
+	_data[134] = DrawStruct(0, 168, 24, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[135] = DrawStruct(0, 72, 48, 4, 0);
+	_data[136] = DrawStruct(0, 72, 48, 4, SPRFLAG_HORIZ_FLIPPED);
+	_data[137] = DrawStruct(0, 85, 53, 4, 0);
+	_data[138] = DrawStruct(0, 59, 53, 4, SPRFLAG_HORIZ_FLIPPED);
+	_data[139] = DrawStruct(0, 89, 41, 4, 0);
+	_data[140] = DrawStruct(0, 55, 41, 4, SPRFLAG_HORIZ_FLIPPED);
+	_data[141] = DrawStruct(0, 106, 47, 4, 0);
+	_data[142] = DrawStruct(0, 38, 47, 4, SPRFLAG_HORIZ_FLIPPED);
+	_data[143] = DrawStruct(0, -136, 24, 0, SPRFLAG_SCENE_CLIPPED);
+	_data[144] = DrawStruct(0, 8, 12);
+	_data[145] = DrawStruct(0, 32, 24);
+	_data[146] = DrawStruct(0, 200, 12, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[147] = DrawStruct(0, 200, 24, 0, SPRFLAG_SCENE_CLIPPED);
+	_data[148] = DrawStruct(0, 32, 24);
+	_data[149] = DrawStruct(0, -5, 2, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
+	_data[150] = DrawStruct(0, -67, 10, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
+	_data[151] = DrawStruct(0, 44, 73);
+	_data[152] = DrawStruct(0, 44, 73);
+	_data[153] = DrawStruct(0, 58, 14, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
+	_data[154] = DrawStruct(0, 169, 73);
+	_data[155] = DrawStruct(0, 169, 73);
+	_data[156] = DrawStruct(0, -5, 14, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
+	_data[157] = DrawStruct(0, 110, 73);
+	_data[158] = DrawStruct(0, 110, 73);
+	_data[159] = DrawStruct(0, -5, 14, 0, SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED);
+	_data[160] = DrawStruct(0, 110, 73);
+	_data[161] = DrawStruct(0, 110, 73);
+	_data[162] = DrawStruct(0, 72, 43);
+	_data[163] = DrawStruct(0, 72, 43, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[164] = DrawStruct(0, 93, 48);
+	_data[165] = DrawStruct(0, 51, 48, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[166] = DrawStruct(0, 97, 36);
+	_data[167] = DrawStruct(0, 47, 36, 0, SPRFLAG_HORIZ_FLIPPED);
+	_data[168] = DrawStruct(0, 118, 42);
+	_data[169] = DrawStruct(0, 26, 42, 0, SPRFLAG_HORIZ_FLIPPED);
+}
+
+/*------------------------------------------------------------------------*/
+
+InterfaceScene::InterfaceScene(XeenEngine *vm): _vm(vm) {
+	Common::fill(&_wp[0], &_wp[20], 0);
+	Common::fill(&_wo[0], &_wo[308], 0);
+	_overallFrame = 0;
+	_flipWater = false;
+	_flipGround = false;
+	_flipSky = false;
+	_flipDefaultGround = false;
+	_isAttacking = false;
+	_charsShooting = false;
+	_objNumber = 0;
+	_combatFloatCounter = 0;
+	_thinWall = false;
+	_isAnimReset = false;
+	_overallFrame = 0;
+	_openDoor = false;
+}
+
+void InterfaceScene::drawMap() {
+	Combat &combat = *_vm->_combat;
+	Map &map = *_vm->_map;
+	Scripts &scripts = *_vm->_scripts;
+
+	const int COMBAT_POS_X[3][2] = { { 102, 134 }, { 36, 67 }, { 161, 161 } };
+	const int INDOOR_INDEXES[3] = { 157, 151, 154 };
+	const int OUTDOOR_INDEXES[3] = { 119, 113, 116 };
+	const int COMBAT_OFFSET_X[4] = { 8, 6, 4, 2 };
+
+	MazeObject &objObject = map._mobData._objects[_objNumber];
+	Direction partyDirection = _vm->_party->_mazeDirection;
+	int objNum = _objNumber - 1;
+
+	// Loop to update the frame numbers for each maze object, applying the animation frame
+	// limits as specified by the map's _animationInfo listing
+	for (uint idx = 0; idx < map._mobData._objects.size(); ++idx) {
+		MazeObject &mazeObject = map._mobData._objects[idx];
+		AnimationEntry &animEntry = map._animationInfo[mazeObject._spriteId];
+		int directionIndex = Res.DIRECTION_ANIM_POSITIONS[mazeObject._direction][partyDirection];
+
+		if (_isAnimReset) {
+			mazeObject._frame = animEntry._frame1._frames[directionIndex];
+		} else {
+			++mazeObject._frame;
+			if ((int)idx == objNum && scripts._animCounter > 0 && (
+				objObject._spriteId == (_vm->_files->_isDarkCc ? 15 : 16) ||
+				objObject._spriteId == 58 || objObject._spriteId == 73)) {
+				if (mazeObject._frame > 4 || mazeObject._spriteId == 58)
+					mazeObject._frame = 1;
+			} else if (mazeObject._frame >= animEntry._frame2._frames[directionIndex]) {
+				mazeObject._frame = animEntry._frame1._frames[directionIndex];
+			}
+		}
+
+		mazeObject._flipped = animEntry._flipped._flags[directionIndex];
+	}
+
+	if (map._isOutdoors) {
+		// Outdoors drawing
+		for (int idx = 0; idx < 44; ++idx)
+			_outdoorList[Res.OUTDOOR_DRAWSTRCT_INDEXES[idx]]._frame = -1;
+
+		if (combat._monstersAttacking) {
+			for (int idx = 0; idx < 8; ++idx) {
+				if (_outdoorList._attackImgs4[idx]._sprites)
+					_outdoorList._attackImgs4[idx]._frame = 0;
+				else if (_outdoorList._attackImgs3[idx]._sprites)
+					_outdoorList._attackImgs3[idx]._frame = 1;
+				else if (_outdoorList._attackImgs2[idx]._sprites)
+					_outdoorList._attackImgs2[idx]._frame = 2;
+				else if (_outdoorList._attackImgs1[idx]._sprites)
+					_outdoorList._attackImgs1[idx]._frame = 0;
+			}
+		} else if (_charsShooting) {
+			for (int idx = 0; idx < 8; ++idx) {
+				if (_outdoorList._attackImgs1[idx]._sprites)
+					_outdoorList._attackImgs1[idx]._frame = 0;
+				else if (_outdoorList._attackImgs2[idx]._sprites)
+					_outdoorList._attackImgs2[idx]._frame = 1;
+				else if (_outdoorList._attackImgs3[idx]._sprites)
+					_outdoorList._attackImgs3[idx]._frame = 2;
+				else if (_outdoorList._attackImgs4[idx]._sprites)
+					_outdoorList._attackImgs1[idx]._frame = 0;
+			}
+		}
+
+		_isAnimReset = false;
+		int attackMon2 = combat._attackMonsters[2];
+
+		for (int idx = 0; idx < 3; ++idx) {
+			DrawStruct &ds1 = _outdoorList[OUTDOOR_INDEXES[idx] + 1];
+			DrawStruct &ds2 = _outdoorList[OUTDOOR_INDEXES[idx]];
+			ds1._sprites = nullptr;
+			ds2._sprites = nullptr;
+
+			if (combat._charsArray1[idx]) {
+				int vIndex = combat._attackMonsters[1] && !attackMon2 ? 1 : 0;
+				combat._charsArray1[idx]--;
+
+				if (combat._monPow[idx]) {
+					ds2._x = COMBAT_POS_X[idx][vIndex];
+					ds2._frame = 0;
+					ds2._scale = combat._monsterScale[idx];
+
+					if (ds2._scale == 0x8000) {
+						ds2._x /= 3;
+						ds2._y = 60;
+					} else {
+						ds2._y = 73;
+					}
+
+					ds2._flags = SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED;
+					ds2._sprites = &_charPowSprites;
+				}
+
+				if (combat._elemPow[idx]) {
+					ds1._x = COMBAT_POS_X[idx][vIndex] + COMBAT_OFFSET_X[idx];
+					ds1._frame = combat._elemPow[idx];
+					ds1._scale = combat._elemScale[idx];
+
+					if (ds1._scale == 0x8000)
+						ds1._x /= 3;
+					ds1._flags = SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED;
+					ds1._sprites = &_charPowSprites;
+				}
+			}
+		}
+
+		setOutdoorsMonsters();
+		setOutdoorsObjects();
+
+		_outdoorList[123]._sprites = nullptr;
+		_outdoorList[122]._sprites = nullptr;
+		_outdoorList[121]._sprites = nullptr;
+
+		int monsterIndex;
+		if (combat._attackMonsters[0] != -1 && map._mobData._monsters[combat._attackMonsters[0]]._frame >= 8) {
+			_outdoorList[121] = _outdoorList[118];
+			_outdoorList[122] = _outdoorList[119];
+			_outdoorList[123] = _outdoorList[120];
+			_outdoorList[118]._sprites = nullptr;
+			_outdoorList[119]._sprites = nullptr;
+			_outdoorList[120]._sprites = nullptr;
+			monsterIndex = 1;
+		} else if (combat._attackMonsters[1] != -1 && map._mobData._monsters[combat._attackMonsters[1]]._frame >= 8) {
+			_outdoorList[121] = _outdoorList[112];
+			_outdoorList[122] = _outdoorList[113];
+			_outdoorList[123] = _outdoorList[114];
+			_outdoorList[112]._sprites = nullptr;
+			_outdoorList[113]._sprites = nullptr;
+			_outdoorList[124]._sprites = nullptr;
+			monsterIndex = 2;
+		} else if (combat._attackMonsters[2] != -1 && map._mobData._monsters[combat._attackMonsters[2]]._frame >= 8) {
+			_outdoorList[121] = _outdoorList[115];
+			_outdoorList[122] = _outdoorList[116];
+			_outdoorList[123] = _outdoorList[117];
+			_outdoorList[115]._sprites = nullptr;
+			_outdoorList[116]._sprites = nullptr;
+			_outdoorList[117]._sprites = nullptr;
+			monsterIndex = 3;
+		} else {
+			monsterIndex = 0;
+		}
+
+		drawOutdoors();
+
+		switch (monsterIndex) {
+		case 1:
+			_outdoorList[118] = _outdoorList[121];
+			_outdoorList[119] = _outdoorList[122];
+			_outdoorList[120] = _outdoorList[123];
+			break;
+		case 2:
+			_outdoorList[112] = _outdoorList[121];
+			_outdoorList[113] = _outdoorList[122];
+			_outdoorList[114] = _outdoorList[123];
+			break;
+		case 3:
+			_outdoorList[115] = _outdoorList[121];
+			_outdoorList[116] = _outdoorList[122];
+			_outdoorList[117] = _outdoorList[123];
+			break;
+		default:
+			break;
+		}
+	} else {
+		// Indoor drawing
+		// Default all the parts of draw struct not to be drawn by default
+		for (int idx = 3; idx < _indoorList.size(); ++idx)
+			_indoorList[idx]._frame = -1;
+
+		if (combat._monstersAttacking) {
+			for (int idx = 0; idx < 96; ++idx) {
+				if (_indoorList[79 + idx]._sprites != nullptr) {
+					_indoorList[79 + idx]._frame = 0;
+				}
+				else if (_indoorList[111 + idx]._sprites != nullptr) {
+					_indoorList[111 + idx]._frame = 1;
+				}
+				else if (_indoorList[135 + idx]._sprites != nullptr) {
+					_indoorList[135 + idx]._frame = 2;
+				}
+				else if (_indoorList[162 + idx]._sprites != nullptr) {
+					_indoorList[162 + idx]._frame = 0;
+				}
+			}
+		} else if (_charsShooting) {
+			for (int idx = 0; idx < 8; ++idx) {
+				if (_indoorList._attackImgs1[idx]._sprites != nullptr) {
+					_indoorList._attackImgs1[idx]._frame = 0;
+				} else if (_indoorList._attackImgs2[idx]._sprites != nullptr) {
+					_indoorList._attackImgs2[idx]._frame = 1;
+				} else if (_indoorList._attackImgs3[idx]._sprites != nullptr) {
+					_indoorList._attackImgs3[idx]._frame = 2;
+				} else if (_indoorList._attackImgs4[idx]._sprites != nullptr) {
+					_indoorList._attackImgs4[idx]._frame = 0;
+				}
+			}
+		}
+
+		setMazeBits();
+		_isAnimReset = false;
+
+		// Code in the original that's not being used
+		//MazeObject &objObject = map._mobData._objects[_objNumber - 1];
+
+		for (int idx = 0; idx < 3; ++idx) {
+			DrawStruct &ds1 = _indoorList[INDOOR_INDEXES[idx]];
+			DrawStruct &ds2 = _indoorList[INDOOR_INDEXES[idx] + 1];
+			ds1._sprites = nullptr;
+			ds2._sprites = nullptr;
+
+			if (combat._charsArray1[idx]) {
+				int posIndex = combat._attackMonsters[1] && !combat._attackMonsters[2] ? 1 : 0;
+				--combat._charsArray1[idx];
+
+				if (combat._monPow[idx]) {
+					ds1._x = COMBAT_POS_X[idx][posIndex];
+					ds1._frame = 0;
+					ds1._scale = combat._monsterScale[idx];
+					if (ds1._scale == 0x8000) {
+						ds1._x /= 3;
+						ds1._y = 60;
+					} else {
+						ds1._y = 73;
+					}
+
+					ds1._flags = SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED;
+					ds1._sprites = &_charPowSprites;
+				}
+
+				if (combat._elemPow[idx]) {
+					ds2._x = COMBAT_POS_X[idx][posIndex] + COMBAT_OFFSET_X[idx];
+					ds2._frame = combat._elemPow[idx];
+					ds2._scale = combat._elemScale[idx];
+					if (ds2._scale == 0x8000)
+						ds2._x /= 3;
+					ds2._flags = SPRFLAG_4000 | SPRFLAG_SCENE_CLIPPED;
+					ds2._sprites = &_charPowSprites;
+				}
+			}
+		}
+
+		setIndoorsMonsters();
+		setIndoorsObjects();
+		setIndoorsWallPics();
+
+		_indoorList[161]._sprites = nullptr;
+		_indoorList[160]._sprites = nullptr;
+		_indoorList[159]._sprites = nullptr;
+
+		// Handle attacking monsters
+		int monsterIndex = 0;
+		if (combat._attackMonsters[0] != -1 && map._mobData._monsters[combat._attackMonsters[0]]._frame >= 8) {
+			_indoorList[159] = _indoorList[156];
+			_indoorList[160] = _indoorList[157];
+			_indoorList[161] = _indoorList[158];
+			_indoorList[158]._sprites = nullptr;
+			_indoorList[156]._sprites = nullptr;
+			_indoorList[157]._sprites = nullptr;
+			monsterIndex = 1;
+		} else if (combat._attackMonsters[1] != -1 && map._mobData._monsters[combat._attackMonsters[1]]._frame >= 8) {
+			_indoorList[159] = _indoorList[150];
+			_indoorList[160] = _indoorList[151];
+			_indoorList[161] = _indoorList[152];
+			_indoorList[152]._sprites = nullptr;
+			_indoorList[151]._sprites = nullptr;
+			_indoorList[150]._sprites = nullptr;
+			monsterIndex = 2;
+		} else if (combat._attackMonsters[2] != -1 && map._mobData._monsters[combat._attackMonsters[2]]._frame >= 8) {
+			_indoorList[159] = _indoorList[153];
+			_indoorList[160] = _indoorList[154];
+			_indoorList[161] = _indoorList[155];
+			_indoorList[153]._sprites = nullptr;
+			_indoorList[154]._sprites = nullptr;
+			_indoorList[155]._sprites = nullptr;
+			monsterIndex = 3;
+		}
+
+		drawIndoors();
+
+		switch (monsterIndex) {
+		case 1:
+			_indoorList[156] = _indoorList[159];
+			_indoorList[157] = _indoorList[160];
+			_indoorList[158] = _indoorList[161];
+			break;
+		case 2:
+			_indoorList[150] = _indoorList[159];
+			_indoorList[151] = _indoorList[160];
+			_indoorList[152] = _indoorList[161];
+			break;
+		case 3:
+			_indoorList[153] = _indoorList[159];
+			_indoorList[154] = _indoorList[160];
+			_indoorList[155] = _indoorList[161];
+			break;
+		default:
+			break;
+		}
+	}
+
+	animate3d();
+}
+
+void InterfaceScene::animate3d() {
+	Combat &combat = *_vm->_combat;
+	Map &map = *_vm->_map;
+	_overallFrame = (_overallFrame + 1) % 5;
+	_combatFloatCounter = (_combatFloatCounter + 1) % 8;
+
+	for (uint idx = 0; idx < map._mobData._monsters.size(); ++idx) {
+		MazeMonster &monster = map._mobData._monsters[idx];
+		if (!monster._damageType) {
+			if (monster._frame < 8) {
+				MonsterStruct &monsterData = *monster._monsterData;
+				if (!monsterData._loopAnimation) {
+					// Monster isn't specially looped, so cycle through the 8 frames
+					monster._frame = (monster._frame + 1) % 8;
+				} else if (!monster._field9) {
+					monster._frame = (monster._frame + 1) % 8;
+					if (monster._frame == 0) {
+						monster._field9 ^= 1;
+						monster._frame = 6;
+					}
+				} else {
+					if (monster._frame)
+						--monster._frame;
+					if (monster._frame == 0)
+						monster._field9 = 0;
+				}
+			} else if (monster._frame == 11) {
+				--monster._fieldA;
+				if (monster._fieldA == 0)
+					monster._frame = 0;
+			} else {
+				++monster._frame;
+				if (monster._frame == 11) {
+					--monster._frame;
+					monster._frame = monster._fieldA ? 10 : 0;
+				}
+			}
+		}
+
+		// Block 2
+		if (monster._effect2) {
+			if (monster._effect1) {
+				if (monster._effect1 & 0x80) {
+					if (monster._effect3)
+						--monster._effect3;
+					if (monster._effect3 == 0)
+						monster._effect1 ^= 0x80;
+				} else {
+					monster._effect3 = (monster._effect3 + 1) % 3;
+					if (monster._effect3 == 0) {
+						monster._effect1 ^= 0x80;
+						monster._effect3 = 2;
+					}
+				}
+			}
+		} else {
+			monster._effect3 = (monster._effect3 + 1) % 8;
+			if (monster._effect3 == 0) {
+				MonsterStruct &monsterData = *monster._monsterData;
+				monster._effect1 = monster._effect2 = monsterData._animationEffect;
+			}
+		}
+	}
+
+	DrawStruct *combatImgs1 = map._isOutdoors ? _outdoorList._attackImgs1 : _indoorList._attackImgs1;
+	DrawStruct *combatImgs2 = map._isOutdoors ? _outdoorList._attackImgs2 : _indoorList._attackImgs2;
+	DrawStruct *combatImgs3 = map._isOutdoors ? _outdoorList._attackImgs3 : _indoorList._attackImgs3;
+	DrawStruct *combatImgs4 = map._isOutdoors ? _outdoorList._attackImgs4 : _indoorList._attackImgs4;
+
+	if (combat._monstersAttacking) {
+		for (int idx = 0; idx < 8; ++idx) {
+			if (combatImgs1[idx]._sprites) {
+				combatImgs1[idx]._sprites = nullptr;
+				combat._shooting[idx] = false;
+			} else if (combatImgs2[idx]._sprites) {
+				combatImgs1[idx]._sprites = combatImgs2[idx]._sprites;
+				combatImgs2[idx]._sprites = nullptr;
+			} else if (combatImgs3[idx]._sprites) {
+				combatImgs2[idx]._sprites = combatImgs3[idx]._sprites;
+				combatImgs3[idx]._sprites = nullptr;
+			} else if (combatImgs4[idx]._sprites) {
+				combatImgs3[idx]._sprites = combatImgs4[idx]._sprites;
+				combatImgs4[idx]._sprites = nullptr;
+			}
+		}
+	} else if (_charsShooting) {
+		for (int idx = 0; idx < 8; ++idx) {
+			if (combatImgs4[idx]._sprites) {
+				combatImgs4[idx]._sprites = nullptr;
+			} else if (combatImgs3[idx]._sprites) {
+				combatImgs4[idx]._sprites = combatImgs3[idx]._sprites;
+				combatImgs3[idx]._sprites = nullptr;
+			} else if (combatImgs2[idx]._sprites) {
+				combatImgs3[idx]._sprites = combatImgs2[idx]._sprites;
+				combatImgs2[idx]._sprites = nullptr;
+			} else if (combatImgs1[idx]._sprites) {
+				combatImgs2[idx]._sprites = combatImgs1[idx]._sprites;
+				combatImgs1[idx]._sprites = nullptr;
+			}
+		}
+	}
+
+	for (uint idx = 0; idx < map._mobData._wallItems.size(); ++idx) {
+		MazeWallItem &wallItem = map._mobData._wallItems[idx];
+		wallItem._frame = (wallItem._frame + 1) % wallItem._sprites->size();
+	}
+}
+
+void InterfaceScene::setMazeBits() {
+	Common::fill(&_wo[0], &_wo[308], 0);
+
+	switch (_vm->_map->getCell(0) - 1) {
+	case 0:
+		++_wo[125];
+		break;
+	case 1:
+		++_wo[69];
+		break;
+	case 2:
+		++_wo[185];
+		break;
+	case 3:
+	case 12:
+		++_wo[105];
+		break;
+	case 4:
+	case 7:
+		++_wo[25];
+		break;
+	case 5:
+		++_wo[225];
+		break;
+	case 6:
+		++_wo[205];
+		break;
+	case 8:
+		++_wo[145];
+		break;
+	case 9:
+		++_wo[305];
+		break;
+	case 10:
+		++_wo[245];
+		break;
+	case 11:
+		++_wo[165];
+		break;
+	case 13:
+		++_wo[265];
+		break;
+	case 14:
+		++_wo[285];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(1) - 1) {
+	case 1:
+		++_wo[72];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[28];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(2) - 1) {
+	case 0:
+		++_wo[127];
+		break;
+	case 1:
+		++_wo[71];
+		break;
+	case 2:
+		++_wo[187];
+		break;
+	case 3:
+	case 12:
+		++_wo[107];
+		break;
+	case 4:
+	case 7:
+		++_wo[27];
+		break;
+	case 5:
+		++_wo[227];
+		break;
+	case 6:
+		++_wo[207];
+		break;
+	case 8:
+		++_wo[147];
+		break;
+	case 9:
+		++_wo[307];
+		break;
+	case 10:
+		++_wo[247];
+		break;
+	case 11:
+		++_wo[167];
+		break;
+	case 13:
+		++_wo[267];
+		break;
+	case 14:
+		++_wo[287];
+		break;
+	default:
+		break;
+	}
+
+	_vm->_party->handleLight();
+
+	switch (_vm->_map->getCell(3) - 1) {
+	case 1:
+		++_wo[73];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[29];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(4) - 1) {
+	case 0:
+		++_wo[126];
+		break;
+	case 1:
+		++_wo[70];
+		break;
+	case 2:
+		++_wo[186];
+		break;
+	case 3:
+	case 12:
+		++_wo[106];
+		break;
+	case 4:
+	case 7:
+		++_wo[26];
+		break;
+	case 5:
+		++_wo[226];
+		break;
+	case 6:
+		++_wo[206];
+		break;
+	case 8:
+		++_wo[146];
+		break;
+	case 9:
+		++_wo[306];
+		break;
+	case 10:
+		++_wo[246];
+		break;
+		break;
+	case 11:
+		++_wo[166];
+		break;
+	case 13:
+		++_wo[266];
+		break;
+	case 14:
+		++_wo[286];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(5) - 1) {
+	case 0:
+		++_wo[122];
+		break;
+	case 1:
+		++_wo[64];
+		break;
+	case 2:
+		++_wo[182];
+		break;
+	case 3:
+	case 12:
+		++_wo[102];
+		break;
+	case 4:
+	case 7:
+		++_wo[20];
+		break;
+	case 5:
+		++_wo[222];
+		break;
+	case 6:
+		++_wo[202];
+		break;
+	case 8:
+		++_wo[142];
+		break;
+	case 9:
+		++_wo[302];
+		break;
+	case 10:
+		++_wo[242];
+		break;
+	case 11:
+		++_wo[162];
+		break;
+	case 13:
+		++_wo[262];
+		break;
+	case 14:
+		++_wo[282];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(6) - 1) {
+	case 1:
+		++_wo[67];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[23];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(7) - 1) {
+	case 0:
+		++_wo[124];
+		break;
+	case 1:
+		++_wo[66];
+		break;
+	case 2:
+		++_wo[184];
+		break;
+	case 3:
+	case 12:
+		++_wo[104];
+		break;
+	case 4:
+	case 7:
+		++_wo[22];
+		break;
+	case 5:
+		++_wo[224];
+		break;
+	case 6:
+		++_wo[204];
+		break;
+	case 8:
+		++_wo[144];
+		break;
+	case 9:
+		++_wo[304];
+		break;
+	case 10:
+		++_wo[244];
+		break;
+	case 11:
+		++_wo[164];
+		break;
+	case 13:
+		++_wo[264];
+		break;
+	case 14:
+		++_wo[284];
+		break;
+	default:
+		break;
+	}
+
+	_thinWall = (_vm->_map->_currentWall != INVALID_CELL) && _wo[27];
+
+	switch (_vm->_map->getCell(8) - 1) {
+	case 1:
+		++_wo[68];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[24];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(9) - 1) {
+	case 0:
+		++_wo[123];
+		break;
+	case 1:
+		++_wo[65];
+		break;
+	case 2:
+		++_wo[183];
+		break;
+	case 3:
+	case 12:
+		++_wo[103];
+		break;
+	case 4:
+	case 7:
+		++_wo[21];
+		break;
+	case 5:
+		++_wo[223];
+		break;
+	case 6:
+		++_wo[203];
+		break;
+	case 8:
+		++_wo[143];
+		break;
+	case 9:
+		++_wo[303];
+		break;
+	case 10:
+		++_wo[243];
+		break;
+	case 11:
+		++_wo[163];
+		break;
+	case 13:
+		++_wo[263];
+		break;
+	case 14:
+		++_wo[283];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(10) - 1) {
+	case 0:
+		++_wo[117];
+		break;
+	case 1:
+		++_wo[55];
+		break;
+	case 2:
+		++_wo[177];
+		break;
+	case 3:
+	case 12:
+		++_wo[97];
+		break;
+	case 4:
+	case 7:
+		++_wo[11];
+		break;
+	case 5:
+		++_wo[217];
+		break;
+	case 6:
+		++_wo[197];
+		break;
+	case 8:
+		++_wo[137];
+		break;
+	case 9:
+		++_wo[297];
+		break;
+	case 10:
+		++_wo[237];
+		break;
+	case 11:
+		++_wo[157];
+		break;
+	case 13:
+		++_wo[257];
+		break;
+	case 14:
+		++_wo[277];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(11) - 1) {
+	case 1:
+		++_wo[60];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[16];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(12) - 1) {
+	case 0:
+		++_wo[118];
+		break;
+	case 1:
+		++_wo[56];
+		break;
+	case 2:
+		++_wo[178];
+		break;
+	case 3:
+	case 12:
+		++_wo[98];
+		break;
+	case 4:
+	case 7:
+		++_wo[12];
+		break;
+	case 5:
+		++_wo[218];
+		break;
+	case 6:
+		++_wo[198];
+		break;
+	case 8:
+		++_wo[138];
+		break;
+	case 9:
+		++_wo[298];
+		break;
+	case 10:
+		++_wo[238];
+		break;
+	case 11:
+		++_wo[158];
+		break;
+	case 13:
+		++_wo[258];
+		break;
+	case 14:
+		++_wo[278];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(13) - 1) {
+	case 1:
+		++_wo[61];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[17];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(14) - 1) {
+	case 0:
+		++_wo[121];
+		break;
+	case 1:
+		++_wo[59];
+		break;
+	case 2:
+		++_wo[181];
+		break;
+	case 3:
+	case 12:
+		++_wo[101];
+		break;
+	case 4:
+	case 7:
+		++_wo[15];
+		break;
+	case 5:
+		++_wo[221];
+		break;
+	case 6:
+		++_wo[201];
+		break;
+	case 8:
+		++_wo[141];
+		break;
+	case 9:
+		++_wo[301];
+		break;
+	case 10:
+		++_wo[241];
+		break;
+	case 11:
+		++_wo[161];
+		break;
+	case 13:
+		++_wo[261];
+		break;
+	case 14:
+		++_wo[281];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(15) - 1) {
+	case 1:
+		++_wo[63];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[19];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(16) - 1) {
+	case 0:
+		++_wo[120];
+		break;
+	case 1:
+		++_wo[58];
+		break;
+	case 2:
+		++_wo[180];
+		break;
+	case 3:
+	case 12:
+		++_wo[100];
+		break;
+	case 4:
+	case 7:
+		++_wo[14];
+		break;
+	case 5:
+		++_wo[220];
+		break;
+	case 6:
+		++_wo[200];
+		break;
+	case 8:
+		++_wo[140];
+		break;
+	case 9:
+		++_wo[300];
+		break;
+	case 10:
+		++_wo[240];
+		break;
+	case 11:
+		++_wo[160];
+		break;
+	case 13:
+		++_wo[260];
+		break;
+	case 14:
+		++_wo[280];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(17) - 1) {
+	case 1:
+		++_wo[62];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[18];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(18) - 1) {
+	case 0:
+		++_wo[119];
+		break;
+	case 1:
+		++_wo[57];
+		break;
+	case 2:
+		++_wo[179];
+		break;
+	case 3:
+	case 12:
+		++_wo[99];
+		break;
+	case 4:
+	case 7:
+		++_wo[13];
+		break;
+	case 5:
+		++_wo[219];
+		break;
+	case 6:
+		++_wo[199];
+		break;
+	case 8:
+		++_wo[139];
+		break;
+	case 9:
+		++_wo[299];
+		break;
+	case 10:
+		++_wo[239];
+		break;
+	case 11:
+		++_wo[159];
+		break;
+	case 13:
+		++_wo[259];
+		break;
+	case 14:
+		++_wo[279];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(19) - 1) {
+	case 0:
+		++_wo[108];
+		break;
+	case 1:
+		++_wo[78];
+		break;
+	case 2:
+		++_wo[168];
+		break;
+	case 3:
+	case 12:
+		++_wo[88];
+		break;
+	case 4:
+	case 7:
+		++_wo[34];
+		break;
+	case 5:
+		++_wo[208];
+		break;
+	case 6:
+		++_wo[188];
+		break;
+	case 8:
+		++_wo[128];
+		break;
+	case 9:
+		++_wo[288];
+		break;
+	case 10:
+		++_wo[228];
+		break;
+	case 11:
+		++_wo[148];
+		break;
+	case 13:
+		++_wo[248];
+		break;
+	case 14:
+		++_wo[268];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(20) - 1) {
+	case 1:
+		++_wo[76];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[32];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(21) - 1) {
+	case 0:
+		++_wo[109];
+		break;
+	case 1:
+		++_wo[44];
+		break;
+	case 2:
+		++_wo[169];
+		break;
+	case 3:
+	case 12:
+		++_wo[89];
+		break;
+	case 4:
+	case 7:
+		++_wo[0];
+		break;
+	case 5:
+		++_wo[209];
+		break;
+	case 6:
+		++_wo[189];
+		break;
+	case 8:
+		++_wo[129];
+		break;
+	case 9:
+		++_wo[289];
+		break;
+	case 10:
+		++_wo[229];
+		break;
+	case 11:
+		++_wo[149];
+		break;
+	case 13:
+		++_wo[249];
+		break;
+	case 14:
+		++_wo[269];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(22) - 1) {
+	case 1:
+		++_wo[74];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[30];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(23) - 1) {
+	case 0:
+		++_wo[110];
+		break;
+	case 1:
+		++_wo[45];
+		break;
+	case 2:
+		++_wo[170];
+		break;
+	case 3:
+	case 12:
+		++_wo[90];
+		break;
+	case 4:
+	case 7:
+		++_wo[1];
+		break;
+	case 5:
+		++_wo[210];
+		break;
+	case 6:
+		++_wo[190];
+		break;
+	case 8:
+		++_wo[130];
+		break;
+	case 9:
+		++_wo[290];
+		break;
+	case 10:
+		++_wo[230];
+		break;
+	case 11:
+		++_wo[150];
+		break;
+	case 13:
+		++_wo[250];
+		break;
+	case 14:
+		++_wo[270];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(24) - 1) {
+	case 1:
+		++_wo[52];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[8];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(25) - 1) {
+	case 0:
+		++_wo[111];
+		break;
+	case 1:
+		++_wo[46];
+		break;
+	case 2:
+		++_wo[171];
+		break;
+	case 3:
+	case 12:
+		++_wo[91];
+		break;
+	case 4:
+	case 7:
+		++_wo[2];
+		break;
+	case 5:
+		++_wo[211];
+		break;
+	case 6:
+		++_wo[191];
+		break;
+	case 8:
+		++_wo[131];
+		break;
+	case 9:
+		++_wo[291];
+		break;
+	case 10:
+		++_wo[231];
+		break;
+	case 11:
+		++_wo[151];
+		break;
+	case 13:
+		++_wo[251];
+		break;
+	case 14:
+		++_wo[271];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(26) - 1) {
+	case 1:
+		++_wo[51];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[7];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(27) - 1) {
+	case 0:
+		++_wo[116];
+		break;
+	case 1:
+		++_wo[50];
+		break;
+	case 2:
+		++_wo[176];
+		break;
+	case 3:
+	case 12:
+		++_wo[96];
+		break;
+	case 4:
+	case 7:
+		++_wo[6];
+		break;
+	case 5:
+		++_wo[216];
+		break;
+	case 6:
+		++_wo[196];
+		break;
+	case 8:
+		++_wo[136];
+		break;
+	case 9:
+		++_wo[296];
+		break;
+	case 10:
+		++_wo[236];
+		break;
+	case 11:
+		++_wo[156];
+		break;
+	case 13:
+		++_wo[256];
+		break;
+	case 14:
+		++_wo[276];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(28) - 1) {
+	case 1:
+		++_wo[53];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[9];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(29) - 1) {
+	case 0:
+		++_wo[115];
+		break;
+	case 1:
+		++_wo[49];
+		break;
+	case 2:
+		++_wo[175];
+		break;
+	case 3:
+	case 12:
+		++_wo[95];
+		break;
+	case 4:
+	case 7:
+		++_wo[5];
+		break;
+	case 5:
+		++_wo[215];
+		break;
+	case 6:
+		++_wo[195];
+		break;
+	case 8:
+		++_wo[135];
+		break;
+	case 9:
+		++_wo[295];
+		break;
+	case 10:
+		++_wo[235];
+		break;
+	case 11:
+		++_wo[155];
+		break;
+	case 13:
+		++_wo[255];
+		break;
+	case 14:
+		++_wo[275];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(30) - 1) {
+	case 1:
+		++_wo[54];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[10];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(31) - 1) {
+	case 0:
+		++_wo[114];
+		break;
+	case 1:
+		++_wo[48];
+		break;
+	case 2:
+		++_wo[174];
+		break;
+	case 3:
+	case 12:
+		++_wo[94];
+		break;
+	case 4:
+	case 7:
+		++_wo[4];
+		break;
+	case 5:
+		++_wo[214];
+		break;
+	case 6:
+		++_wo[194];
+		break;
+	case 8:
+		++_wo[134];
+		break;
+	case 9:
+		++_wo[294];
+		break;
+	case 10:
+		++_wo[234];
+		break;
+	case 11:
+		++_wo[154];
+		break;
+	case 13:
+		++_wo[254];
+		break;
+	case 14:
+		++_wo[274];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(32) - 1) {
+	case 1:
+		++_wo[75];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[31];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(33) - 1) {
+	case 0:
+		++_wo[112];
+		break;
+	case 1:
+		++_wo[47];
+		break;
+	case 2:
+		++_wo[172];
+		break;
+	case 3:
+	case 12:
+		++_wo[92];
+		break;
+	case 4:
+	case 7:
+		++_wo[3];
+		break;
+	case 5:
+		++_wo[212];
+		break;
+	case 6:
+		++_wo[192];
+		break;
+	case 8:
+		++_wo[132];
+		break;
+	case 9:
+		++_wo[292];
+		break;
+	case 10:
+		++_wo[232];
+		break;
+	case 11:
+		++_wo[152];
+		break;
+	case 13:
+		++_wo[252];
+		break;
+	case 14:
+		++_wo[272];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(34) - 1) {
+	case 1:
+		++_wo[77];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[33];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(35) - 1) {
+	case 0:
+		++_wo[113];
+		break;
+	case 1:
+		++_wo[79];
+		break;
+	case 2:
+		++_wo[173];
+		break;
+	case 3:
+	case 12:
+		++_wo[93];
+		break;
+	case 4:
+	case 7:
+		++_wo[35];
+		break;
+	case 5:
+		++_wo[213];
+		break;
+	case 6:
+		++_wo[193];
+		break;
+	case 8:
+		++_wo[133];
+		break;
+	case 9:
+		++_wo[293];
+		break;
+	case 10:
+		++_wo[233];
+		break;
+	case 11:
+		++_wo[153];
+		break;
+	case 13:
+		++_wo[253];
+		break;
+	case 14:
+		++_wo[273];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(36) - 1) {
+	case 1:
+		++_wo[83];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[39];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(37) - 1) {
+	case 1:
+		++_wo[82];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[38];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(38) - 1) {
+	case 1:
+		++_wo[81];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[37];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(39) - 1) {
+	case 1:
+		++_wo[80];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[36];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(40) - 1) {
+	case 1:
+		++_wo[84];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[40];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(41) - 1) {
+	case 1:
+		++_wo[85];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[41];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(42) - 1) {
+	case 1:
+		++_wo[86];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[42];
+		break;
+	default:
+		break;
+	}
+
+	switch (_vm->_map->getCell(43) - 1) {
+	case 1:
+		++_wo[87];
+		break;
+	case 0:
+	case 2:
+	case 3:
+	case 4:
+	case 5:
+	case 6:
+	case 7:
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+		++_wo[43];
+		break;
+	default:
+		break;
+	}
+}
+
+void InterfaceScene::setIndoorsMonsters() {
+	Combat &combat = *_vm->_combat;
+	Map &map = *_vm->_map;
+	Common::Point mazePos = _vm->_party->_mazePosition;
+	Direction dir = _vm->_party->_mazeDirection;
+
+	combat.clear();
+	for (uint monsterIdx = 0; monsterIdx < map._mobData._monsters.size(); ++monsterIdx) {
+		MazeMonster &monster = map._mobData._monsters[monsterIdx];
+		SpriteResource *sprites = monster._sprites;
+		int frame = monster._frame;
+
+		if (frame >= 8) {
+			sprites = monster._attackSprites;
+			frame -= 8;
+		}
+
+		// The following long sequence sets up monsters in the various positions
+		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][2]) &&
+				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][2])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[0] == -1) {
+				combat._attackMonsters[0] = monsterIdx;
+				setMonsterSprite(_indoorList[156], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[0]);
+			} else if (combat._attackMonsters[1] == -1) {
+				combat._attackMonsters[1] = monsterIdx;
+				setMonsterSprite(_indoorList[150], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[0]);
+			} else if (combat._attackMonsters[2] == -1) {
+				combat._attackMonsters[2] = monsterIdx;
+				setMonsterSprite(_indoorList[153], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[0]);
+			}
+		}
+
+		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][7]) &&
+				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][7])) {
+			monster._isAttacking = true;
+			if (!_wo[27]) {
+				if (combat._attackMonsters[3] == -1) {
+					combat._attackMonsters[3] = monsterIdx;
+					setMonsterSprite(_indoorList[132], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[1]);
+				} else if (combat._attackMonsters[4] == -1) {
+					combat._attackMonsters[4] = monsterIdx;
+					setMonsterSprite(_indoorList[130], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[1]);
+				} else if (combat._attackMonsters[2] == -1) {
+					combat._attackMonsters[5] = monsterIdx;
+					setMonsterSprite(_indoorList[131], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[1]);
+				}
+			}
+		}
+
+		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][5]) &&
+				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][5])) {
+			if (_wo[27] && _wo[25]) {
+			} else if (_wo[27] && _wo[28]) {
+			} else if (_wo[23] & _wo[25]) {
+			} else if (_wo[23] && _wo[28]) {
+			} else {
+				monster._isAttacking = true;
+
+				if (combat._attackMonsters[12] == -1) {
+					combat._attackMonsters[12] = monsterIdx;
+					setMonsterSprite(_indoorList[128], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[1]);
+				}
+			}
+		}
+
+		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][9]) &&
+				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][9])) {
+			if (_wo[27] && _wo[26]) {
+			} else if (_wo[27] && _wo[29]) {
+			} else if (_wo[24] & _wo[26]) {
+			} else if (_wo[24] && _wo[29]) {
+			} else {
+				monster._isAttacking = true;
+
+				if (combat._attackMonsters[13] == -1) {
+					combat._attackMonsters[13] = monsterIdx;
+					setMonsterSprite(_indoorList[129], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[1]);
+				}
+			}
+		}
+
+		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][14]) &&
+				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][14])) {
+			monster._isAttacking = true;
+
+			if (!_wo[22] && !_wo[27]) {
+				if (combat._attackMonsters[6] == -1) {
+					combat._attackMonsters[6] = monsterIdx;
+					setMonsterSprite(_indoorList[106], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
+				} else  if (combat._attackMonsters[7] == -1) {
+					combat._attackMonsters[7] = monsterIdx;
+					setMonsterSprite(_indoorList[104], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
+				} else if (combat._attackMonsters[8] == -1) {
+					combat._attackMonsters[8] = monsterIdx;
+					setMonsterSprite(_indoorList[105], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
+				}
+			}
+		}
+
+		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][12]) &&
+				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][12])) {
+			if (_wo[27]) {
+			} else if (_wo[22] && _wo[23]) {
+			} else if (_wo[22] & _wo[20]) {
+			} else if (_wo[23] && _wo[17]) {
+			} else {
+				monster._isAttacking = true;
+
+				if (combat._attackMonsters[14] == -1) {
+					combat._attackMonsters[14] = monsterIdx;
+					setMonsterSprite(_indoorList[100], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
+				} else if (combat._attackMonsters[20] == -1) {
+					combat._attackMonsters[20] = monsterIdx;
+					setMonsterSprite(_indoorList[101], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
+				}
+			}
+		}
+
+		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][16]) &&
+				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][16])) {
+			if (_wo[27]) {
+			} else if (_wo[22] && _wo[24]) {
+			} else if (_wo[22] & _wo[21]) {
+			} else if (_wo[24] && _wo[19]) {
+			} else if (_wo[21] && _wo[19]) {
+			} else {
+				monster._isAttacking = true;
+
+				if (combat._attackMonsters[15] == -1) {
+					combat._attackMonsters[15] = monsterIdx;
+					setMonsterSprite(_indoorList[102], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
+				} else if (combat._attackMonsters[21] == -1) {
+					combat._attackMonsters[21] = monsterIdx;
+					setMonsterSprite(_indoorList[103], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[2]);
+				}
+			}
+		}
+
+		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][27]) &&
+				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][27])) {
+			if (!_wo[27] && !_wo[22] && !_wo[15]) {
+				monster._isAttacking = true;
+
+				if (combat._attackMonsters[9] == -1) {
+					combat._attackMonsters[9] = monsterIdx;
+					setMonsterSprite(_indoorList[70], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				} else if (combat._attackMonsters[10] == -1) {
+					combat._attackMonsters[10] = monsterIdx;
+					setMonsterSprite(_indoorList[68], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				} else if (combat._attackMonsters[11] == -1) {
+					combat._attackMonsters[11] = monsterIdx;
+					setMonsterSprite(_indoorList[69], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				}
+			}
+		}
+
+		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][25]) &&
+				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][25])) {
+			if (_wo[27] || _wo[22]) {
+			} else if (_wo[15] && _wo[17]) {
+			} else if (_wo[15] && _wo[12]) {
+			} else if (_wo[12] && _wo[7]) {
+			} else if (_wo[17] && _wo[7]) {
+			} else {
+				monster._isAttacking = true;
+
+				if (combat._attackMonsters[16] == -1) {
+					combat._attackMonsters[16] = monsterIdx;
+					setMonsterSprite(_indoorList[62], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				} else if (combat._attackMonsters[22] == -1) {
+					combat._attackMonsters[22] = monsterIdx;
+					setMonsterSprite(_indoorList[60], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				} else if (combat._attackMonsters[24] == -1) {
+					combat._attackMonsters[24] = monsterIdx;
+					setMonsterSprite(_indoorList[61], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				}
+			}
+		}
+
+		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][23]) &&
+				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][23])) {
+			if (_wo[27]) {
+			} else if (_wo[22] && _wo[20]) {
+			} else if (_wo[22] && _wo[23]) {
+			} else if (_wo[20] && _wo[17]) {
+			} else if (_wo[23] && _wo[17]) {
+			} else if (_wo[12] || _wo[8]) {
+			} else {
+				monster._isAttacking = true;
+
+				if (combat._attackMonsters[18] == -1) {
+					combat._attackMonsters[18] = monsterIdx;
+					setMonsterSprite(_indoorList[66], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				}
+			}
+		}
+
+		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][29]) &&
+				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][29])) {
+			if (_wo[27] || _wo[22]) {
+			} else if (_wo[15] && _wo[19]) {
+			} else if (_wo[15] && _wo[14]) {
+			} else if (_wo[14] && _wo[9]) {
+			} else if (_wo[19] && _wo[9]) {
+			} else {
+				monster._isAttacking = true;
+
+				if (combat._attackMonsters[17] == -1) {
+					combat._attackMonsters[17] = monsterIdx;
+					setMonsterSprite(_indoorList[65], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				} else if (combat._attackMonsters[23] == -1) {
+					combat._attackMonsters[23] = monsterIdx;
+					setMonsterSprite(_indoorList[63], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				} else if (combat._attackMonsters[25] == -1) {
+					combat._attackMonsters[25] = monsterIdx;
+					setMonsterSprite(_indoorList[64], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				}
+			}
+		}
+
+		if (monster._position.x == (mazePos.x + Res.SCREEN_POSITIONING_X[dir][31]) &&
+				monster._position.y == (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][31])) {
+			if (_wo[27]) {
+			} else if (_wo[22] && _wo[21]) {
+			} else if (_wo[22] && _wo[24]) {
+			} else if (_wo[21] && _wo[19]) {
+			} else if (_wo[24] && _wo[19]) {
+			} else if (_wo[14] || _wo[10]) {
+			} else {
+				monster._isAttacking = true;
+
+				if (combat._attackMonsters[19] == -1) {
+					combat._attackMonsters[19] = monsterIdx;
+					setMonsterSprite(_indoorList[67], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				} else if (combat._attackMonsters[23] == -1) {
+					combat._attackMonsters[23] = monsterIdx;
+					setMonsterSprite(_indoorList[63], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				} else if (combat._attackMonsters[25] == -1) {
+					combat._attackMonsters[25] = monsterIdx;
+					setMonsterSprite(_indoorList[64], monster, sprites, frame, Res.INDOOR_MONSTERS_Y[3]);
+				}
+			}
+		}
+	}
+
+	_indoorList[153]._x += 58;
+	_indoorList[131]._x += 25;
+	_indoorList[105]._x += 9;
+	_indoorList[69]._x--;
+	_indoorList[61]._x -= 26;
+	_indoorList[64]._x += 23;
+	_indoorList[66]._x -= 58;
+	_indoorList[67]._x += 40;
+	_indoorList[100]._x -= 65;
+	_indoorList[101]._x -= 85;
+	_indoorList[102]._x += 49;
+	_indoorList[103]._x += 65;
+	_indoorList[128]._x -= 112;
+	_indoorList[129]._x += 98;
+
+	if (combat._attackMonsters[1] != -1 && combat._attackMonsters[2] == -1) {
+		_indoorList[156]._x += 31;
+		_indoorList[150]._x -= 36;
+	} else {
+		_indoorList[156]._x -= 5;
+		_indoorList[150]._x -= 67;
+	}
+
+	if (combat._attackMonsters[4] != -1 && combat._attackMonsters[5] == -1) {
+		_indoorList[132]._x += 8;
+		_indoorList[130]._x -= 23;
+	} else {
+		_indoorList[132]._x -= 7;
+		_indoorList[130]._x -= 38;
+	}
+
+	if (combat._attackMonsters[7] != -1 && combat._attackMonsters[8] == -1) {
+		_indoorList[104]._x -= 16;
+	} else {
+		_indoorList[106]._x -= 8;
+		_indoorList[104]._x -= 24;
+	}
+
+	if (combat._attackMonsters[10] != -1 && combat._attackMonsters[11] == -1) {
+		_indoorList[70]._x -= 5;
+		_indoorList[68]._x -= 13;
+	} else {
+		_indoorList[70]._x -= 9;
+		_indoorList[68]._x -= 17;
+	}
+
+	if (combat._attackMonsters[22] == -1 && combat._attackMonsters[24] == -1) {
+		_indoorList[62]._x -= 27;
+		_indoorList[60]._x -= 37;
+	} else {
+		_indoorList[62]._x -= 34;
+		_indoorList[60]._x -= 41;
+	}
+
+	if (combat._attackMonsters[23] != -1 && combat._attackMonsters[25] == -1) {
+		_indoorList[65]._x += 20;
+		_indoorList[63]._x -= 12;
+	} else {
+		_indoorList[65]._x += 16;
+		_indoorList[63]._x -= 16;
+	}
+}
+
+void InterfaceScene::setMonsterSprite(DrawStruct &drawStruct, MazeMonster &monster, SpriteResource *sprites,
+		int frame, int defaultY) {
+	MonsterStruct &monsterData = *monster._monsterData;
+	bool flying = monsterData._flying;
+
+	drawStruct._frame = frame;
+	drawStruct._sprites = sprites;
+	drawStruct._y = defaultY;
+
+	if (flying) {
+		drawStruct._x = Res.COMBAT_FLOAT_X[_combatFloatCounter];
+		drawStruct._y = Res.COMBAT_FLOAT_Y[_combatFloatCounter];
+	} else {
+		drawStruct._x = 0;
+	}
+
+	drawStruct._flags &= ~0xFFF;
+	if (monster._effect2)
+		drawStruct._flags = Res.MONSTER_EFFECT_FLAGS[monster._effect2][monster._effect3];
+}
+
+void InterfaceScene::setIndoorsObjects() {
+	Common::Point mazePos = _vm->_party->_mazePosition;
+	Direction dir = _vm->_party->_mazeDirection;
+	Common::Point pt;
+	_objNumber = 0;
+
+	Common::Array<MazeObject> &objects = _vm->_map->_mobData._objects;
+	for (uint idx = 0; idx < objects.size(); ++idx) {
+		MazeObject &mazeObject = objects[idx];
+
+		// Determine which half of the X/Y lists to use
+		int listOffset;
+		if (_vm->_files->_isDarkCc) {
+			listOffset = mazeObject._spriteId == 47 ? 1 : 0;
+		} else {
+			listOffset = mazeObject._spriteId == 113 ? 1 : 0;
+		}
+
+		// Position 1
+		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][2]) == mazeObject._position.x
+			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][2]) == mazeObject._position.y
+			&& _indoorList._objects0._frame == -1) {
+			_indoorList._objects0._x = Res.INDOOR_OBJECT_X[listOffset][0];
+			_indoorList._objects0._y = Res.MAP_OBJECT_Y[listOffset][0];
+			_indoorList._objects0._frame = mazeObject._frame;
+			_indoorList._objects0._sprites = mazeObject._sprites;
+			_indoorList._objects0._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (mazeObject._flipped)
+				_indoorList._objects0._flags |= SPRFLAG_HORIZ_FLIPPED;
+			_objNumber = idx;
+		}
+
+		// Position 2
+		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][7]) == mazeObject._position.x
+			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][7]) == mazeObject._position.y
+			&& !_wo[27] && _indoorList._objects1._frame == -1) {
+			_indoorList._objects1._x = Res.INDOOR_OBJECT_X[listOffset][1];
+			_indoorList._objects1._y = Res.MAP_OBJECT_Y[listOffset][1];
+			_indoorList._objects1._frame = mazeObject._frame;
+			_indoorList._objects1._sprites = mazeObject._sprites;
+			_indoorList._objects1._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (mazeObject._flipped)
+				_indoorList._objects1._flags |= SPRFLAG_HORIZ_FLIPPED;
+		}
+
+		// Position 3
+		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][5]) == mazeObject._position.x
+			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][5]) == mazeObject._position.y) {
+			if (_wo[27] && _wo[25]) {
+			} else if (_wo[27] && _wo[28]) {
+			} else if (_wo[23] && _wo[25]) {
+			} else if (_wo[23] && _wo[28]) {
+			} else if (_indoorList._objects2._frame == -1) {
+				_indoorList._objects2._x = Res.INDOOR_OBJECT_X[listOffset][2];
+				_indoorList._objects2._y = Res.MAP_OBJECT_Y[listOffset][2];
+				_indoorList._objects2._frame = mazeObject._frame;
+				_indoorList._objects2._sprites = mazeObject._sprites;
+				_indoorList._objects2._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+				if (mazeObject._flipped)
+					_indoorList._objects2._flags |= SPRFLAG_HORIZ_FLIPPED;
+			}
+		}
+
+		// Position 4
+		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][9]) == mazeObject._position.x
+			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][9]) == mazeObject._position.y) {
+			if (_wo[27] && _wo[26]) {
+			} else if (_wo[27] && _wo[29]) {
+			} else if (_wo[24] && _wo[26]) {
+			} else if (_wo[24] && _wo[29]) {
+			} else if (_indoorList._objects3._frame == -1) {
+				_indoorList._objects3._x = Res.INDOOR_OBJECT_X[listOffset][3];
+				_indoorList._objects3._y = Res.MAP_OBJECT_Y[listOffset][3];
+				_indoorList._objects3._frame = mazeObject._frame;
+				_indoorList._objects3._sprites = mazeObject._sprites;
+				_indoorList._objects3._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+				if (mazeObject._flipped)
+					_indoorList._objects3._flags |= SPRFLAG_HORIZ_FLIPPED;
+			}
+		}
+
+		// Position 5
+		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][14]) == mazeObject._position.x
+			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][14]) == mazeObject._position.y) {
+			if (!_wo[22] && !_wo[27] && _indoorList._objects4._frame == -1) {
+				_indoorList._objects4._x = Res.INDOOR_OBJECT_X[listOffset][4];
+				_indoorList._objects4._y = Res.MAP_OBJECT_Y[listOffset][4];
+				_indoorList._objects4._frame = mazeObject._frame;
+				_indoorList._objects4._sprites = mazeObject._sprites;
+				_indoorList._objects4._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+				if (mazeObject._flipped)
+					_indoorList._objects4._flags |= SPRFLAG_HORIZ_FLIPPED;
+			}
+		}
+
+		// Position 6
+		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][12]) == mazeObject._position.x
+			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][12]) == mazeObject._position.y) {
+			if (_wo[27]) {
+			} else if (_wo[22] && _wo[23]) {
+			} else if (_wo[22] && _wo[20]) {
+			} else if (_wo[23] && _wo[17]) {
+			} else if (_wo[20] && _wo[17]) {
+			} else if (_indoorList._objects5._frame == -1) {
+				_indoorList._objects5._x = Res.INDOOR_OBJECT_X[listOffset][5];
+				_indoorList._objects5._y = Res.MAP_OBJECT_Y[listOffset][5];
+				_indoorList._objects5._frame = mazeObject._frame;
+				_indoorList._objects5._sprites = mazeObject._sprites;
+				_indoorList._objects5._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+				if (mazeObject._flipped)
+					_indoorList._objects5._flags |= SPRFLAG_HORIZ_FLIPPED;
+			}
+		}
+
+		// Position 7
+		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][16]) == mazeObject._position.x
+			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][16]) == mazeObject._position.y) {
+			if (_wo[27]) {
+			} else if (_wo[22] && _wo[24]) {
+			} else if (_wo[22] && _wo[21]) {
+			} else if (_wo[24] && _wo[19]) {
+			} else if (_wo[21] && _wo[19]) {
+			} else if (_indoorList._objects6._frame == -1) {
+				_indoorList._objects6._x = Res.INDOOR_OBJECT_X[listOffset][6];
+				_indoorList._objects6._y = Res.MAP_OBJECT_Y[listOffset][6];
+				_indoorList._objects6._frame = mazeObject._frame;
+				_indoorList._objects6._sprites = mazeObject._sprites;
+				_indoorList._objects6._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+				if (mazeObject._flipped)
+					_indoorList._objects6._flags |= SPRFLAG_HORIZ_FLIPPED;
+			}
+		}
+
+		// Position 8
+		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][27]) == mazeObject._position.x
+			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][27]) == mazeObject._position.y) {
+			if (!_wo[27] && !_wo[22] && !_wo[15] && _indoorList._objects7._frame == -1) {
+				_indoorList._objects7._x = Res.INDOOR_OBJECT_X[listOffset][7];
+				_indoorList._objects7._y = Res.MAP_OBJECT_Y[listOffset][7];
+				_indoorList._objects7._frame = mazeObject._frame;
+				_indoorList._objects7._sprites = mazeObject._sprites;
+				_indoorList._objects7._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+				if (mazeObject._flipped)
+					_indoorList._objects7._flags |= SPRFLAG_HORIZ_FLIPPED;
+			}
+		}
+
+		// Position 9
+		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][25]) == mazeObject._position.x
+			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][25]) == mazeObject._position.y) {
+			if (_wo[27] || _wo[22]) {
+			} else if (_wo[15] && _wo[17]) {
+			} else if (_wo[15] && _wo[12]) {
+			} else if (_wo[12] && _wo[7]) {
+			} else if (_wo[17] && _wo[7]) {
+			} else if (_indoorList._objects8._frame == -1) {
+				_indoorList._objects8._x = Res.INDOOR_OBJECT_X[listOffset][8];
+				_indoorList._objects8._y = Res.MAP_OBJECT_Y[listOffset][8];
+				_indoorList._objects8._frame = mazeObject._frame;
+				_indoorList._objects8._sprites = mazeObject._sprites;
+				_indoorList._objects8._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+				if (mazeObject._flipped)
+					_indoorList._objects8._flags |= SPRFLAG_HORIZ_FLIPPED;
+			}
+		}
+
+		// Position 10
+		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][23]) == mazeObject._position.x
+			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][23]) == mazeObject._position.y) {
+			if (_wo[27]) {
+			} else if (_wo[22] && _wo[20]) {
+			} else if (_wo[22] && _wo[23]) {
+			} else if (_wo[20] && _wo[17]) {
+			} else if (_wo[23] && _wo[17]) {
+			} else if (!_wo[12] && !_wo[8] && _indoorList._objects9._frame == -1) {
+				_indoorList._objects9._x = Res.INDOOR_OBJECT_X[listOffset][10];
+				_indoorList._objects9._y = Res.MAP_OBJECT_Y[listOffset][10];
+				_indoorList._objects9._frame = mazeObject._frame;
+				_indoorList._objects9._sprites = mazeObject._sprites;
+				_indoorList._objects9._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+				if (mazeObject._flipped)
+					_indoorList._objects9._flags |= SPRFLAG_HORIZ_FLIPPED;
+			}
+		}
+
+		// Block 11
+		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][29]) == mazeObject._position.x
+			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][29]) == mazeObject._position.y) {
+			if (_wo[27]) {
+			} else if (_wo[15] && _wo[19]) {
+			} else if (_wo[15] && _wo[14]) {
+			} else if (_wo[14] && _wo[9]) {
+			} else if (_wo[19] && _wo[9]) {
+			} else if (_indoorList._objects10._frame == -1) {
+				_indoorList._objects10._x = Res.INDOOR_OBJECT_X[listOffset][9];
+				_indoorList._objects10._y = Res.MAP_OBJECT_Y[listOffset][9];
+				_indoorList._objects10._frame = mazeObject._frame;
+				_indoorList._objects10._sprites = mazeObject._sprites;
+				_indoorList._objects10._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+				if (mazeObject._flipped)
+					_indoorList._objects10._flags |= SPRFLAG_HORIZ_FLIPPED;
+			}
+		}
+
+		// Block 12
+		if ((mazePos.x + Res.SCREEN_POSITIONING_X[dir][31]) == mazeObject._position.x
+			&& (mazePos.y + Res.SCREEN_POSITIONING_Y[dir][31]) == mazeObject._position.y) {
+			if (_wo[27]) {
+			} else if (_wo[22] && _wo[21]) {
+			} else if (_wo[22] && _wo[24]) {
+			} else if (_wo[21] && _wo[19]) {
+			} else if (_wo[24] && _wo[19]) {
+			} else if (!_wo[14] && !_wo[10] && _indoorList._objects11._frame == -1) {
+				_indoorList._objects11._x = Res.INDOOR_OBJECT_X[listOffset][11];
+				_indoorList._objects11._y = Res.MAP_OBJECT_Y[listOffset][11];
+				_indoorList._objects11._frame = mazeObject._frame;
+				_indoorList._objects11._sprites = mazeObject._sprites;
+				_indoorList._objects11._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+				if (mazeObject._flipped)
+					_indoorList._objects11._flags |= SPRFLAG_HORIZ_FLIPPED;
+			}
+		}
+	}
+}
+
+void InterfaceScene::setIndoorsWallPics() {
+	Map &map = *_vm->_map;
+	const Common::Point &mazePos = _vm->_party->_mazePosition;
+	Direction dir = _vm->_party->_mazeDirection;
+
+	Common::fill(&_wp[0], &_wp[20], -1);
+
+	for (uint idx = 0; idx < map._mobData._wallItems.size(); ++idx) {
+		MazeWallItem &wallItem = map._mobData._wallItems[idx];
+		if (wallItem._direction != dir)
+			continue;
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][2]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][2])) {
+			if (_wp[1] == -1) {
+				_indoorList[148]._frame = wallItem._frame;
+				_indoorList[148]._sprites = wallItem._sprites;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][7]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][7])) {
+			if (!_wo[27] && _wp[1] == -1) {
+				_indoorList[123]._frame = wallItem._frame;
+				_indoorList[123]._sprites = wallItem._sprites;
+				_wp[4] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][5]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][5])) {
+			if (_wo[27] && _wo[25]) {
+			} else if (_wo[27] && _wo[28]) {
+			} else if (_wo[23] && _wo[25]) {
+			} else if (_wo[23] && _wo[28]) {
+			} else if (_wp[3] == -1) {
+				_indoorList[122]._frame = wallItem._frame;
+				_indoorList[122]._sprites = wallItem._sprites;
+				_wp[3] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][9]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][9])) {
+			if (_wo[27] && _wo[26]) {
+			} else if (_wo[27] && _wo[29]) {
+			} else if (_wo[24] && _wo[26]) {
+			} else if (_wo[24] && _wo[29]) {
+			} else if (_wp[5] == -1) {
+				_indoorList[124]._frame = wallItem._frame;
+				_indoorList[124]._sprites = wallItem._sprites;
+				_wp[5] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][14]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][14])) {
+			if (!_wo[22] && !_wo[27] && !_wp[8]) {
+				_indoorList[94]._frame = wallItem._frame;
+				_indoorList[94]._sprites = wallItem._sprites;
+				_wp[8] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][12]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][12])) {
+			if (_wo[27]) {
+			} else if (_wo[22] && _wo[23]) {
+			} else if (_wo[22] && _wo[20]) {
+			} else if (_wo[23] && _wo[17]) {
+			} else if (_wo[20] && _wo[17]) {
+			} else if (_wp[7] == -1) {
+				_indoorList[93]._frame = wallItem._frame;
+				_indoorList[93]._sprites = wallItem._sprites;
+				_wp[7] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][16]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][16])) {
+			if (_wo[27]) {
+			} else if (_wo[22] && _wo[24]) {
+			} else if (_wo[22] && _wo[21]) {
+			} else if (_wo[24] && _wo[19]) {
+			} else if (_wo[21] && _wo[19]) {
+			} else if (_wp[9] == -1) {
+				_indoorList[95]._frame = wallItem._frame;
+				_indoorList[95]._sprites = wallItem._sprites;
+				_wp[9] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][12]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][12])) {
+			if (_wo[27]) {
+			} else if (_wo[25] && _wo[28]) {
+			} else if (_wo[20] && _wo[16]) {
+			} else if (_wp[6] == -1) {
+				_indoorList[92]._frame = wallItem._frame;
+				_indoorList[92]._sprites = wallItem._sprites;
+				_wp[6] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][16]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][16])) {
+			if (!_wo[26] && !_wo[29] && !_wo[21] && !_wo[18] && _wp[10] == -1) {
+				_indoorList[96]._frame = wallItem._frame;
+				_indoorList[96]._sprites = wallItem._sprites;
+				_wp[10] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][27]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][27])) {
+			if (!_wo[27] && !_wo[22] && !_wo[15] && _wp[15] == -1) {
+				_indoorList[50]._frame = wallItem._frame;
+				_indoorList[50]._sprites = wallItem._sprites;
+				_wp[15] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][25]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][25])) {
+			if (_wo[27]) {
+			} else if (_wo[27] && _wo[22]) {
+			} else if (_wo[15] && _wo[17]) {
+			} else if (_wo[15] && _wo[12]) {
+			} else if (_wo[12] && _wo[7]) {
+			} else if (_wo[17] && _wo[7]) {
+			} else if (_wp[14] == -1) {
+				_indoorList[49]._frame = wallItem._frame;
+				_indoorList[49]._sprites = wallItem._sprites;
+				_wp[14] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][23]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][23])) {
+			if (_wo[27]) {
+			} else if (_wo[22] && _wo[20]) {
+			} else if (_wo[22] && _wo[23]) {
+			} else if (_wo[20] && _wo[17]) {
+			} else if (_wo[23] && _wo[17]) {
+			} else if (_wo[12] && _wo[8]) {
+			} else if (_wp[13] == -1) {
+				_indoorList[48]._frame = wallItem._frame;
+				_indoorList[48]._sprites = wallItem._sprites;
+				_wp[13] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][29]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][29])) {
+			if (_wo[27] || _wo[22]) {
+			} else if (_wo[15] && _wo[19]) {
+			} else if (_wo[15] && _wo[14]) {
+			} else if (_wo[14] && _wo[9]) {
+			} else if (_wo[19] && _wo[9]) {
+			} else if (_wp[16] == -1) {
+				_indoorList[51]._frame = wallItem._frame;
+				_indoorList[51]._sprites = wallItem._sprites;
+				_wp[16] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][31]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][31])) {
+			if (_wo[27]) {
+			} else if (_wo[22] && _wo[21]) {
+			} else if (_wo[22] && _wo[24]) {
+			} else if (_wo[21] && _wo[19]) {
+			} else if (_wo[24] && _wo[19]) {
+			} else if (!_wo[14] && !_wo[10] && _wp[17] == -1) {
+				_indoorList[52]._frame = wallItem._frame;
+				_indoorList[52]._sprites = wallItem._sprites;
+				_wp[17] = idx;
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][23]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][23])) {
+			if (!_wo[27] && !_wo[20] && !_wo[12] && !_wo[23] && !_wo[8] && !_wo[30]) {
+				if (_wp[12] == -1) {
+					_indoorList[47]._frame = wallItem._frame;
+					_indoorList[47]._sprites = wallItem._sprites;
+					_wp[12] = idx;
+				}
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][31]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][31])) {
+			if (!_wo[27] && !_wo[21] && !_wo[14] && !_wo[24] && !_wo[10] && !_wo[31]) {
+				if (_wp[18] == -1) {
+					_indoorList[53]._frame = wallItem._frame;
+					_indoorList[53]._sprites = wallItem._sprites;
+					_wp[18] = idx;
+				}
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][23]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][23])) {
+			if (!_wo[25] && !_wo[28] && !_wo[20] && !_wo[11] && !_wo[16] && !_wo[30] && !_wo[32]) {
+				if (_wp[11] == -1) {
+					_indoorList[46]._frame = wallItem._frame;
+					_indoorList[46]._sprites = wallItem._sprites;
+					_wp[11] = idx;
+				}
+			}
+		}
+
+		if (mazePos.x == (wallItem._position.x + Res.SCREEN_POSITIONING_X[dir][31]) &&
+				mazePos.y == (wallItem._position.y + Res.SCREEN_POSITIONING_Y[dir][31])) {
+			if (!_wo[26] && !_wo[20] && !_wo[21] && !_wo[13] && !_wo[18] && !_wo[31] && !_wo[33]) {
+				if (_wp[19] == -1) {
+					_indoorList[54]._frame = wallItem._frame;
+					_indoorList[54]._sprites = wallItem._sprites;
+					_wp[19] = idx;
+				}
+			}
+		}
+	}
+}
+
+void InterfaceScene::setOutdoorsMonsters() {
+	Combat &combat = *_vm->_combat;
+	Map &map = *_vm->_map;
+	Party &party = *_vm->_party;
+	Direction dir = party._mazeDirection;
+	Common::Point pt = party._mazePosition;
+
+	for (uint idx = 0; idx < map._mobData._monsters.size(); ++idx) {
+		MazeMonster &monster = map._mobData._monsters[idx];
+
+		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][2]) &&
+				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][2])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[0] == -1) {
+				_outdoorList[118]._frame = idx;
+				combat._attackMonsters[0] = idx;
+			} else if (combat._attackMonsters[1] == -1) {
+				_outdoorList[112]._frame = idx;
+				combat._attackMonsters[1] = idx;
+			} else if (combat._attackMonsters[2] == -1) {
+				_outdoorList[115]._frame = idx;
+				combat._attackMonsters[2] = idx;
+			}
+		}
+
+		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][7]) &&
+				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][7])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[3] == -1) {
+				_outdoorList[94]._frame = idx;
+				combat._attackMonsters[3] = idx;
+			} else if (combat._attackMonsters[4] == -1) {
+				_outdoorList[92]._frame = idx;
+				combat._attackMonsters[4] = idx;
+			} else if (combat._attackMonsters[5] == -1) {
+				_outdoorList[93]._frame = idx;
+				combat._attackMonsters[5] = idx;
+			}
+		}
+
+		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][5]) &&
+				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][5])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[12] == -1) {
+				_outdoorList[90]._frame = idx;
+				combat._attackMonsters[12] = idx;
+			}
+		}
+
+		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][9]) &&
+				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][9])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[13] == -1) {
+				_outdoorList[91]._frame = idx;
+				combat._attackMonsters[13] = idx;
+			}
+		}
+
+		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][14]) &&
+				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][14])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[6] == -1) {
+				_outdoorList[75]._frame = idx;
+				combat._attackMonsters[6] = idx;
+			} else if (combat._attackMonsters[7] == -1) {
+				_outdoorList[73]._frame = idx;
+				combat._attackMonsters[7] = idx;
+			} else if (combat._attackMonsters[8] == -1) {
+				_outdoorList[74]._frame = idx;
+				combat._attackMonsters[8] = idx;
+			}
+		}
+
+		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][12]) &&
+				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][12])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[14] == -1) {
+				_outdoorList[69]._frame = idx;
+				combat._attackMonsters[14] = idx;
+			} else if (combat._attackMonsters[20] == -1) {
+				_outdoorList[70]._frame = idx;
+				combat._attackMonsters[20] = idx;
+			}
+		}
+
+		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][16]) &&
+				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][16])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[15] == -1) {
+				_outdoorList[71]._frame = idx;
+				combat._attackMonsters[15] = idx;
+			} else if (combat._attackMonsters[21] == -1) {
+				_outdoorList[72]._frame = idx;
+				combat._attackMonsters[21] = idx;
+			}
+		}
+
+		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][27]) &&
+				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][27])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[9] == -1) {
+				_outdoorList[52]._frame = idx;
+				combat._attackMonsters[9] = idx;
+			} else if (combat._attackMonsters[10] == -1) {
+				_outdoorList[50]._frame = idx;
+				combat._attackMonsters[10] = idx;
+			} else if (combat._attackMonsters[11] == -1) {
+				_outdoorList[51]._frame = idx;
+				combat._attackMonsters[11] = idx;
+			}
+		}
+
+		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][25]) &&
+				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][25])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[16] == -1) {
+				_outdoorList[44]._frame = idx;
+				combat._attackMonsters[16] = idx;
+			} else if (combat._attackMonsters[22] == -1) {
+				_outdoorList[42]._frame = idx;
+				combat._attackMonsters[22] = idx;
+			} else if (combat._attackMonsters[24] == -1) {
+				_outdoorList[43]._frame = idx;
+				combat._attackMonsters[24] = idx;
+			}
+		}
+
+		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][23]) &&
+				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][23])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[18] == -1) {
+				_outdoorList[48]._frame = idx;
+				combat._attackMonsters[18] = idx;
+			}
+		}
+
+		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][29]) &&
+				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][29])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[17] == -1) {
+				_outdoorList[47]._frame = idx;
+				combat._attackMonsters[17] = idx;
+			} else if (combat._attackMonsters[23] == -1) {
+				_outdoorList[45]._frame = idx;
+				combat._attackMonsters[23] = idx;
+			} else if (combat._attackMonsters[25] == -1) {
+				_outdoorList[46]._frame = idx;
+				combat._attackMonsters[25] = idx;
+			}
+		}
+
+		if (monster._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][31]) &&
+				monster._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][31])) {
+			monster._isAttacking = true;
+			if (combat._attackMonsters[19] == -1) {
+				_outdoorList[49]._frame = idx;
+				combat._attackMonsters[19] = idx;
+			}
+		}
+	}
+
+	_outdoorList[115]._x = 58;
+	_outdoorList[93]._x = 25;
+	_outdoorList[74]._x = 9;
+	_outdoorList[51]._x = -1;
+	_outdoorList[43]._x = -26;
+	_outdoorList[46]._x = 23;
+	_outdoorList[48]._x = -58;
+	_outdoorList[49]._x = 40;
+	_outdoorList[69]._x = -65;
+	_outdoorList[70]._x = -85;
+	_outdoorList[71]._x = 49;
+	_outdoorList[72]._x = 65;
+	_outdoorList[90]._x = -112;
+	_outdoorList[91]._x = 98;
+
+	if (combat._attackMonsters[1] != -1 && combat._attackMonsters[2] == -1) {
+		_outdoorList[118]._x = 31;
+		_outdoorList[112]._x = -36;
+	} else {
+		_outdoorList[118]._x = -5;
+		_outdoorList[112]._x = -67;
+	}
+	if (combat._attackMonsters[4] != -1 && combat._attackMonsters[5] == -1) {
+		_outdoorList[94]._x = 8;
+		_outdoorList[92]._x = -23;
+	} else {
+		_outdoorList[94]._x = -7;
+		_outdoorList[92]._x = -38;
+	}
+	if (combat._attackMonsters[7] != -1 && combat._attackMonsters[8] == -1) {
+		_outdoorList[75]._x = 0;
+		_outdoorList[73]._x = -16;
+	} else {
+		_outdoorList[75]._x = -8;
+		_outdoorList[73]._x = -24;
+	}
+	if (combat._attackMonsters[10] != -1 && combat._attackMonsters[11] == -1) {
+		_outdoorList[52]._x = -5;
+		_outdoorList[50]._x = -13;
+	} else {
+		_outdoorList[52]._x = -9;
+		_outdoorList[50]._x = -17;
+	}
+	if (combat._attackMonsters[22] != -1 && combat._attackMonsters[24] == -1) {
+		_outdoorList[44]._x = -27;
+		_outdoorList[42]._x = -37;
+	} else {
+		_outdoorList[44]._x = -34;
+		_outdoorList[42]._x = -41;
+	}
+	if (combat._attackMonsters[23] != -1 && combat._attackMonsters[25] == -1) {
+		_outdoorList[47]._x = 20;
+		_outdoorList[45]._x = -12;
+	} else {
+		_outdoorList[47]._x = 16;
+		_outdoorList[45]._x = -16;
+	}
+
+	for (int idx = 0; idx < 26; ++idx) {
+		DrawStruct &ds = _outdoorList[Res.OUTDOOR_MONSTER_INDEXES[idx]];
+
+		if (ds._frame != -1) {
+			ds._flags &= ~0xfff;
+
+			// TODO: Double-check.. this section looks *weird*
+			MazeMonster &monster = map._mobData._monsters[ds._frame];
+			MonsterStruct &monsterData = *monster._monsterData;
+
+			ds._frame = monster._frame;
+
+			if (monster._effect2) {
+				ds._flags = Res.MONSTER_EFFECT_FLAGS[monster._effect2 - 1][monster._effect3];
+			}
+
+			if (monster._frame > 7) {
+				monster._frame -= 8;
+				ds._sprites = monster._attackSprites;
+			} else {
+				ds._sprites = monster._sprites;
+			}
+
+			ds._y = Res.OUTDOOR_MONSTERS_Y[idx];
+
+			if (monsterData._flying) {
+				ds._x += Res.COMBAT_FLOAT_X[_combatFloatCounter];
+				ds._y += Res.COMBAT_FLOAT_Y[_combatFloatCounter];
+			}
+		}
+	}
+	// TODO
+}
+
+void InterfaceScene::setOutdoorsObjects() {
+	Map &map = *_vm->_map;
+	Party &party = *_vm->_party;
+	const Common::Point &pt = party._mazePosition;
+	Direction dir = party._mazeDirection;
+	int posIndex;
+
+	for (uint idx = 0; idx < map._mobData._objects.size(); ++idx) {
+		MazeObject &obj = map._mobData._objects[idx];
+
+		if (_vm->_files->_isDarkCc) {
+			posIndex = obj._spriteId == 47 ? 1 : 0;
+		} else {
+			posIndex = obj._spriteId == 113 ? 1 : 0;
+		}
+
+		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][2]) &&
+				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][2]) &&
+				_outdoorList[111]._frame == -1) {
+			DrawStruct &ds = _outdoorList[111];
+			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][0];
+			ds._y = Res.MAP_OBJECT_Y[posIndex][0];
+			ds._frame = obj._frame;
+			ds._sprites = obj._sprites;
+
+			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (obj._flipped)
+				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
+			_objNumber = idx;
+		}
+
+		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][7]) &&
+				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][7]) &&
+				_outdoorList[87]._frame == -1) {
+			DrawStruct &ds = _outdoorList[87];
+			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][1];
+			ds._y = Res.MAP_OBJECT_Y[posIndex][1];
+			ds._frame = obj._frame;
+			ds._sprites = obj._sprites;
+
+			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (obj._flipped)
+				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
+		}
+
+		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][5]) &&
+				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][5]) &&
+				_outdoorList[88]._frame == -1) {
+			DrawStruct &ds = _outdoorList[88];
+			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][2];
+			ds._y = Res.MAP_OBJECT_Y[posIndex][2];
+			ds._frame = obj._frame;
+			ds._sprites = obj._sprites;
+
+			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (obj._flipped)
+				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
+		}
+
+		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][9]) &&
+				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][9]) &&
+				_outdoorList[89]._frame == -1) {
+			DrawStruct &ds = _outdoorList[89];
+			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][3];
+			ds._y = Res.MAP_OBJECT_Y[posIndex][3];
+			ds._frame = obj._frame;
+			ds._sprites = obj._sprites;
+
+			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (obj._flipped)
+				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
+		}
+
+		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][14]) &&
+				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][14]) &&
+				_outdoorList[66]._frame == -1) {
+			DrawStruct &ds = _outdoorList[66];
+			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][4];
+			ds._y = Res.MAP_OBJECT_Y[posIndex][4];
+			ds._frame = obj._frame;
+			ds._sprites = obj._sprites;
+
+			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (obj._flipped)
+				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
+		}
+
+		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][12]) &&
+				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][12]) &&
+				_outdoorList[67]._frame == -1) {
+			DrawStruct &ds = _outdoorList[67];
+			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][5];
+			ds._y = Res.MAP_OBJECT_Y[posIndex][5];
+			ds._frame = obj._frame;
+			ds._sprites = obj._sprites;
+
+			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (obj._flipped)
+				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
+		}
+
+		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][16]) &&
+				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][16]) &&
+				_outdoorList[68]._frame == -1) {
+			DrawStruct &ds = _outdoorList[68];
+			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][6];
+			ds._y = Res.MAP_OBJECT_Y[posIndex][6];
+			ds._frame = obj._frame;
+			ds._sprites = obj._sprites;
+
+			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (obj._flipped)
+				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
+		}
+
+		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][27]) &&
+				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][27]) &&
+				_outdoorList[37]._frame == -1) {
+			DrawStruct &ds = _outdoorList[37];
+			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][7];
+			ds._y = Res.MAP_OBJECT_Y[posIndex][7];
+			ds._frame = obj._frame;
+			ds._sprites = obj._sprites;
+
+			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (obj._flipped)
+				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
+		}
+
+		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][25]) &&
+				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][25]) &&
+				_outdoorList[38]._frame == -1) {
+			DrawStruct &ds = _outdoorList[38];
+			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][8];
+			ds._y = Res.MAP_OBJECT_Y[posIndex][8];
+			ds._frame = obj._frame;
+			ds._sprites = obj._sprites;
+
+			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (obj._flipped)
+				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
+		}
+
+		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][23]) &&
+				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][23]) &&
+				_outdoorList[40]._frame == -1) {
+			DrawStruct &ds = _outdoorList[40];
+			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][10];
+			ds._y = Res.MAP_OBJECT_Y[posIndex][10];
+			ds._frame = obj._frame;
+			ds._sprites = obj._sprites;
+
+			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (obj._flipped)
+				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
+		}
+
+		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][29]) &&
+				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][29]) &&
+				_outdoorList[39]._frame == -1) {
+			DrawStruct &ds = _outdoorList[39];
+			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][9];
+			ds._y = Res.MAP_OBJECT_Y[posIndex][9];
+			ds._frame = obj._frame;
+			ds._sprites = obj._sprites;
+
+			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (obj._flipped)
+				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
+		}
+
+		if (obj._position.x == (pt.x + Res.SCREEN_POSITIONING_X[dir][31]) &&
+				obj._position.y == (pt.y + Res.SCREEN_POSITIONING_Y[dir][31]) &&
+				_outdoorList[41]._frame == -1) {
+			DrawStruct &ds = _outdoorList[41];
+			ds._x = Res.OUTDOOR_OBJECT_X[posIndex][11];
+			ds._y = Res.MAP_OBJECT_Y[posIndex][11];
+			ds._frame = obj._frame;
+			ds._sprites = obj._sprites;
+
+			ds._flags &= ~SPRFLAG_HORIZ_FLIPPED;
+			if (obj._flipped)
+				ds._flags |= SPRFLAG_HORIZ_FLIPPED;
+		}
+	}
+}
+
+void InterfaceScene::drawIndoors() {
+	Map &map = *_vm->_map;
+	Windows &windows = *_vm->_windows;
+	int surfaceId;
+
+	// Draw any surface tiles on top of the default ground
+	for (int cellIndex = 0; cellIndex < 25; ++cellIndex) {
+		map.getCell(Res.DRAW_NUMBERS[cellIndex]);
+
+		DrawStruct &drawStruct = _indoorList._groundTiles[cellIndex];
+		SpriteResource &sprites = map._surfaceSprites[map._currentSurfaceId];
+		drawStruct._sprites = sprites.empty() ? (SpriteResource *)nullptr : &sprites;
+
+		surfaceId = map.mazeData()._surfaceTypes[map._currentSurfaceId];
+		if (surfaceId == SURFTYPE_WATER || surfaceId == SURFTYPE_LAVA ||
+				surfaceId == SURFTYPE_SEWER) {
+			drawStruct._frame = Res.DRAW_FRAMES[cellIndex][_flipWater ? 1 : 0];
+			drawStruct._flags = _flipWater ? SPRFLAG_HORIZ_FLIPPED : 0;
+		} else {
+			drawStruct._frame = Res.DRAW_FRAMES[cellIndex][_flipGround ? 1 : 0];
+			drawStruct._flags = _flipGround ? SPRFLAG_HORIZ_FLIPPED : 0;
+		}
+	}
+
+	if (!_wo[27] && !_wo[20] && !_wo[23] && !_wo[12] && !_wo[8] && !_wo[30]) {
+		if (_wo[39])
+			_indoorList._swl_4F4L._frame = 22;
+		else if (_wo[83])
+			_indoorList._swl_4F4L._frame = 46;
+	}
+
+	if (!_wo[27] && !_wo[22] && !_wo[17] && !_wo[12] && !_wo[8]) {
+		if (_wo[38])
+			_indoorList._swl_4F3L._frame = 20;
+		else if (_wo[82])
+			_indoorList._swl_4F3L._frame = 44;
+	}
+
+	if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[2] && !_wo[7]) {
+		if (_wo[37])
+			_indoorList._swl_4F2L._frame = 18;
+		else if (_wo[81])
+			_indoorList._swl_4F2L._frame = 42;
+	}
+
+	if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[6]) {
+		if (_wo[36])
+			_indoorList._swl_4F1L._frame = 16;
+		else if (_wo[80])
+			_indoorList._swl_4F1L._frame = 40;
+	}
+
+	if (!_wo[27] && !_wo[21] && !_wo[24] && !_wo[14] && !_wo[10] && !_wo[31]) {
+		if (_wo[43])
+			_indoorList._swl_4F4R._frame = 23;
+		else if (_wo[87])
+			_indoorList._swl_4F4R._frame = 47;
+	}
+
+	if (!_wo[27] && !_wo[22] && !_wo[19] && !_wo[14] && !_wo[10]) {
+		if (_wo[42])
+			_indoorList._swl_4F3R._frame = 21;
+		else if (_wo[86])
+			_indoorList._swl_4F3R._frame = 45;
+	}
+
+	if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[5] && !_wo[9]) {
+		if (_wo[41])
+			_indoorList._swl_4F2R._frame = 19;
+		else if (_wo[85])
+			_indoorList._swl_4F2R._frame = 43;
+	}
+
+	if (!_wo[27] && !_wo[22] && !_wo[15] && !_wo[6]) {
+		if (_wo[40])
+			_indoorList._swl_4F1R._frame = 17;
+		else if (_wo[84])
+			_indoorList._swl_4F1R._frame = 41;
+	}
+
+	if (!_wo[25] && !_wo[28] && !_wo[20] && !_wo[11] &&
+		!_wo[16] && !_wo[30] && !_wo[32]) {
+		if (_wo[88])
+			_indoorList._fwl_4F4L._frame = 7;
+		else if (_wo[78])
+			_indoorList._fwl_4F4L._frame = 16;
+		else if (_wo[148])
+			_indoorList._fwl_4F4L._frame = _overallFrame + 1;
+		else if (_wo[108])
+			_indoorList._fwl_4F4L._frame = 8;
+		else if (_wo[168])
+			_indoorList._fwl_4F4L._frame = 10;
+		else if (_wo[128])
+			_indoorList._fwl_4F4L._frame = 9;
+		else if (_wo[34])
+			_indoorList._fwl_4F4L._frame = 0;
+		else if (_wo[188])
+			_indoorList._fwl_4F4L._frame = 15;
+		else if (_wo[208])
+			_indoorList._fwl_4F4L._frame = 14;
+		else if (_wo[228])
+			_indoorList._fwl_4F4L._frame = 6;
+		else if (_wo[248])
+			_indoorList._fwl_4F4L._frame = 11;
+		else if (_wo[268])
+			_indoorList._fwl_4F4L._frame = 12;
+		else if (_wo[288])
+			_indoorList._fwl_4F4L._frame = 13;
+	}
+
+	if (!_wo[26] && !_wo[29] && !_wo[21] && !_wo[13] && !_wo[18] && !_wo[31] && !_wo[33]) {
+		if (_wo[93])
+			_indoorList._fwl_4F4R._frame = 7;
+		else if (_wo[79])
+			_indoorList._fwl_4F4R._frame = 16;
+		else if (_wo[153])
+			_indoorList._fwl_4F4R._frame = _overallFrame + 1;
+		else if (_wo[113])
+			_indoorList._fwl_4F4R._frame = 8;
+		else if (_wo[173])
+			_indoorList._fwl_4F4R._frame = 10;
+		else if (_wo[133])
+			_indoorList._fwl_4F4R._frame = 9;
+		else if (_wo[35])
+			_indoorList._fwl_4F4R._frame = 0;
+		else if (_wo[79])
+			_indoorList._fwl_4F4R._frame = 15;
+		else if (_wo[213])
+			_indoorList._fwl_4F4R._frame = 14;
+		else if (_wo[233])
+			_indoorList._fwl_4F4R._frame = 6;
+		else if (_wo[253])
+			_indoorList._fwl_4F4R._frame = 11;
+		else if (_wo[273])
+			_indoorList._fwl_4F4R._frame = 12;
+		else if (_wo[293])
+			_indoorList._fwl_4F4R._frame = 13;
+	}
+
+	if (!_wo[25] && !_wo[28] && !_wo[20] && !_wo[11] && !_wo[16] && !_wo[30]) {
+		if (_wo[32])
+			_indoorList._swl_3F4L._frame = 14;
+		else if (_wo[76])
+			_indoorList._swl_3F4L._frame = 38;
+	}
+
+	if (!_wo[26] && !_wo[29] && !_wo[21] && !_wo[13] && !_wo[18] && !_wo[31]) {
+		if (_wo[33])
+			_indoorList._swl_3F1R._frame = 15;
+		else if (_wo[77])
+			_indoorList._swl_3F1R._frame = 39;
+	}
+
+	if (_wo[28] && _wo[27]) {
+	} else if (_wo[28] && _wo[12]) {
+	} else if (_wo[28] && _wo[23]) {
+	} else if (_wo[28] && _wo[8]) {
+	} else if (_wo[25] && _wo[27]) {
+	} else if (_wo[25] && _wo[12]) {
+	} else if (_wo[25] && _wo[23]) {
+	} else if (_wo[25] && _wo[8]) {
+	} else if (_wo[11] && _wo[27]) {
+	} else if (_wo[11] && _wo[12]) {
+	} else if (_wo[11] && _wo[23]) {
+	} else if (_wo[11] && _wo[8]) {
+	} else if (_wo[17] && _wo[27]) {
+	} else if (_wo[17] && _wo[12]) {
+	} else if (_wo[17] && _wo[23]) {
+	} else if (_wo[17] && _wo[8]) {
+	} else if (_wo[20]) {
+	} else if (_wo[30]) {
+		_indoorList._swl_3F3L._frame = 12;
+	} else if (_wo[74]) {
+		_indoorList._swl_3F3L._frame = 36;
+	}
+
+	if (_wo[29] && _wo[27]) {
+	} else if (_wo[29] && _wo[14]) {
+	} else if (_wo[29] && _wo[24]) {
+	} else if (_wo[29] && _wo[10]) {
+	} else if (_wo[26] && _wo[27]) {
+	} else if (_wo[26] && _wo[14]) {
+	} else if (_wo[26] && _wo[24]) {
+	} else if (_wo[26] && _wo[10]) {
+	} else if (_wo[13] && _wo[27]) {
+	} else if (_wo[13] && _wo[14]) {
+	} else if (_wo[13] && _wo[24]) {
+	} else if (_wo[13] && _wo[10]) {
+	} else if (_wo[19] && _wo[27]) {
+	} else if (_wo[19] && _wo[24]) {
+	} else if (_wo[19] && _wo[10]) {
+	} else if (_wo[21]) {
+	} else if (_wo[31]) {
+		_indoorList._swl_3F2R._frame = 13;
+	} else if (_wo[75]) {
+		_indoorList._swl_3F2R._frame = 37;
+	}
+
+	if (!_wo[27] && !_wo[20] && !_wo[12] && !_wo[23] && !_wo[8] && !_wo[30]) {
+		if (_wo[89])
+			_indoorList._fwl_4F3L._frame = 7;
+		else if (_wo[44])
+			_indoorList._fwl_4F3L._frame = 16;
+		else if (_wo[149])
+			_indoorList._fwl_4F3L._frame = _overallFrame + 1;
+		else if (_wo[109])
+			_indoorList._fwl_4F3L._frame = 8;
+		else if (_wo[169])
+			_indoorList._fwl_4F3L._frame = 10;
+		else if (_wo[129])
+			_indoorList._fwl_4F3L._frame = 9;
+		else if (_wo[0])
+			_indoorList._fwl_4F3L._frame = 0;
+		else if (_wo[189])
+			_indoorList._fwl_4F3L._frame = 15;
+		else if (_wo[209])
+			_indoorList._fwl_4F3L._frame = 14;
+		else if (_wo[229])
+			_indoorList._fwl_4F3L._frame = 6;
+		else if (_wo[249])
+			_indoorList._fwl_4F3L._frame = 11;
+		else if (_wo[269])
+			_indoorList._fwl_4F3L._frame = 12;
+		else if (_wo[289])
+			_indoorList._fwl_4F3L._frame = 13;
+	}
+
+	if (_wo[22] && _wo[20]) {
+	} else if (_wo[22] && _wo[23]) {
+	} else if (_wo[20] && _wo[17]) {
+	} else if (_wo[23] && _wo[17]) {
+	} else if (_wo[12]) {
+	} else if (_wo[8]) {
+	} else if (_wo[90]) {
+		_indoorList._fwl_4F2L._frame = 7;
+	} else if (_wo[45])  {
+		_indoorList._fwl_4F2L._frame = 16;
+	} else if (_wo[150]) {
+		_indoorList._fwl_4F2L._frame = _overallFrame + 1;
+	} else if (_wo[110]) {
+		_indoorList._fwl_4F2L._frame = 8;
+	} else if (_wo[170]) {
+		_indoorList._fwl_4F2L._frame = 10;
+	} else if (_wo[130]) {
+		_indoorList._fwl_4F2L._frame = 9;
+	} else if (_wo[1]) {
+		_indoorList._fwl_4F2L._frame = 0;
+	} else if (_wo[190]) {
+		_indoorList._fwl_4F2L._frame = 15;
+	} else if (_wo[210]) {
+		_indoorList._fwl_4F2L._frame = 14;
+	} else if (_wo[230]) {
+		_indoorList._fwl_4F2L._frame = 6;
+	} else if (_wo[250]) {
+		_indoorList._fwl_4F2L._frame = 11;
+	} else if (_wo[270]) {
+		_indoorList._fwl_4F2L._frame = 12;
+	} else if (_wo[290]) {
+		_indoorList._fwl_4F2L._frame = 13;
+	}
+
+	if (_wo[15] && _wo[17]) {
+	} else if (_wo[15] && _wo[12]) {
+	} else if (_wo[12] && _wo[7]) {
+	} else if (_wo[17] && _wo[7]) {
+	} else if (_wo[91]) {
+		_indoorList._fwl_4F1L._frame = 7;
+	} else if (_wo[46]) {
+		_indoorList._fwl_4F1L._frame = 16;
+	} else if (_wo[151]) {
+		_indoorList._fwl_4F1L._frame = _overallFrame + 1;
+	} else if (_wo[111]) {
+		_indoorList._fwl_4F1L._frame = 8;
+	} else if (_wo[171]) {
+		_indoorList._fwl_4F1L._frame = 10;
+	} else if (_wo[131]) {
+		_indoorList._fwl_4F1L._frame = 9;
+	} else if (_wo[2]) {
+		_indoorList._fwl_4F1L._frame = 0;
+	} else if (_wo[191]) {
+		_indoorList._fwl_4F1L._frame = 15;
+	} else if (_wo[211]) {
+		_indoorList._fwl_4F1L._frame = 14;
+	} else if (_wo[231]) {
+		_indoorList._fwl_4F1L._frame = 6;
+	} else if (_wo[251]) {
+		_indoorList._fwl_4F1L._frame = 11;
+	} else if (_wo[271]) {
+		_indoorList._fwl_4F1L._frame = 12;
+	} else if (_wo[291]) {
+		_indoorList._fwl_4F1L._frame = 13;
+	}
+
+	if (!_wo[27] && !_wo[21] && !_wo[14] && !_wo[24] && !_wo[10] && !_wo[31]) {
+		if (_wo[92]) {
+			_indoorList._fwl_4F3R._frame = 7;
+		} else if (_wo[47]) {
+			_indoorList._fwl_4F3R._frame = 16;
+		} else if (_wo[152]) {
+			_indoorList._fwl_4F3R._frame = _overallFrame + 1;
+		} else if (_wo[112]) {
+			_indoorList._fwl_4F3R._frame = 8;
+		} else if (_wo[172]) {
+			_indoorList._fwl_4F3R._frame = 10;
+		} else if (_wo[132]) {
+			_indoorList._fwl_4F3R._frame = 9;
+		} else if (_wo[3]) {
+			_indoorList._fwl_4F3R._frame = 0;
+		} else if (_wo[192]) {
+			_indoorList._fwl_4F3R._frame = 15;
+		} else if (_wo[212]) {
+			_indoorList._fwl_4F3R._frame = 14;
+		} else if (_wo[232]) {
+			_indoorList._fwl_4F3R._frame = 6;
+		} else if (_wo[252]) {
+			_indoorList._fwl_4F3R._frame = 11;
+		} else if (_wo[272]) {
+			_indoorList._fwl_4F3R._frame = 12;
+		} else if (_wo[292]) {
+			_indoorList._fwl_4F3R._frame = 13;
+		}
+	}
+
+	if (_wo[22] && _wo[21]) {
+	} else if (_wo[22] && _wo[24]) {
+	} else if (_wo[21] && _wo[19]) {
+	} else if (_wo[24] && _wo[19]) {
+	} else if (_wo[14] || _wo[10]) {
+	} else if (_wo[94]) {
+		_indoorList._fwl_4F2R._frame = 7;
+	} else if (_wo[48]) {
+		_indoorList._fwl_4F2R._frame = 16;
+	} else if (_wo[154]) {
+		_indoorList._fwl_4F2R._frame = _overallFrame + 1;
+	} else if (_wo[114]) {
+		_indoorList._fwl_4F2R._frame = 8;
+	} else if (_wo[174]) {
+		_indoorList._fwl_4F2R._frame = 10;
+	} else if (_wo[134]) {
+		_indoorList._fwl_4F2R._frame = 9;
+	} else if (_wo[4]) {
+		_indoorList._fwl_4F2R._frame = 0;
+	} else if (_wo[194]) {
+		_indoorList._fwl_4F2R._frame = 15;
+	} else if (_wo[214]) {
+		_indoorList._fwl_4F2R._frame = 14;
+	} else if (_wo[234]) {
+		_indoorList._fwl_4F2R._frame = 6;
+	} else if (_wo[254]) {
+		_indoorList._fwl_4F2R._frame = 11;
+	} else if (_wo[274]) {
+		_indoorList._fwl_4F2R._frame = 12;
+	} else if (_wo[294]) {
+		_indoorList._fwl_4F2R._frame = 13;
+	}
+
+	if (_wo[15] && _wo[19]) {
+	} else if (_wo[15] && _wo[14]) {
+	} else if (_wo[14] && _wo[9]) {
+	} else if (_wo[19] && _wo[9]) {
+	} else if (_wo[95]) {
+		_indoorList._fwl_4F1R._frame = 7;
+	} else if (_wo[49]) {
+		_indoorList._fwl_4F1R._frame = 16;
+	} else if (_wo[155]) {
+		_indoorList._fwl_4F1R._frame = _overallFrame + 1;
+	} else if (_wo[115]) {
+		_indoorList._fwl_4F1R._frame = 8;
+	} else if (_wo[175]) {
+		_indoorList._fwl_4F1R._frame = 10;
+	} else if (_wo[135]) {
+		_indoorList._fwl_4F1R._frame = 9;
+	} else if (_wo[5]) {
+		_indoorList._fwl_4F1R._frame = 0;
+	} else if (_wo[195]) {
+		_indoorList._fwl_4F1R._frame = 15;
+	} else if (_wo[215]) {
+		_indoorList._fwl_4F1R._frame = 14;
+	} else if (_wo[235]) {
+		_indoorList._fwl_4F1R._frame = 6;
+	} else if (_wo[255]) {
+		_indoorList._fwl_4F1R._frame = 11;
+	} else if (_wo[275]) {
+		_indoorList._fwl_4F1R._frame = 12;
+	} else if (_wo[295]) {
+		_indoorList._fwl_4F1R._frame = 13;
+	}
+
+	if (_wo[27] || _wo[22] || _wo[15] || _wo[96]) {
+	} else if (_wo[50]) {
+		_indoorList._fwl_4F._frame = 16;
+	} else if (_wo[156]) {
+		_indoorList._fwl_4F._frame = _overallFrame + 1;
+	} else if (_wo[116]) {
+		_indoorList._fwl_4F._frame = 8;
+	} else if (_wo[176]) {
+		_indoorList._fwl_4F._frame = 10;
+	} else if (_wo[136]) {
+		_indoorList._fwl_4F._frame = 9;
+	} else if (_wo[6]) {
+		_indoorList._fwl_4F._frame = 0;
+	} else if (_wo[196]) {
+		_indoorList._fwl_4F._frame = 15;
+	} else if (_wo[216]) {
+		_indoorList._fwl_4F._frame = 14;
+	} else if (_wo[236]) {
+		_indoorList._fwl_4F._frame = 6;
+	} else if (_wo[256]) {
+		_indoorList._fwl_4F._frame = 11;
+	} else if (_wo[276]) {
+		_indoorList._fwl_4F._frame = 12;
+	} else if (_wo[296]) {
+		_indoorList._fwl_4F._frame = 13;
+	}
+
+	if (!_wo[27] && !_wo[22] && !_wo[15]) {
+		if (_wo[7])
+			_indoorList._swl_3F1L._frame = 8;
+		else if (_wo[51])
+			_indoorList._swl_3F1L._frame = 32;
+	}
+
+	if (_wo[22] && _wo[23]) {
+	} else if (_wo[22] && _wo[20]) {
+	} else if (_wo[17] && _wo[23]) {
+	} else if (_wo[17] && _wo[20]) {
+	} else if (_wo[8]) {
+		_indoorList._swl_3F2L._frame = 10;
+	} else if (_wo[52]) {
+		_indoorList._swl_3F2L._frame = 34;
+	}
+
+	if (_wo[27] || _wo[22] || _wo[15]) {
+	} else if (_wo[9]) {
+		_indoorList._swl_3F4R._frame = 9;
+	} else if (_wo[53]) {
+		_indoorList._swl_3F4R._frame = 33;
+	}
+
+	if (_wo[22] && _wo[24]) {
+	} else if (_wo[22] && _wo[21]) {
+	} else if (_wo[19] && _wo[24]) {
+	} else if (_wo[19] && _wo[21]) {
+	} else if (_wo[14]) {
+	} else if (_wo[10]) {
+		_indoorList._swl_3F3R._frame = 11;
+	} else if (_wo[54]) {
+		_indoorList._swl_3F3R._frame = 35;
+	}
+
+	if (_wo[25] || _wo[28] || _wo[20] || _wo[16]) {
+	} else if (_wo[97]) {
+		_indoorList._fwl_3F2L._frame = 24;
+	} else if (_wo[55]) {
+		_indoorList._fwl_3F2L._frame = 33;
+	} else if (_wo[137]) {
+		_indoorList._fwl_3F2L._frame = 26;
+	} else if (_wo[157]) {
+		_indoorList._fwl_3F2L._frame = _overallFrame + 18;
+	} else if (_wo[117]) {
+		_indoorList._fwl_3F2L._frame = 25;
+	} else if (_wo[177]) {
+		_indoorList._fwl_3F2L._frame = 27;
+	} else if (_wo[11]) {
+		_indoorList._fwl_3F2L._frame = 17;
+	} else if (_wo[197]) {
+		_indoorList._fwl_3F2L._frame = 32;
+	} else if (_wo[217]) {
+		_indoorList._fwl_3F2L._frame = 31;
+	} else if (_wo[237]) {
+		_indoorList._fwl_3F2L._frame = 23;
+	} else if (_wo[257]) {
+		_indoorList._fwl_3F2L._frame = 28;
+	} else if (_wo[277]) {
+		_indoorList._fwl_3F2L._frame = 29;
+	} else if (_wo[297]) {
+		_indoorList._fwl_3F2L._frame = 30;
+	}
+
+	if (_wo[22] && _wo[23]) {
+	} else if (_wo[22] && _wo[20]) {
+	} else if (_wo[23] && _wo[17]) {
+	} else if (_wo[20] && _wo[17]) {
+	} else if (_wo[98]) {
+		_indoorList._fwl_3F1L._frame = 24;
+	} else if (_wo[56]) {
+		_indoorList._fwl_3F1L._frame = 33;
+	} else if (_wo[178]) {
+		_indoorList._fwl_3F1L._frame = 27;
+	} else if (_wo[118]) {
+		_indoorList._fwl_3F1L._frame = 25;
+	} else if (_wo[158]) {
+		_indoorList._fwl_3F1L._frame = _overallFrame + 18;
+	} else if (_wo[138]) {
+		_indoorList._fwl_3F1L._frame = 26;
+	} else if (_wo[12]) {
+		_indoorList._fwl_3F1L._frame = 17;
+	} else if (_wo[198]) {
+		_indoorList._fwl_3F1L._frame = 32;
+	} else if (_wo[218]) {
+		_indoorList._fwl_3F1L._frame = 31;
+	} else if (_wo[238]) {
+		_indoorList._fwl_3F1L._frame = 23;
+	} else if (_wo[258]) {
+		_indoorList._fwl_3F1L._frame = 28;
+	} else if (_wo[278]) {
+		_indoorList._fwl_3F1L._frame = 29;
+	} else if (_wo[298]) {
+		_indoorList._fwl_3F1L._frame = 30;
+	}
+
+	if (_wo[26] || _wo[29] || _wo[21] || _wo[18]) {
+	} else if (_wo[99]) {
+		_indoorList._fwl_3F2R._frame = 24;
+	} else if (_wo[57]) {
+		_indoorList._fwl_3F2R._frame = 33;
+	} else if (_wo[139]) {
+		_indoorList._fwl_3F2R._frame = 26;
+	} else if (_wo[159]) {
+		_indoorList._fwl_3F2R._frame = _overallFrame + 18;
+	} else if (_wo[119]) {
+		_indoorList._fwl_3F2R._frame = 25;
+	} else if (_wo[179]) {
+		_indoorList._fwl_3F2R._frame = 27;
+	} else if (_wo[13]) {
+		_indoorList._fwl_3F2R._frame = 17;
+	} else if (_wo[199]) {
+		_indoorList._fwl_3F2R._frame = 32;
+	} else if (_wo[219]) {
+		_indoorList._fwl_3F2R._frame = 31;
+	} else if (_wo[239]) {
+		_indoorList._fwl_3F2R._frame = 23;
+	} else if (_wo[259]) {
+		_indoorList._fwl_3F2R._frame = 28;
+	} else if (_wo[279]) {
+		_indoorList._fwl_3F2R._frame = 29;
+	} else if (_wo[299]) {
+		_indoorList._fwl_3F2R._frame = 30;
+	}
+
+	if (_wo[22] && _wo[24]) {
+	} else if (_wo[22] && _wo[21]) {
+	} else if (_wo[24] && _wo[19]) {
+	} else if (_wo[21] && _wo[19]) {
+	} else if (_wo[100]) {
+		_indoorList._fwl_3F1R._frame = 24;
+	} else if (_wo[58]) {
+		_indoorList._fwl_3F1R._frame = 33;
+	} else if (_wo[140]) {
+		_indoorList._fwl_3F1R._frame = 26;
+	} else if (_wo[160]) {
+		_indoorList._fwl_3F1R._frame = _overallFrame + 18;
+	} else if (_wo[120]) {
+		_indoorList._fwl_3F1R._frame = 25;
+	} else if (_wo[180]) {
+		_indoorList._fwl_3F1R._frame = 27;
+	} else if (_wo[14]) {
+		_indoorList._fwl_3F1R._frame = 17;
+	} else if (_wo[200]) {
+		_indoorList._fwl_3F1R._frame = 32;
+	} else if (_wo[220]) {
+		_indoorList._fwl_3F1R._frame = 31;
+	} else if (_wo[240]) {
+		_indoorList._fwl_3F1R._frame = 23;
+	} else if (_wo[260]) {
+		_indoorList._fwl_3F1R._frame = 28;
+	} else if (_wo[280]) {
+		_indoorList._fwl_3F1R._frame = 29;
+	} else if (_wo[300]) {
+		_indoorList._fwl_3F1R._frame = 30;
+	}
+
+	if (_wo[22] || _wo[27]) {
+	} else if (_wo[101]) {
+		_indoorList._fwl_3F._frame = 24;
+	} else if (_wo[59]) {
+		_indoorList._fwl_3F._frame = 33;
+	} else if (_wo[141]) {
+		_indoorList._fwl_3F._frame = 26;
+	} else if (_wo[161]) {
+		_indoorList._fwl_3F._frame = _overallFrame + 18;
+	} else if (_wo[121]) {
+		_indoorList._fwl_3F._frame = 25;
+	} else if (_wo[181]) {
+		_indoorList._fwl_3F._frame = 27;
+	} else if (_wo[15]) {
+		_indoorList._fwl_3F._frame = 17;
+	} else if (_wo[201]) {
+		_indoorList._fwl_3F._frame = 32;
+	} else if (_wo[221]) {
+		_indoorList._fwl_3F._frame = 31;
+	} else if (_wo[241]) {
+		_indoorList._fwl_3F._frame = 23;
+	} else if (_wo[261]) {
+		_indoorList._fwl_3F._frame = 28;
+	} else if (_wo[281]) {
+		_indoorList._fwl_3F._frame = 29;
+	} else if (_wo[301]) {
+		_indoorList._fwl_3F._frame = 30;
+	}
+
+	if (_wo[25] || _wo[28] || _wo[20]) {
+	} else if (_wo[16]) {
+		_indoorList._swl_2F2L._frame = 6;
+	} else if (_wo[60]) {
+		_indoorList._swl_2F2L._frame = 30;
+	}
+
+	if (_wo[27] || _wo[22]) {
+	} else if (_wo[17]) {
+		_indoorList._swl_2F1L._frame = 4;
+	} else if (_wo[61]) {
+		_indoorList._swl_2F1L._frame = 28;
+	}
+
+	if (_wo[26] || _wo[29] || _wo[21]) {
+	} else if (_wo[18]) {
+		_indoorList._swl_2F2R._frame = 7;
+	} else if (_wo[62]) {
+		_indoorList._swl_2F2R._frame = 31;
+	}
+
+	if (_wo[27] || _wo[22]) {
+	} else if (_wo[19]) {
+		_indoorList._swl_2F1R._frame = 5;
+	} else if (_wo[63]) {
+		_indoorList._swl_2F1R._frame = 29;
+	}
+
+	if (_wo[27] && _wo[25]) {
+	} else if (_wo[27] && _wo[28]) {
+	} else if (_wo[23] & _wo[25]) {
+	} else if (_wo[23] && _wo[28]) {
+	} else if (_wo[102]) {
+		_indoorList._fwl_2F1L._frame = 7;
+	} else if (_wo[64]) {
+		_indoorList._fwl_2F1L._frame = 16;
+	} else if (_wo[182]) {
+		_indoorList._fwl_2F1L._frame = 10;
+	} else if (_wo[122]) {
+		_indoorList._fwl_2F1L._frame = 8;
+	} else if (_wo[142]) {
+		_indoorList._fwl_2F1L._frame = 9;
+	} else if (_wo[162]) {
+		_indoorList._fwl_2F1L._frame = _overallFrame + 1;
+	} else if (_wo[20]) {
+		_indoorList._fwl_2F1L._frame = 0;
+	} else if (_wo[202]) {
+		_indoorList._fwl_2F1L._frame = 15;
+	} else if (_wo[222]) {
+		_indoorList._fwl_2F1L._frame = 14;
+	} else if (_wo[242]) {
+		_indoorList._fwl_2F1L._frame = 6;
+	} else if (_wo[262]) {
+		_indoorList._fwl_2F1L._frame = 11;
+	} else if (_wo[282]) {
+		_indoorList._fwl_2F1L._frame = 12;
+	} else if (_wo[302]) {
+		_indoorList._fwl_2F1L._frame = 13;
+	}
+
+	if (_wo[27] && _wo[26]) {
+	} else if (_wo[27] && _wo[29]) {
+	} else if (_wo[24] && _wo[26]) {
+	} else if (_wo[24] && _wo[29]) {
+	} else if (_wo[103]) {
+		_indoorList._fwl_2F1R._frame = 7;
+	} else if (_wo[65]) {
+		_indoorList._fwl_2F1R._frame = 16;
+	} else if (_wo[183]) {
+		_indoorList._fwl_2F1R._frame = 10;
+	} else if (_wo[123]) {
+		_indoorList._fwl_2F1R._frame = 8;
+	} else if (_wo[143]) {
+		_indoorList._fwl_2F1R._frame = 9;
+	} else if (_wo[163]) {
+		_indoorList._fwl_2F1R._frame = _overallFrame + 1;
+	} else if (_wo[21]) {
+		_indoorList._fwl_2F1R._frame = 0;
+	} else if (_wo[203]) {
+		_indoorList._fwl_2F1R._frame = 15;
+	} else if (_wo[223]) {
+		_indoorList._fwl_2F1R._frame = 14;
+	} else if (_wo[243]) {
+		_indoorList._fwl_2F1R._frame = 6;
+	} else if (_wo[263]) {
+		_indoorList._fwl_2F1R._frame = 11;
+	} else if (_wo[283]) {
+		_indoorList._fwl_2F1R._frame = 12;
+	} else if (_wo[303]) {
+		_indoorList._fwl_2F1R._frame = 13;
+	}
+
+	if (_wo[27]) {
+	} else if (_wo[104]) {
+		_indoorList._fwl_2F._frame = 7;
+	} else if (_wo[66]) {
+		_indoorList._fwl_2F._frame = 16;
+	} else if (_wo[184]) {
+		_indoorList._fwl_2F._frame = 10;
+	} else if (_wo[124]) {
+		_indoorList._fwl_2F._frame = 8;
+	} else if (_wo[144]) {
+		_indoorList._fwl_2F._frame = 9;
+	} else if (_wo[164]) {
+		_indoorList._fwl_2F._frame = _overallFrame + 1;
+	} else if (_wo[22]) {
+		_indoorList._fwl_2F._frame = 0;
+	} else if (_wo[204]) {
+		_indoorList._fwl_2F._frame = 15;
+	} else if (_wo[224]) {
+		_indoorList._fwl_2F._frame = 14;
+	} else if (_wo[244]) {
+		_indoorList._fwl_2F._frame = 6;
+	} else if (_wo[264]) {
+		_indoorList._fwl_2F._frame = 11;
+	} else if (_wo[284]) {
+		_indoorList._fwl_2F._frame = 12;
+	} else if (_wo[304]) {
+		_indoorList._fwl_2F._frame = 13;
+	}
+
+	if (_wo[27]) {
+	} else if (_wo[23]) {
+		_indoorList._swl_1F1L._frame = 2;
+	} else if (_wo[67]) {
+		_indoorList._swl_1F1L._frame = 26;
+	}
+
+	if (_wo[27]) {
+	} else if (_wo[24]) {
+		_indoorList._swl_1F1R._frame = 3;
+	} else if (_wo[68]) {
+		_indoorList._swl_1F1R._frame = 27;
+	}
+
+	if (_wo[28]) {
+	} else if (_wo[105] || _wo[25] || _wo[165] || _wo[125] || _wo[185] || _wo[145]) {
+		_indoorList._fwl_1F1L._frame = 0;
+		_indoorList._fwl_1F1L._sprites = &map._wallSprites._fwl1;
+	} else if (_wo[69]) {
+		_indoorList._fwl_1F1L._frame = 9;
+		_indoorList._fwl_1F1L._sprites = &map._wallSprites._fwl2;
+	}
+
+	if (_wo[29]) {
+	} else if (_wo[106] || _wo[26] || _wo[166] || _wo[126] || _wo[186] || _wo[146]) {
+		_indoorList._fwl_1F._frame = 0;
+		_indoorList._fwl_1F._sprites = &map._wallSprites._fwl1;
+	} else if (_wo[70]) {
+		_indoorList._fwl_1F._frame = 9;
+		_indoorList._fwl_1F._sprites = &map._wallSprites._fwl2;
+	}
+
+	if (_wo[107]) {
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
+		if (!_openDoor)
+			_indoorList._fwl_1F1R._frame = 0;
+		else
+			_indoorList._fwl_1F1R._frame = map.mazeData()._wallKind ? 1 : 10;
+	} else if (_wo[71]) {
+		_indoorList._fwl_1F1R._frame = 9;
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
+	} else if (_wo[167]) {
+		_indoorList._fwl_1F1R._frame = _overallFrame + 1;
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl1;
+	} else if (_wo[127]) {
+		_indoorList._fwl_1F1R._frame = 1;
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
+	} else if (_wo[147]) {
+		_indoorList._fwl_1F1R._frame = 2;
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
+	} else if (_wo[187]) {
+		_indoorList._fwl_1F1R._frame = 3;
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
+	} else if (_wo[27]) {
+		_indoorList._fwl_1F1R._frame = 0;
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl1;
+	} else if (_wo[207]) {
+		_indoorList._fwl_1F1R._frame = 8;
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
+	} else if (_wo[227]) {
+		_indoorList._fwl_1F1R._frame = 7;
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
+	} else if (_wo[247]) {
+		_indoorList._fwl_1F1R._frame = 6;
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl1;
+	} else if (_wo[267]) {
+		_indoorList._fwl_1F1R._frame = 4;
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
+	} else if (_wo[287]) {
+		_indoorList._fwl_1F1R._frame = 5;
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
+	} else if (_wo[307]) {
+		_indoorList._fwl_1F1R._frame = 6;
+		_indoorList._fwl_1F1R._sprites = &map._wallSprites._fwl2;
+	}
+
+	if (_wo[28]) {
+		_indoorList._swl_0F1L._frame = 0;
+	} else if (_wo[72]) {
+		_indoorList._swl_0F1L._frame = 24;
+	}
+
+	if (_wo[29]) {
+		_indoorList._swl_0F1R._frame = 1;
+	} else if (_wo[73]) {
+		_indoorList._swl_0F1R._frame = 25;
+	}
+
+	map.cellFlagLookup(_vm->_party->_mazePosition);
+
+	assert(map._currentSky < 2);
+	_indoorList[0]._sprites = &map._skySprites[map._currentSky];
+	_indoorList[0]._flags = _flipSky ? SPRFLAG_HORIZ_FLIPPED : 0;
+
+	if (_openDoor) {
+		Common::Point pt(
+			_vm->_party->_mazePosition.x + Res.SCREEN_POSITIONING_X[
+				_vm->_party->_mazeDirection][_vm->_party->_mazePosition.x],
+			_vm->_party->_mazePosition.y + Res.SCREEN_POSITIONING_Y[
+				_vm->_party->_mazeDirection][_vm->_party->_mazePosition.y]
+			);
+		map.cellFlagLookup(pt);
+
+		_indoorList._sky2._sprites = &map._skySprites[0];
+	} else {
+		_indoorList._sky2._sprites = _indoorList[0]._sprites;
+	}
+
+	_indoorList._sky2._flags = _flipSky ? SPRFLAG_HORIZ_FLIPPED : 0;
+	_indoorList._ground._flags = _flipDefaultGround ? SPRFLAG_HORIZ_FLIPPED : 0;
+	_indoorList._horizon._frame = 7;
+
+	// Finally draw the darn indoor scene
+	windows[3].drawList(&_indoorList[0], _indoorList.size());
+
+	// Check for any character shooting
+	_isAttacking = false;
+	for (uint idx = 0; idx < _vm->_party->_activeParty.size(); ++idx) {
+		if (_vm->_combat->_shooting[idx])
+			_isAttacking = true;
+	}
+
+	_charsShooting = _isAttacking;
+}
+
+void InterfaceScene::drawOutdoors() {
+	Map &map = *_vm->_map;
+	Party &party = *_vm->_party;
+	Windows &windows = *_vm->_windows;
+	int surfaceId;
+
+	// Draw any surface tiles on top of the default ground
+	for (int cellIndex = 0; cellIndex < 25; ++cellIndex) {
+		map.getCell(cellIndex == 24 ? 2 : Res.DRAW_NUMBERS[cellIndex]);
+
+		DrawStruct &drawStruct = _outdoorList._groundTiles[cellIndex];
+		SpriteResource &sprites = map._surfaceSprites[map._currentSurfaceId];
+		drawStruct._sprites = sprites.empty() ? (SpriteResource *)nullptr : &sprites;
+
+		surfaceId = map.mazeData()._surfaceTypes[map._currentSurfaceId];
+		if (surfaceId == SURFTYPE_DWATER || surfaceId == SURFTYPE_LAVA) {
+			drawStruct._frame = Res.DRAW_FRAMES[cellIndex][_flipWater ? 1 : 0];
+			drawStruct._flags = _flipWater ? SPRFLAG_HORIZ_FLIPPED : 0;
+		} else {
+			drawStruct._frame = Res.DRAW_FRAMES[cellIndex][_flipGround ? 1 : 0];
+			drawStruct._flags = _flipGround ? SPRFLAG_HORIZ_FLIPPED : 0;
+		}
+	}
+
+	party.handleLight();
+
+	// Set up terrain draw entries
+	const int TERRAIN_INDEXES1[9] = { 44, 36, 37, 38, 45, 43, 42, 41, 39 };
+	const int TERRAIN_INDEXES2[5] = { 22, 24, 31, 29, 26 };
+	const int TERRAIN_INDEXES3[3] = { 11, 16, 13 };
+	const int TERRAIN_INDEXES4[5] = { 5, 9, 7, 0, 4 };
+
+	// Loops to set draw entries for the terrain
+	assert(map._currentWall != INVALID_CELL);
+	for (int idx = 0; idx < 9; ++idx) {
+		map.getCell(TERRAIN_INDEXES1[idx]);
+		SpriteResource &spr = map._wallSprites._surfaces[map._currentWall];
+		_outdoorList[28 + idx]._sprites = spr.size() == 0 ? (SpriteResource *)nullptr : &spr;
+	}
+	for (int idx = 0; idx < 5; ++idx) {
+		map.getCell(TERRAIN_INDEXES2[idx]);
+		SpriteResource &spr = map._wallSprites._surfaces[map._currentWall];
+		_outdoorList[61 + idx]._sprites = spr.size() == 0 ? (SpriteResource *)nullptr : &spr;
+	}
+	for (int idx = 0; idx < 3; ++idx) {
+		map.getCell(TERRAIN_INDEXES3[idx]);
+		SpriteResource &spr = map._wallSprites._surfaces[map._currentWall];
+		_outdoorList[84 + idx]._sprites = spr.size() == 0 ? (SpriteResource *)nullptr : &spr;
+	}
+	for (int idx = 0; idx < 5; ++idx) {
+		map.getCell(TERRAIN_INDEXES4[idx]);
+		SpriteResource &spr = map._wallSprites._surfaces[map._currentWall];
+		_outdoorList[103 + idx]._sprites = spr.size() == 0 ? (SpriteResource *)nullptr : &spr;
+	}
+
+	map.getCell(1);
+	SpriteResource &surface = map._wallSprites._surfaces[map._currentWall];
+	_outdoorList[108]._sprites = surface.size() == 0 ? (SpriteResource *)nullptr : &surface;
+	_outdoorList[109]._sprites = _outdoorList[108]._sprites;
+	_outdoorList[110]._sprites = _outdoorList[108]._sprites;
+	_outdoorList._sky1._flags = _outdoorList._sky2._flags = _flipSky ? SPRFLAG_HORIZ_FLIPPED : 0;
+	_outdoorList._groundSprite._flags = _flipWater ? SPRFLAG_HORIZ_FLIPPED : 0;
+
+	// Finally render the outdoor scene
+	windows[3].drawList(&_outdoorList[0], _outdoorList.size());
+
+	// Check for any character shooting
+	_isAttacking = false;
+	for (uint idx = 0; idx < _vm->_party->_activeParty.size(); ++idx) {
+		if (_vm->_combat->_shooting[idx])
+			_isAttacking = true;
+	}
+
+	_charsShooting = _isAttacking;
+}
+
+} // End of namespace Xeen
diff --git a/engines/xeen/interface_scene.h b/engines/xeen/interface_scene.h
new file mode 100644
index 0000000..3b5e452
--- /dev/null
+++ b/engines/xeen/interface_scene.h
@@ -0,0 +1,175 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef XEEN_INTERFACE_SCENE_H
+#define XEEN_INTERFACE_SCENE_H
+
+#include "common/scummsys.h"
+#include "xeen/map.h"
+#include "xeen/window.h"
+
+namespace Xeen {
+
+class XeenEngine;
+
+class OutdoorDrawList {
+public:
+	DrawStruct _data[132];
+	DrawStruct &_sky1, &_sky2;
+	DrawStruct &_groundSprite;
+	DrawStruct * const _groundTiles;
+	DrawStruct * const _attackImgs1;
+	DrawStruct * const _attackImgs2;
+	DrawStruct * const _attackImgs3;
+	DrawStruct * const _attackImgs4;
+public:
+	OutdoorDrawList();
+
+	DrawStruct &operator[](int idx) {
+		assert(idx < size());
+		return _data[idx];
+	}
+
+	int size() const { return 132; }
+};
+
+class IndoorDrawList {
+public:
+	DrawStruct _data[170];
+	DrawStruct &_sky1, &_sky2;
+	DrawStruct &_ground;
+	DrawStruct &_horizon;
+	DrawStruct * const _groundTiles;
+	DrawStruct &_swl_0F1R, &_swl_0F1L, &_swl_1F1R, &_swl_1F1L,
+		&_swl_2F2R, &_swl_2F1R, &_swl_2F1L, &_swl_2F2L,
+		&_swl_3F1R, &_swl_3F2R, &_swl_3F3R, &_swl_3F4R,
+		&_swl_3F1L, &_swl_3F2L, &_swl_3F3L, &_swl_3F4L,
+		&_swl_4F4R, &_swl_4F3R, &_swl_4F2R, &_swl_4F1R,
+		&_swl_4F1L, &_swl_4F2L, &_swl_4F3L, &_swl_4F4L;
+	DrawStruct &_fwl_4F4R, &_fwl_4F3R, &_fwl_4F2R, &_fwl_4F1R,
+		&_fwl_4F, &_fwl_4F1L, &_fwl_4F2L, &_fwl_4F3L, &_fwl_4F4L;
+	DrawStruct &_fwl_2F1R, &_fwl_2F, &_fwl_2F1L, &_fwl_3F2R,
+		&_fwl_3F1R, &_fwl_3F, &_fwl_3F1L, &_fwl_3F2L;
+	DrawStruct &_fwl_1F, &_fwl_1F1R, &_fwl_1F1L;
+	DrawStruct &_objects0, &_objects1, &_objects2, &_objects3;
+	DrawStruct &_objects4, &_objects5, &_objects6, &_objects7;
+	DrawStruct &_objects8, &_objects9, &_objects10, &_objects11;
+	DrawStruct * const _attackImgs1;
+	DrawStruct * const _attackImgs2;
+	DrawStruct * const _attackImgs3;
+	DrawStruct * const _attackImgs4;
+public:
+	IndoorDrawList();
+
+	DrawStruct &operator[](int idx) {
+		assert(idx < size());
+		return _data[idx];
+	}
+
+	int size() const { return 170; }
+};
+
+class InterfaceScene {
+private:
+	XeenEngine *_vm;
+	int _combatFloatCounter;
+
+	void initDrawStructs();
+
+	/**
+	 * Helper method for setIndoorsMonsters to set a draw structure
+	 * with the deatils for a given monster
+	 */
+	void setMonsterSprite(DrawStruct &drawStruct, MazeMonster &monster,
+		SpriteResource *sprites, int frame, int defaultY);
+protected:
+	int8 _wp[20];
+	byte _wo[308];
+	bool _flipWater;
+	bool _flipGround;
+	bool _flipSky;
+	bool _flipDefaultGround;
+	bool _thinWall;
+	bool _isAnimReset;
+
+	void setMazeBits();
+
+	/**
+	 * Handles animation of monsters, wall items, and combat within the 3d
+	 * view by cycling the appropriate frame numbers
+	 */
+	void animate3d();
+
+	void drawMap();
+public:
+	OutdoorDrawList _outdoorList;
+	IndoorDrawList _indoorList;
+	SpriteResource _charPowSprites;
+	int _objNumber;
+	int _overallFrame;
+	bool _charsShooting;
+	bool _openDoor;
+	bool _isAttacking;
+public:
+	InterfaceScene(XeenEngine *vm);
+
+	virtual ~InterfaceScene() {}
+
+	/**
+	 * Set up draw structures for displaying on-screen monsters
+	 */
+	void setIndoorsMonsters();
+
+	/**
+	 * Set up draw structures for displaying on-screen objects
+	 */
+	void setIndoorsObjects();
+
+	/**
+	 * Set up draw structures for displaying on-screen wall items
+	 */
+	void setIndoorsWallPics();
+
+	/**
+	 * Draw the contents of the current 3d view of an indoor map
+	 */
+	void drawIndoors();
+
+	/**
+	 * Set up the draw structures for displaying monsters on outdoor maps
+	 */
+	void setOutdoorsMonsters();
+
+	/**
+	 * Set up the draw structures for displaying objects on outdoor maps
+	 */
+	void setOutdoorsObjects();
+
+	/**
+	 * Draw the contents of the current 3d view of an outdoor map
+	 */
+	void drawOutdoors();
+};
+
+} // End of namespace Xeen
+
+#endif /* XEEN_INTERFACE_SCENE_H */
diff --git a/engines/xeen/module.mk b/engines/xeen/module.mk
index 7a37447..1be0d28 100644
--- a/engines/xeen/module.mk
+++ b/engines/xeen/module.mk
@@ -32,8 +32,8 @@ MODULE_OBJS := \
 	files.o \
 	font.o \
 	interface.o \
-	interface_map.o \
 	interface_minimap.o \
+	interface_scene.o \
 	map.o \
 	music.o \
 	party.o \





More information about the Scummvm-git-logs mailing list