[Scummvm-git-logs] scummvm master -> 30bfbecc1fd96bd7ff878140c59a0391437b4b4b

sluicebox noreply at scummvm.org
Wed Mar 6 18:22:55 UTC 2024


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:
30bfbecc1f AGI: Fix KQ3 Rosella staircase bug


Commit: 30bfbecc1fd96bd7ff878140c59a0391437b4b4b
    https://github.com/scummvm/scummvm/commit/30bfbecc1fd96bd7ff878140c59a0391437b4b4b
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2024-03-06T11:21:46-07:00

Commit Message:
AGI: Fix KQ3 Rosella staircase bug

Fixes bug #11996

Changed paths:
    engines/agi/op_cmd.cpp


diff --git a/engines/agi/op_cmd.cpp b/engines/agi/op_cmd.cpp
index 2edf5414673..53da0ace7b8 100644
--- a/engines/agi/op_cmd.cpp
+++ b/engines/agi/op_cmd.cpp
@@ -1398,6 +1398,17 @@ void cmdPositionF(AgiGame *state, AgiEngine *vm, uint8 *parameter) {
 
 	screenObj->xPos = screenObj->xPos_prev = vm->getVar(varNr1);
 	screenObj->yPos = screenObj->yPos_prev = vm->getVar(varNr2);
+
+	// WORKAROUND: KQ3 Rosella Staircase bug; fixed by Sierra in Amiga version 2.15.
+	// When changing rooms while Rosella follows, if ego is facing left or right
+	// but not diagonal, then Rosella is placed at the same position as ego.
+	// This can trap the player on the stairs. Sierra fixed this by placing Rosella
+	// one pixel above ego, just like when facing down or diagonal-down. Bug #11996
+	if (vm->getGameID() == GID_KQ3 && state->curLogicNr == 119 && objectNr == 15 &&
+		screenObj->yPos == state->screenObjTable[SCREENOBJECTS_EGO_ENTRY].yPos) {
+		screenObj->yPos--;
+		screenObj->yPos_prev--;
+	}
 }
 
 void cmdPositionFV1(AgiGame *state, AgiEngine *vm, uint8 *parameter) {




More information about the Scummvm-git-logs mailing list