aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorKari Salminen2008-08-06 23:12:25 +0000
committerKari Salminen2008-08-06 23:12:25 +0000
commit92eec1b905c81f068a4e65d54cc1fb8944914592 (patch)
treed040fb87bd8819eaa73a296f7113ee8c4ae10c18 /engines
parentf5e9a3e185088692fe13ece79d86600f2e1d7759 (diff)
downloadscummvm-rg350-92eec1b905c81f068a4e65d54cc1fb8944914592.tar.gz
scummvm-rg350-92eec1b905c81f068a4e65d54cc1fb8944914592.tar.bz2
scummvm-rg350-92eec1b905c81f068a4e65d54cc1fb8944914592.zip
HACK: In Operation Stealth after the first arcade sequence jump player's position to avoid getting stuck.
The player's position is changed only by *one* pixel but it helps and makes it possible to carry on with the game (Previously the player was totally stuck). svn-id: r33673
Diffstat (limited to 'engines')
-rw-r--r--engines/cine/main_loop.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/engines/cine/main_loop.cpp b/engines/cine/main_loop.cpp
index e9fbe188b7..9be2184f91 100644
--- a/engines/cine/main_loop.cpp
+++ b/engines/cine/main_loop.cpp
@@ -261,6 +261,24 @@ void CineEngine::mainLoop(int bootScriptIdx) {
}
}
+ // HACK: In Operation Stealth after the first arcade sequence jump player's position to avoid getting stuck.
+ // After the first arcade sequence the player comes up stairs from
+ // the water in Santa Paragua's downtown in front of the flower shop.
+ // Previously he was completely stuck after getting up the stairs.
+ // If the background is the one used in the flower shop scene ("21.PI1")
+ // and the player is at the exact location after getting up the stairs
+ // then we just nudge him a tiny bit away from the stairs and voila, he's free!
+ // Maybe the real problem behind all this is collision data related as it looks
+ // like there's some boundary right there near position (204, 110) which we can
+ // jump over by moving the character to (204, 109). The script handling the
+ // flower shop scene is AIRPORT.PRC's 13th script.
+ // FIXME: Remove the hack and solve what's really causing the problem in the first place.
+ if (g_cine->getGameType() == Cine::GType_OS) {
+ if (scumm_stricmp(renderer->getBgName(), "21.PI1") == 0 && objectTable[1].x == 204 && objectTable[1].y == 110) {
+ objectTable[1].y--; // Move the player character upward on-screen by one pixel
+ }
+ }
+
stopMusicAfterFadeOut();
di = executePlayerInput();