This affects the number of bats in the Scabb Island swamp, and quite
possibly other things as well. So it seems like a good candidate for a
"restored content" enhancement.
It appears that the Special Edition is based on the original English
release, and so it contains the buggy script for the rope on Dinky Island.
But it doesn't cause a fatal error there, and "just" causes various funny
visual glitches, when playing in Classic Mode.
Documenting it near the workaround we have for this.
I've checked the original DOS/English floppy release coming with my LRG
Monkey Island Anthology set, and yes, the original would indeed print a
fatal "Object 1047 not found in room XX" error in this case. It really is
a script error in the earliest releases, as was said in the ticket above,
many moons ago.
This workaround fixes a fatal error, so it can be marked as a
kEnhGameBreakingBugFixes enhancement. We just replicate what the Macintosh
release did in order to prevent this problem, back then.
(If anyone is brave enough to check how the Special Edition behaves in this
case, I'd be curious to know... did they hardcode a fix in the interpreter
too?...)
It's an old, known bug, but so far I haven't been able to locate an
original release (or interpreter?) showing this issue. Maybe only the
very first English releases had this issue?
Owning a copy of the release showing this bug would help understanding
what the original interpreters did there, and decide what Enhancement
class should be used for it.
- Fix an off-by-one in resStrLen() return value, and apply its workaround
for Trac#2715 too.
- Merge the two convertMessageToString() workarounds into a single one,
and fix another off-by-one in the Trac#1675 case.
- Restrict both workarounds to the German release of Indy3 (DOS release
checked against my own copy, Amiga release tested by gabberhead).
- Restrict both workarounds to the two rooms using the wrong byte for the
German Eszett character -- but don't limit it to a particular script
number, because the faulty lines can be triggered by some global scripts
too (e.g. highlighting a dialogue option).
This should fix the following problems:
- the use-case in Trac#2715 still triggering a fatal "string escape
sequence 32 unknown" error in convertMessagetoString(), when one
highlights the "Woher weiß ich, daß SIE kein Spion sind?" line.
- the missing full stop at the end of the "…irgendwo hier im
Schloß." line from the drunk guard.
This slightly changes the velocity of hits when the player is using a power swing.
The previous iteration of this mod reduced the velocity of hits with power swings, making them less effective relative to line drive and grounder swings. After 6+ months of competitive play, the consensus among the community is that this has made power swings not viable - using a line drive swing is almost always optimal, which makes gameplay less interesting.
This change is intended to make the decisions on what swing type to use more interesting.
Also, make the box draggable like in the original. As an enhancement,
allow the box to be dragged to any X coordinate, not just ones on
16-pixel boundaries. The original allowed you to drag it all the way to
the top of the game area, but this interfers with the auto-appearing
menu so don't allow that.
This is still just a mock-up, and a bad one at that. It will all be for
nought unless I can figure out how to wire up these buttons to the SCUMM
verbs.
* SCUMM HE: BYB01 hit power mod for online competitive play
* SCUMM HE: BYB01 pitch location hit quality mod for competitive online play
* SCUMM HE: Unindent switch case statements
* SCUMM HE: BYB01 online mod: sprint on halfspeed popup
* SCUMM HE: BYB01 online mod: fewer sprints for top speed
* SCUMM HE: Fix BYB01 online turnaround score bug
* SCUMM HE: Add break statements to ensure correct hit quality returned
---------
Co-authored-by: shkupfer <shkupfer@ncsu.edu>
The workaround itself doesn't require any v7/v8-only feature, and
there's no much sense in saving a few bytes for such a small
workaround. Others Dig/FT/COMI workarounds don't use an ifdef for
this anyway.
The entirety of v3 games use script-based controls for textSpeed values, which were
broken by yet another 15 years old workaround which didn't take into account the fact
that boot-up is not the only moment that textSpeed is changed by the scripts, but is also
changed when sending the '<' '>' key commands.
The fire animation is sped up along with the rest of the game while the
messenger nymph is flying. Slow it down to make it appear to run at
constant speed throughout the intro. This does not apply to the VGA
talkie version, because there the fire isn't animated.
FT, DIG and COMI interpreters explicitly ask for flag == 2 instead of flag >= 0x80.
This fixes a class of bugs in which some scripts which should have been paused
still manage to execute.