diff options
-rw-r--r-- | scumm/intern.h | 1 | ||||
-rw-r--r-- | scumm/script_v2.cpp | 33 |
2 files changed, 34 insertions, 0 deletions
diff --git a/scumm/intern.h b/scumm/intern.h index 0588ae0f88..bdf9733a98 100644 --- a/scumm/intern.h +++ b/scumm/intern.h @@ -239,6 +239,7 @@ protected: void o2_drawObject(); void o2_resourceRoutines(); void o2_verbOps(); + void o2_doSentence(); void o2_isEqual(); void o2_isGreater(); diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp index 4c95f1ad36..8b2ac7474e 100644 --- a/scumm/script_v2.cpp +++ b/scumm/script_v2.cpp @@ -824,6 +824,39 @@ void Scumm_v2::o2_equalZero() { o5_jumpRelative(); } +void Scumm_v2::o2_doSentence() { + int a; + SentenceTab *st; + + a = getVarOrDirectByte(0x80); + if (a == 0xFB) { + _sentenceNum = 0; + stopScriptNr(2); + clearClickedStatus(); + return; + } + if (a == 0xFC) { + _sentenceNum--; + clearClickedStatus(); + return; + } + + st = &_sentence[_sentenceNum++]; + + st->unk5 = a; + st->unk4 = getVarOrDirectWord(0x40); + st->unk3 = getVarOrDirectWord(0x20); + st->freezeCount = 0; + + // TODO + switch(fetchScriptByte()) { + case 1: + break; + case 2: + break; + } +} + void Scumm_v2::o2_printEgo() { //_actorToPrintStrFor = (unsigned char)_vars[VAR_EGO]; //_messagePtr = _scriptPointer; |