<Comment>// TADS3 Example File</Comment><br/>
<Comment>// Source: https://www.tads.org/t3doc/doc/t3QuickStart.htm</Comment><br/>
<Normal Text></Normal Text><br/>
<Preprocessor>#charset </Preprocessor><String>"us-ascii"</String><br/>
<Preprocessor>#include </Preprocessor><String><adv3.h></String><br/>
<Preprocessor>#include </Preprocessor><String><en_us.h></String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>versionInfo: GameID</Normal Text><br/>
<Normal Text>    IFID </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'558c20af-6559-477a-9f98-b7b4274cd304</ValString><String>'</String><br/>
<Normal Text>    name </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'The Best Burglar</ValString><String>'</String><br/>
<Normal Text>    byline </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'by Eric Eve</ValString><String>'</String><br/>
<Normal Text>    htmlByline </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'by </ValString><HTML Tag><a href="mailto:eric.eve@hmc.ox.ac.uk"></HTML Tag><br/>
<ValString>                  Eric Eve</ValString><HTML Tag></a></HTML Tag><String>'</String><br/>
<Normal Text>    version </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'3</ValString><String>'</String><br/>
<Normal Text>    authorEmail </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'Eric Eve </ValString><HTML Tag><eric.eve@hmc.ox.ac.uk></HTML Tag><String>'</String><br/>
<Normal Text>    desc </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'You are the world</ValString><Backslash Code>\'</Backslash Code><ValString>s best burglar faced with the greatest challenge</ValString><br/>
<ValString>        of your felonious career.</ValString><String>'</String><br/>
<Normal Text>    htmlDesc </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'You are the world</ValString><Backslash Code>\'</Backslash Code><ValString>s best burglar faced with the greatest</ValString><br/>
<ValString>        challenge of your felonious career.</ValString><String>'</String><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>gameMain: GameMainDef</Normal Text><br/>
<Normal Text>    </Normal Text><Comment>/* the initial player character is 'me' */</Comment><br/>
<Normal Text>    initialPlayerChar </Normal Text><Symbol>=</Symbol><Normal Text> me</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    showIntro</Normal Text><Symbol>()</Symbol><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        </Normal Text><String>"</String><HTML Tag><b></HTML Tag><String>The Best Burglar</String><HTML Tag></b></HTML Tag><Backslash Code>\n</Backslash Code><String>Well, you've got this far. Now it's just a</String><br/>
<String>        quick nip inside the house and out again carrying the Orb of Ultimate</String><br/>
<String>        Satisfaction, an object that no burglar has ever managed to steal</String><br/>
<String>        before. If you can pull it off you're sure to win the Burglar of the</String><br/>
<String>        Year Award, putting you at the pinnacle of your profession.</String><Backslash Code>\b</Backslash Code><String>"</String><Normal Text>;</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    showGoodbye</Normal Text><Symbol>()</Symbol><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        </Normal Text><String>"Thanks for playing! "</String><Normal Text>;</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>startRoom: OutdoorRoom </Normal Text><ValString>'Driveway</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"The large red-brick Tudor house stands immediately to the north of this end</String><br/>
<String>    of the driveway, while the drive back to the road where you left your</String><br/>
<String>    getaway vehicle runs off though a belt of trees to the southwest."</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    roomFirstDesc </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><String>"Here you are in the drive of Number 305 Erehwon Avenue,</String><br/>
<String>        with the great house you've come to burgle standing just before you to</String><br/>
<String>        the north. The drive back to the road where you left your getaway</String><br/>
<String>        vehicle runs off though a belt of trees to the southwest."</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    north </Normal Text><Symbol>=</Symbol><Normal Text> frontDoor</Normal Text><br/>
<Normal Text>    </Normal Text><Keyword>in</Keyword><Normal Text> asExit</Normal Text><Symbol>(</Symbol><Normal Text>north</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    southwest </Normal Text><Symbol>=</Symbol><Normal Text> drive</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> me: Actor</Normal Text><br/>
<Normal Text>    pcDesc </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><String>"You're Alexis Lightfinger, burglar extraordinaire, the most</String><br/>
<String>        professional thief in the known universe; but you're on a job now, so</String><br/>
<String>        you don't have time for the narcissistic indulgence of admiring your own</String><br/>
<String>        appearance. You're far too professional not to have come fully prepared,</String><br/>
<String>        so there's no practical need to look yourself over again. "</String><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>++</Symbol><Normal Text> Container </Normal Text><ValString>'large white swag bag*bags</ValString><String>'</String><Normal Text> </Normal Text><ValString>'swag bag</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It's a large white bag with </String><HTML Tag><q></HTML Tag><String>SWAG</String><HTML Tag></q></HTML Tag><String> printed on it in very large</String><br/>
<String>    letters. Everyone knows that no real burglar would ever carry such a thing,</String><br/>
<String>    so by carrying it you know no one will take you for a real burglar. Cunning,</String><br/>
<String>    eh? "</String><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> frontDoor: LockableWithKey</Normal Text><Symbol>,</Symbol><Normal Text> Door </Normal Text><ValString>'solid oak front door*doors</ValString><String>'</String><Normal Text> </Normal Text><ValString>'front door</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"The lintel above the front door is carved with the date 1589, presumably</String><br/>
<String>    the date the house was built. The door itself is made of solid oak. "</String><br/>
<Normal Text>    keyList </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Symbol>[</Symbol><Normal Text>brassKey</Normal Text><Symbol>]</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    makeOpen</Normal Text><Symbol>(</Symbol><Normal Text>stat</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        </Normal Text><Keyword>inherited</Keyword><Symbol>(</Symbol><Normal Text>stat</Normal Text><Symbol>)</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>        </Normal Text><Keyword>if</Keyword><Symbol>(</Symbol><Normal Text>stat</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>            achievement.awardPointsOnce</Normal Text><Symbol>()</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    achievement: Achievement { </Normal Text><Symbol>+</Symbol><Decimal>10</Decimal><Normal Text> </Normal Text><String>"opening the front door"</String><Normal Text> }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> flowerPot: ComplexContainer </Normal Text><ValString>'terracotta small flower flowerpot/pot*pots</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><ValString>'flower pot</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It's a perfectly ordinary small terracota pot, though it looks like no</String><br/>
<String>    one's got round to putting a plant in it yet. "</String><br/>
<Normal Text>    subContainer: ComplexComponent</Normal Text><Symbol>,</Symbol><Normal Text> Container { bulkCapacity </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>3</Decimal><Normal Text>}</Normal Text><br/>
<Normal Text>    subUnderside: ComplexComponent</Normal Text><Symbol>,</Symbol><Normal Text> Underside { }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    initSpecialDesc </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><String>"A small flower pot rests on the ground not far from the</String><br/>
<String>        front door. "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    bulk </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>3</Decimal><br/>
<Normal Text>    bulkCapacity </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>3</Decimal><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>++</Symbol><Normal Text> brassKey: Hidden</Normal Text><Symbol>,</Symbol><Normal Text> Key </Normal Text><ValString>'small brass key*keys</ValString><String>'</String><Normal Text> </Normal Text><ValString>'small brass key</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It's an ordinary enough small brass key. "</String><br/>
<Normal Text>    subLocation </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Symbol>&</Symbol><Normal Text>subUnderside</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> Enterable </Normal Text><Symbol>-></Symbol><Normal Text> frontDoor </Normal Text><ValString>'large red red-brick tudor house/mansion/front</ValString><br/>
<ValString>    *houses*buildings</ValString><String>'</String><Normal Text> </Normal Text><ValString>'house</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It's a large red-brick Tudor house with mullioned windows, climbing</String><br/>
<String>    creepers and the date 1589 carved over the door. "</String><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>++</Symbol><Normal Text> Component </Normal Text><ValString>'(door) carved lintel</ValString><String>'</String><Normal Text> </Normal Text><ValString>'lintel</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"Its most noteworthy feature is the date 1589 carved into it. "</String><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> Decoration </Normal Text><ValString>'mullioned windows</ValString><String>'</String><Normal Text> </Normal Text><ValString>'windows</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"They're architecturally attractive, no doubt, but not especially helpful to</String><br/>
<String>    burglars. "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    notImportantMsg </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'It</ValString><Backslash Code>\'</Backslash Code><ValString>s a matter of professional pride with you never to</ValString><br/>
<ValString>        mess with windows. </ValString><String>'</String><br/>
<Normal Text>    isPlural </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Keyword>true</Keyword><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> Decoration </Normal Text><ValString>'green climbing ivy/creepers/creeper</ValString><String>'</String><Normal Text> </Normal Text><ValString>'creepers</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"The front of the house is festooned with green creepers -- ivy, perhaps,</String><br/>
<String>    but botany was never your strong point since in the main plants aren't</String><br/>
<String>    worth burgling. "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    notImportantMsg </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'The creepers can</ValString><Backslash Code>\'</Backslash Code><ValString>t help you burgle the house -- they</ValString><Backslash Code>\'</Backslash Code><ValString>re</ValString><br/>
<ValString>        certainly not strong enough to climb and they</ValString><Backslash Code>\'</Backslash Code><ValString>re certainly not worth</ValString><br/>
<ValString>        stealing -- so you may as well leave them alone. </ValString><String>'</String><br/>
<Normal Text>    isPlural </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Keyword>true</Keyword><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> drive: PathPassage </Normal Text><ValString>'drive/path/avenue</ValString><String>'</String><Normal Text> </Normal Text><ValString>'drive</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"The drive leading back to the road runs off through a belt of trees to the</String><br/>
<String>    southwest. "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>TravelVia</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        action</Normal Text><Symbol>()</Symbol><br/>
<Normal Text>        {</Normal Text><br/>
<Normal Text>            </Normal Text><String>"You retrace your steps back to the road, where your trusty unmarked</String><br/>
<String>            burglarmobile is still parked, ready for your quick getaway. "</String><Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>            </Normal Text><Keyword>if</Keyword><Symbol>(</Symbol><Normal Text>orb.isIn</Normal Text><Symbol>(</Symbol><Normal Text>me</Normal Text><Symbol>))</Symbol><br/>
<Normal Text>            {</Normal Text><br/>
<Normal Text>                </Normal Text><String>"Congratulations! You have got away with the Orb of Ultimate</String><br/>
<String>                Satisfaction, a feat never before performed. As you slip the orb</String><br/>
<String>                onto the back seat of your car and climb into the driver's seat</String><br/>
<String>                you tell yourself that you're now absolutely certain to win</String><br/>
<String>                the Burglar of the Year Award!</String><Backslash Code>\b</Backslash Code><String>"</String><Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>                achievement.awardPointsOnce</Normal Text><Symbol>()</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>                finishGameMsg</Normal Text><Symbol>(</Symbol><Normal Text>ftVictory</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><Symbol>[</Symbol><Normal Text>finishOptionUndo</Normal Text><Symbol>,</Symbol><br/>
<Normal Text>                    finishOptionFullScore</Normal Text><Symbol>])</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>            }</Normal Text><br/>
<Normal Text>            </Normal Text><Keyword>else</Keyword><br/>
<Normal Text>            {</Normal Text><br/>
<Normal Text>                </Normal Text><String>"It's a shame you didn't manage to steal the orb, though.</String><br/>
<String>                Without it you'll never win the Burglar of the Year Award</String><br/>
<String>                now.</String><Backslash Code>\b</Backslash Code><String>"</String><Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>                finishGameMsg</Normal Text><Symbol>(</Symbol><Normal Text>ftFailure</Normal Text><Symbol>,</Symbol><Normal Text> </Normal Text><Symbol>[</Symbol><Normal Text>finishOptionUndo</Normal Text><Symbol>])</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>            }</Normal Text><br/>
<Normal Text>        }</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    okayRubMsg </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'What -- all of it? That may take a while! </ValString><String>'</String><br/>
<Normal Text>    achievement: Achievement { </Normal Text><Symbol>+</Symbol><Decimal>10</Decimal><Normal Text> </Normal Text><String>"getting away with the orb"</String><Normal Text> }</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> Decoration </Normal Text><ValString>'belt/trees</ValString><String>'</String><Normal Text> </Normal Text><ValString>'trees</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"The trees are in full leaf, which is good, because they hide what you're</String><br/>
<String>    doing from the road. "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    notImportantMsg </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'The trees are doing a good job of hiding you from the</ValString><br/>
<ValString>        road, so you may as well leave them alone. It</ValString><Backslash Code>\'</Backslash Code><ValString>s not as if they</ValString><Backslash Code>\'</Backslash Code><ValString>re</ValString><br/>
<ValString>        something you could steal, after all. </ValString><String>'</String><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>hallway: Room </Normal Text><ValString>'Hallway</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"This hall is or grand proportions but pretty bare. The front door lies to</String><br/>
<String>    the south and other exits lead east, north and west. "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    south </Normal Text><Symbol>=</Symbol><Normal Text> hallDoor</Normal Text><br/>
<Normal Text>    out asExit</Normal Text><Symbol>(</Symbol><Normal Text>south</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    west </Normal Text><Symbol>=</Symbol><Normal Text> study</Normal Text><br/>
<Normal Text>    north: FakeConnector { </Normal Text><String>"You're pretty sure that only leads to the kitchen,</String><br/>
<String>        and you haven't come here to cook a meal. "</String><Normal Text> }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    east: DeadEndConnector { </Normal Text><ValString>'the living room</ValString><String>'</String><Normal Text> </Normal Text><String>"You </String><Embedded Expression><<one of>></Embedded Expression><String>walk through the</String><br/>
<String>        doorway and find yourself in</String><Embedded Expression><<or>></Embedded Expression><String>return to</String><Embedded Expression><<stopping>></Embedded Expression><String> the living room</String><br/>
<String>        where you take </String><Embedded Expression><<one of>></Embedded Expression><String> a </String><Embedded Expression><<or>></Embedded Expression><String>another</String><Embedded Expression><<stopping>></Embedded Expression><String> quick look around,</String><br/>
<String>        but </String><Embedded Expression><<one of>><<or>></Embedded Expression><String> once again</String><Embedded Expression><<stopping>></Embedded Expression><String> failing to find anything of</String><br/>
<String>        interest you quickly return to the hall. "</String><Normal Text>}</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> hallDoor: Lockable</Normal Text><Symbol>,</Symbol><Normal Text> Door </Normal Text><Symbol>-></Symbol><Normal Text> frontDoor </Normal Text><ValString>'front door*doors</ValString><String>'</String><Normal Text> </Normal Text><ValString>'front door</ValString><String>'</String><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> table:Surface </Normal Text><ValString>'small wooden mahogany side table/legs*tables</ValString><String>'</String><Normal Text> </Normal Text><ValString>'small table</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It's a small mahogany table standing on four thin legs. "</String><br/>
<Normal Text>    initSpecialDesc </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><String>"A small table rests by the east wall. "</String><br/>
<Normal Text>    bulk </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>5</Decimal><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>Take</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        check</Normal Text><Symbol>()</Symbol><br/>
<Normal Text>        {</Normal Text><br/>
<Normal Text>            </Normal Text><Keyword>if</Keyword><Symbol>(</Symbol><Normal Text>contents.length </Normal Text><Symbol>></Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><Symbol>)</Symbol><br/>
<Normal Text>                failCheck</Normal Text><Symbol>(</Symbol><ValString>'It</ValString><Backslash Code>\'</Backslash Code><ValString>s probably not a very good idea to try picking</ValString><br/>
<ValString>                    up the table while </ValString><HTML Tag><<contents[1].nameIs></HTML Tag><ValString>> still on it. </ValString><String>'</String><Symbol>)</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>        }</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>++</Symbol><Normal Text> vase: Container </Normal Text><ValString>'cheap china floral vase/pattern</ValString><String>'</String><Normal Text> </Normal Text><ValString>'vase</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It's only a cheap thing, made of china but painted in a tasteless floral</String><br/>
<String>    pattern using far too many primary colours. "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    bulk </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>3</Decimal><br/>
<Normal Text>    bulkCapacity </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>3</Decimal><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+++</Symbol><Normal Text> silverKey: Hidden</Normal Text><Symbol>,</Symbol><Normal Text> Key </Normal Text><ValString>'small silver key*keys</ValString><String>'</String><Normal Text> </Normal Text><ValString>'small silver key</ValString><String>'</String><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>study: Room </Normal Text><ValString>'Study</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"This study is much as you would expect: somewhat spartan. A desk stands in</String><br/>
<String>    the middle of the room with a chair placed just behind it. A </String><Embedded Expression><<if</Embedded Expression><br/>
<Embedded Expression>      picture.moved>></Embedded Expression><String>safe is built into </String><Embedded Expression><<else>></Embedded Expression><String> rather bland painting hangs on</String><br/>
<String>    </String><Embedded Expression><<end>></Embedded Expression><String> the west wall. The way out is to the east. "</String><br/>
<Normal Text>    east </Normal Text><Symbol>=</Symbol><Normal Text> hallway</Normal Text><br/>
<Normal Text>    out asExit</Normal Text><Symbol>(</Symbol><Normal Text>east</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> desk: Heavy</Normal Text><Symbol>,</Symbol><Normal Text> Platform </Normal Text><ValString>'plain wooden desk</ValString><String>'</String><Normal Text> </Normal Text><ValString>'desk</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It's a plain wooden desk with a single drawer. "</String><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>Open</Normal Text><Symbol>)</Symbol><Normal Text> remapTo</Normal Text><Symbol>(</Symbol><Normal Text>Open</Normal Text><Symbol>,</Symbol><Normal Text> drawer</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>Close</Normal Text><Symbol>)</Symbol><Normal Text> remapTo</Normal Text><Symbol>(</Symbol><Normal Text>Close</Normal Text><Symbol>,</Symbol><Normal Text> drawer</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>LookIn</Normal Text><Symbol>)</Symbol><Normal Text> remapTo</Normal Text><Symbol>(</Symbol><Normal Text>LookIn</Normal Text><Symbol>,</Symbol><Normal Text> drawer</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>UnlockWith</Normal Text><Symbol>)</Symbol><Normal Text> remapTo</Normal Text><Symbol>(</Symbol><Normal Text>UnlockWith</Normal Text><Symbol>,</Symbol><Normal Text> drawer</Normal Text><Symbol>,</Symbol><Normal Text> IndirectObject</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>LockWith</Normal Text><Symbol>)</Symbol><Normal Text> remapTo</Normal Text><Symbol>(</Symbol><Normal Text>LockWith</Normal Text><Symbol>,</Symbol><Normal Text> drawer</Normal Text><Symbol>,</Symbol><Normal Text> IndirectObject</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>Lock</Normal Text><Symbol>)</Symbol><Normal Text> remapTo</Normal Text><Symbol>(</Symbol><Normal Text>Lock</Normal Text><Symbol>,</Symbol><Normal Text> drawer</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>Unlock</Normal Text><Symbol>)</Symbol><Normal Text> remapTo</Normal Text><Symbol>(</Symbol><Normal Text>Unlock</Normal Text><Symbol>,</Symbol><Normal Text> drawer</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>++</Symbol><Normal Text> drawer: KeyedContainer</Normal Text><Symbol>,</Symbol><Normal Text> Component </Normal Text><ValString>'(desk) drawer*drawers</ValString><String>'</String><Normal Text> </Normal Text><ValString>'drawer</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It's an ordinary desk drawer with a small silver lock. "</String><br/>
<Normal Text>    keyList </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Symbol>[</Symbol><Normal Text>silverKey</Normal Text><Symbol>]</Symbol><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+++</Symbol><Normal Text> notebook: Readable </Normal Text><ValString>'small bright red notebook/book/cover/pages</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><ValString>'small red notebook</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It's a small notebook with a bright red cover. "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    readDesc </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><String>"You open the notebook and flick through its pages. The only</String><br/>
<String>        thing you find of any interest is a page with </String><HTML Tag><q></HTML Tag><String>SAFE DATE</String><HTML Tag></q></HTML Tag><String> scrawled</String><br/>
<String>        across it. After satisfying yourself that the notebook contains nothing</String><br/>
<String>        else of any potential relevance you snap it shut again. </String><HTML Tag><.reveal</HTML Tag><br/>
<HTML Tag>        safe-date></HTML Tag><String>"</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>Open</Normal Text><Symbol>)</Symbol><Normal Text> asDobjFor</Normal Text><Symbol>(</Symbol><Normal Text>Read</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>LookIn</Normal Text><Symbol>)</Symbol><Normal Text> asDobjFor</Normal Text><Symbol>(</Symbol><Normal Text>Read</Normal Text><Symbol>)</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>Read</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        action</Normal Text><Symbol>()</Symbol><br/>
<Normal Text>        {</Normal Text><br/>
<Normal Text>            </Normal Text><Keyword>inherited</Keyword><Normal Text>;</Normal Text><br/>
<Normal Text>            achievement.awardPointsOnce</Normal Text><Symbol>()</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>        }</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    cannotCloseMsg </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'It</ValString><Backslash Code>\'</Backslash Code><ValString>s already closed. </ValString><String>'</String><br/>
<Normal Text>    achievement: Achievement { </Normal Text><Symbol>+</Symbol><Decimal>5</Decimal><Normal Text> </Normal Text><String>"reading the notebook"</String><Normal Text> }</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> CustomImmovable</Normal Text><Symbol>,</Symbol><Normal Text> Chair </Normal Text><ValString>'red office swivel chair</ValString><String>'</String><Normal Text> </Normal Text><ValString>'chair</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It's a typical office swivel chair, covered in red fabric. "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    cannotTakeMsg </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'You see no reason to burden yourself with such a useless</ValString><br/>
<ValString>        object; that would be quite unprofessional. </ValString><String>'</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> picture: RoomPartItem</Normal Text><Symbol>,</Symbol><Normal Text> Thing </Normal Text><ValString>'rather bland picture/painting/landscape</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><ValString>'picture</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It's a landscape, pleasantly executed enough, but of no great distinction</String><br/>
<String>    and definitely not worth the bother of stealing. "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    initNominalRoomPartLocation </Normal Text><Symbol>=</Symbol><Normal Text> defaultWestWall</Normal Text><br/>
<Normal Text>    initSpecialDesc </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><String>"A rather bland painting hangs on the west wall. "</String><br/>
<Normal Text>    isListed </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>moved</Normal Text><Symbol>)</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    bulk </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>8</Decimal><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>LookBehind</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        action</Normal Text><Symbol>()</Symbol><br/>
<Normal Text>        {</Normal Text><br/>
<Normal Text>            </Normal Text><Keyword>if</Keyword><Symbol>(</Symbol><Normal Text>moved</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>                </Normal Text><Keyword>inherited</Keyword><Normal Text>;</Normal Text><br/>
<Normal Text>            </Normal Text><Keyword>else</Keyword><br/>
<Normal Text>            {</Normal Text><br/>
<Normal Text>                safe.discover</Normal Text><Symbol>()</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>                </Normal Text><String>"Behind the picture is a safe built into the wall. "</String><Normal Text>;</Normal Text><br/>
<Normal Text>            }</Normal Text><br/>
<Normal Text>        }</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    moveInto</Normal Text><Symbol>(</Symbol><Normal Text>newDest</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        </Normal Text><Keyword>if</Keyword><Symbol>(!</Symbol><Normal Text>safe.discovered</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>        {</Normal Text><br/>
<Normal Text>            </Normal Text><String>"Removing the painting from the wall reveals a safe behind. "</String><Normal Text>;</Normal Text><br/>
<Normal Text>            safe.discover</Normal Text><Symbol>()</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>        }</Normal Text><br/>
<Normal Text>        </Normal Text><Keyword>inherited</Keyword><Symbol>(</Symbol><Normal Text>newDest</Normal Text><Symbol>)</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> safe: RoomPartItem</Normal Text><Symbol>,</Symbol><Normal Text> Hidden</Normal Text><Symbol>,</Symbol><Normal Text> CustomFixture</Normal Text><Symbol>,</Symbol><Normal Text> ComplexContainer</Normal Text><br/>
<Normal Text>    </Normal Text><ValString>'sturdy steel safe</ValString><String>'</String><Normal Text> </Normal Text><ValString>'safe</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It's a sturdy steel safe with a single dial on its door. "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    subContainer: ComplexComponent</Normal Text><Symbol>,</Symbol><Normal Text> IndirectLockable</Normal Text><Symbol>,</Symbol><Normal Text> OpenableContainer</Normal Text><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        bulkCapacity </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>5</Decimal><br/>
<Normal Text>        makeOpen</Normal Text><Symbol>(</Symbol><Normal Text>stat</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>        {</Normal Text><br/>
<Normal Text>            </Normal Text><Keyword>inherited</Keyword><Symbol>(</Symbol><Normal Text>stat</Normal Text><Symbol>)</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>            </Normal Text><Keyword>if</Keyword><Symbol>(</Symbol><Normal Text>stat</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>                achievement.awardPointsOnce</Normal Text><Symbol>()</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>        }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>        achievement: Achievement { </Normal Text><Symbol>+</Symbol><Decimal>10</Decimal><Normal Text> </Normal Text><String>"opening the safe"</String><Normal Text> }</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    specialDesc </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><String>"A safe is built into the west wall. "</String><br/>
<Normal Text>    specialNominalRoomPartLocation </Normal Text><Symbol>=</Symbol><Normal Text> defaultWestWall</Normal Text><br/>
<Normal Text>    cannotTakeMsg </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'It</ValString><String>'</String><Normal Text>s firmly built into the wall; you can</Normal Text><ValString>'t budge it. </ValString><String>'</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    discover</Normal Text><Symbol>()</Symbol><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        </Normal Text><Keyword>if</Keyword><Symbol>(!</Symbol><Normal Text>discovered</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>        {</Normal Text><br/>
<Normal Text>            </Normal Text><Keyword>foreach</Keyword><Symbol>(</Symbol><Keyword>local</Keyword><Normal Text> cur </Normal Text><Keyword>in</Keyword><Normal Text> allContents</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>                cur.discover</Normal Text><Symbol>()</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>            achievement.awardPointsOnce</Normal Text><Symbol>()</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>        }</Normal Text><br/>
<Normal Text>        </Normal Text><Keyword>inherited</Keyword><Symbol>()</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    achievement: Achievement { </Normal Text><Symbol>+</Symbol><Decimal>5</Decimal><Normal Text> </Normal Text><String>"finding the safe"</String><Normal Text> }</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>++</Symbol><Normal Text> safeDoor:  Hidden</Normal Text><Symbol>,</Symbol><Normal Text> ContainerDoor </Normal Text><ValString>'(safe) door</ValString><String>'</String><Normal Text> </Normal Text><ValString>'safe door</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It has a circular dial attached to its centre. "</String><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+++</Symbol><Normal Text> safeDial: Hidden</Normal Text><Symbol>,</Symbol><Normal Text> Component</Normal Text><Symbol>,</Symbol><Normal Text>  NumberedDial </Normal Text><ValString>'circular dial*dials</ValString><String>'</String><Normal Text> </Normal Text><ValString>'dial</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"The dial can be turned to any number between </String><Embedded Expression><<minSetting>></Embedded Expression><String> and</String><br/>
<String>    </String><Embedded Expression><<maxSetting>></Embedded Expression><String>. It's currently at </String><Embedded Expression><<curSetting>></Embedded Expression><String>. "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    minSetting </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><br/>
<Normal Text>    maxSetting </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>99</Decimal><br/>
<Normal Text>    curSetting </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'35</ValString><String>'</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    num1 </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><br/>
<Normal Text>    num2 </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>0</Decimal><br/>
<Normal Text>    correctCombination </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Decimal>1589</Decimal><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    makeSetting</Normal Text><Symbol>(</Symbol><Normal Text>val</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        </Normal Text><Keyword>inherited</Keyword><Symbol>(</Symbol><Normal Text>val</Normal Text><Symbol>)</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>        num2 </Normal Text><Symbol>=</Symbol><Normal Text> num1;</Normal Text><br/>
<Normal Text>        num1 </Normal Text><Symbol>=</Symbol><Normal Text> toInteger</Normal Text><Symbol>(</Symbol><Normal Text>val</Normal Text><Symbol>)</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>        </Normal Text><Keyword>if</Keyword><Symbol>(</Symbol><Decimal>100</Decimal><Normal Text> * num2 </Normal Text><Symbol>+</Symbol><Normal Text> num1 </Normal Text><Symbol>==</Symbol><Normal Text> correctCombination</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>        {</Normal Text><br/>
<Normal Text>            </Normal Text><String>"You hear a slight </String><HTML Tag><i></HTML Tag><String>click</String><HTML Tag></i></HTML Tag><String> come from the safe door. "</String><Normal Text>;</Normal Text><br/>
<Normal Text>            safe.makeLocked</Normal Text><Symbol>(</Symbol><Keyword>nil</Keyword><Symbol>)</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>        }</Normal Text><br/>
<Normal Text>        </Normal Text><Keyword>else</Keyword><Normal Text> </Normal Text><Keyword>if</Keyword><Symbol>(!</Symbol><Normal Text>safe.isOpen</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>            safe.makeLocked</Normal Text><Symbol>(</Symbol><Keyword>true</Keyword><Symbol>)</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>++</Symbol><Normal Text> orb: Thing </Normal Text><ValString>'ultimate battered dull metal orb/sphere/ball/satisfaction</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><ValString>'Orb of Ultimate Satisfaction</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><String>"It doesn't look much be honest, just a battered sphere made of some dull</String><br/>
<String>    metal, but you've been told it's the most valuable and desirable object</String><br/>
<String>    in the known universe! "</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    aName </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>theName</Normal Text><Symbol>)</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    subLocation </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Symbol>&</Symbol><Normal Text>subContainer</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    okayRubMsg </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'As {you/he} rub{s} {the dobj/him} a shimmering djiin suddenly</ValString><br/>
<ValString>        appears in the air before you!</ValString><Backslash Code>\b</Backslash Code><br/>
<ValString>        </ValString><HTML Tag><q></HTML Tag><ValString>Hello, you have reached the automated holographic answering service</ValString><br/>
<ValString>        of Jeannie the Genie,</ValString><HTML Tag></q></HTML Tag><ValString> she announces. </ValString><HTML Tag><q></HTML Tag><ValString>I</ValString><Backslash Code>\'</Backslash Code><ValString>m sorry I</ValString><Backslash Code>\'</Backslash Code><ValString>m not</ValString><br/>
<ValString>        available to respond to your rub in person right now, but my hours of</ValString><br/>
<ValString>        activity have been heavily curtailed by the European Working Time</ValString><br/>
<ValString>        Directive. Before making a wish, please make sure that you have</ValString><br/>
<ValString>        conducted a full risk assessment in line with the latest Health and</ValString><br/>
<ValString>        Safety Guidelines. Also, please note that before any wish can be granted</ValString><br/>
<ValString>        you must sign a Form P45/PDQ/LOL indemnifying this wish-granting agency</ValString><br/>
<ValString>        against any consequential loss or damage arising from the fulfilment of</ValString><br/>
<ValString>        your desires. Thank you for rubbing. Have a nice day!</ValString><HTML Tag></q></HTML Tag><Backslash Code>\b</Backslash Code><br/>
<ValString>        Her message complete, the holographic djiin fades away into</ValString><br/>
<ValString>        non-existence. </ValString><String>'</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    moveInto</Normal Text><Symbol>(</Symbol><Normal Text>dest</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        </Normal Text><Keyword>inherited</Keyword><Symbol>(</Symbol><Normal Text>dest</Normal Text><Symbol>)</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>        </Normal Text><Keyword>if</Keyword><Symbol>(</Symbol><Normal Text>dest.isOrIsIn</Normal Text><Symbol>(</Symbol><Normal Text>me</Normal Text><Symbol>))</Symbol><br/>
<Normal Text>            achievement.awardPointsOnce</Normal Text><Symbol>()</Symbol><Normal Text>;</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    achievement: Achievement { </Normal Text><Symbol>+</Symbol><Decimal>10</Decimal><Normal Text> </Normal Text><String>"taking the orb"</String><Normal Text> }</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Comment>//------------------------------------------------------------------------------</Comment><br/>
<Normal Text></Normal Text><br/>
<Comment>/* DEFINE A NEW VERB */</Comment><br/>
<Normal Text></Normal Text><br/>
<Normal Text>DefineTAction</Normal Text><Symbol>(</Symbol><Normal Text>Rub</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>VerbRule</Normal Text><Symbol>(</Symbol><Normal Text>Rub</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    </Normal Text><ValString>'rub</ValString><String>'</String><Normal Text> dobjList</Normal Text><br/>
<Normal Text>    : RubAction</Normal Text><br/>
<Normal Text>    verbPhrase </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'rub/rubbing (what)</ValString><String>'</String><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Comment>/* When creating a new verb, you'll want to modify the Thing class so as to provide</Comment><br/>
<Comment>   default handling for the command. The defaults specified here will be used except</Comment><br/>
<Comment>   on objects for which you define explicit handling of the command. */</Comment><br/>
<Normal Text></Normal Text><br/>
<Keyword>modify</Keyword><Normal Text> Thing</Normal Text><br/>
<Normal Text>    dobjFor</Normal Text><Symbol>(</Symbol><Normal Text>Rub</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    {</Normal Text><br/>
<Normal Text>        preCond </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Symbol>[</Symbol><Normal Text>touchObj</Normal Text><Symbol>]</Symbol><br/>
<Normal Text>        action</Normal Text><Symbol>()</Symbol><Normal Text> { mainReport</Normal Text><Symbol>(</Symbol><Normal Text>okayRubMsg</Normal Text><Symbol>)</Symbol><Normal Text>; }</Normal Text><br/>
<Normal Text>    }</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    okayRubMsg </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'{You/he} rub{s} {the dobj/him} but not much happens as a</ValString><br/>
<ValString>        result. </ValString><String>'</String><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    shouldNotBreakMsg </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'Only amateurs go round breaking things unnecessarily. </ValString><String>'</String><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Comment>//------------------------------------------------------------------------------</Comment><br/>
<Normal Text></Normal Text><br/>
<Comment>/* HINTS */</Comment><br/>
<Normal Text></Normal Text><br/>
<Normal Text>TopHintMenu;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> Goal </Normal Text><Symbol>-></Symbol><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>frontDoor.achievement</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>    </Normal Text><ValString>'How do I get into the house?</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>[</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Well, the windows don</ValString><Backslash Code>\'</Backslash Code><ValString>t seem a good way in. </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'So perhaps you</ValString><Backslash Code>\'</Backslash Code><ValString>d better try the front door. </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Could someone have left a key around somewhere? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Is there anything lying around where someone could have hidden a key? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'What about that flowerpot? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Try looking under the flowerpot. </ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>]</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    goalState </Normal Text><Symbol>=</Symbol><Normal Text> OpenGoal</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Comment>/* The closeWhenSeen property of the following Goal object is an example of how to</Comment><br/>
<Comment>   make your hint menu respond dynamically to the player's current situation. */</Comment><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> Goal </Normal Text><ValString>'Where can I find the orb? </ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>[</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Something like that is bound to be kept safe. </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'So it</ValString><Backslash Code>\'</Backslash Code><ValString>s probably inside the house. </ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>]</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    goalState </Normal Text><Symbol>=</Symbol><Normal Text> OpenGoal</Normal Text><br/>
<Normal Text>    closeWhenSeen </Normal Text><Symbol>=</Symbol><Normal Text> hallway</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> Goal </Normal Text><ValString>'Where can I find the orb?</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>[</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'It</ValString><Backslash Code>\'</Backslash Code><ValString>s sure to be kept somewhere safe. </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'You</ValString><Backslash Code>\'</Backslash Code><ValString>d better hunt around. </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Somewhere in the study seems the most likely place. </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        deskHint</Normal Text><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'But it should be safely locked in a safe </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Where might someone hide a safe in this study? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'What could be behind that picture on the wall? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Try looking behind the picture (or simply taking the picture). </ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>]</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    openWhenSeen </Normal Text><Symbol>=</Symbol><Normal Text> hallway</Normal Text><br/>
<Normal Text>    closeWhenSeen </Normal Text><Symbol>=</Symbol><Normal Text> orb</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>++</Symbol><Normal Text> deskHint: Hint </Normal Text><ValString>'Have you tried looking in the desk drawer? </ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>[</Symbol><Normal Text>deskGoal</Normal Text><Symbol>]</Symbol><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> deskGoal: Goal </Normal Text><ValString>'How do I get the desk drawer open?</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>[</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Have you examined the drawer? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'What might you need to unlock it? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Where might you find such a thing? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'What have you seen that a small key might be hidden in? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'How carefully have you searched the hall? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'What is (or was) on the hall table? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'What might that vase be for? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Try looking in the vase. </ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>]</Symbol><br/>
<Normal Text>    closeWhenSeen </Normal Text><Symbol>=</Symbol><Normal Text> notebook</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> Goal </Normal Text><ValString>'How do I get the safe open?</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>[</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'How carefully have you examined the safe? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Where might someone leave a clue to the combination? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        deskHint</Normal Text><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Make sure you read the notebook. </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Once you</ValString><Backslash Code>\'</Backslash Code><ValString>ve found the combination you need to use the dial. </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'If the combination is a number larger than 99 you</ValString><Backslash Code>\'</Backslash Code><ValString>ll need to enter it</ValString><br/>
<ValString>        in stages. </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'For example, if the combination were 1234 you</ValString><Backslash Code>\'</Backslash Code><ValString>d first need to turn the</ValString><br/>
<ValString>        dial to 12 and then turn it to 34. </ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>]</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    openWhenSeen </Normal Text><Symbol>=</Symbol><Normal Text> safe</Normal Text><br/>
<Normal Text>    closeWhenAchieved </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>safe.subContainer.achievement</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> Goal </Normal Text><ValString>'What does the clue in the notebook mean?</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>[</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Well, </ValString><HTML Tag><q></HTML Tag><ValString>SAFE</ValString><HTML Tag></q></HTML Tag><ValString> might refer to something you want to open. </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Have you seen a date round here? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'When was this house built? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Where might you find the year in which this house was built? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'How carefully have you looked at the front of the house? </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Did you examine the door? </ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>]</Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>    openWhenRevealed </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><ValString>'safe-date</ValString><String>'</String><br/>
<Normal Text>    closeWhenAchieved </Normal Text><Symbol>=</Symbol><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>safe.subContainer.achievement</Normal Text><Symbol>)</Symbol><br/>
<Normal Text>;</Normal Text><br/>
<Normal Text></Normal Text><br/>
<Normal Text></Normal Text><br/>
<Symbol>+</Symbol><Normal Text> Goal </Normal Text><ValString>'What do I do with the orb now I</ValString><Backslash Code>\'</Backslash Code><ValString>ve got it?</ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>[</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'Well, you could try rubbing it. </ValString><String>'</String><Symbol>,</Symbol><br/>
<Normal Text>        </Normal Text><ValString>'But the main thing to do now is to escape with it. </ValString><String>'</String><br/>
<Normal Text>    </Normal Text><Symbol>]</Symbol><br/>
<Normal Text>    openWhenSeen </Normal Text><Symbol>=</Symbol><Normal Text> orb</Normal Text><br/>
<Normal Text>;</Normal Text><br/>
