Apply patch 3004687 by fuzzie: allow usage of merge zones.

svn-id: r49144
This commit is contained in:
Nicola Mettifogo 2010-05-22 17:59:16 +00:00
parent 80ffcc621d
commit b4813f9b18

View File

@ -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.