[Scummvm-cvs-logs] SF.net SVN: scummvm: [24751] scummvm/trunk/engines/scumm/script.cpp

kirben at users.sourceforge.net kirben at users.sourceforge.net
Mon Nov 20 04:21:09 CET 2006


Revision: 24751
          http://svn.sourceforge.net/scummvm/?rev=24751&view=rev
Author:   kirben
Date:     2006-11-19 19:21:09 -0800 (Sun, 19 Nov 2006)

Log Message:
-----------
Add stopObjectCode() differences in SCUMM 1 - 5 games. The nested script stack wasn't been checked.

Modified Paths:
--------------
    scummvm/trunk/engines/scumm/script.cpp

Modified: scummvm/trunk/engines/scumm/script.cpp
===================================================================
--- scummvm/trunk/engines/scumm/script.cpp	2006-11-19 23:02:26 UTC (rev 24750)
+++ scummvm/trunk/engines/scumm/script.cpp	2006-11-20 03:21:09 UTC (rev 24751)
@@ -724,27 +724,36 @@
 	ScriptSlot *ss;
 
 	ss = &vm.slot[_currentScript];
-	if (ss->cutsceneOverride == 255) {	/* FIXME: What does this? */
-		warning("Cutscene for script %d has overflown. Resetting.", ss->number);
-		ss->cutsceneOverride = 0;
-	}
+	if (_game.version <= 2) {
+		if (ss->where == WIO_GLOBAL || ss->where == WIO_LOCAL) {
+			stopScript(ss->number);
+		} else {
+			ss->number = 0;
+			ss->status = ssDead;
+		}
+	} else if (_game.version <= 5) {
+		if (ss->where != WIO_GLOBAL && ss->where != WIO_LOCAL) {
+			stopObjectScript(ss->number);
+		} else {
+			if (_game.version >= 4 && ss->cutsceneOverride)
+				error("Script %d ending with active cutscene/override (%d)", ss->number, ss->cutsceneOverride);
 
-	if (ss->where != WIO_GLOBAL && ss->where != WIO_LOCAL) {
-		if (ss->cutsceneOverride) {
-			if (_game.version >= 5)
-				warning("Object %d ending with active cutscene/override (%d)", ss->number, ss->cutsceneOverride);
-			ss->cutsceneOverride = 0;
+			ss->number = 0;
+			ss->status = ssDead;
 		}
 	} else {
-		if (ss->cutsceneOverride) {
-			if (_game.version >= 5)
-				warning("Script %d ending with active cutscene/override (%d)", ss->number, ss->cutsceneOverride);
-			ss->cutsceneOverride = 0;
+		if (ss->where != WIO_GLOBAL && ss->where != WIO_LOCAL) {
+			if (ss->cutsceneOverride)
+				error("Object %d ending with active cutscene/override (%d)", ss->number, ss->cutsceneOverride);
+		} else {
+			if (ss->cutsceneOverride)
+				error("Script %d ending with active cutscene/override (%d)", ss->number, ss->cutsceneOverride);
 		}
+		ss->number = 0;
+		ss->status = ssDead;
 	}
+
 	nukeArrays(_currentScript);
-	ss->number = 0;
-	ss->status = ssDead;
 	_currentScript = 0xFF;
 }
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list