aboutsummaryrefslogtreecommitdiff
path: root/engines/illusions/actor.cpp
diff options
context:
space:
mode:
authorjohndoe1232014-04-14 12:04:58 +0200
committerEugene Sandulenko2018-07-20 06:43:33 +0000
commite131362590a768240454cc2b27f4548ba481ebfb (patch)
tree93a00e8354286fcac119c1f9be724c235cbd8617 /engines/illusions/actor.cpp
parent998744608f27802526b085ebe94215719ef9f28d (diff)
downloadscummvm-rg350-e131362590a768240454cc2b27f4548ba481ebfb.tar.gz
scummvm-rg350-e131362590a768240454cc2b27f4548ba481ebfb.tar.bz2
scummvm-rg350-e131362590a768240454cc2b27f4548ba481ebfb.zip
ILLUSIONS: More work on Duckman
- Implement inventory - Ad more script and sequence opcodes - Adjust existing code
Diffstat (limited to 'engines/illusions/actor.cpp')
-rw-r--r--engines/illusions/actor.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/engines/illusions/actor.cpp b/engines/illusions/actor.cpp
index a67f5b92a9..83fd748496 100644
--- a/engines/illusions/actor.cpp
+++ b/engines/illusions/actor.cpp
@@ -638,7 +638,8 @@ void Control::sequenceActor() {
if (_actor->_newFrameIndex != 0) {
debug(1, "New frame %d", _actor->_newFrameIndex);
setActorFrameIndex(_actor->_newFrameIndex);
- if (!(_actor->_flags & 1) && (_actor->_flags & 0x1000) && (_objectId != 0x40004)) {
+ if (_vm->getGameId() == kGameIdBBDOU &&
+ !(_actor->_flags & 1) && (_actor->_flags & 0x1000) && (_objectId != 0x40004)) {
appearActor();
_actor->_flags &= ~0x1000;
}
@@ -752,7 +753,13 @@ void Control::startMoveActor(uint32 sequenceId, Common::Point destPt, uint32 cal
_vm->notifyThreadId(_actor->_notifyId3C);
_actor->_notifyId3C = callerThreadId2;
_actor->_pathPointIndex = 0;
- _vm->_input->discardButtons(0x10);
+
+ if (_vm->getGameId() == kGameIdBBDOU) {
+ _vm->_input->discardButtons(0x10);
+ } else if (_vm->getGameId() == kGameIdDuckman) {
+ _vm->_input->discardButtons(0x20);
+ }
+
}
}
@@ -1071,11 +1078,16 @@ void Controls::placeActor(uint32 actorTypeId, Common::Point placePt, uint32 sequ
_controls.push_back(control);
_vm->_dict->setObjectControl(objectId, control);
+ if (_vm->getGameId() == kGameIdDuckman) {
+ control->appearActor();
+ } else if (_vm->getGameId() == kGameIdBBDOU) {
+ control->_flags |= 0x01;
+ actor->_flags |= 0x1000;
+ }
+
if (_vm->isCursorObject(actorTypeId, objectId))
_vm->placeCursorControl(control, sequenceId);
- control->_flags |= 0x01;
- actor->_flags |= 0x1000;
control->startSequenceActor(sequenceId, 2, notifyThreadId);
}