mirror of
https://github.com/libretro/scummvm.git
synced 2025-01-01 15:09:47 +00:00
1592 lines
39 KiB
C++
1592 lines
39 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
*/
|
|
|
|
#include "common/textconsole.h"
|
|
#include "titanic/true_talk/deskbot_script.h"
|
|
#include "titanic/true_talk/true_talk_manager.h"
|
|
#include "titanic/titanic.h"
|
|
#include "titanic/translation.h"
|
|
|
|
namespace Titanic {
|
|
|
|
int DeskbotScript::_oldId;
|
|
|
|
#define CURRENT_STATE 17
|
|
|
|
DeskbotScript::DeskbotScript(int val1, const char *charClass, int v2,
|
|
const char *charName, int v3, int val2) :
|
|
TTnpcScript(val1, charClass, v2, charName, v3, val2, -1, -1, -1, 0) {
|
|
CTrueTalkManager::setFlags(18, 0);
|
|
CTrueTalkManager::setFlags(19, 0);
|
|
CTrueTalkManager::setFlags(20, 0);
|
|
CTrueTalkManager::setFlags(21, 0);
|
|
CTrueTalkManager::setFlags(22, 0);
|
|
|
|
setupDials(0, 0, 0);
|
|
_data[0] = 100;
|
|
if (_currentDialNum == 1)
|
|
_currentDialNum = 0;
|
|
|
|
loadRanges("Ranges/Deskbot");
|
|
loadResponses("Responses/Deskbot", 4);
|
|
setupSentences();
|
|
_tagMappings.load("TagMap/Deskbot");
|
|
_words.load("Words/Deskbot");
|
|
_quotes.load("Quotes/Deskbot");
|
|
_states.load("States/Deskbot");
|
|
}
|
|
|
|
void DeskbotScript::setupSentences() {
|
|
_mappings.load("Mappings/Deskbot", 4);
|
|
_entries.load("Sentences/Deskbot");
|
|
_entries2.load("Sentences/Deskbot/2");
|
|
_entries3.load("Sentences/Deskbot/3");
|
|
_dialValues[0] = _dialValues[1] = 0;
|
|
_field68 = 0;
|
|
_entryCount = 0;
|
|
}
|
|
|
|
int DeskbotScript::process(const TTroomScript *roomScript, const TTsentence *sentence) {
|
|
if (roomScript->_scriptId != 110)
|
|
return 2;
|
|
|
|
bool flag20 = getValue(20) != 0;
|
|
CTrueTalkManager::setFlags(20, 0);
|
|
checkItems(nullptr, nullptr);
|
|
|
|
if (preprocess(roomScript, sentence) != 1)
|
|
return 1;
|
|
|
|
CTrueTalkManager::setFlags(CURRENT_STATE, 0);
|
|
setState(0);
|
|
updateCurrentDial(false);
|
|
|
|
if (getValue(1) == 3) {
|
|
if (sentence->localWord("competition") || sentence->contains("competition")
|
|
|| sentence->localWord("won") || sentence->contains("won")
|
|
|| sentence->localWord("winning") || sentence->contains("winning")
|
|
|| sentence->localWord("winner") || sentence->contains("winner")
|
|
|| sentence->contains("35279") || sentence->contains("3 5 2 7 9")
|
|
|| (g_language == Common::DE_DEU && (
|
|
sentence->contains("preisaus") ||
|
|
sentence->contains("tombola") ||
|
|
sentence->contains("lotterie") ||
|
|
sentence->contains("gewonnen") ||
|
|
sentence->contains("glueck") ||
|
|
sentence->contains("das goldene los") ||
|
|
sentence->contains("sechs richtige")
|
|
))
|
|
) {
|
|
addResponse(getDialogueId(41773));
|
|
applyResponse();
|
|
return 2;
|
|
} else if (sentence->localWord("magazine") || sentence->contains("magazine")) {
|
|
addResponse(getDialogueId(41771));
|
|
applyResponse();
|
|
return 2;
|
|
} else if (sentence->localWord("upgrade") || sentence->contains("upgrade")
|
|
|| sentence->localWord("secondclass")) {
|
|
if (CTrueTalkManager::_currentNPC) {
|
|
CGameObject *obj;
|
|
if (CTrueTalkManager::_currentNPC->find("Magazine", &obj, FIND_PET)) {
|
|
addResponse(getDialogueId(41773));
|
|
applyResponse();
|
|
return 2;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (processEntries(&_entries, _entryCount, roomScript, sentence) != 2
|
|
&& processEntries(&_entries2, 0, roomScript, sentence) != 2) {
|
|
if (sentence->localWord("sauce") || sentence->localWord("pureed")) {
|
|
addResponse(getDialogueId(240398));
|
|
applyResponse();
|
|
} else if (sentence->contains("cherries")) {
|
|
addResponse(getDialogueId(240358));
|
|
applyResponse();
|
|
} else if (sentence->contains("42")) {
|
|
addResponse(getDialogueId(240453));
|
|
applyResponse();
|
|
} else if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(241778));
|
|
applyResponse();
|
|
} else {
|
|
if (sentence->contains("98129812"))
|
|
setDialRegion(1, 1);
|
|
|
|
if (!defaultProcess(roomScript, sentence)
|
|
&& processEntries(&_entries3, 0, roomScript, sentence) != 2
|
|
&& processEntries(_defaultEntries, 0, roomScript, sentence) != 2) {
|
|
if (flag20)
|
|
CTrueTalkManager::setFlags(20, 1);
|
|
addResponse(getDialogueId(240569));
|
|
applyResponse();
|
|
}
|
|
}
|
|
}
|
|
|
|
return 2;
|
|
}
|
|
|
|
ScriptChangedResult DeskbotScript::scriptChanged(const TTroomScript *roomScript, uint id) {
|
|
switch (id) {
|
|
case 3:
|
|
case 100:
|
|
case 108:
|
|
CTrueTalkManager::setFlags(21, getValue(21) + 1);
|
|
addResponse(getDialogueId(getValue(22) ? 240577 : 241261));
|
|
applyResponse();
|
|
break;
|
|
|
|
case 109:
|
|
addResponse(getDialogueId(241627));
|
|
applyResponse();
|
|
break;
|
|
|
|
case 140:
|
|
if (getValue(1) == 3)
|
|
addAssignedRoomDialogue3();
|
|
break;
|
|
|
|
case 148:
|
|
CTrueTalkManager::setFlags(3, 1);
|
|
break;
|
|
|
|
case 150:
|
|
CTrueTalkManager::setFlags(2, 1);
|
|
break;
|
|
}
|
|
|
|
return SCR_2;
|
|
}
|
|
|
|
int DeskbotScript::handleQuote(const TTroomScript *roomScript, const TTsentence *sentence,
|
|
uint tag1, uint tag2, uint remainder) {
|
|
switch (tag2) {
|
|
case MKTAG('A', 'D', 'V', 'T'):
|
|
case MKTAG('A', 'R', 'T', 'I'):
|
|
case MKTAG('A', 'R', 'T', 'Y'):
|
|
case MKTAG('B', 'R', 'N', 'D'):
|
|
case MKTAG('C', 'O', 'M', 'D'):
|
|
case MKTAG('D', 'N', 'C', 'E'):
|
|
case MKTAG('H', 'B', 'B', 'Y'):
|
|
case MKTAG('L', 'I', 'T', 'R'):
|
|
case MKTAG('M', 'A', 'G', 'S'):
|
|
case MKTAG('M', 'C', 'P', 'Y'):
|
|
case MKTAG('M', 'I', 'N', 'S'):
|
|
case MKTAG('M', 'U', 'S', 'I'):
|
|
case MKTAG('N', 'I', 'K', 'E'):
|
|
case MKTAG('S', 'F', 'S', 'F'):
|
|
case MKTAG('S', 'O', 'A', 'P'):
|
|
case MKTAG('S', 'O', 'N', 'G'):
|
|
case MKTAG('S', 'P', 'R', 'T'):
|
|
case MKTAG('T', 'E', 'A', 'M'):
|
|
case MKTAG('T', 'V', 'S', 'H'):
|
|
tag2 = MKTAG('E', 'N', 'T', 'N');
|
|
break;
|
|
case MKTAG('A', 'C', 'T', 'R'):
|
|
case MKTAG('A', 'C', 'T', 'S'):
|
|
case MKTAG('A', 'U', 'T', 'H'):
|
|
case MKTAG('B', 'A', 'R', 'K'):
|
|
case MKTAG('B', 'A', 'R', 'U'):
|
|
case MKTAG('B', 'L', 'F', '1'):
|
|
case MKTAG('B', 'L', 'F', '2'):
|
|
case MKTAG('B', 'L', 'P', '1'):
|
|
case MKTAG('B', 'L', 'P', '2'):
|
|
case MKTAG('B', 'L', 'P', '3'):
|
|
case MKTAG('B', 'L', 'P', '4'):
|
|
case MKTAG('B', 'L', 'R', '1'):
|
|
case MKTAG('B', 'L', 'R', '2'):
|
|
case MKTAG('B', 'L', 'T', '1'):
|
|
case MKTAG('B', 'L', 'T', '2'):
|
|
case MKTAG('B', 'L', 'T', '3'):
|
|
case MKTAG('B', 'L', 'T', '4'):
|
|
case MKTAG('B', 'L', 'T', '5'):
|
|
case MKTAG('B', 'O', 'Y', 'S'):
|
|
case MKTAG('C', 'O', 'P', 'S'):
|
|
case MKTAG('D', 'C', 'T', 'R'):
|
|
case MKTAG('F', 'A', 'M', 'E'):
|
|
case MKTAG('F', 'A', 'S', 'H'):
|
|
case MKTAG('G', 'I', 'R', 'L'):
|
|
case MKTAG('H', 'E', 'R', 'O'):
|
|
case MKTAG('H', 'O', 'S', 'T'):
|
|
case MKTAG('K', 'N', 'O', 'B'):
|
|
case MKTAG('N', 'H', 'R', 'O'):
|
|
case MKTAG('R', 'A', 'C', 'E'):
|
|
case MKTAG('S', 'C', 'I', 'T'):
|
|
case MKTAG('T', 'D', 'V', 'P'):
|
|
case MKTAG('T', 'W', 'A', 'T'):
|
|
case MKTAG('W', 'E', 'A', 'T'):
|
|
case MKTAG('W', 'W', 'E', 'B'):
|
|
tag2 = MKTAG('P', 'R', 'S', 'N');
|
|
break;
|
|
case MKTAG('C', 'H', 'S', 'E'):
|
|
case MKTAG('C', 'M', 'N', 'T'):
|
|
case MKTAG('F', 'I', 'L', 'M'):
|
|
case MKTAG('J', 'F', 'O', 'D'):
|
|
case MKTAG('L', 'I', 'Q', 'D'):
|
|
tag2 = MKTAG('F', 'O', 'O', 'D');
|
|
break;
|
|
case MKTAG('C', 'R', 'I', 'M'):
|
|
case MKTAG('C', 'S', 'P', 'Y'):
|
|
case MKTAG('D', 'R', 'U', 'G'):
|
|
tag2 = MKTAG('V', 'B', 'A', 'D');
|
|
break;
|
|
case MKTAG('E', 'A', 'R', 'T'):
|
|
case MKTAG('H', 'O', 'M', 'E'):
|
|
case MKTAG('N', 'P', 'L', 'C'):
|
|
case MKTAG('P', 'L', 'A', 'N'):
|
|
tag2 = MKTAG('P', 'L', 'A', 'C');
|
|
break;
|
|
case MKTAG('F', 'A', 'U', 'N'):
|
|
case MKTAG('F', 'I', 'S', 'H'):
|
|
case MKTAG('F', 'L', 'O', 'R'):
|
|
tag2 = MKTAG('N', 'A', 'T', 'R');
|
|
break;
|
|
case MKTAG('H', 'H', 'L', 'D'):
|
|
case MKTAG('T', 'O', 'Y', 'S'):
|
|
case MKTAG('W', 'E', 'A', 'P'):
|
|
tag2 = MKTAG('M', 'A', 'C', 'H');
|
|
break;
|
|
case MKTAG('M', 'L', 'T', 'Y'):
|
|
case MKTAG('P', 'G', 'R', 'P'):
|
|
case MKTAG('P', 'T', 'I', 'C'):
|
|
tag2 = MKTAG('G', 'R', 'U', 'P');
|
|
break;
|
|
case MKTAG('P', 'K', 'U', 'P'):
|
|
case MKTAG('S', 'E', 'X', '1'):
|
|
case MKTAG('S', 'W', 'E', 'R'):
|
|
tag2 = MKTAG('R', 'U', 'D', 'E');
|
|
break;
|
|
case MKTAG('P', 'H', 'I', 'L'):
|
|
case MKTAG('R', 'C', 'K', 'T'):
|
|
tag2 = MKTAG('S', 'C', 'I', 'E');
|
|
break;
|
|
case MKTAG('T', 'R', 'A', '2'):
|
|
case MKTAG('T', 'R', 'A', '3'):
|
|
tag2 = MKTAG('T', 'R', 'A', 'V');
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return TTnpcScript::handleQuote(roomScript, sentence, tag1, tag2, remainder);
|
|
}
|
|
|
|
int DeskbotScript::updateState(uint oldId, uint newId, int index) {
|
|
if (isDial1Medium() || getValue(1) < 4)
|
|
CTrueTalkManager::setFlags(22, 1);
|
|
|
|
if (newId == 240420 || newId == 240947 || newId == 241261) {
|
|
if (getValue(22) && (newId == 240947 || newId == 241261))
|
|
newId = getRangeValue(241184);
|
|
}
|
|
|
|
if (newId == 240832)
|
|
setDialRegion(1, 0);
|
|
|
|
if (oldId == 241183) {
|
|
if (getValue(1) == 2)
|
|
newId = getRangeValue(241182);
|
|
else if (getValue(1) == 1)
|
|
newId = getRangeValue(241181);
|
|
}
|
|
|
|
if (newId == 240931 && getValue(1) <= 2) {
|
|
newId = 240924;
|
|
} else if (newId == 240924 && getValue(1) > 2) {
|
|
newId = 240931;
|
|
}
|
|
|
|
if (newId == 240830 && getValue(1) == 1) {
|
|
newId = 240801;
|
|
} else if (newId == 240801 && getValue(1) > 1) {
|
|
newId = 240830;
|
|
}
|
|
|
|
if (oldId >= 241217 && oldId <= 241259) {
|
|
addResponse(getDialogueId(241202));
|
|
addResponse(getDialogueId(241200));
|
|
newId = getRangeValue(241199);
|
|
}
|
|
|
|
if (newId == 241354)
|
|
newId = addAssignedRoomDialogue2();
|
|
if (newId == 241353)
|
|
newId = getStateDialogueId();
|
|
if (newId == 240464 && getValue(1) != 1)
|
|
newId = 240462;
|
|
|
|
if (newId == 241635 && isDial1Medium()) {
|
|
addResponse(getDialogueId(241556));
|
|
newId = getRangeValue(241632);
|
|
}
|
|
|
|
if (getValue(20) && (oldId == 240569 || oldId == 240576))
|
|
newId = 240460;
|
|
if (!getValue(20)) {
|
|
if (newId != 240460)
|
|
goto exit;
|
|
CTrueTalkManager::setFlags(20, 1);
|
|
}
|
|
if (newId == 240460 && _oldId != 240569) {
|
|
CTrueTalkManager::setFlags(20, 0);
|
|
newId = 240455;
|
|
}
|
|
|
|
exit:
|
|
_oldId = oldId;
|
|
setCurrentState(newId, index);
|
|
|
|
return newId;
|
|
}
|
|
|
|
int DeskbotScript::preResponse(uint id) {
|
|
int newId = 0;
|
|
if (getValue(1) >= 3 && (
|
|
id == (uint)TRANSLATE(41176, 41190) ||
|
|
id == (uint)TRANSLATE(41738, 41429) ||
|
|
id == (uint)TRANSLATE(41413, 41755) ||
|
|
id == (uint)TRANSLATE(41740, 41757)
|
|
)) {
|
|
newId = 241601;
|
|
}
|
|
if (id == (uint)TRANSLATE(42114, 42132))
|
|
CTrueTalkManager::triggerAction(20, 0);
|
|
|
|
return newId;
|
|
}
|
|
|
|
uint DeskbotScript::getDialsBitset() const {
|
|
if (getDialRegion(1))
|
|
return getDialRegion(0) ? 2 : 3;
|
|
else
|
|
return getDialRegion(0) ? 0 : 1;
|
|
}
|
|
|
|
int DeskbotScript::doSentenceEntry(int val1, const int *srcIdP, const TTroomScript *roomScript, const TTsentence *sentence) {
|
|
uint id = *srcIdP;
|
|
|
|
if (g_language == Common::DE_DEU) {
|
|
if (val1 != 4501)
|
|
return TTnpcScript::doSentenceEntry(val1, srcIdP, roomScript, sentence);
|
|
|
|
switch (getValue(1)) {
|
|
case 1:
|
|
id = 240336;
|
|
break;
|
|
|
|
case 2:
|
|
id = addAssignedRoomDialogue();
|
|
break;
|
|
|
|
case 3:
|
|
if (id == 240431 || id == 240432) {
|
|
if (getValue(3) == 1) {
|
|
if (id == 240431)
|
|
id = 240432;
|
|
} else {
|
|
if (id == 240432)
|
|
id = 240431;
|
|
}
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
addResponse(getDialogueId(id));
|
|
applyResponse();
|
|
return 2;
|
|
} else {
|
|
switch (val1) {
|
|
case 1:
|
|
if (id == 240431 || id == 240432) {
|
|
switch (getValue(1)) {
|
|
case 1:
|
|
id = 240336;
|
|
break;
|
|
case 2:
|
|
id = addAssignedRoomDialogue();
|
|
break;
|
|
case 3:
|
|
if (getValue(3) == 1) {
|
|
if (id == 240431)
|
|
id = 240432;
|
|
} else {
|
|
if (id == 240432)
|
|
id = 240431;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
|
|
addResponse(getDialogueId(id));
|
|
applyResponse();
|
|
return 2;
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
if (getValue(1) == 1)
|
|
return 1;
|
|
break;
|
|
|
|
case 3:
|
|
if (getValue(1) != 1)
|
|
return 1;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
bool DeskbotScript::randomResponse(uint index) {
|
|
if (getValue(1) == 1 || getRandomNumber(100) > 10 || getRandomNumber(2) <= index)
|
|
return 0;
|
|
|
|
if (getRandomNumber(100) > 95) {
|
|
deleteResponses();
|
|
addResponse(getDialogueId(241195));
|
|
applyResponse();
|
|
} else {
|
|
setResponseFromArray(index, 241193);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
bool DeskbotScript::isDial0Medium() const {
|
|
return getDialRegion(0) == 1;
|
|
}
|
|
|
|
bool DeskbotScript::isDial0Low() const {
|
|
return getDialRegion(0) == 0;
|
|
}
|
|
|
|
bool DeskbotScript::isDial1Medium() const {
|
|
return getDialRegion(1) == 1;
|
|
}
|
|
|
|
bool DeskbotScript::isDial1Low() const {
|
|
return getDialRegion(1) == 0;
|
|
}
|
|
|
|
uint DeskbotScript::addAssignedRoomDialogue() {
|
|
if (isDial1Medium()) {
|
|
addResponse(getDialogueId(240407));
|
|
addResponse(getDialogueId(241510));
|
|
CTrueTalkManager::setFlags(1, 1);
|
|
CTrueTalkManager::triggerAction(19, 1);
|
|
|
|
int roomNum, floorNum, elevatorNum;
|
|
getAssignedRoom(&roomNum, &floorNum, &elevatorNum);
|
|
|
|
addResponse(getDialogueId(241317 + roomNum));
|
|
addResponse(getDialogueId(241271 + floorNum));
|
|
addResponse(getDialogueId(241511));
|
|
addResponse(getDialogueId(241313 + elevatorNum));
|
|
|
|
return 241512;
|
|
} else {
|
|
return 240567;
|
|
}
|
|
}
|
|
|
|
uint DeskbotScript::addAssignedRoomDialogue2() {
|
|
addResponse(getDialogueId(241355));
|
|
int roomNum = 0, floorNum = 0, elevatorNum = 0;
|
|
getAssignedRoom(&roomNum, &floorNum, &elevatorNum);
|
|
|
|
addResponse(getDialogueId(241317 + roomNum));
|
|
addResponse(getDialogueId(241271 + floorNum));
|
|
addResponse(getDialogueId(241356));
|
|
addResponse(getDialogueId(241313 + elevatorNum));
|
|
|
|
return 241357;
|
|
}
|
|
|
|
void DeskbotScript::addAssignedRoomDialogue3() {
|
|
addResponse(getDialogueId(241513));
|
|
addResponse(getDialogueId(241510));
|
|
|
|
CTrueTalkManager::setFlags(1, 2);
|
|
setDialRegion(0, 0);
|
|
setDialRegion(1, 0);
|
|
CTrueTalkManager::triggerAction(19, 2);
|
|
CTrueTalkManager::setFlags(3, 0);
|
|
|
|
int roomNum = 1, floorNum = 1, elevatorNum = 1;
|
|
getAssignedRoom(&roomNum, &floorNum, &elevatorNum);
|
|
|
|
addResponse(getDialogueId(241317 + roomNum));
|
|
addResponse(getDialogueId(241271 + floorNum));
|
|
addResponse(getDialogueId(241511));
|
|
addResponse(getDialogueId(241313 + elevatorNum));
|
|
addResponse(getDialogueId(241512));
|
|
applyResponse();
|
|
}
|
|
|
|
uint DeskbotScript::getStateDialogueId() const {
|
|
switch (getValue(1)) {
|
|
case 1:
|
|
return 241503;
|
|
case 2:
|
|
return 241504;
|
|
default:
|
|
return 241505;
|
|
}
|
|
}
|
|
|
|
void DeskbotScript::setCurrentState(uint newId, uint index) {
|
|
int newValue = getValue(CURRENT_STATE);
|
|
|
|
for (uint idx = 0; idx < _states.size(); ++idx) {
|
|
const TTupdateState &us = _states[idx];
|
|
if (newId == (idx == 0 ? 0 : us._newId)) {
|
|
uint bits = us._dialBits;
|
|
|
|
if (!bits
|
|
|| (index == 1 && (bits & 1) && (bits & 4))
|
|
|| (index == 0 && (bits & 2) && (bits & 4))
|
|
|| (index == 3 && (bits & 1) && (bits & 8))
|
|
|| (index == 2 && (bits & 2) && (bits & 8))) {
|
|
newValue = us._newValue;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
CTrueTalkManager::setFlags(CURRENT_STATE, newValue);
|
|
}
|
|
|
|
int DeskbotScript::preprocess(const TTroomScript *roomScript, const TTsentence *sentence) {
|
|
if (!roomScript || !sentence)
|
|
return 1;
|
|
|
|
bool stateFlag = true, applyFlag = false;
|
|
switch (getValue(CURRENT_STATE)) {
|
|
case 1:
|
|
if (sentence->_category != 3 && sentence->_category != 4
|
|
&& sentence->_category != 6 && sentence->_category != 10
|
|
&& sentence->_category != 2) {
|
|
addResponse(getDialogueId(240423));
|
|
applyFlag = true;
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
if (sentence->localWord("gobbledygook")) {
|
|
addResponse(getDialogueId(240427));
|
|
applyFlag = true;
|
|
}
|
|
break;
|
|
|
|
case 3:
|
|
if (sentence->_category == 11 || sentence->_category == 13
|
|
|| sentence->_category == 3 || sentence->localWord("upgrade")) {
|
|
addResponse(getDialogueId(240433));
|
|
applyFlag = true;
|
|
}
|
|
break;
|
|
|
|
case 4:
|
|
addResponse(getDialogueId(sentence->_category == 11 || sentence->_category == 13
|
|
? 240495 : 240494));
|
|
applyFlag = true;
|
|
break;
|
|
|
|
case 5:
|
|
if (isDial1Low() && getValue(1) == 4) {
|
|
if (sentence->localWord("name") || sentence->localWord("called")
|
|
|| sentence->localWord("passenger")) {
|
|
addResponse(getDialogueId(240867));
|
|
addResponse(getDialogueId(240745));
|
|
} else {
|
|
addResponse(getDialogueId(240446));
|
|
}
|
|
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 6:
|
|
if (isDial1Low() && getValue(1) == 4) {
|
|
if (sentence->localWord("passenger")) {
|
|
addResponse(getDialogueId(240449));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
} else if (sentence->localWord("home")
|
|
|| sentence->localWord("destroy")) {
|
|
addResponse(getDialogueId(240574));
|
|
stateFlag = true;
|
|
} else if (sentence->localWord("name")
|
|
|| sentence->localWord("called")
|
|
|| sentence->_category == 11) {
|
|
addResponse(getDialogueId(240448));
|
|
stateFlag = true;
|
|
} else {
|
|
addResponse(getDialogueId(240489));
|
|
stateFlag = true;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 7:
|
|
if (sentence->_category == 11 || sentence->_category == 13
|
|
|| (sentence->localWord("what") && sentence->localWord("wrong"))
|
|
|| sentence->localWord("clothes")) {
|
|
addResponse(getDialogueId(240489));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 8:
|
|
if (isDial1Low() && getValue(1) == 4) {
|
|
if (sentence->_category == 12 || sentence->_category == 13 ||
|
|
(g_language != Common::DE_DEU && sentence->contains("do not"))) {
|
|
addResponse(getDialogueId(240447));
|
|
setDialRegion(0, 0);
|
|
setDialRegion(1, 0);
|
|
CTrueTalkManager::setFlags(1, 3);
|
|
CTrueTalkManager::triggerAction(19, 3);
|
|
CTrueTalkManager::setFlags(22, 1);
|
|
applyFlag = true;
|
|
} else if (sentence->_category == 11) {
|
|
addResponse(getDialogueId(240746));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
} else {
|
|
addResponse(getDialogueId(240448));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 9:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
if (isDial0Medium()) {
|
|
addResponse(getDialogueId(240382));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
} else {
|
|
addResponse(getDialogueId(240548));
|
|
applyFlag = true;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 10:
|
|
if (isDial1Medium() && searchQuotes(roomScript, sentence)) {
|
|
if (isDial0Medium()) {
|
|
addResponse(getDialogueId(240405));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
} else {
|
|
addResponse(getDialogueId(240548));
|
|
applyFlag = true;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 11:
|
|
if (isDial0Medium() && isDial1Medium()
|
|
&& searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240406));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 12:
|
|
if (isDial0Medium() && isDial1Medium()
|
|
&& searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240548));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 13:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240348));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 14:
|
|
if (isDial1Medium()) {
|
|
addResponse(getDialogueId(240568));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 15:
|
|
if (sentence->localWord("magazine")) {
|
|
addAssignedRoomDialogue3();
|
|
stateFlag = true;
|
|
}
|
|
break;
|
|
|
|
case 17:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240401));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 18:
|
|
if (!isDial0Low() || !isDial1Low()) {
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240402));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 19:
|
|
if (!isDial0Low() && searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240403));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 20:
|
|
if (!isDial1Medium() && searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240548));
|
|
applyFlag = true;
|
|
}
|
|
break;
|
|
|
|
case 21:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240382));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 22:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240383));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 23:
|
|
if (isDial0Medium() && searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240384));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 24:
|
|
setDialRegion(0, 0);
|
|
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240548));
|
|
applyFlag = true;
|
|
}
|
|
break;
|
|
|
|
case 25:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240349));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 26:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240350));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 27:
|
|
case 30:
|
|
case 33:
|
|
case 36:
|
|
case 40:
|
|
case 43:
|
|
case 46:
|
|
case 50:
|
|
case 55:
|
|
case 58:
|
|
case 61:
|
|
case 68:
|
|
case 73:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240548));
|
|
applyFlag = true;
|
|
}
|
|
break;
|
|
|
|
case 28:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240373));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 29:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240374));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 31:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240346));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 32:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240347));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 34:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240376));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 35:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240377));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 37:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240369));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 38:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240370));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 39:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240371));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 41:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240352));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 42:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240353));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 44:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240389));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 45:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240390));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 47:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240395));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 48:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240396));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 49:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240397));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 51:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240363));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 52:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240364));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 53:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240365));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 54:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240366));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 56:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240392));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 57:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240393));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 59:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240386));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 60:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240387));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 62:
|
|
if (isDial1Medium() && getValue(1) == 1) {
|
|
if (isDial0Medium()) {
|
|
if (sentence->localWord("down")) {
|
|
addResponse(getDialogueId(240413));
|
|
applyFlag = true;
|
|
}
|
|
} else if (sentence->contains("left") || sentence->contains("right")) {
|
|
addResponse(getDialogueId(240415));
|
|
CTrueTalkManager::triggerAction(sentence->localWord("down") ? 22 : 23, 0);
|
|
} else {
|
|
addResponse(getDialogueId(240414));
|
|
applyFlag = true;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 63:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240836));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 64:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240837));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 65:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240838));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 66:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240839));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 67:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(240840));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 69:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(241104));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 70:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(241105));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 71:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(241106));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 72:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(241107));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 74:
|
|
case 75:
|
|
if (sentence->_category == 24) {
|
|
addResponse(getDialogueId(240972));
|
|
applyFlag = true;
|
|
} else if (sentence->localWord("good") || sentence->localWord("yes")
|
|
|| sentence->localWord("well") || sentence->localWord("ill")
|
|
|| sentence->localWord("sad")) {
|
|
addResponse(getDialogueId(240805));
|
|
applyFlag = true;
|
|
}
|
|
break;
|
|
|
|
case 76:
|
|
if (sentence->_category == 6) {
|
|
addResponse(getDialogueId(240767));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 77:
|
|
if (sentence->_category == 3) {
|
|
addResponse(getDialogueId(241109));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 78:
|
|
// "Do you have a reservation?"
|
|
if (sentence->_category == 11 || sentence->_category == 13) {
|
|
// Player said they have a reservation
|
|
addResponse(getDialogueId(241262));
|
|
} else if (sentence->_category == 12 ||
|
|
(g_language != Common::DE_DEU && sentence->contains("do not"))) {
|
|
// Player said they don't have a reservation
|
|
setDialRegion(0, 0);
|
|
setDialRegion(1, 0);
|
|
addResponse(getDialogueId(241268));
|
|
addAskBreakfast();
|
|
} else if (sentence->contains("skip")) {
|
|
// WORKAROUND: Added 'skip' to allow skipping entire checkin
|
|
addAssignedRoom();
|
|
setState(0);
|
|
CTrueTalkManager::setFlags(CURRENT_STATE, 0);
|
|
} else {
|
|
// Player didn't say yes or no
|
|
addResponse(getDialogueId(240745));
|
|
}
|
|
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
break;
|
|
|
|
case 79:
|
|
switch (checkCommonWords(sentence)) {
|
|
case 1:
|
|
addResponse(getDialogueId(241263));
|
|
break;
|
|
case 2:
|
|
addResponse(getDialogueId(241266));
|
|
break;
|
|
case 3:
|
|
addAssignedRoom();
|
|
setState(0);
|
|
CTrueTalkManager::setFlags(CURRENT_STATE, 0);
|
|
return 2;
|
|
default:
|
|
addResponse(getDialogueId(241267));
|
|
break;
|
|
}
|
|
|
|
addAskBreakfast();
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
break;
|
|
|
|
case 81:
|
|
addResponse(getDialogueId(sentence->_category == 12 ? 240602 : 241337));
|
|
applyResponse();
|
|
setState(0);
|
|
CTrueTalkManager::setFlags(CURRENT_STATE, 0);
|
|
return 2;
|
|
|
|
case 82:
|
|
if (sentence->_category == 2) {
|
|
addResponse(getDialogueId(241339));
|
|
applyFlag = true;
|
|
}
|
|
break;
|
|
|
|
case 83:
|
|
if ((isDial1Medium() && isDial0Low()) ||
|
|
(isDial1Low() && isDial0Medium())) {
|
|
if (sentence->localWord("yes") || sentence->localWord("but")) {
|
|
if (sentence->localWord("will") || sentence->localWord("do")) {
|
|
addResponse(getDialogueId(241366));
|
|
applyFlag = true;
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 84:
|
|
if (sentence->_category == 12 || sentence->contains("vegetarian")
|
|
|| sentence->contains("vegitarian")) {
|
|
addResponse(getDialogueId(241718));
|
|
addResponse(getDialogueId(241709));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
} else if (sentence->contains("continental")
|
|
|| sentence->contains("kontinent")
|
|
|| sentence->contains("full")
|
|
|| sentence->contains("porky")
|
|
|| sentence->contains("the 1")
|
|
|| sentence->contains("the 2")
|
|
|| sentence->contains("former")
|
|
|| sentence->contains("latter")
|
|
|| sentence->contains("speck")
|
|
|| sentence->contains("wurst")
|
|
|| sentence->contains("englisch")
|
|
) {
|
|
addResponse(getDialogueId(241717));
|
|
addResponse(getDialogueId(241709));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
} else {
|
|
if (getRandomNumber(100) < 80 && sentence2C(sentence))
|
|
addResponse(getDialogueId(241707));
|
|
addResponse(getDialogueId(241719));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 85:
|
|
if (sentence->_category == 12 || sentence->contains("bugle")
|
|
|| sentence->contains("buggle") || sentence->contains("trumpet")
|
|
|| sentence->contains("saxophone") || sentence->contains("kazoo")
|
|
|| sentence->contains("blerontin 1") || sentence->contains("the 1")
|
|
|| sentence->contains("the 2") || sentence->contains("the 3")
|
|
|| sentence->contains("the 4") || sentence->contains("all of them")
|
|
|| sentence->contains("the lot") || sentence->contains("buegelhorn")
|
|
|| sentence->contains("bugelhorn") || sentence->contains("trompete")
|
|
|| sentence->contains("saxophon") || sentence->contains("popanz")
|
|
) {
|
|
addResponse(getDialogueId(241710));
|
|
addResponse(getDialogueId(241713));
|
|
} else {
|
|
if (getRandomNumber(100) < 80 && sentence2C(sentence))
|
|
addResponse(getDialogueId(241707));
|
|
|
|
addResponse(getDialogueId(241711));
|
|
}
|
|
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
break;
|
|
|
|
case 86:
|
|
if (sentence->_category == 12 || sentence->_category == 11
|
|
|| sentence->contains(TRANSLATE("view", "aussicht"))) {
|
|
addResponse(getDialogueId(241714));
|
|
addResponse(getDialogueId(241699));
|
|
} else {
|
|
if (getRandomNumber(100) < 80 && sentence2C(sentence))
|
|
addResponse(getDialogueId(241707));
|
|
|
|
if (getRandomNumber(100) < 50) {
|
|
addResponse(getDialogueId(241715));
|
|
} else {
|
|
addResponse(getDialogueId(241712));
|
|
addResponse(getDialogueId(241713));
|
|
}
|
|
|
|
}
|
|
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
break;
|
|
|
|
case 87:
|
|
if (sentence->contains("corner") || sentence->contains("on the end")
|
|
|| sentence->contains("balcony") || sentence->contains("neither")
|
|
|| sentence->contains("the 1") || sentence->contains("the 2")
|
|
|| sentence->contains("former") || sentence->contains("latter")
|
|
|| sentence->contains("either") || sentence->contains("suedlage")
|
|
|| sentence->contains("balkon")) {
|
|
addResponse(getDialogueId(241700));
|
|
addResponse(getDialogueId(241687));
|
|
} else {
|
|
if (getRandomNumber(100) < 80 && sentence2C(sentence))
|
|
addResponse(getDialogueId(241707));
|
|
|
|
addResponse(getDialogueId(241701));
|
|
addResponse(getDialogueId(241699));
|
|
}
|
|
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
break;
|
|
|
|
case 88:
|
|
if (sentence->contains("imperial") || sentence->contains(TRANSLATE("the 1", "fuerstlich"))) {
|
|
addResponse(getDialogueId(241700));
|
|
addResponse(getDialogueId(241739));
|
|
} else if (sentence->contains("royal") || sentence->contains(TRANSLATE("the 2", "majest"))) {
|
|
addResponse(getDialogueId(241690));
|
|
} else if (sentence->contains("despotic") || sentence->contains("despot")
|
|
|| sentence->contains("the last") || sentence->contains("latter")) {
|
|
addResponse(getDialogueId(241688));
|
|
} else if (sentence->contains("president") || sentence->contains("presidential")
|
|
|| sentence->contains("the 3") || sentence->contains("praesident")) {
|
|
addResponse(getDialogueId(241689));
|
|
addResponse(getDialogueId(241739));
|
|
} else {
|
|
if (getRandomNumber(100) < 80 && sentence2C(sentence))
|
|
addResponse(getDialogueId(241707));
|
|
|
|
addResponse(getDialogueId(241692));
|
|
}
|
|
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
break;
|
|
|
|
case 89:
|
|
if (sentence->contains("king")) {
|
|
addResponse(getDialogueId(241691));
|
|
} else if (sentence->contains("queen") || sentence->contains("prince")
|
|
|| sentence->contains("princess") || sentence->contains("small")
|
|
|| sentence->contains("the 1") || sentence->contains("the 2")
|
|
|| sentence->contains("the 3") || sentence->contains("the 4")
|
|
|| sentence->contains("big") || sentence->contains("large")
|
|
|| sentence->contains("prinz") || sentence->contains("gross")) {
|
|
addResponse(getDialogueId(241700));
|
|
addResponse(getDialogueId(241739));
|
|
} else {
|
|
if (getRandomNumber(100) < 100 && sentence2C(sentence))
|
|
addResponse(getDialogueId(241707));
|
|
|
|
addResponse(getDialogueId(241690));
|
|
}
|
|
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
break;
|
|
|
|
case 90:
|
|
if (sentence->contains("constitutional") || sentence->contains("const")
|
|
|| sentence->contains("absolute") || sentence->contains("small")
|
|
|| sentence->contains("the 1") || sentence->contains("the 2")
|
|
|| sentence->contains("big") || sentence->contains("large")
|
|
|| sentence->contains("verfassung") || sentence->contains("absolut")
|
|
|| sentence->contains("gross")) {
|
|
addResponse(getDialogueId(241700));
|
|
addResponse(getDialogueId(241739));
|
|
} else {
|
|
if (getRandomNumber(100) < 80 && sentence2C(sentence))
|
|
addResponse(getDialogueId(241708));
|
|
|
|
addResponse(getDialogueId(241691));
|
|
}
|
|
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
break;
|
|
|
|
case 91:
|
|
if (sentence->contains("benev") || sentence->contains("dict")
|
|
|| sentence->contains("small") || sentence->contains("the 1")
|
|
|| sentence->contains("the 2") || sentence->contains("big")
|
|
|| sentence->contains("large") || sentence->contains("former")
|
|
|| sentence->contains("latter")
|
|
|| sentence->contains("aufgekl") || sentence->contains("diktator")
|
|
|| sentence->contains("gross")) {
|
|
addResponse(getDialogueId(241700));
|
|
addResponse(getDialogueId(241739));
|
|
} else {
|
|
if (getRandomNumber(100) < 80 && sentence2C(sentence))
|
|
addResponse(getDialogueId(241708));
|
|
|
|
addResponse(getDialogueId(241688));
|
|
}
|
|
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
break;
|
|
|
|
case 92:
|
|
case 93:
|
|
// "Fish?"
|
|
if (sentence->_category == 11 || sentence->_category == 13) {
|
|
// Yes
|
|
addResponse(getDialogueId(241077));
|
|
addResponse(getDialogueId(241706));
|
|
} else if (sentence->_category == 12) {
|
|
// No
|
|
addAssignedRoom();
|
|
setState(0);
|
|
CTrueTalkManager::setFlags(CURRENT_STATE, 0);
|
|
return 2;
|
|
} else if (g_vm->_trueTalkManager->_quotes.find(sentence->_initialLine.c_str())
|
|
== MKTAG('F', 'I', 'S', 'H')) {
|
|
// WORKAROUND: Original passed _normalizedLine, but "fish" is one of the common
|
|
// phrases replaced with with alternative text "completelyrandom"
|
|
addResponse(getDialogueId(240877));
|
|
addResponse(getDialogueId(241706));
|
|
}else {
|
|
// All other responses
|
|
if (getRandomNumber(100) < 80 && sentence2C(sentence))
|
|
addResponse(getDialogueId(241707));
|
|
|
|
addResponse(getDialogueId(241705));
|
|
if (getRandomNumber(100) < 80)
|
|
addResponse(getDialogueId(241739));
|
|
}
|
|
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
break;
|
|
|
|
case 94:
|
|
if (sentence->contains("seperate") || sentence->contains("separate")
|
|
|| sentence->contains("detached") || sentence->contains("outside")
|
|
|| sentence->contains("onsweet") || sentence->contains("ensuite")
|
|
|| sentence->contains("suite") || sentence->contains("next door")
|
|
|| sentence->contains("the 1") || sentence->contains("the 2")
|
|
|| sentence->contains("former") || sentence->contains("latter")
|
|
|| sentence->contains("same room") || sentence->contains("ohne")
|
|
|| sentence->contains("mit") || sentence->contains("die gleiche kabine")
|
|
|| sentence->contains("dieselbe kabine")) {
|
|
addAssignedRoom();
|
|
setState(0);
|
|
CTrueTalkManager::setFlags(CURRENT_STATE, 0);
|
|
return 2;
|
|
} else {
|
|
if (getRandomNumber(100) < 80 && sentence2C(sentence))
|
|
addResponse(getDialogueId(241707));
|
|
addResponse(getDialogueId(241706));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 95:
|
|
if (isDial1Medium()) {
|
|
if ((sentence->localWord("i") && sentence->localWord("am"))
|
|
|| sentence->localWord("me")) {
|
|
addResponse(getDialogueId(240632));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 96:
|
|
if (sentence->_category == 2) {
|
|
addResponse(getDialogueId(241350));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
case 97:
|
|
if (searchQuotes(roomScript, sentence)) {
|
|
addResponse(getDialogueId(241351));
|
|
applyFlag = true;
|
|
stateFlag = false;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (applyFlag)
|
|
applyResponse();
|
|
if (stateFlag) {
|
|
setState(0);
|
|
CTrueTalkManager::setFlags(CURRENT_STATE, 0);
|
|
}
|
|
|
|
return applyFlag ? 2 : 1;
|
|
}
|
|
|
|
int DeskbotScript::searchQuotes(const TTroomScript *roomScript, const TTsentence *sentence) {
|
|
TTtreeResult treeResult[32];
|
|
return g_vm->_trueTalkManager->_quotesTree.search(sentence->_normalizedLine.c_str(),
|
|
TREE_2, &treeResult[0], 0, 0) != -1;
|
|
}
|
|
|
|
int DeskbotScript::checkCommonWords(const TTsentence *sentence) {
|
|
if (sentence->contains("xyzzy"))
|
|
return 3;
|
|
|
|
const TTquotes "es = g_vm->_trueTalkManager->_quotes;
|
|
if (quotes._loaded) {
|
|
uint tagId = quotes.find(sentence->_normalizedLine.c_str());
|
|
if (tagId == MKTAG('F', 'U', 'L', 'N')
|
|
|| tagId == MKTAG('T', 'D', 'V', 'P')
|
|
|| tagId == MKTAG('H', 'E', 'R', 'O')
|
|
|| sentence->contains("douglas adam"))
|
|
return 1;
|
|
else if (tagId == MKTAG('J', 'N', 'A', 'M')
|
|
|| tagId == MKTAG('N', 'I', 'K', 'N')
|
|
|| tagId == MKTAG('B', 'O', 'Y', 'S')
|
|
|| tagId == MKTAG('G', 'I', 'R', 'L'))
|
|
return 2;
|
|
} else {
|
|
if (sentence->contains("douglas adams")
|
|
|| sentence->contains("shaikh")
|
|
|| sentence->contains("millican")
|
|
|| sentence->contains("williams")
|
|
|| sentence->contains("henkes")
|
|
|| sentence->contains("kenny"))
|
|
return 1;
|
|
else if (sentence->contains("richard")
|
|
|| sentence->contains("jason")
|
|
|| sentence->contains("mike")
|
|
|| sentence->contains("renata"))
|
|
return 2;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
void DeskbotScript::addAskBreakfast() {
|
|
addResponse(getDialogueId(241716));
|
|
}
|
|
|
|
void DeskbotScript::addAssignedRoom() {
|
|
addResponse(getDialogueId(241696));
|
|
addResponse(getDialogueId(241697));
|
|
CTrueTalkManager::setFlags(1, 3);
|
|
CTrueTalkManager::triggerAction(19, 3);
|
|
CTrueTalkManager::setFlags(22, 1);
|
|
|
|
int roomNum = 1, floorNum = 1, elevatorNum = 1;
|
|
getAssignedRoom(&roomNum, &floorNum, &elevatorNum);
|
|
addResponse(getDialogueId(241313 + elevatorNum));
|
|
addResponse(getDialogueId(241271 + floorNum));
|
|
addResponse(getDialogueId(241317 + roomNum));
|
|
addResponse(getDialogueId(241698));
|
|
applyResponse();
|
|
}
|
|
|
|
} // End of namespace Titanic
|