diff options
Diffstat (limited to 'engines/voyeur/files_threads.cpp')
| -rw-r--r-- | engines/voyeur/files_threads.cpp | 22 | 
1 files changed, 16 insertions, 6 deletions
| diff --git a/engines/voyeur/files_threads.cpp b/engines/voyeur/files_threads.cpp index c77cdd4fe5..b766733699 100644 --- a/engines/voyeur/files_threads.cpp +++ b/engines/voyeur/files_threads.cpp @@ -367,6 +367,7 @@ void ThreadResource::parsePlayCommands() {  			break;  		case 2: +			// Play an audio event  			v2 = READ_LE_UINT16(dataP);  			if (v2 == 0 || READ_LE_UINT16(_vm->_controlPtr->_ptr + 4) == v2) { @@ -397,6 +398,7 @@ void ThreadResource::parsePlayCommands() {  			break;  		case 3: +			// Play a video event  			v2 = READ_LE_UINT16(dataP);  			if (v2 == 0 || READ_LE_UINT16(_vm->_controlPtr->_ptr + 4) == v2) { @@ -443,6 +445,7 @@ void ThreadResource::parsePlayCommands() {  		case 4:  		case 22: +			// Case 22: Endgame news reports  			_vm->_audioVideoId = READ_LE_UINT16(dataP) - 1;  			dataP += 2; @@ -462,7 +465,7 @@ void ThreadResource::parsePlayCommands() {  				_vm->_audioVideoId = -1;  				parseIndex = 999;  			} else { -				int count = _vm->_bVoy->getBoltGroup(_vm->_playStampGroupId)->_entries.size(); +				int count = _vm->_bVoy->getBoltGroup(_vm->_playStampGroupId)->_entries.size() / 2;  				_vm->_soundManager.stopVOCPlay();  				_vm->_eventsManager.getMouseInfo(); @@ -492,7 +495,7 @@ void ThreadResource::parsePlayCommands() {  					_vm->_soundManager.stopVOCPlay();  					if (i == (count - 1)) -						_vm->_eventsManager.delay(480); +						_vm->_eventsManager.delayClick(480);  					if (_vm->shouldQuit() || _vm->_eventsManager._mouseClicked)  						break; @@ -594,16 +597,21 @@ void ThreadResource::parsePlayCommands() {  			break;  		case 10: +			// Pick the person who is to die, during startup  			if (_vm->_iForceDeath == -1) { +				// No specific person has been preset to be killed, so pick one randomly.  +				// The loop below was used because the victim was persisted from the previous  +				// play-through, so it ensured that a different victim is picked.  				int randomVal;  				do {  					randomVal = _vm->getRandomNumber(3) + 1; -				} while (randomVal == _vm->_voy._field4380); +				} while (randomVal == _vm->_voy._victimNumber); -				_vm->_voy._field4380 = randomVal; +				_vm->_voy._victimNumber = randomVal;  				WRITE_LE_UINT16(_vm->_controlPtr->_ptr + 4, randomVal);  			} else { -				_vm->_voy._field4380 = _vm->_iForceDeath; +				// Player has seen something that locks in the character to die +				_vm->_voy._victimNumber = _vm->_iForceDeath;  				WRITE_LE_UINT16(_vm->_controlPtr->_ptr + 4, _vm->_iForceDeath);  			} @@ -660,11 +668,13 @@ void ThreadResource::parsePlayCommands() {  			break;  		case 18: +			// Called during the murder (Sunday 10:30PM) time period, to specify the +			// time expired point at which the murder takes place  			v2 = READ_LE_UINT16(dataP);  			v3 = READ_LE_UINT16(dataP + 2);  			if (v2 == 0 || READ_LE_UINT16(_vm->_controlPtr->_ptr + 4) == v2) -				_vm->_voy._field4F2 = v3; +				_vm->_voy._murderThreshold = v3;  			dataP += 4;  			break; | 
