The dictionary for AGI and SCI games’ text parser input is stored in alphabetical order. This allows a prefix-based compression:
anotheranyappearappearanceappleatattack
Though the formats for the two engines’ dictionaries are completely different, they share this one aspect. Each of these words is then assigned a group number which is then used to store the said specs. I’ve written about that before. The thing is that when you decompile a game script, you can’t tell which synonym from a given group was originally used. And that’s why when you decompile Leisure Suit Larry 2 and look in the scripts regarding really any female character you’ll see them being called bimbos.
(if (or (Said 'call/bimbo,agent') (Said 'get,buy/ticket'))
That is of course because “bimbo” is in the same group (#42) as “woman” and “lady”, but alphabetically comes before them. “Agent” is in its own group (#50) together with various other jobs. You can call this particular woman either by gender or by profession. You can even call her a KGB agent and the game will allow it. By that same token, “call” is in the same group as the “talk” you’d expect to see here (#11).
But the decompiler has little to no idea of these things.
I have recently acquired the full source code for Larry 2, and that shows a slightly different, more sensible word choice:
(if (or (Said 'talk/girl, clerk') (Said 'get, buy/ticket'))
That is of course because these are the actual word groups being used here:
11 | 42 | 50 |
---|---|---|
talk speak converse call |
woman girl lady stewardess blond chick blonde slut broad bimbo maid receptionist secretary mother mama momma mom |
clerk waiter waitress bartender storekeeper shopkeeper agent kgb kgbishna custom attendant shark |
You can see how alphabetical order would mess that up.
And by that same token I can now securely say that the debug cheat code in Larry 3 is not in fact “ascot backdrop”.
“Backdrop” in Larry 3 is in group #1063 together with “put”, “drop”, “release”, “set”, “stash”, and various other “put something here” verbs. You know by now how the smart fella who discovered the debug cheat may have gone about it, and how “backdrop” would be the first word in that group. The canonical phrase however, is
Ascot Place
Because of course if I have the Larry 2 code why wouldn’t I have Larry 3 as well?
(cond ((Said 'ascot/place') (^= debugging TRUE) (if debugging (Print "Hi, Al!") else (Print "\"Goodbye.\"") ) )
The question is… why is this the debug phrase?
And the answer? It’s a callback to Larry 2:
And just like that this post’s title makes a little sense.