[Scummvm-git-logs] scummvm master -> 055d0c095efc554630f1e45e581a503fc01d32dc

sev- noreply at scummvm.org
Thu Jul 7 15:57:44 UTC 2022


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
055d0c095e DIRECTOR: LINGO: Prevent execution of cast script in presence of D3-sprite script


Commit: 055d0c095efc554630f1e45e581a503fc01d32dc
    https://github.com/scummvm/scummvm/commit/055d0c095efc554630f1e45e581a503fc01d32dc
Author: Pragyansh Chaturvedi (r41k0u) (pragyanshchaturvedi18 at gmail.com)
Date: 2022-07-07T17:57:39+02:00

Commit Message:
DIRECTOR: LINGO: Prevent execution of cast script in presence of D3-sprite script

Changed paths:
    engines/director/lingo/lingo-events.cpp


diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index e0452f334ed..e6a0c2f7857 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -127,12 +127,15 @@ void Movie::queueSpriteEvent(Common::Queue<LingoEvent> &queue, LEvent event, int
 	if (sprite->_scriptId.member) {
 		ScriptContext *script = getScriptContext(kScoreScript, sprite->_scriptId);
 		if (script) {
-			// In D3 the event lingo is not contained in a handler
-			// If sprite is immediate, its script is run on mouseDown, otherwise on mouseUp
-			if (((event == kEventMouseDown && sprite->_immediate) || (event == kEventMouseUp && !sprite->_immediate))
-					&& script->_eventHandlers.contains(kEventGeneric)) {
-				queue.push(LingoEvent(kEventGeneric, eventId, kScoreScript, sprite->_scriptId, false, spriteId));
+			if (script->_eventHandlers.contains(kEventGeneric)) {
+				// D3-style sprite script, not contained in a handler
+				// If sprite is immediate, its script is run on mouseDown, otherwise on mouseUp
+				if ((event == kEventMouseDown && sprite->_immediate) || (event == kEventMouseUp && !sprite->_immediate)) {
+					queue.push(LingoEvent(kEventGeneric, eventId, kScoreScript, sprite->_scriptId, false, spriteId));
+				}
+				return; // Do not execute the cast script if there is a D3-style sprite script
 			} else if (script->_eventHandlers.contains(event)) {
+				// D4-style event handler
 				queue.push(LingoEvent(event, eventId, kScoreScript, sprite->_scriptId, false, spriteId));
 			}
 		}




More information about the Scummvm-git-logs mailing list