aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2016-05-27 06:36:38 -0400
committerPaul Gilbert2016-07-15 19:15:46 -0400
commit63439a1c94d0279e6b00e8663d3ae554a3379b0f (patch)
tree42763d2b47979785049a4eb84fab7f75203682f2 /engines
parent35f18390636c74c35af55426d6f48d9db59707bd (diff)
downloadscummvm-rg350-63439a1c94d0279e6b00e8663d3ae554a3379b0f.tar.gz
scummvm-rg350-63439a1c94d0279e6b00e8663d3ae554a3379b0f.tar.bz2
scummvm-rg350-63439a1c94d0279e6b00e8663d3ae554a3379b0f.zip
TITANIC: Finished TTparser checkForAction
Diffstat (limited to 'engines')
-rw-r--r--engines/titanic/true_talk/tt_parser.cpp50
1 files changed, 49 insertions, 1 deletions
diff --git a/engines/titanic/true_talk/tt_parser.cpp b/engines/titanic/true_talk/tt_parser.cpp
index cc3ee2fa51..498c0cc015 100644
--- a/engines/titanic/true_talk/tt_parser.cpp
+++ b/engines/titanic/true_talk/tt_parser.cpp
@@ -1019,8 +1019,56 @@ int TTparser::checkForAction() {
}
}
+ if (_sentence->fn2(2, TTstring("thePlayer"), _sentenceConcept) &&
+ _sentenceConcept->concept1WordId() == 101 && flag)
+ _sentence->_field2C = 17;
+
+ if (!_sentenceConcept->_concept0P && !_sentenceConcept->_concept1P &&
+ !_sentenceConcept->_concept2P && !_sentenceConcept->_concept5P && !flag) {
+ if (_conceptP)
+ filterConcepts(5, 2);
+
+ if (!_sentenceConcept->_concept2P && _sentence->_field2C == 1)
+ _sentence->_field2C = 0;
+ }
+
+ if (_sentence->_field58 < 5 && _sentence->_field2C == 1 && !flag)
+ _sentence->_field2C = 19;
+
+ for (TTconceptNode *nodeP = &_sentence->_sentenceConcept; nodeP; nodeP = nodeP->_nextP) {
+ if (nodeP->_field18 == 0 && nodeP->_concept1P) {
+ nodeP->_field18 = _sentence->concept18(nodeP);
+ } else if (nodeP->_field18 == 4 && !_sentenceConcept->_concept0P) {
+ if (_sentenceConcept->_concept3P) {
+ _sentenceConcept->_concept0P = _sentenceConcept->_concept3P;
+ _sentenceConcept->_concept3P = nullptr;
+ } else if (_sentenceConcept->_concept2P) {
+ _sentenceConcept->_concept0P = _sentenceConcept->_concept2P;
+ _sentenceConcept->_concept2P = nullptr;
+ }
+ }
+ }
+
+ if (_sentence->_field2C == 1 && _sentenceConcept->_concept5P &&
+ _sentenceConcept->_concept2P) {
+ if (_sentence->fn4(1, 113, nullptr)) {
+ if (_sentence->fn2(2, TTstring("targetNpc"), nullptr)) {
+ _sentence->_field2C = 20;
+ } else if (_sentence->fn2(2, TTstring("thePlayer"), nullptr)) {
+ _sentence->_field2C = 21;
+ } else {
+ _sentence->_field2C = 22;
+ }
+ }
+ } else if (!_sentenceConcept->_concept0P && !_sentenceConcept->_concept1P &&
+ !_sentenceConcept->_concept2P && !_sentenceConcept->_concept5P) {
+ if (_conceptP)
+ filterConcepts(5, 2);
+
+ if (!_sentenceConcept->_concept2P && _sentence->_field2C == 1)
+ _sentence->_field2C = 0;
+ }
- // TODO
return status;
}