diff options
| -rw-r--r-- | engines/scumm/actor.cpp | 16 | ||||
| -rw-r--r-- | engines/scumm/he/script_v100he.cpp | 3 | ||||
| -rw-r--r-- | engines/scumm/he/script_v72he.cpp | 3 | 
3 files changed, 18 insertions, 4 deletions
| diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp index cf90094112..88c258a2e6 100644 --- a/engines/scumm/actor.cpp +++ b/engines/scumm/actor.cpp @@ -1348,6 +1348,22 @@ void ScummEngine::processActors() {  				}  			}  		} +	} else if (_game.heversion >= 90) { +		for (int j = 0; j < numactors; ++j) { +			for (int i = 0; i < numactors; ++i) { +				int sc_actor1 = _sortedActors[j]->_layer; +				int sc_actor2 = _sortedActors[i]->_layer; +				if (sc_actor1 < sc_actor2) { +					SWAP(_sortedActors[i], _sortedActors[j]); +				} else if (sc_actor1 == sc_actor2) { +					sc_actor1 = _sortedActors[j]->getPos().y; +					sc_actor2 = _sortedActors[i]->getPos().y; +					if (sc_actor1 < sc_actor2) { +						SWAP(_sortedActors[i], _sortedActors[j]); +					} +				} +			} +		}  	} else {  		for (int j = 0; j < numactors; ++j) {  			for (int i = 0; i < numactors; ++i) { diff --git a/engines/scumm/he/script_v100he.cpp b/engines/scumm/he/script_v100he.cpp index 665782bf36..fe0904d632 100644 --- a/engines/scumm/he/script_v100he.cpp +++ b/engines/scumm/he/script_v100he.cpp @@ -420,8 +420,7 @@ void ScummEngine_v100he::o100_actorOps() {  		a->_needRedraw = true;  		break;  	case 59: -		// HE games use reverse order of layering, so we adjust -		a->_layer = -pop(); +		a->_layer = pop();  		a->_needRedraw = true;  		break;  	case 63: diff --git a/engines/scumm/he/script_v72he.cpp b/engines/scumm/he/script_v72he.cpp index bb209e78d1..64c63baa9d 100644 --- a/engines/scumm/he/script_v72he.cpp +++ b/engines/scumm/he/script_v72he.cpp @@ -770,8 +770,7 @@ void ScummEngine_v72he::o72_actorOps() {  		a->setTalkCondition(k);  		break;  	case 43: // HE 90+ -		// HE games use reverse order of layering, so we adjust -		a->_layer = -pop(); +		a->_layer = pop();  		a->_needRedraw = true;  		break;  	case 64: | 
