diff options
| -rw-r--r-- | engines/bladerunner/dialogue_menu.cpp | 17 | ||||
| -rw-r--r-- | engines/bladerunner/script/ai/sebastian.cpp | 5 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/ct04.cpp | 8 | ||||
| -rw-r--r-- | engines/bladerunner/script/scene/ps09.cpp | 4 | ||||
| -rw-r--r-- | engines/bladerunner/script/script.cpp | 2 | 
5 files changed, 30 insertions, 6 deletions
| diff --git a/engines/bladerunner/dialogue_menu.cpp b/engines/bladerunner/dialogue_menu.cpp index fb777d958d..94d24dc38b 100644 --- a/engines/bladerunner/dialogue_menu.cpp +++ b/engines/bladerunner/dialogue_menu.cpp @@ -135,7 +135,7 @@ bool DialogueMenu::addToList(int answer, bool done, int priorityPolite, int prio  	_items[index].isDone = done;  	_items[index].priorityPolite = priorityPolite;  	_items[index].priorityNormal = priorityNormal; -	_items[index].prioritySurly = prioritySurly; +	_items[index].prioritySurly  = prioritySurly;  	// CHECK(madmoose): BLADE.EXE calls this needlessly  	// calculatePosition(); @@ -193,6 +193,7 @@ int DialogueMenu::queryInput() {  		_selectedItemIndex = 0;  		answer = _items[_selectedItemIndex].answerValue;  	} else if (_listSize == 2) { +#if BLADERUNNER_ORIGINAL_BUGS  		if (_items[0].isDone) {  			_selectedItemIndex = 1;  			answer = _items[_selectedItemIndex].answerValue; @@ -200,6 +201,20 @@ int DialogueMenu::queryInput() {  			_selectedItemIndex = 0;  			answer = _items[_selectedItemIndex].answerValue;  		} +#else +		// In User Choice mode, avoid auto-select of last option +		// In this mode, player should still have agency to skip the last (non- "DONE") +		// question instead of automatically asking it because the other remaining option is "DONE" +		if (_vm->_settings->getPlayerAgenda() != kPlayerAgendaUserChoice) { +			if (_items[0].isDone) { +				_selectedItemIndex = 1; +				answer = _items[_selectedItemIndex].answerValue; +			} else if (_items[1].isDone) { +				_selectedItemIndex = 0; +				answer = _items[_selectedItemIndex].answerValue; +			} +		} +#endif // BLADERUNNER_ORIGINAL_BUGS  	}  	if (answer == -1) { diff --git a/engines/bladerunner/script/ai/sebastian.cpp b/engines/bladerunner/script/ai/sebastian.cpp index 4f2cc0ab80..d5032ebec4 100644 --- a/engines/bladerunner/script/ai/sebastian.cpp +++ b/engines/bladerunner/script/ai/sebastian.cpp @@ -395,6 +395,11 @@ void AIScriptSebastian::dialogue() {  	DM_Add_To_List_Never_Repeat_Once_Selected(990, 7, 3, -1); // NEXUS-6  	if (Dialogue_Menu_Query_List_Size()) { +		// This condition clause for non-empty dialogue menu options before adding the DONE option +		// only occurs in Sebastian's AI script. +		// Probably because, selecting "DONE" here, McCoy has nothing to say +		// so there's no point to add it as a "auto-selected" last option +		// if no other options exist in the list  		Dialogue_Menu_Add_DONE_To_List(1000); // DONE  		Dialogue_Menu_Appear(320, 240);  		int answer = Dialogue_Menu_Query_Input(); diff --git a/engines/bladerunner/script/scene/ct04.cpp b/engines/bladerunner/script/scene/ct04.cpp index 94c585da0b..1028fb72ce 100644 --- a/engines/bladerunner/script/scene/ct04.cpp +++ b/engines/bladerunner/script/scene/ct04.cpp @@ -157,8 +157,8 @@ void SceneScriptCT04::dialogueWithHomeless() {  	switch (answer) {  	case 410: // YES -		Actor_Says(kActorTransient, 10, 14); -		Actor_Says(kActorTransient, 20, 14); +		Actor_Says(kActorTransient, 10, 14); // Thanks. The big man. He kind of limping. +		Actor_Says(kActorTransient, 20, 14); // That way.  		Actor_Modify_Friendliness_To_Other(kActorTransient, kActorMcCoy, 5);  		if (Query_Difficulty_Level() != kGameDifficultyEasy) {  			Global_Variable_Decrement(kVariableChinyen, 10); @@ -167,7 +167,7 @@ void SceneScriptCT04::dialogueWithHomeless() {  	case 420: // NO  		Actor_Says(kActorMcCoy, 430, 3); -		Actor_Says(kActorTransient, 30, 14); +		Actor_Says(kActorTransient, 30, 14); // Hey, that'd work.  		Actor_Modify_Friendliness_To_Other(kActorTransient, kActorMcCoy, -5);  		break;  	} @@ -192,7 +192,7 @@ bool SceneScriptCT04::ClickedOnActor(int actorId) {  					} else {  						Music_Stop(3);  						Actor_Says(kActorMcCoy, 425, kAnimationModeTalk); -						Actor_Says(kActorTransient, 0, 13); +						Actor_Says(kActorTransient, 0, 13); // Hey, maybe spare some chinyen?  						dialogueWithHomeless();  						Actor_Set_Goal_Number(kActorTransient, kGoalTransientCT04Leave);  					} diff --git a/engines/bladerunner/script/scene/ps09.cpp b/engines/bladerunner/script/scene/ps09.cpp index a0a1c25713..1da9201268 100644 --- a/engines/bladerunner/script/scene/ps09.cpp +++ b/engines/bladerunner/script/scene/ps09.cpp @@ -308,7 +308,11 @@ void SceneScriptPS09::dialogueWithGrigorian() {  	) {  		DM_Add_To_List_Never_Repeat_Once_Selected(190, 5, 6, -1); // NOTE  	} +#if BLADERUNNER_ORIGINAL_BUGS  	Dialogue_Menu_Add_To_List(210); // DONE // A bug? why not Dialogue_Menu_Add_DONE_To_List? +#else +	Dialogue_Menu_Add_DONE_To_List(210); // DONE +#endif // BLADERUNNER_ORIGINAL_BUGS  	Dialogue_Menu_Appear(320, 240);  	int answer = Dialogue_Menu_Query_Input(); diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp index f67f480361..1b52d659ca 100644 --- a/engines/bladerunner/script/script.cpp +++ b/engines/bladerunner/script/script.cpp @@ -1180,7 +1180,7 @@ bool ScriptBase::Dialogue_Menu_Add_To_List(int answer) {  bool ScriptBase::Dialogue_Menu_Add_DONE_To_List(int answer) {  	debugC(kDebugScript, "Dialogue_Menu_Add_DONE_To_List(%d)", answer); -	_vm->_dialogueMenu->addToList(answer, 1, 0, 0, 0); +	_vm->_dialogueMenu->addToList(answer, true, 0, 0, 0);  	return false;  } | 
