There was previous confusion because characters can have a maximum of
39 spells for their class. But the spell list for each class has
40 entries, of which the last one, #39, is always the 'No Spell' value
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.
When the 'mof' opcode was added in commit 1946dead77 it was implemented
as a NOOP, but what it actually should do is disable the mouse (set
_cursorState to kCursorStateDisabledHidden).
This is used in at least the Spanish and Polish versions of the game to
work around an earlier script bug which allowed the player to use the
mouse while freeing the professor in part two.
This commit fixes the 'mof' instruction so that the original script works
as intended in those versions that ship with the fix.
TODO: Add a workaround for those game versions which don't do the 'mof'
themselves.
This commit adds the 'buv' and 'c0v' opcodes which are used to set speech
volume. Because these only seem to be used once in the English demo and
we right now playback all speech at kMaxSoundVolume anyway we can treat
them as NOOPs.
This fixes a bug in said demo which resulted in Bud being unable to talk
to Del.
Originally the flag was whether the party was on the Dark Side,
but as a bool I was having to cast it to an int side/cc number in
more and more places. So now I've converted it to _ccNum, and it
can be used directly as an int
The original game unconditionally reads into _sprC02Table[] in
updateSprite() which results in out-of-bounds reads when a sprite's
_state is -1. To make sure that sprites update correctly under all
circumstances we always reset a sprite's animation data when it is
disabled (_state == -1). This most prominently fixes a bug where
Lola's transition from dancing -> sitting happens too late.
Fixes Trac#6644.