aboutsummaryrefslogtreecommitdiff
path: root/scumm/script.cpp
diff options
context:
space:
mode:
authorMax Horn2003-05-29 10:14:53 +0000
committerMax Horn2003-05-29 10:14:53 +0000
commit09546c2491717d09bc78a744b86e2a6267e4a4a7 (patch)
treecd1249b701d853b435b1dcaf5691fe929b7ff57b /scumm/script.cpp
parentaa919f35089dc5d6b20283da0e05bc1e6277ce6e (diff)
downloadscummvm-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.cpp20
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;