diff options
author | Max Horn | 2003-06-26 14:38:48 +0000 |
---|---|---|
committer | Max Horn | 2003-06-26 14:38:48 +0000 |
commit | 2f11bb5dd7d88bee1cb683ab4f78ceac8c7a7a93 (patch) | |
tree | 759a46164620c46d260441daf84172238b087ac4 | |
parent | 0f293acf96dde86ed9594905118a9500825cb48f (diff) | |
download | scummvm-rg350-2f11bb5dd7d88bee1cb683ab4f78ceac8c7a7a93.tar.gz scummvm-rg350-2f11bb5dd7d88bee1cb683ab4f78ceac8c7a7a93.tar.bz2 scummvm-rg350-2f11bb5dd7d88bee1cb683ab4f78ceac8c7a7a93.zip |
fix for 'default talk color' use of actorSet opcode (fix for bug #755888)
svn-id: r8655
-rw-r--r-- | scumm/script_v5.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/scumm/script_v5.cpp b/scumm/script_v5.cpp index 147fc401b2..24fb2c86be 100644 --- a/scumm/script_v5.cpp +++ b/scumm/script_v5.cpp @@ -402,14 +402,18 @@ void Scumm_v5::o5_actorSet() { int i, j; if (act == 0) { - // This case happens in Zak256 (and maybe elsewhere, to set the default talk color (9). - // For now, we hack this to modify actor 1 instead, but clearly that's bad. - // Better might be to modify _string[0].color, or even add a new dedicated - // 'default talk color' variable. - act = 1; - ScriptSlot *ss = &vm.slot[_currentScript]; - warning("o5_actorSet: act = 0, setting to 1 as a workaround (%d:%d:0x%X)", _roomResource, - ss->number, _scriptPointer - _scriptOrgPointer); + // This case happens in Zak256 (and maybe elsewhere), to set the + // default talk color (9). + while ((_opcode = fetchScriptByte()) != 0xFF) { + if (_features & GF_SMALL_HEADER) + _opcode = (_opcode & 0xE0) | convertTable[(_opcode & 0x1F) - 1]; + + if (_opcode== 12) + _string[0].color = getVarOrDirectByte(0x80); + else + error("o5_actorSet: Invalid sub opcode %d in actor 0 case", _opcode); + } + return; } a = derefActor(act, "o5_actorSet"); |