From f2726730156b0f2efadabf9d48b4795818440907 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Mon, 28 Oct 2019 19:23:59 -0700 Subject: XEEN: Fix Swords tavern sign in exit locations --- engines/xeen/locations.cpp | 45 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 11 deletions(-) (limited to 'engines') diff --git a/engines/xeen/locations.cpp b/engines/xeen/locations.cpp index 7cbfc2bab3..7ebdce3f19 100644 --- a/engines/xeen/locations.cpp +++ b/engines/xeen/locations.cpp @@ -696,17 +696,40 @@ Character *TavernLocation::doOptions(Character *c) { case Common::KEYCODE_s: { // Sign In // Set location and position for afterwards - idx = _ccNum ? (party._mazeId - 29) >> 1 : party._mazeId - 28; - assert(idx >= 0); - party._mazePosition.x = Res.TAVERN_EXIT_LIST[_ccNum][_locationActionId][idx][0]; - party._mazePosition.y = Res.TAVERN_EXIT_LIST[_ccNum][_locationActionId][idx][1]; - - if (!_ccNum || party._mazeId == 29) - party._mazeDirection = DIR_WEST; - else if (party._mazeId == 31) - party._mazeDirection = DIR_EAST; - else - party._mazeDirection = DIR_SOUTH; + if (g_vm->getGameID() == GType_Swords) { + switch (party._mazeId) { + case 49: + party._mazePosition = Common::Point(9, 2); + party._mazeDirection = DIR_WEST; + break; + case 53: + party._mazePosition = Common::Point(13, 1); + party._mazeDirection = DIR_EAST; + break; + case 92: + party._mazePosition = Common::Point(10, 1); + party._mazeDirection = DIR_EAST; + break; + case 63: + party._mazePosition = Common::Point(13, 1); + party._mazeDirection = DIR_SOUTH; + break; + default: + break; + } + } else { + idx = _ccNum ? (party._mazeId - 29) >> 1 : party._mazeId - 28; + assert(idx >= 0); + party._mazePosition.x = Res.TAVERN_EXIT_LIST[_ccNum][_locationActionId][idx][0]; + party._mazePosition.y = Res.TAVERN_EXIT_LIST[_ccNum][_locationActionId][idx][1]; + + if (!_ccNum || party._mazeId == 29) + party._mazeDirection = DIR_WEST; + else if (party._mazeId == 31) + party._mazeDirection = DIR_EAST; + else + party._mazeDirection = DIR_SOUTH; + } party._priorMazeId = party._mazeId; for (idx = 0; idx < (int)party._activeParty.size(); ++idx) { -- cgit v1.2.3