aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2004-09-11 12:22:06 +0000
committerTravis Howell2004-09-11 12:22:06 +0000
commitb495c7ea07e9994ef735bc4e58fb669030327c3a (patch)
treed2c26d2f94e697574ba7a99022fea326b98e9cc8
parentecddda094a625c6e4b7c44f20e186bc646f3004b (diff)
downloadscummvm-rg350-b495c7ea07e9994ef735bc4e58fb669030327c3a.tar.gz
scummvm-rg350-b495c7ea07e9994ef735bc4e58fb669030327c3a.tar.bz2
scummvm-rg350-b495c7ea07e9994ef735bc4e58fb669030327c3a.zip
Use random talk animation in HE 80+ games for now.
svn-id: r15006
-rw-r--r--scumm/actor.cpp14
-rw-r--r--scumm/actor.h1
-rw-r--r--scumm/script_v72he.cpp2
3 files changed, 16 insertions, 1 deletions
diff --git a/scumm/actor.cpp b/scumm/actor.cpp
index c31da182f8..7c3fdbef13 100644
--- a/scumm/actor.cpp
+++ b/scumm/actor.cpp
@@ -78,6 +78,7 @@ void Actor::initActor(int mode) {
_pos.y = 0;
facing = 180;
condMask = 1;
+ talkUnk = 0;
if (_vm->_version >= 7)
visible = false;
} else if (mode == 2) {
@@ -1067,6 +1068,19 @@ void Actor::drawActorCostume(bool hitTestMode) {
bcr->_skipLimb = (skipLimb != 0);
+ if (_vm->_heversion >= 80 && talkUnk == 0) {
+ condMask &= 0xFFFFFC00;
+ condMask |= 1
+; if (_vm->getTalkingActor() == number) {
+ // Checks if talk sound is active?
+ // Otherwise just do rand animation
+ int rnd = _vm->_rnd.getRandomNumberRng(1, 10);
+; setTalkCondition(rnd);
+
+ }
+ }
+ talkUnk == 0;
+
// If the actor is partially hidden, redraw it next frame.
// Only done for pre-AKOS, though.
if (bcr->drawCostume(_vm->virtscr[0], this, drawToBackBuf) & 1) {
diff --git a/scumm/actor.h b/scumm/actor.h
index 0e036ff944..66381fe353 100644
--- a/scumm/actor.h
+++ b/scumm/actor.h
@@ -124,6 +124,7 @@ public:
uint16 sound[32];
CostumeData cost;
uint32 condMask;
+ bool talkUnk;
protected:
byte palette[256];
int elevation;
diff --git a/scumm/script_v72he.cpp b/scumm/script_v72he.cpp
index 2804b1197c..0b45ef27b3 100644
--- a/scumm/script_v72he.cpp
+++ b/scumm/script_v72he.cpp
@@ -855,7 +855,7 @@ void ScummEngine_v72he::o72_actorOps() {
case 24:
// HE 80+
k = pop();
-// a->byte_45737A = 1;
+ a->talkUnk = 1;
a->setTalkCondition(k);
debug(1,"o72_actorOps: case 24 (%d)", k);
break;