aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/xeen/locations.cpp45
1 files changed, 34 insertions, 11 deletions
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) {