diff options
author | Nicola Mettifogo | 2010-05-22 17:59:16 +0000 |
---|---|---|
committer | Nicola Mettifogo | 2010-05-22 17:59:16 +0000 |
commit | b4813f9b182a5034a50412fe5212ba09f9323bfe (patch) | |
tree | c2380ae02722258091ef91e9e4d0fc916963a790 | |
parent | 80ffcc621dfea5bf00abbdd761dedcf83270021a (diff) | |
download | scummvm-rg350-b4813f9b182a5034a50412fe5212ba09f9323bfe.tar.gz scummvm-rg350-b4813f9b182a5034a50412fe5212ba09f9323bfe.tar.bz2 scummvm-rg350-b4813f9b182a5034a50412fe5212ba09f9323bfe.zip |
Apply patch 3004687 by fuzzie: allow usage of merge zones.
svn-id: r49144
-rw-r--r-- | engines/parallaction/parallaction.cpp | 18 |
1 files 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. |