diff options
| -rw-r--r-- | scumm/script.cpp | 21 | 
1 files changed, 17 insertions, 4 deletions
| diff --git a/scumm/script.cpp b/scumm/script.cpp index 7909b464c1..fda1188e34 100644 --- a/scumm/script.cpp +++ b/scumm/script.cpp @@ -843,10 +843,23 @@ void ScummEngine::killScriptsAndResources() {  	/* Nuke local object names */  	if (_newNames) {  		for (i = 0; i < _numNewNames; i++) { -			int j = _newNames[i]; -			if (j && getOwner(j) == 0) { -				_newNames[i] = 0; -				nukeResource(rtObjectName, i); +			const int obj = _newNames[i]; +			if (obj) { +				const int owner = getOwner(obj); +				// We can delete custom name resources if either the object is +				// no longer in use (i.e. not owned by anyone anymore); or if +				// it is an object which is owned by a room. +				if (owner == 0 || owner == OF_OWNER_ROOM) { +					// WORKAROUND for a problem mentioned in bug report #941275: +					// In FOA in the sentry room, in the chest plate of the statue, +					// the pegs may be renamed to mouth: this custom name is lost +					// when leaving the room; this hack prevents this). +					if (owner == OF_OWNER_ROOM && _gameId == GID_INDY4 && 336 <= obj && obj <= 340) +						continue; + +					_newNames[i] = 0; +					nukeResource(rtObjectName, i); +				}  			}  		}  	} | 
