File indexing completed on 2024-05-19 15:23:15

0001 <!DOCTYPE html>
0002 <html><head>
0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
0004 <title>highlight_tads3.t</title>
0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (TADS 3) - Theme (Breeze Dark)"/>
0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre>
0007 <span style="color:#7a7c7d;">// TADS3 Example File</span>
0008 <span style="color:#7a7c7d;">// Source: https://www.tads.org/t3doc/doc/t3QuickStart.htm</span>
0009 
0010 <span style="color:#27ae60;">#charset </span><span style="color:#f44f4f;">&quot;us-ascii&quot;</span>
0011 <span style="color:#27ae60;">#include </span><span style="color:#f44f4f;">&lt;adv3.h&gt;</span>
0012 <span style="color:#27ae60;">#include </span><span style="color:#f44f4f;">&lt;en_us.h&gt;</span>
0013 
0014 versionInfo: GameID
0015     IFID <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'558c20af-6559-477a-9f98-b7b4274cd304</span><span style="color:#f44f4f;">'</span>
0016     name <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'The Best Burglar</span><span style="color:#f44f4f;">'</span>
0017     byline <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'by Eric Eve</span><span style="color:#f44f4f;">'</span>
0018     htmlByline <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'by </span><span style="color:#27ae60;font-style:italic;">&lt;a href=&quot;mailto:eric.eve@hmc.ox.ac.uk&quot;&gt;</span>
0019 <span style="color:#f44f4f;">                  Eric Eve</span><span style="color:#27ae60;font-style:italic;">&lt;/a&gt;</span><span style="color:#f44f4f;">'</span>
0020     version <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'3</span><span style="color:#f44f4f;">'</span>
0021     authorEmail <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'Eric Eve </span><span style="color:#27ae60;font-style:italic;">&lt;eric.eve@hmc.ox.ac.uk&gt;</span><span style="color:#f44f4f;">'</span>
0022     desc <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'You are the world</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">s best burglar faced with the greatest challenge</span>
0023 <span style="color:#f44f4f;">        of your felonious career.</span><span style="color:#f44f4f;">'</span>
0024     htmlDesc <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'You are the world</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">s best burglar faced with the greatest</span>
0025 <span style="color:#f44f4f;">        challenge of your felonious career.</span><span style="color:#f44f4f;">'</span>
0026 ;
0027 
0028 gameMain: GameMainDef
0029     <span style="color:#7a7c7d;">/* the initial player character is 'me' */</span>
0030     initialPlayerChar <span style="color:#3f8058;">=</span> me
0031 
0032     showIntro<span style="color:#3f8058;">()</span>
0033     {
0034         <span style="color:#f44f4f;">&quot;</span><span style="color:#27ae60;font-style:italic;">&lt;b&gt;</span><span style="color:#f44f4f;">The Best Burglar</span><span style="color:#27ae60;font-style:italic;">&lt;/b&gt;</span><span style="color:#3daee9;font-weight:bold;">\n</span><span style="color:#f44f4f;">Well, you've got this far. Now it's just a</span>
0035 <span style="color:#f44f4f;">        quick nip inside the house and out again carrying the Orb of Ultimate</span>
0036 <span style="color:#f44f4f;">        Satisfaction, an object that no burglar has ever managed to steal</span>
0037 <span style="color:#f44f4f;">        before. If you can pull it off you're sure to win the Burglar of the</span>
0038 <span style="color:#f44f4f;">        Year Award, putting you at the pinnacle of your profession.</span><span style="color:#3daee9;font-weight:bold;">\b</span><span style="color:#f44f4f;">&quot;</span>;
0039     }
0040 
0041     showGoodbye<span style="color:#3f8058;">()</span>
0042     {
0043         <span style="color:#f44f4f;">&quot;Thanks for playing! &quot;</span>;
0044     }
0045 ;
0046 
0047 startRoom: OutdoorRoom <span style="color:#f44f4f;">'Driveway</span><span style="color:#f44f4f;">'</span>
0048     <span style="color:#f44f4f;">&quot;The large red-brick Tudor house stands immediately to the north of this end</span>
0049 <span style="color:#f44f4f;">    of the driveway, while the drive back to the road where you left your</span>
0050 <span style="color:#f44f4f;">    getaway vehicle runs off though a belt of trees to the southwest.&quot;</span>
0051 
0052     roomFirstDesc <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">&quot;Here you are in the drive of Number 305 Erehwon Avenue,</span>
0053 <span style="color:#f44f4f;">        with the great house you've come to burgle standing just before you to</span>
0054 <span style="color:#f44f4f;">        the north. The drive back to the road where you left your getaway</span>
0055 <span style="color:#f44f4f;">        vehicle runs off though a belt of trees to the southwest.&quot;</span>
0056 
0057     north <span style="color:#3f8058;">=</span> frontDoor
0058     <span style="font-weight:bold;">in</span> asExit<span style="color:#3f8058;">(</span>north<span style="color:#3f8058;">)</span>
0059     southwest <span style="color:#3f8058;">=</span> drive
0060 ;
0061 
0062 <span style="color:#3f8058;">+</span> me: Actor
0063     pcDesc <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">&quot;You're Alexis Lightfinger, burglar extraordinaire, the most</span>
0064 <span style="color:#f44f4f;">        professional thief in the known universe; but you're on a job now, so</span>
0065 <span style="color:#f44f4f;">        you don't have time for the narcissistic indulgence of admiring your own</span>
0066 <span style="color:#f44f4f;">        appearance. You're far too professional not to have come fully prepared,</span>
0067 <span style="color:#f44f4f;">        so there's no practical need to look yourself over again. &quot;</span>
0068 ;
0069 
0070 <span style="color:#3f8058;">++</span> Container <span style="color:#f44f4f;">'large white swag bag*bags</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'swag bag</span><span style="color:#f44f4f;">'</span>
0071     <span style="color:#f44f4f;">&quot;It's a large white bag with </span><span style="color:#27ae60;font-style:italic;">&lt;q&gt;</span><span style="color:#f44f4f;">SWAG</span><span style="color:#27ae60;font-style:italic;">&lt;/q&gt;</span><span style="color:#f44f4f;"> printed on it in very large</span>
0072 <span style="color:#f44f4f;">    letters. Everyone knows that no real burglar would ever carry such a thing,</span>
0073 <span style="color:#f44f4f;">    so by carrying it you know no one will take you for a real burglar. Cunning,</span>
0074 <span style="color:#f44f4f;">    eh? &quot;</span>
0075 ;
0076 
0077 <span style="color:#3f8058;">+</span> frontDoor: LockableWithKey<span style="color:#3f8058;">,</span> Door <span style="color:#f44f4f;">'solid oak front door*doors</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'front door</span><span style="color:#f44f4f;">'</span>
0078     <span style="color:#f44f4f;">&quot;The lintel above the front door is carved with the date 1589, presumably</span>
0079 <span style="color:#f44f4f;">    the date the house was built. The door itself is made of solid oak. &quot;</span>
0080     keyList <span style="color:#3f8058;">=</span> <span style="color:#3f8058;">[</span>brassKey<span style="color:#3f8058;">]</span>
0081 
0082     makeOpen<span style="color:#3f8058;">(</span>stat<span style="color:#3f8058;">)</span>
0083     {
0084         <span style="font-weight:bold;">inherited</span><span style="color:#3f8058;">(</span>stat<span style="color:#3f8058;">)</span>;
0085         <span style="font-weight:bold;">if</span><span style="color:#3f8058;">(</span>stat<span style="color:#3f8058;">)</span>
0086             achievement.awardPointsOnce<span style="color:#3f8058;">()</span>;
0087     }
0088 
0089     achievement: Achievement { <span style="color:#3f8058;">+</span><span style="color:#f67400;">10</span> <span style="color:#f44f4f;">&quot;opening the front door&quot;</span> }
0090 
0091 ;
0092 
0093 <span style="color:#3f8058;">+</span> flowerPot: ComplexContainer <span style="color:#f44f4f;">'terracotta small flower flowerpot/pot*pots</span><span style="color:#f44f4f;">'</span>
0094     <span style="color:#f44f4f;">'flower pot</span><span style="color:#f44f4f;">'</span>
0095     <span style="color:#f44f4f;">&quot;It's a perfectly ordinary small terracota pot, though it looks like no</span>
0096 <span style="color:#f44f4f;">    one's got round to putting a plant in it yet. &quot;</span>
0097     subContainer: ComplexComponent<span style="color:#3f8058;">,</span> Container { bulkCapacity <span style="color:#3f8058;">=</span> <span style="color:#f67400;">3</span>}
0098     subUnderside: ComplexComponent<span style="color:#3f8058;">,</span> Underside { }
0099 
0100     initSpecialDesc <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">&quot;A small flower pot rests on the ground not far from the</span>
0101 <span style="color:#f44f4f;">        front door. &quot;</span>
0102 
0103     bulk <span style="color:#3f8058;">=</span> <span style="color:#f67400;">3</span>
0104     bulkCapacity <span style="color:#3f8058;">=</span> <span style="color:#f67400;">3</span>
0105 ;
0106 
0107 <span style="color:#3f8058;">++</span> brassKey: Hidden<span style="color:#3f8058;">,</span> Key <span style="color:#f44f4f;">'small brass key*keys</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'small brass key</span><span style="color:#f44f4f;">'</span>
0108     <span style="color:#f44f4f;">&quot;It's an ordinary enough small brass key. &quot;</span>
0109     subLocation <span style="color:#3f8058;">=</span> <span style="color:#3f8058;">&amp;</span>subUnderside
0110 ;
0111 
0112 <span style="color:#3f8058;">+</span> Enterable <span style="color:#3f8058;">-&gt;</span> frontDoor <span style="color:#f44f4f;">'large red red-brick tudor house/mansion/front</span>
0113 <span style="color:#f44f4f;">    *houses*buildings</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'house</span><span style="color:#f44f4f;">'</span>
0114     <span style="color:#f44f4f;">&quot;It's a large red-brick Tudor house with mullioned windows, climbing</span>
0115 <span style="color:#f44f4f;">    creepers and the date 1589 carved over the door. &quot;</span>
0116 ;
0117 
0118 <span style="color:#3f8058;">++</span> Component <span style="color:#f44f4f;">'(door) carved lintel</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'lintel</span><span style="color:#f44f4f;">'</span>
0119     <span style="color:#f44f4f;">&quot;Its most noteworthy feature is the date 1589 carved into it. &quot;</span>
0120 ;
0121 
0122 <span style="color:#3f8058;">+</span> Decoration <span style="color:#f44f4f;">'mullioned windows</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'windows</span><span style="color:#f44f4f;">'</span>
0123     <span style="color:#f44f4f;">&quot;They're architecturally attractive, no doubt, but not especially helpful to</span>
0124 <span style="color:#f44f4f;">    burglars. &quot;</span>
0125 
0126     notImportantMsg <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'It</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">s a matter of professional pride with you never to</span>
0127 <span style="color:#f44f4f;">        mess with windows. </span><span style="color:#f44f4f;">'</span>
0128     isPlural <span style="color:#3f8058;">=</span> <span style="font-weight:bold;">true</span>
0129 ;
0130 
0131 <span style="color:#3f8058;">+</span> Decoration <span style="color:#f44f4f;">'green climbing ivy/creepers/creeper</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'creepers</span><span style="color:#f44f4f;">'</span>
0132     <span style="color:#f44f4f;">&quot;The front of the house is festooned with green creepers -- ivy, perhaps,</span>
0133 <span style="color:#f44f4f;">    but botany was never your strong point since in the main plants aren't</span>
0134 <span style="color:#f44f4f;">    worth burgling. &quot;</span>
0135 
0136     notImportantMsg <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'The creepers can</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">t help you burgle the house -- they</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">re</span>
0137 <span style="color:#f44f4f;">        certainly not strong enough to climb and they</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">re certainly not worth</span>
0138 <span style="color:#f44f4f;">        stealing -- so you may as well leave them alone. </span><span style="color:#f44f4f;">'</span>
0139     isPlural <span style="color:#3f8058;">=</span> <span style="font-weight:bold;">true</span>
0140 ;
0141 
0142 <span style="color:#3f8058;">+</span> drive: PathPassage <span style="color:#f44f4f;">'drive/path/avenue</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'drive</span><span style="color:#f44f4f;">'</span>
0143     <span style="color:#f44f4f;">&quot;The drive leading back to the road runs off through a belt of trees to the</span>
0144 <span style="color:#f44f4f;">    southwest. &quot;</span>
0145 
0146     dobjFor<span style="color:#3f8058;">(</span>TravelVia<span style="color:#3f8058;">)</span>
0147     {
0148         action<span style="color:#3f8058;">()</span>
0149         {
0150             <span style="color:#f44f4f;">&quot;You retrace your steps back to the road, where your trusty unmarked</span>
0151 <span style="color:#f44f4f;">            burglarmobile is still parked, ready for your quick getaway. &quot;</span>;
0152 
0153             <span style="font-weight:bold;">if</span><span style="color:#3f8058;">(</span>orb.isIn<span style="color:#3f8058;">(</span>me<span style="color:#3f8058;">))</span>
0154             {
0155                 <span style="color:#f44f4f;">&quot;Congratulations! You have got away with the Orb of Ultimate</span>
0156 <span style="color:#f44f4f;">                Satisfaction, a feat never before performed. As you slip the orb</span>
0157 <span style="color:#f44f4f;">                onto the back seat of your car and climb into the driver's seat</span>
0158 <span style="color:#f44f4f;">                you tell yourself that you're now absolutely certain to win</span>
0159 <span style="color:#f44f4f;">                the Burglar of the Year Award!</span><span style="color:#3daee9;font-weight:bold;">\b</span><span style="color:#f44f4f;">&quot;</span>;
0160 
0161                 achievement.awardPointsOnce<span style="color:#3f8058;">()</span>;
0162 
0163                 finishGameMsg<span style="color:#3f8058;">(</span>ftVictory<span style="color:#3f8058;">,</span> <span style="color:#3f8058;">[</span>finishOptionUndo<span style="color:#3f8058;">,</span>
0164                     finishOptionFullScore<span style="color:#3f8058;">])</span>;
0165             }
0166             <span style="font-weight:bold;">else</span>
0167             {
0168                 <span style="color:#f44f4f;">&quot;It's a shame you didn't manage to steal the orb, though.</span>
0169 <span style="color:#f44f4f;">                Without it you'll never win the Burglar of the Year Award</span>
0170 <span style="color:#f44f4f;">                now.</span><span style="color:#3daee9;font-weight:bold;">\b</span><span style="color:#f44f4f;">&quot;</span>;
0171 
0172                 finishGameMsg<span style="color:#3f8058;">(</span>ftFailure<span style="color:#3f8058;">,</span> <span style="color:#3f8058;">[</span>finishOptionUndo<span style="color:#3f8058;">])</span>;
0173             }
0174         }
0175     }
0176 
0177     okayRubMsg <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'What -- all of it? That may take a while! </span><span style="color:#f44f4f;">'</span>
0178     achievement: Achievement { <span style="color:#3f8058;">+</span><span style="color:#f67400;">10</span> <span style="color:#f44f4f;">&quot;getting away with the orb&quot;</span> }
0179 ;
0180 
0181 <span style="color:#3f8058;">+</span> Decoration <span style="color:#f44f4f;">'belt/trees</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'trees</span><span style="color:#f44f4f;">'</span>
0182     <span style="color:#f44f4f;">&quot;The trees are in full leaf, which is good, because they hide what you're</span>
0183 <span style="color:#f44f4f;">    doing from the road. &quot;</span>
0184 
0185     notImportantMsg <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'The trees are doing a good job of hiding you from the</span>
0186 <span style="color:#f44f4f;">        road, so you may as well leave them alone. It</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">s not as if they</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">re</span>
0187 <span style="color:#f44f4f;">        something you could steal, after all. </span><span style="color:#f44f4f;">'</span>
0188 ;
0189 
0190 hallway: Room <span style="color:#f44f4f;">'Hallway</span><span style="color:#f44f4f;">'</span>
0191     <span style="color:#f44f4f;">&quot;This hall is or grand proportions but pretty bare. The front door lies to</span>
0192 <span style="color:#f44f4f;">    the south and other exits lead east, north and west. &quot;</span>
0193 
0194     south <span style="color:#3f8058;">=</span> hallDoor
0195     out asExit<span style="color:#3f8058;">(</span>south<span style="color:#3f8058;">)</span>
0196     west <span style="color:#3f8058;">=</span> study
0197     north: FakeConnector { <span style="color:#f44f4f;">&quot;You're pretty sure that only leads to the kitchen,</span>
0198 <span style="color:#f44f4f;">        and you haven't come here to cook a meal. &quot;</span> }
0199 
0200     east: DeadEndConnector { <span style="color:#f44f4f;">'the living room</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">&quot;You </span><span style="color:#27aeae;font-style:italic;">&lt;&lt;one of&gt;&gt;</span><span style="color:#f44f4f;">walk through the</span>
0201 <span style="color:#f44f4f;">        doorway and find yourself in</span><span style="color:#27aeae;font-style:italic;">&lt;&lt;or&gt;&gt;</span><span style="color:#f44f4f;">return to</span><span style="color:#27aeae;font-style:italic;">&lt;&lt;stopping&gt;&gt;</span><span style="color:#f44f4f;"> the living room</span>
0202 <span style="color:#f44f4f;">        where you take </span><span style="color:#27aeae;font-style:italic;">&lt;&lt;one of&gt;&gt;</span><span style="color:#f44f4f;"> a </span><span style="color:#27aeae;font-style:italic;">&lt;&lt;or&gt;&gt;</span><span style="color:#f44f4f;">another</span><span style="color:#27aeae;font-style:italic;">&lt;&lt;stopping&gt;&gt;</span><span style="color:#f44f4f;"> quick look around,</span>
0203 <span style="color:#f44f4f;">        but </span><span style="color:#27aeae;font-style:italic;">&lt;&lt;one of&gt;&gt;&lt;&lt;or&gt;&gt;</span><span style="color:#f44f4f;"> once again</span><span style="color:#27aeae;font-style:italic;">&lt;&lt;stopping&gt;&gt;</span><span style="color:#f44f4f;"> failing to find anything of</span>
0204 <span style="color:#f44f4f;">        interest you quickly return to the hall. &quot;</span>}
0205 ;
0206 
0207 <span style="color:#3f8058;">+</span> hallDoor: Lockable<span style="color:#3f8058;">,</span> Door <span style="color:#3f8058;">-&gt;</span> frontDoor <span style="color:#f44f4f;">'front door*doors</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'front door</span><span style="color:#f44f4f;">'</span>
0208 ;
0209 
0210 <span style="color:#3f8058;">+</span> table:Surface <span style="color:#f44f4f;">'small wooden mahogany side table/legs*tables</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'small table</span><span style="color:#f44f4f;">'</span>
0211     <span style="color:#f44f4f;">&quot;It's a small mahogany table standing on four thin legs. &quot;</span>
0212     initSpecialDesc <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">&quot;A small table rests by the east wall. &quot;</span>
0213     bulk <span style="color:#3f8058;">=</span> <span style="color:#f67400;">5</span>
0214 
0215     dobjFor<span style="color:#3f8058;">(</span>Take<span style="color:#3f8058;">)</span>
0216     {
0217         check<span style="color:#3f8058;">()</span>
0218         {
0219             <span style="font-weight:bold;">if</span><span style="color:#3f8058;">(</span>contents.length <span style="color:#3f8058;">&gt;</span> <span style="color:#f67400;">0</span><span style="color:#3f8058;">)</span>
0220                 failCheck<span style="color:#3f8058;">(</span><span style="color:#f44f4f;">'It</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">s probably not a very good idea to try picking</span>
0221 <span style="color:#f44f4f;">                    up the table while </span><span style="color:#27ae60;font-style:italic;">&lt;&lt;contents[1].nameIs&gt;</span><span style="color:#f44f4f;">&gt; still on it. </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">)</span>;
0222         }
0223     }
0224 ;
0225 
0226 <span style="color:#3f8058;">++</span> vase: Container <span style="color:#f44f4f;">'cheap china floral vase/pattern</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'vase</span><span style="color:#f44f4f;">'</span>
0227     <span style="color:#f44f4f;">&quot;It's only a cheap thing, made of china but painted in a tasteless floral</span>
0228 <span style="color:#f44f4f;">    pattern using far too many primary colours. &quot;</span>
0229 
0230     bulk <span style="color:#3f8058;">=</span> <span style="color:#f67400;">3</span>
0231     bulkCapacity <span style="color:#3f8058;">=</span> <span style="color:#f67400;">3</span>
0232 ;
0233 
0234 <span style="color:#3f8058;">+++</span> silverKey: Hidden<span style="color:#3f8058;">,</span> Key <span style="color:#f44f4f;">'small silver key*keys</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'small silver key</span><span style="color:#f44f4f;">'</span>
0235 ;
0236 
0237 study: Room <span style="color:#f44f4f;">'Study</span><span style="color:#f44f4f;">'</span>
0238     <span style="color:#f44f4f;">&quot;This study is much as you would expect: somewhat spartan. A desk stands in</span>
0239 <span style="color:#f44f4f;">    the middle of the room with a chair placed just behind it. A </span><span style="color:#27aeae;font-style:italic;">&lt;&lt;if</span>
0240 <span style="color:#27aeae;font-style:italic;">      picture.moved&gt;&gt;</span><span style="color:#f44f4f;">safe is built into </span><span style="color:#27aeae;font-style:italic;">&lt;&lt;else&gt;&gt;</span><span style="color:#f44f4f;"> rather bland painting hangs on</span>
0241 <span style="color:#f44f4f;">    </span><span style="color:#27aeae;font-style:italic;">&lt;&lt;end&gt;&gt;</span><span style="color:#f44f4f;"> the west wall. The way out is to the east. &quot;</span>
0242     east <span style="color:#3f8058;">=</span> hallway
0243     out asExit<span style="color:#3f8058;">(</span>east<span style="color:#3f8058;">)</span>
0244 ;
0245 
0246 <span style="color:#3f8058;">+</span> desk: Heavy<span style="color:#3f8058;">,</span> Platform <span style="color:#f44f4f;">'plain wooden desk</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'desk</span><span style="color:#f44f4f;">'</span>
0247     <span style="color:#f44f4f;">&quot;It's a plain wooden desk with a single drawer. &quot;</span>
0248     dobjFor<span style="color:#3f8058;">(</span>Open<span style="color:#3f8058;">)</span> remapTo<span style="color:#3f8058;">(</span>Open<span style="color:#3f8058;">,</span> drawer<span style="color:#3f8058;">)</span>
0249     dobjFor<span style="color:#3f8058;">(</span>Close<span style="color:#3f8058;">)</span> remapTo<span style="color:#3f8058;">(</span>Close<span style="color:#3f8058;">,</span> drawer<span style="color:#3f8058;">)</span>
0250     dobjFor<span style="color:#3f8058;">(</span>LookIn<span style="color:#3f8058;">)</span> remapTo<span style="color:#3f8058;">(</span>LookIn<span style="color:#3f8058;">,</span> drawer<span style="color:#3f8058;">)</span>
0251     dobjFor<span style="color:#3f8058;">(</span>UnlockWith<span style="color:#3f8058;">)</span> remapTo<span style="color:#3f8058;">(</span>UnlockWith<span style="color:#3f8058;">,</span> drawer<span style="color:#3f8058;">,</span> IndirectObject<span style="color:#3f8058;">)</span>
0252     dobjFor<span style="color:#3f8058;">(</span>LockWith<span style="color:#3f8058;">)</span> remapTo<span style="color:#3f8058;">(</span>LockWith<span style="color:#3f8058;">,</span> drawer<span style="color:#3f8058;">,</span> IndirectObject<span style="color:#3f8058;">)</span>
0253     dobjFor<span style="color:#3f8058;">(</span>Lock<span style="color:#3f8058;">)</span> remapTo<span style="color:#3f8058;">(</span>Lock<span style="color:#3f8058;">,</span> drawer<span style="color:#3f8058;">)</span>
0254     dobjFor<span style="color:#3f8058;">(</span>Unlock<span style="color:#3f8058;">)</span> remapTo<span style="color:#3f8058;">(</span>Unlock<span style="color:#3f8058;">,</span> drawer<span style="color:#3f8058;">)</span>
0255 ;
0256 
0257 <span style="color:#3f8058;">++</span> drawer: KeyedContainer<span style="color:#3f8058;">,</span> Component <span style="color:#f44f4f;">'(desk) drawer*drawers</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'drawer</span><span style="color:#f44f4f;">'</span>
0258     <span style="color:#f44f4f;">&quot;It's an ordinary desk drawer with a small silver lock. &quot;</span>
0259     keyList <span style="color:#3f8058;">=</span> <span style="color:#3f8058;">[</span>silverKey<span style="color:#3f8058;">]</span>
0260 ;
0261 
0262 <span style="color:#3f8058;">+++</span> notebook: Readable <span style="color:#f44f4f;">'small bright red notebook/book/cover/pages</span><span style="color:#f44f4f;">'</span>
0263     <span style="color:#f44f4f;">'small red notebook</span><span style="color:#f44f4f;">'</span>
0264     <span style="color:#f44f4f;">&quot;It's a small notebook with a bright red cover. &quot;</span>
0265 
0266     readDesc <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">&quot;You open the notebook and flick through its pages. The only</span>
0267 <span style="color:#f44f4f;">        thing you find of any interest is a page with </span><span style="color:#27ae60;font-style:italic;">&lt;q&gt;</span><span style="color:#f44f4f;">SAFE DATE</span><span style="color:#27ae60;font-style:italic;">&lt;/q&gt;</span><span style="color:#f44f4f;"> scrawled</span>
0268 <span style="color:#f44f4f;">        across it. After satisfying yourself that the notebook contains nothing</span>
0269 <span style="color:#f44f4f;">        else of any potential relevance you snap it shut again. </span><span style="color:#27ae60;font-style:italic;">&lt;.reveal</span>
0270 <span style="color:#27ae60;font-style:italic;">        safe-date&gt;</span><span style="color:#f44f4f;">&quot;</span>
0271 
0272     dobjFor<span style="color:#3f8058;">(</span>Open<span style="color:#3f8058;">)</span> asDobjFor<span style="color:#3f8058;">(</span>Read<span style="color:#3f8058;">)</span>
0273     dobjFor<span style="color:#3f8058;">(</span>LookIn<span style="color:#3f8058;">)</span> asDobjFor<span style="color:#3f8058;">(</span>Read<span style="color:#3f8058;">)</span>
0274 
0275     dobjFor<span style="color:#3f8058;">(</span>Read<span style="color:#3f8058;">)</span>
0276     {
0277         action<span style="color:#3f8058;">()</span>
0278         {
0279             <span style="font-weight:bold;">inherited</span>;
0280             achievement.awardPointsOnce<span style="color:#3f8058;">()</span>;
0281         }
0282     }
0283 
0284     cannotCloseMsg <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'It</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">s already closed. </span><span style="color:#f44f4f;">'</span>
0285     achievement: Achievement { <span style="color:#3f8058;">+</span><span style="color:#f67400;">5</span> <span style="color:#f44f4f;">&quot;reading the notebook&quot;</span> }
0286 ;
0287 
0288 <span style="color:#3f8058;">+</span> CustomImmovable<span style="color:#3f8058;">,</span> Chair <span style="color:#f44f4f;">'red office swivel chair</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'chair</span><span style="color:#f44f4f;">'</span>
0289     <span style="color:#f44f4f;">&quot;It's a typical office swivel chair, covered in red fabric. &quot;</span>
0290 
0291     cannotTakeMsg <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'You see no reason to burden yourself with such a useless</span>
0292 <span style="color:#f44f4f;">        object; that would be quite unprofessional. </span><span style="color:#f44f4f;">'</span>
0293 
0294 ;
0295 
0296 <span style="color:#3f8058;">+</span> picture: RoomPartItem<span style="color:#3f8058;">,</span> Thing <span style="color:#f44f4f;">'rather bland picture/painting/landscape</span><span style="color:#f44f4f;">'</span>
0297     <span style="color:#f44f4f;">'picture</span><span style="color:#f44f4f;">'</span>
0298     <span style="color:#f44f4f;">&quot;It's a landscape, pleasantly executed enough, but of no great distinction</span>
0299 <span style="color:#f44f4f;">    and definitely not worth the bother of stealing. &quot;</span>
0300 
0301     initNominalRoomPartLocation <span style="color:#3f8058;">=</span> defaultWestWall
0302     initSpecialDesc <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">&quot;A rather bland painting hangs on the west wall. &quot;</span>
0303     isListed <span style="color:#3f8058;">=</span> <span style="color:#3f8058;">(</span>moved<span style="color:#3f8058;">)</span>
0304 
0305     bulk <span style="color:#3f8058;">=</span> <span style="color:#f67400;">8</span>
0306 
0307     dobjFor<span style="color:#3f8058;">(</span>LookBehind<span style="color:#3f8058;">)</span>
0308     {
0309         action<span style="color:#3f8058;">()</span>
0310         {
0311             <span style="font-weight:bold;">if</span><span style="color:#3f8058;">(</span>moved<span style="color:#3f8058;">)</span>
0312                 <span style="font-weight:bold;">inherited</span>;
0313             <span style="font-weight:bold;">else</span>
0314             {
0315                 safe.discover<span style="color:#3f8058;">()</span>;
0316                 <span style="color:#f44f4f;">&quot;Behind the picture is a safe built into the wall. &quot;</span>;
0317             }
0318         }
0319     }
0320 
0321     moveInto<span style="color:#3f8058;">(</span>newDest<span style="color:#3f8058;">)</span>
0322     {
0323         <span style="font-weight:bold;">if</span><span style="color:#3f8058;">(!</span>safe.discovered<span style="color:#3f8058;">)</span>
0324         {
0325             <span style="color:#f44f4f;">&quot;Removing the painting from the wall reveals a safe behind. &quot;</span>;
0326             safe.discover<span style="color:#3f8058;">()</span>;
0327         }
0328         <span style="font-weight:bold;">inherited</span><span style="color:#3f8058;">(</span>newDest<span style="color:#3f8058;">)</span>;
0329     }
0330 ;
0331 
0332 <span style="color:#3f8058;">+</span> safe: RoomPartItem<span style="color:#3f8058;">,</span> Hidden<span style="color:#3f8058;">,</span> CustomFixture<span style="color:#3f8058;">,</span> ComplexContainer
0333     <span style="color:#f44f4f;">'sturdy steel safe</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'safe</span><span style="color:#f44f4f;">'</span>
0334     <span style="color:#f44f4f;">&quot;It's a sturdy steel safe with a single dial on its door. &quot;</span>
0335 
0336     subContainer: ComplexComponent<span style="color:#3f8058;">,</span> IndirectLockable<span style="color:#3f8058;">,</span> OpenableContainer
0337     {
0338         bulkCapacity <span style="color:#3f8058;">=</span> <span style="color:#f67400;">5</span>
0339         makeOpen<span style="color:#3f8058;">(</span>stat<span style="color:#3f8058;">)</span>
0340         {
0341             <span style="font-weight:bold;">inherited</span><span style="color:#3f8058;">(</span>stat<span style="color:#3f8058;">)</span>;
0342             <span style="font-weight:bold;">if</span><span style="color:#3f8058;">(</span>stat<span style="color:#3f8058;">)</span>
0343                 achievement.awardPointsOnce<span style="color:#3f8058;">()</span>;
0344         }
0345 
0346         achievement: Achievement { <span style="color:#3f8058;">+</span><span style="color:#f67400;">10</span> <span style="color:#f44f4f;">&quot;opening the safe&quot;</span> }
0347     }
0348 
0349     specialDesc <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">&quot;A safe is built into the west wall. &quot;</span>
0350     specialNominalRoomPartLocation <span style="color:#3f8058;">=</span> defaultWestWall
0351     cannotTakeMsg <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'It</span><span style="color:#f44f4f;">'</span>s firmly built into the wall; you can<span style="color:#f44f4f;">'t budge it. </span><span style="color:#f44f4f;">'</span>
0352 
0353     discover<span style="color:#3f8058;">()</span>
0354     {
0355         <span style="font-weight:bold;">if</span><span style="color:#3f8058;">(!</span>discovered<span style="color:#3f8058;">)</span>
0356         {
0357             <span style="font-weight:bold;">foreach</span><span style="color:#3f8058;">(</span><span style="font-weight:bold;">local</span> cur <span style="font-weight:bold;">in</span> allContents<span style="color:#3f8058;">)</span>
0358                 cur.discover<span style="color:#3f8058;">()</span>;
0359 
0360             achievement.awardPointsOnce<span style="color:#3f8058;">()</span>;
0361         }
0362         <span style="font-weight:bold;">inherited</span><span style="color:#3f8058;">()</span>;
0363     }
0364 
0365     achievement: Achievement { <span style="color:#3f8058;">+</span><span style="color:#f67400;">5</span> <span style="color:#f44f4f;">&quot;finding the safe&quot;</span> }
0366 ;
0367 
0368 <span style="color:#3f8058;">++</span> safeDoor:  Hidden<span style="color:#3f8058;">,</span> ContainerDoor <span style="color:#f44f4f;">'(safe) door</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'safe door</span><span style="color:#f44f4f;">'</span>
0369     <span style="color:#f44f4f;">&quot;It has a circular dial attached to its centre. &quot;</span>
0370 ;
0371 
0372 <span style="color:#3f8058;">+++</span> safeDial: Hidden<span style="color:#3f8058;">,</span> Component<span style="color:#3f8058;">,</span>  NumberedDial <span style="color:#f44f4f;">'circular dial*dials</span><span style="color:#f44f4f;">'</span> <span style="color:#f44f4f;">'dial</span><span style="color:#f44f4f;">'</span>
0373     <span style="color:#f44f4f;">&quot;The dial can be turned to any number between </span><span style="color:#27aeae;font-style:italic;">&lt;&lt;minSetting&gt;&gt;</span><span style="color:#f44f4f;"> and</span>
0374 <span style="color:#f44f4f;">    </span><span style="color:#27aeae;font-style:italic;">&lt;&lt;maxSetting&gt;&gt;</span><span style="color:#f44f4f;">. It's currently at </span><span style="color:#27aeae;font-style:italic;">&lt;&lt;curSetting&gt;&gt;</span><span style="color:#f44f4f;">. &quot;</span>
0375 
0376     minSetting <span style="color:#3f8058;">=</span> <span style="color:#f67400;">0</span>
0377     maxSetting <span style="color:#3f8058;">=</span> <span style="color:#f67400;">99</span>
0378     curSetting <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'35</span><span style="color:#f44f4f;">'</span>
0379 
0380     num1 <span style="color:#3f8058;">=</span> <span style="color:#f67400;">0</span>
0381     num2 <span style="color:#3f8058;">=</span> <span style="color:#f67400;">0</span>
0382     correctCombination <span style="color:#3f8058;">=</span> <span style="color:#f67400;">1589</span>
0383 
0384     makeSetting<span style="color:#3f8058;">(</span>val<span style="color:#3f8058;">)</span>
0385     {
0386         <span style="font-weight:bold;">inherited</span><span style="color:#3f8058;">(</span>val<span style="color:#3f8058;">)</span>;
0387         num2 <span style="color:#3f8058;">=</span> num1;
0388         num1 <span style="color:#3f8058;">=</span> toInteger<span style="color:#3f8058;">(</span>val<span style="color:#3f8058;">)</span>;
0389         <span style="font-weight:bold;">if</span><span style="color:#3f8058;">(</span><span style="color:#f67400;">100</span> * num2 <span style="color:#3f8058;">+</span> num1 <span style="color:#3f8058;">==</span> correctCombination<span style="color:#3f8058;">)</span>
0390         {
0391             <span style="color:#f44f4f;">&quot;You hear a slight </span><span style="color:#27ae60;font-style:italic;">&lt;i&gt;</span><span style="color:#f44f4f;">click</span><span style="color:#27ae60;font-style:italic;">&lt;/i&gt;</span><span style="color:#f44f4f;"> come from the safe door. &quot;</span>;
0392             safe.makeLocked<span style="color:#3f8058;">(</span><span style="font-weight:bold;">nil</span><span style="color:#3f8058;">)</span>;
0393         }
0394         <span style="font-weight:bold;">else</span> <span style="font-weight:bold;">if</span><span style="color:#3f8058;">(!</span>safe.isOpen<span style="color:#3f8058;">)</span>
0395             safe.makeLocked<span style="color:#3f8058;">(</span><span style="font-weight:bold;">true</span><span style="color:#3f8058;">)</span>;
0396     }
0397 ;
0398 
0399 <span style="color:#3f8058;">++</span> orb: Thing <span style="color:#f44f4f;">'ultimate battered dull metal orb/sphere/ball/satisfaction</span><span style="color:#f44f4f;">'</span>
0400     <span style="color:#f44f4f;">'Orb of Ultimate Satisfaction</span><span style="color:#f44f4f;">'</span>
0401     <span style="color:#f44f4f;">&quot;It doesn't look much be honest, just a battered sphere made of some dull</span>
0402 <span style="color:#f44f4f;">    metal, but you've been told it's the most valuable and desirable object</span>
0403 <span style="color:#f44f4f;">    in the known universe! &quot;</span>
0404 
0405     aName <span style="color:#3f8058;">=</span> <span style="color:#3f8058;">(</span>theName<span style="color:#3f8058;">)</span>
0406 
0407     subLocation <span style="color:#3f8058;">=</span> <span style="color:#3f8058;">&amp;</span>subContainer
0408 
0409     okayRubMsg <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'As {you/he} rub{s} {the dobj/him} a shimmering djiin suddenly</span>
0410 <span style="color:#f44f4f;">        appears in the air before you!</span><span style="color:#3daee9;font-weight:bold;">\b</span>
0411 <span style="color:#f44f4f;">        </span><span style="color:#27ae60;font-style:italic;">&lt;q&gt;</span><span style="color:#f44f4f;">Hello, you have reached the automated holographic answering service</span>
0412 <span style="color:#f44f4f;">        of Jeannie the Genie,</span><span style="color:#27ae60;font-style:italic;">&lt;/q&gt;</span><span style="color:#f44f4f;"> she announces. </span><span style="color:#27ae60;font-style:italic;">&lt;q&gt;</span><span style="color:#f44f4f;">I</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">m sorry I</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">m not</span>
0413 <span style="color:#f44f4f;">        available to respond to your rub in person right now, but my hours of</span>
0414 <span style="color:#f44f4f;">        activity have been heavily curtailed by the European Working Time</span>
0415 <span style="color:#f44f4f;">        Directive. Before making a wish, please make sure that you have</span>
0416 <span style="color:#f44f4f;">        conducted a full risk assessment in line with the latest Health and</span>
0417 <span style="color:#f44f4f;">        Safety Guidelines. Also, please note that before any wish can be granted</span>
0418 <span style="color:#f44f4f;">        you must sign a Form P45/PDQ/LOL indemnifying this wish-granting agency</span>
0419 <span style="color:#f44f4f;">        against any consequential loss or damage arising from the fulfilment of</span>
0420 <span style="color:#f44f4f;">        your desires. Thank you for rubbing. Have a nice day!</span><span style="color:#27ae60;font-style:italic;">&lt;/q&gt;</span><span style="color:#3daee9;font-weight:bold;">\b</span>
0421 <span style="color:#f44f4f;">        Her message complete, the holographic djiin fades away into</span>
0422 <span style="color:#f44f4f;">        non-existence. </span><span style="color:#f44f4f;">'</span>
0423 
0424     moveInto<span style="color:#3f8058;">(</span>dest<span style="color:#3f8058;">)</span>
0425     {
0426         <span style="font-weight:bold;">inherited</span><span style="color:#3f8058;">(</span>dest<span style="color:#3f8058;">)</span>;
0427         <span style="font-weight:bold;">if</span><span style="color:#3f8058;">(</span>dest.isOrIsIn<span style="color:#3f8058;">(</span>me<span style="color:#3f8058;">))</span>
0428             achievement.awardPointsOnce<span style="color:#3f8058;">()</span>;
0429     }
0430 
0431     achievement: Achievement { <span style="color:#3f8058;">+</span><span style="color:#f67400;">10</span> <span style="color:#f44f4f;">&quot;taking the orb&quot;</span> }
0432 ;
0433 
0434 <span style="color:#7a7c7d;">//------------------------------------------------------------------------------</span>
0435 
0436 <span style="color:#7a7c7d;">/* DEFINE A NEW VERB */</span>
0437 
0438 DefineTAction<span style="color:#3f8058;">(</span>Rub<span style="color:#3f8058;">)</span>
0439 ;
0440 
0441 VerbRule<span style="color:#3f8058;">(</span>Rub<span style="color:#3f8058;">)</span>
0442     <span style="color:#f44f4f;">'rub</span><span style="color:#f44f4f;">'</span> dobjList
0443     : RubAction
0444     verbPhrase <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'rub/rubbing (what)</span><span style="color:#f44f4f;">'</span>
0445 ;
0446 
0447 <span style="color:#7a7c7d;">/* When creating a new verb, you'll want to modify the Thing class so as to provide</span>
0448 <span style="color:#7a7c7d;">   default handling for the command. The defaults specified here will be used except</span>
0449 <span style="color:#7a7c7d;">   on objects for which you define explicit handling of the command. */</span>
0450 
0451 <span style="font-weight:bold;">modify</span> Thing
0452     dobjFor<span style="color:#3f8058;">(</span>Rub<span style="color:#3f8058;">)</span>
0453     {
0454         preCond <span style="color:#3f8058;">=</span> <span style="color:#3f8058;">[</span>touchObj<span style="color:#3f8058;">]</span>
0455         action<span style="color:#3f8058;">()</span> { mainReport<span style="color:#3f8058;">(</span>okayRubMsg<span style="color:#3f8058;">)</span>; }
0456     }
0457 
0458     okayRubMsg <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'{You/he} rub{s} {the dobj/him} but not much happens as a</span>
0459 <span style="color:#f44f4f;">        result. </span><span style="color:#f44f4f;">'</span>
0460 
0461     shouldNotBreakMsg <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'Only amateurs go round breaking things unnecessarily. </span><span style="color:#f44f4f;">'</span>
0462 ;
0463 
0464 <span style="color:#7a7c7d;">//------------------------------------------------------------------------------</span>
0465 
0466 <span style="color:#7a7c7d;">/* HINTS */</span>
0467 
0468 TopHintMenu;
0469 
0470 <span style="color:#3f8058;">+</span> Goal <span style="color:#3f8058;">-&gt;</span> <span style="color:#3f8058;">(</span>frontDoor.achievement<span style="color:#3f8058;">)</span>
0471     <span style="color:#f44f4f;">'How do I get into the house?</span><span style="color:#f44f4f;">'</span>
0472     <span style="color:#3f8058;">[</span>
0473         <span style="color:#f44f4f;">'Well, the windows don</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">t seem a good way in. </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0474         <span style="color:#f44f4f;">'So perhaps you</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">d better try the front door. </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0475         <span style="color:#f44f4f;">'Could someone have left a key around somewhere? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0476         <span style="color:#f44f4f;">'Is there anything lying around where someone could have hidden a key? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0477         <span style="color:#f44f4f;">'What about that flowerpot? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0478         <span style="color:#f44f4f;">'Try looking under the flowerpot. </span><span style="color:#f44f4f;">'</span>
0479     <span style="color:#3f8058;">]</span>
0480 
0481     goalState <span style="color:#3f8058;">=</span> OpenGoal
0482 ;
0483 
0484 <span style="color:#7a7c7d;">/* The closeWhenSeen property of the following Goal object is an example of how to</span>
0485 <span style="color:#7a7c7d;">   make your hint menu respond dynamically to the player's current situation. */</span>
0486 
0487 <span style="color:#3f8058;">+</span> Goal <span style="color:#f44f4f;">'Where can I find the orb? </span><span style="color:#f44f4f;">'</span>
0488     <span style="color:#3f8058;">[</span>
0489         <span style="color:#f44f4f;">'Something like that is bound to be kept safe. </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0490         <span style="color:#f44f4f;">'So it</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">s probably inside the house. </span><span style="color:#f44f4f;">'</span>
0491     <span style="color:#3f8058;">]</span>
0492 
0493     goalState <span style="color:#3f8058;">=</span> OpenGoal
0494     closeWhenSeen <span style="color:#3f8058;">=</span> hallway
0495 ;
0496 
0497 <span style="color:#3f8058;">+</span> Goal <span style="color:#f44f4f;">'Where can I find the orb?</span><span style="color:#f44f4f;">'</span>
0498     <span style="color:#3f8058;">[</span>
0499         <span style="color:#f44f4f;">'It</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">s sure to be kept somewhere safe. </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0500         <span style="color:#f44f4f;">'You</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">d better hunt around. </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0501         <span style="color:#f44f4f;">'Somewhere in the study seems the most likely place. </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0502         deskHint<span style="color:#3f8058;">,</span>
0503         <span style="color:#f44f4f;">'But it should be safely locked in a safe </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0504         <span style="color:#f44f4f;">'Where might someone hide a safe in this study? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0505         <span style="color:#f44f4f;">'What could be behind that picture on the wall? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0506         <span style="color:#f44f4f;">'Try looking behind the picture (or simply taking the picture). </span><span style="color:#f44f4f;">'</span>
0507     <span style="color:#3f8058;">]</span>
0508 
0509     openWhenSeen <span style="color:#3f8058;">=</span> hallway
0510     closeWhenSeen <span style="color:#3f8058;">=</span> orb
0511 ;
0512 
0513 <span style="color:#3f8058;">++</span> deskHint: Hint <span style="color:#f44f4f;">'Have you tried looking in the desk drawer? </span><span style="color:#f44f4f;">'</span>
0514     <span style="color:#3f8058;">[</span>deskGoal<span style="color:#3f8058;">]</span>
0515 ;
0516 
0517 <span style="color:#3f8058;">+</span> deskGoal: Goal <span style="color:#f44f4f;">'How do I get the desk drawer open?</span><span style="color:#f44f4f;">'</span>
0518     <span style="color:#3f8058;">[</span>
0519         <span style="color:#f44f4f;">'Have you examined the drawer? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0520         <span style="color:#f44f4f;">'What might you need to unlock it? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0521         <span style="color:#f44f4f;">'Where might you find such a thing? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0522         <span style="color:#f44f4f;">'What have you seen that a small key might be hidden in? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0523         <span style="color:#f44f4f;">'How carefully have you searched the hall? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0524         <span style="color:#f44f4f;">'What is (or was) on the hall table? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0525         <span style="color:#f44f4f;">'What might that vase be for? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0526         <span style="color:#f44f4f;">'Try looking in the vase. </span><span style="color:#f44f4f;">'</span>
0527     <span style="color:#3f8058;">]</span>
0528     closeWhenSeen <span style="color:#3f8058;">=</span> notebook
0529 ;
0530 
0531 <span style="color:#3f8058;">+</span> Goal <span style="color:#f44f4f;">'How do I get the safe open?</span><span style="color:#f44f4f;">'</span>
0532     <span style="color:#3f8058;">[</span>
0533         <span style="color:#f44f4f;">'How carefully have you examined the safe? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0534         <span style="color:#f44f4f;">'Where might someone leave a clue to the combination? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0535         deskHint<span style="color:#3f8058;">,</span>
0536         <span style="color:#f44f4f;">'Make sure you read the notebook. </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0537         <span style="color:#f44f4f;">'Once you</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">ve found the combination you need to use the dial. </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0538         <span style="color:#f44f4f;">'If the combination is a number larger than 99 you</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">ll need to enter it</span>
0539 <span style="color:#f44f4f;">        in stages. </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0540         <span style="color:#f44f4f;">'For example, if the combination were 1234 you</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">d first need to turn the</span>
0541 <span style="color:#f44f4f;">        dial to 12 and then turn it to 34. </span><span style="color:#f44f4f;">'</span>
0542     <span style="color:#3f8058;">]</span>
0543 
0544     openWhenSeen <span style="color:#3f8058;">=</span> safe
0545     closeWhenAchieved <span style="color:#3f8058;">=</span> <span style="color:#3f8058;">(</span>safe.subContainer.achievement<span style="color:#3f8058;">)</span>
0546 ;
0547 
0548 <span style="color:#3f8058;">+</span> Goal <span style="color:#f44f4f;">'What does the clue in the notebook mean?</span><span style="color:#f44f4f;">'</span>
0549     <span style="color:#3f8058;">[</span>
0550         <span style="color:#f44f4f;">'Well, </span><span style="color:#27ae60;font-style:italic;">&lt;q&gt;</span><span style="color:#f44f4f;">SAFE</span><span style="color:#27ae60;font-style:italic;">&lt;/q&gt;</span><span style="color:#f44f4f;"> might refer to something you want to open. </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0551         <span style="color:#f44f4f;">'Have you seen a date round here? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0552         <span style="color:#f44f4f;">'When was this house built? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0553         <span style="color:#f44f4f;">'Where might you find the year in which this house was built? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0554         <span style="color:#f44f4f;">'How carefully have you looked at the front of the house? </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0555         <span style="color:#f44f4f;">'Did you examine the door? </span><span style="color:#f44f4f;">'</span>
0556     <span style="color:#3f8058;">]</span>
0557 
0558     openWhenRevealed <span style="color:#3f8058;">=</span> <span style="color:#f44f4f;">'safe-date</span><span style="color:#f44f4f;">'</span>
0559     closeWhenAchieved <span style="color:#3f8058;">=</span> <span style="color:#3f8058;">(</span>safe.subContainer.achievement<span style="color:#3f8058;">)</span>
0560 ;
0561 
0562 
0563 <span style="color:#3f8058;">+</span> Goal <span style="color:#f44f4f;">'What do I do with the orb now I</span><span style="color:#3daee9;font-weight:bold;">\'</span><span style="color:#f44f4f;">ve got it?</span><span style="color:#f44f4f;">'</span>
0564     <span style="color:#3f8058;">[</span>
0565         <span style="color:#f44f4f;">'Well, you could try rubbing it. </span><span style="color:#f44f4f;">'</span><span style="color:#3f8058;">,</span>
0566         <span style="color:#f44f4f;">'But the main thing to do now is to escape with it. </span><span style="color:#f44f4f;">'</span>
0567     <span style="color:#3f8058;">]</span>
0568     openWhenSeen <span style="color:#3f8058;">=</span> orb
0569 ;
0570 </pre></body></html>