[Scummvm-tracker] [ScummVM] #10404: SCI: LSL7: parser behavior improvement (Italian version)
MIKZER0
trac at scummvm.org
Tue Jan 16 02:25:04 CET 2018
#10404: SCI: LSL7: parser behavior improvement (Italian version)
------------------------+----------------------------------
Reporter: MIKZER0 | Owner: (none)
Type: enhancement | Status: new
Priority: normal | Component: Engine: SCI
Keywords: sci32 | Game: Leisure Suit Larry 7
------------------------+----------------------------------
First, this is not an issue with the current implementation as the scummvm
version behave the same as the original game.
The italian version of Larry 7 has a couple of issue. The game is
completable but one of this issue prevent the player from getting one of
the easter eggs and reach the complete ending.
The verb "unzip" in italian was translated as "Aprire la cerniera" but is
never recognized by the parser. The verb "Aprire" is recognized instead
but it's related to the verb "Open" in the english version.
At first I thought the reason was that the verb was composed by more than
one word, but the english version has multiple words verb recognized (turn
on, turn off) and works fine.
I checked the parsing code in ScummVm and it seem it stops at the first
complete match in every version of the SCI engine.
In the end I think I find the reason the Italian version has this issue.
The parser stops at the first complete match of the game verbs on the
input, but doesn't check if there is a verb that completely match the
input, in other words it checks if the game verb match the start of the
input (it is contained in it) but not if the input has characters left
that could better match another verb. It also checks each entry in order
(verb number and maybe sequence). I believe that the list of verbs was
carefully crafted to works with this system (the order in which each verb
is numbered is important) so that in case of verbs with the initial part
in common the parser would pick the right one.
One example is this list of verbs:
-turn off
-turn on
-turn
in this order.
If the player input "turn on" the parser would:
-check "turn off" and fail
-check "turn on" and match
-stop
-verb "turn on" is recognized
If the order was different (turn, turn on, turn off) this would happen:
-check "turn" and match (turn is contained in turn on)
-stop
-verb "turn" is recognized
In the english version there are in fact other cases of verbs that cannot
be matched using the parser due to the matching argorithm but luckily they
are not needed to complete the game.
"Lay" and "Lay down", lay down is never matched. "Lay cable" however get
recognized as it is placed before the others.
"Look over" and "Look down" are never recognized as "Look" comes before
them. They have a different number associated that "look", I don't know if
there are events related to those verbs that never happens in the game due
to this issue.
In the Italian version however, translating some of those verbs messed up
the matching order and some (one in particular) of those verbs are needed
to have a complete ending.
The behavior is the same on both the original game (DOS and Windows
client) and is correctly replicated in ScummVm.
For the italian version an easy fix is to change the problematic verb with
another one. We (a group of fan) already did that and it works.
However it would be good to also have the parser improved to correctly
match the words the player input. It would also allow owners of the
original Italian retail version to complete the game without the need of a
fanmade patch (that we can provide to you if you wish to make it
available).
I don't know if this could create new issues with other languages
(including english) as those version have been tested with the original
parser. I have a limited understanding of scummvm code but if you need
further assistance on the issue I'm willing to help as well as providing
better reproducible examples.
--
Ticket URL: <https://bugs.scummvm.org/ticket/10404>
ScummVM <https://bugs.scummvm.org>
ScummVM
More information about the Scummvm-tracker
mailing list