aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scumm/intern.h1
-rw-r--r--scumm/script_v2.cpp33
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;