aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;