diff options
Diffstat (limited to 'engines/access/scripts.cpp')
| -rw-r--r-- | engines/access/scripts.cpp | 24 | 
1 files changed, 14 insertions, 10 deletions
| diff --git a/engines/access/scripts.cpp b/engines/access/scripts.cpp index 41dd5cc0d0..38313640f1 100644 --- a/engines/access/scripts.cpp +++ b/engines/access/scripts.cpp @@ -164,7 +164,7 @@ void Scripts::charLoop() {  	_sequence = 2000;  	searchForSequence();  	_vm->_images.clear(); -	_vm->_buffer2.blitFrom(_vm->_buffer1); +	_vm->_buffer2.copyBlock(&_vm->_buffer1, Common::Rect(0, 0, _vm->_buffer2.w, _vm->_buffer2.h));  	_vm->_newRects.clear();  	executeScript(); @@ -536,6 +536,7 @@ void Scripts::cmdDispInv_v1() {  void Scripts::cmdDispInv_v2() {  	_vm->_inventory->newDisplayInv(); +	_vm->_events->forceSetCursor(CURSOR_ARROW);  }  void Scripts::cmdSetAbout() { @@ -689,19 +690,20 @@ void Scripts::cmdDoTravel() {  			int idx = _vm->_travelBox->_tempListIdx[boxX];  			if (Martian::_byte1EEB5[idx] != _vm->_byte26CB5) {  				_vm->_bubbleBox->_bubbleTitle = "_travel"; -				_vm->_bubbleBox->printString("YOU CAN'T GET THERE FROM HERE."); +				_vm->_bubbleBox->printString(_vm->_res->CANT_GET_THERE);  				continue;  			}  			if (_vm->_player->_roomNumber != idx) {  				_vm->_player->_roomNumber = idx;  				_vm->_room->_function = FN_CLEAR1; -				if (Martian::_travelPos[idx][0] == -1) { +				if (_vm->_res->ROOMTBL[idx]._travelPos.x == -1) { +					// For x == -1, the y value is a script Id, not a co-ordinate  					_vm->_player->_roomNumber = idx;  					_vm->_room->_conFlag = true; -					_vm->_scripts->converse1(Martian::_travelPos[idx][1]); +					_vm->_scripts->converse1(_vm->_res->ROOMTBL[idx]._travelPos.y);  					return;  				} -				_vm->_player->_rawPlayer = Common::Point(Martian::_travelPos[idx][0], Martian::_travelPos[idx][1]); +				_vm->_player->_rawPlayer = _vm->_res->ROOMTBL[idx]._travelPos;  				cmdRetPos();  				return;  			} @@ -769,6 +771,11 @@ void Scripts::cmdSpecial() {  	if (_specialFunction == 1) {  		_vm->_screen->restorePalette();  		_vm->_room->_function = FN_RELOAD; + +		// WORKAROUND: This fixes scene establishment being re-shown +		// when restoring savegames in rooms which have one +		if (_vm->getGameID() == GType_Amazon && !_vm->isCD()) +			_vm->_establishTable[p2] = true;  	}  } @@ -998,10 +1005,7 @@ void Scripts::cmdFreeSound() {  		} while (!_vm->shouldQuit() && sound.isSFXPlaying());  		// Free the sounds -		while (sound._soundTable.size() > 0) { -			delete sound._soundTable[0]._res; -			sound._soundTable.remove_at(0); -		} +		sound.freeSounds();  	}  } @@ -1033,7 +1037,7 @@ void Scripts::cmdPrintWatch() {  }  void Scripts::cmdDispAbout() { -	_vm->_travelBox->getList(Martian::_askTBL, _vm->_ask); +	_vm->_travelBox->getList(Martian::ASK_TBL, _vm->_ask);  	int btnSelected = 0;  	int boxX = _vm->_aboutBox->doBox_v1(_vm->_startAboutItem, _vm->_startAboutBox, btnSelected);  	_vm->_startAboutItem = _vm->_boxDataStart; | 
