aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Frühwirth2018-03-19 23:18:08 +0100
committerAdrian Frühwirth2018-03-19 23:31:19 +0100
commitef593ed8e33891200f80410a5aef6bd3e87f0a0a (patch)
tree052d2d08f7474ba45c385f87ba539687310fd753
parentd2ae21624e0d8f58bfc3e2b67ab1b4efa94cf77d (diff)
downloadscummvm-rg350-ef593ed8e33891200f80410a5aef6bd3e87f0a0a.tar.gz
scummvm-rg350-ef593ed8e33891200f80410a5aef6bd3e87f0a0a.tar.bz2
scummvm-rg350-ef593ed8e33891200f80410a5aef6bd3e87f0a0a.zip
TUCKER: Work around original game bug when using the map in the mall in part three
If you don't have the appointment card yet and use the map to go to Seedy Street Bud ends up being teleported back to the mall. Because of the destination coordinates which warp Bud past x==583 Violet's logic, which makes him refuse Bud entrance to the dentist, triggers. On top of that the graphics end up all garbled which indicates that even worse things happen under the hood. To work around this we only trigger Violet if Bud actually _walked_ past the trigger coordinates (as opposed to using the map). This fixes Trac#10452.
-rw-r--r--engines/tucker/locations.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/engines/tucker/locations.cpp b/engines/tucker/locations.cpp
index 28fca114b0..93f2451bfc 100644
--- a/engines/tucker/locations.cpp
+++ b/engines/tucker/locations.cpp
@@ -2893,7 +2893,19 @@ void TuckerEngine::updateSprite_locationNum66_4(int i) {
}
void TuckerEngine::execData3PreUpdate_locationNum66() {
- // FIXME: shouldn't be executed after using the map
+ // WORKAROUND
+ // If you don't have the appointment card yet and use the map to go to
+ // Seedy Street Bud ends up being teleported back to the mall.
+ // Because of the destination coordinates which warp Bud past x==583 the
+ // below 'if' triggers and automatically makes Violet refuse Bud entrance
+ // to the dentist. On top of that the graphics end up all garbled which
+ // indicates that even worse things happen under the hood.
+ // To work around this we only trigger Violet if Bud actually _walked_ past
+ // the trigger coordinates (as opposed to using the map).
+ // Fixes Trac#10452.
+ if (_nextLocationNum != 0)
+ return;
+
_flagsTable[137] = 0;
if (_xPosCurrent > 583 && _flagsTable[191] == 0 && _nextAction == 0 && _locationMaskType == 0) {
_panelLockedFlag = false;