[Scummvm-git-logs] scummvm master -> baa71269e47cabb24f433f3c89023486a1463816

neuromancer noreply at scummvm.org
Sat Nov 12 20:54:33 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:
baa71269e4 FREESCAPE: improve SwapJet opcode implementation and force local/global condition to be executed in rise/lower


Commit: baa71269e47cabb24f433f3c89023486a1463816
    https://github.com/scummvm/scummvm/commit/baa71269e47cabb24f433f3c89023486a1463816
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2022-11-12T21:55:35+01:00

Commit Message:
FREESCAPE: improve SwapJet opcode implementation and force local/global condition to be executed in rise/lower

Changed paths:
    engines/freescape/language/instruction.cpp
    engines/freescape/movement.cpp


diff --git a/engines/freescape/language/instruction.cpp b/engines/freescape/language/instruction.cpp
index 9d55a51ea32..06d0939f15e 100644
--- a/engines/freescape/language/instruction.cpp
+++ b/engines/freescape/language/instruction.cpp
@@ -383,15 +383,25 @@ bool FreescapeEngine::executeEndIfBitNotEqual(FCLInstruction &instruction) {
 }
 
 void FreescapeEngine::executeSwapJet(FCLInstruction &instruction) {
-	playSound(15, false);
+	//playSound(15, false);
 	_flyMode = !_flyMode;
+	uint16 areaID = _currentArea->getAreaID();
+
 	if (_flyMode) {
 		debugC(1, kFreescapeDebugCode, "Swaping to ship mode");
-		_playerHeightNumber = -1;
 		_playerHeight = 1;
+		if (areaID == 27) {
+			traverseEntrance(26);
+			_lastPosition = _position;
+		}
+		_playerHeightNumber = -1;
 	} else {
 		debugC(1, kFreescapeDebugCode, "Swaping to tank mode");
 		_playerHeightNumber = 0;
+		if (areaID == 27) {
+			traverseEntrance(27);
+			_lastPosition = _position;
+		}
 	}
 	// TODO: implement the rest of the changes (e.g. border)
 }
diff --git a/engines/freescape/movement.cpp b/engines/freescape/movement.cpp
index 4314fee6e95..52a37ff954e 100644
--- a/engines/freescape/movement.cpp
+++ b/engines/freescape/movement.cpp
@@ -138,6 +138,7 @@ void FreescapeEngine::rise() {
 
 	_lastPosition = _position;
 	debugC(1, kFreescapeDebugMove, "new player position: %f, %f, %f", _position.x(), _position.y(), _position.z());
+	executeLocalGlobalConditions(false, true); // Only execute "on collision" room/global conditions
 }
 
 void FreescapeEngine::lower() {
@@ -163,6 +164,7 @@ void FreescapeEngine::lower() {
 
 	_lastPosition = _position;
 	debugC(1, kFreescapeDebugMove, "new player position: %f, %f, %f", _position.x(), _position.y(), _position.z());
+	executeLocalGlobalConditions(false, true); // Only execute "on collision" room/global conditions
 }
 
 void FreescapeEngine::move(CameraMovement direction, uint8 scale, float deltaTime) {




More information about the Scummvm-git-logs mailing list