diff options
author | Adrian Frühwirth | 2018-03-19 23:18:08 +0100 |
---|---|---|
committer | Adrian Frühwirth | 2018-03-19 23:31:19 +0100 |
commit | ef593ed8e33891200f80410a5aef6bd3e87f0a0a (patch) | |
tree | 052d2d08f7474ba45c385f87ba539687310fd753 /engines/tucker | |
parent | d2ae21624e0d8f58bfc3e2b67ab1b4efa94cf77d (diff) | |
download | scummvm-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.cpp | 14 |
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; |