aboutsummaryrefslogtreecommitdiff
path: root/engines/tucker
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 /engines/tucker
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.
Diffstat (limited to 'engines/tucker')
-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;