mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-15 06:08:35 +00:00
BLADERUNNER: User choice mode should not autoselect last option
This commit is contained in:
parent
31c79b6064
commit
fd9cfd9604
@ -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) {
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user