diff options
-rw-r--r-- | scumm/akos.cpp | 53 |
1 files changed, 30 insertions, 23 deletions
diff --git a/scumm/akos.cpp b/scumm/akos.cpp index e5655a6ae1..25d8907b40 100644 --- a/scumm/akos.cpp +++ b/scumm/akos.cpp @@ -1638,24 +1638,6 @@ bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const if (akos_compare(a->getAnimVar(GB(4)), GW(2), code - AKC_SkipStart) == 0) flag_value = true; continue; - case AKC_C0A0: - akos_queCommand(8, a, GB(2), 0); - continue; - case AKC_C0A1: - if (a->_heTalking) { - curpos = GUW(2); - break; - } - continue; - case AKC_C0A2: - if (!a->_heTalking) { - curpos = GUW(2); - break; - } - continue; - case AKC_C0A3: - akos_queCommand(8, a, a->getAnimVar(GB(2)), 0); - continue; case AKC_C016: if (_sound->isSoundRunning( a->_sound[a->getAnimVar(GB(4))])) { curpos = GUW(2); @@ -1683,23 +1665,48 @@ bool ScummEngine::akos_increaseAnim(Actor *a, int chan, const byte *aksq, const case AKC_C044: akos_queCommand(3, a, a->_sound[a->getAnimVar(GB(2))], 0); continue; - case AKC_C045: a->setUserCondition(GB(3), a->getAnimVar(GB(4))); continue; - case AKC_C046: a->setAnimVar(GB(4), a->isUserConditionSet(GB(3))); continue; - case AKC_C047: a->setTalkCondition(GB(3)); continue; - case AKC_C048: a->setAnimVar(GB(4), a->isTalkConditionSet(GB(3))); continue; - + case AKC_C0A0: + akos_queCommand(8, a, GB(2), 0); + continue; + case AKC_C0A1: + if (a->_heTalking != 0) { + curpos = GUW(2); + break; + } + continue; + case AKC_C0A2: + if (a->_heTalking == 0) { + curpos = GUW(2); + break; + } + continue; + case AKC_C0A3: + akos_queCommand(8, a, a->getAnimVar(GB(2)), 0); + continue; + case AKC_C0A4: + if (VAR(VAR_TALK_ACTOR) != 0) { + curpos = GUW(2); + break; + } + continue; + case AKC_C0A5: + if (VAR(VAR_TALK_ACTOR) == 0) { + curpos = GUW(2); + break; + } + continue; default: if ((code & 0xC000) == 0xC000) error("Undefined uSweat token %X", code); |