From b4813f9b182a5034a50412fe5212ba09f9323bfe Mon Sep 17 00:00:00 2001 From: Nicola Mettifogo Date: Sat, 22 May 2010 17:59:16 +0000 Subject: Apply patch 3004687 by fuzzie: allow usage of merge zones. svn-id: r49144 --- engines/parallaction/parallaction.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp index 80e2ac2d31..b21642e7c3 100644 --- a/engines/parallaction/parallaction.cpp +++ b/engines/parallaction/parallaction.cpp @@ -652,11 +652,21 @@ bool Parallaction::pickupItem(ZonePtr z) { } bool Parallaction::checkSpecialZoneBox(ZonePtr z, uint32 type, uint x, uint y) { - // not a special zone - if ((z->getX() != -2) && (z->getX() != -3)) { - return false; + // check if really a special zone + int gameType = getGameType(); + if (gameType == GType_Nippon) { + // so-called special zones in NS have special x coordinates + if ((z->getX() != -2) && (z->getX() != -3)) { + return false; + } } - + if (gameType == GType_BRA) { + // so far, special zones in BRA are only merge zones + if (ACTIONTYPE(z) != kZoneMerge) { + return false; + } + } + // WORKAROUND: this huge condition is needed because we made TypeData a collection of structs // instead of an union. So, merge->_obj1 and get->_icon were just aliases in the original engine, // but we need to check it separately here. The same workaround is applied in freeZones. -- cgit v1.2.3