aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorNicola Mettifogo2010-05-22 17:59:16 +0000
committerNicola Mettifogo2010-05-22 17:59:16 +0000
commitb4813f9b182a5034a50412fe5212ba09f9323bfe (patch)
treec2380ae02722258091ef91e9e4d0fc916963a790 /engines
parent80ffcc621dfea5bf00abbdd761dedcf83270021a (diff)
downloadscummvm-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
Diffstat (limited to 'engines')
-rw-r--r--engines/parallaction/parallaction.cpp18
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.