DRAGONS: Fixed bug with sequence animations not reseting to the correct sequenceID. Fixed mem smashing bug with dialog menu

This commit is contained in:
Eric Fry 2019-08-22 12:09:09 +10:00 committed by Eugene Sandulenko
parent f65a55783d
commit 52c0f285a0
5 changed files with 36 additions and 9 deletions

View file

@ -119,7 +119,8 @@ void ScriptOpcodes::initOpcodes() {
OPCODE(0x1A, opUnk1A);
OPCODE(0x1B, opUnk1B);
OPCODE(0x1C, opSetActorFlag0x1000);
OPCODE(0x1D, opUnk1DClearActorFlag0x400);
OPCODE(0x1E, opUnk1ESetActorFlag0x400);
OPCODE(0x1F, opPlayMusic);
OPCODE(0x20, opUnk20);
@ -672,8 +673,8 @@ void ScriptOpcodes::opUnkF(ScriptOpCall &scriptOpCall) {
if (field4 != field6) {
ini->actor->field_7c = field4;
ini->actor->updateSequence(field6 & 0x7fff);
}
ini->actor->updateSequence(field6 & 0x7fff);
}
}
@ -1103,6 +1104,30 @@ void ScriptOpcodes::opUnk1B(ScriptOpCall &scriptOpCall) {
}
}
void ScriptOpcodes::opUnk1DClearActorFlag0x400(ScriptOpCall &scriptOpCall) {
ARG_SKIP(2);
ARG_INT16(iniId);
if (scriptOpCall._field8 != 0) {
return;
}
DragonINI *ini = _vm->getINI(iniId - 1);
ini->actor->setFlag(ACTOR_FLAG_400);
}
void ScriptOpcodes::opUnk1ESetActorFlag0x400(ScriptOpCall &scriptOpCall) {
ARG_SKIP(2);
ARG_INT16(iniId);
if (scriptOpCall._field8 != 0) {
return;
}
DragonINI *ini = _vm->getINI(iniId - 1);
ini->actor->setFlag(ACTOR_FLAG_400);
}
void ScriptOpcodes::opSetActorFlag0x1000(ScriptOpCall &scriptOpCall) {
ARG_SKIP(2);
ARG_INT16(iniId);