diff options
author | Max Horn | 2003-05-29 10:14:53 +0000 |
---|---|---|
committer | Max Horn | 2003-05-29 10:14:53 +0000 |
commit | 09546c2491717d09bc78a744b86e2a6267e4a4a7 (patch) | |
tree | cd1249b701d853b435b1dcaf5691fe929b7ff57b /scumm/script.cpp | |
parent | aa919f35089dc5d6b20283da0e05bc1e6277ce6e (diff) | |
download | scummvm-rg350-09546c2491717d09bc78a744b86e2a6267e4a4a7.tar.gz scummvm-rg350-09546c2491717d09bc78a744b86e2a6267e4a4a7.tar.bz2 scummvm-rg350-09546c2491717d09bc78a744b86e2a6267e4a4a7.zip |
fixed V2 script freezing (bug #745421)
svn-id: r8086
Diffstat (limited to 'scumm/script.cpp')
-rw-r--r-- | scumm/script.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/scumm/script.cpp b/scumm/script.cpp index 724c934420..d736e4bb40 100644 --- a/scumm/script.cpp +++ b/scumm/script.cpp @@ -653,6 +653,16 @@ void Scumm::runHook(int i) { void Scumm::freezeScripts(int flag) { int i; + if (_features & GF_AFTER_V2) { + for (i = 0; i < NUM_SCRIPT_SLOT; i++) { + if (_currentScript != i && vm.slot[i].status != ssDead && !vm.slot[i].freezeResistant) { + vm.slot[i].status |= 0x80; + vm.slot[i].freezeCount = 1; + } + } + return; + } + for (i = 0; i < NUM_SCRIPT_SLOT; i++) { if (_currentScript != i && vm.slot[i].status != ssDead && (!vm.slot[i].freezeResistant || flag >= 0x80)) { vm.slot[i].status |= 0x80; @@ -671,6 +681,15 @@ void Scumm::freezeScripts(int flag) { void Scumm::unfreezeScripts() { int i; + + if (_features & GF_AFTER_V2) { + for (i = 0; i < NUM_SCRIPT_SLOT; i++) { + vm.slot[i].status &= 0x7F; + vm.slot[i].freezeCount = 0; + } + return; + } + for (i = 0; i < NUM_SCRIPT_SLOT; i++) { if (vm.slot[i].status & 0x80) { if (!--vm.slot[i].freezeCount) { @@ -685,6 +704,7 @@ void Scumm::unfreezeScripts() { } } + void Scumm::runAllScripts() { int i; |