File: highlight_tads3.t.dark.html

package info (click to toggle)
kf6-syntax-highlighting 6.13.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 47,568 kB
  • sloc: xml: 197,750; cpp: 12,850; python: 3,023; sh: 955; perl: 546; ruby: 488; pascal: 393; javascript: 161; php: 150; jsp: 132; lisp: 131; haskell: 124; ada: 119; ansic: 107; makefile: 96; f90: 94; ml: 85; cobol: 81; yacc: 71; csh: 62; erlang: 54; sql: 51; java: 47; objc: 37; awk: 31; asm: 30; tcl: 29; fortran: 18; cs: 10
file content (570 lines) | stat: -rw-r--r-- 50,957 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
<!DOCTYPE html>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>highlight_tads3.t</title>
<meta name="generator" content="KF5::SyntaxHighlighting - Definition (TADS 3) - Theme (Breeze Dark)"/>
</head><body style="background-color:#232629;color:#cfcfc2"><pre>
<span style="color:#7a7c7d">// TADS3 Example File</span>
<span style="color:#7a7c7d">// Source: https://www.tads.org/t3doc/doc/t3QuickStart.htm</span>

<span style="color:#27ae60">#charset </span><span style="color:#f44f4f">"us-ascii"</span>
<span style="color:#27ae60">#include </span><span style="color:#f44f4f">&lt;adv3.h></span>
<span style="color:#27ae60">#include </span><span style="color:#f44f4f">&lt;en_us.h></span>

versionInfo: GameID
    IFID <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'558c20af-6559-477a-9f98-b7b4274cd304</span><span style="color:#f44f4f">'</span>
    name <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'The Best Burglar</span><span style="color:#f44f4f">'</span>
    byline <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'by Eric Eve</span><span style="color:#f44f4f">'</span>
    htmlByline <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'by </span><span style="color:#27ae60;font-style:italic">&lt;a href="mailto:eric.eve@hmc.ox.ac.uk"></span>
<span style="color:#f44f4f">                  Eric Eve</span><span style="color:#27ae60;font-style:italic">&lt;/a></span><span style="color:#f44f4f">'</span>
    version <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'3</span><span style="color:#f44f4f">'</span>
    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></span><span style="color:#f44f4f">'</span>
    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>
<span style="color:#f44f4f">        of your felonious career.</span><span style="color:#f44f4f">'</span>
    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>
<span style="color:#f44f4f">        challenge of your felonious career.</span><span style="color:#f44f4f">'</span>
;

gameMain: GameMainDef
    <span style="color:#7a7c7d">/* the initial player character is 'me' */</span>
    initialPlayerChar <span style="color:#3f8058">=</span> me

    showIntro<span style="color:#3f8058">()</span>
    {
        <span style="color:#f44f4f">"</span><span style="color:#27ae60;font-style:italic">&lt;b></span><span style="color:#f44f4f">The Best Burglar</span><span style="color:#27ae60;font-style:italic">&lt;/b></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>
<span style="color:#f44f4f">        quick nip inside the house and out again carrying the Orb of Ultimate</span>
<span style="color:#f44f4f">        Satisfaction, an object that no burglar has ever managed to steal</span>
<span style="color:#f44f4f">        before. If you can pull it off you're sure to win the Burglar of the</span>
<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">"</span>;
    }

    showGoodbye<span style="color:#3f8058">()</span>
    {
        <span style="color:#f44f4f">"Thanks for playing! "</span>;
    }
;

startRoom: OutdoorRoom <span style="color:#f44f4f">'Driveway</span><span style="color:#f44f4f">'</span>
    <span style="color:#f44f4f">"The large red-brick Tudor house stands immediately to the north of this end</span>
<span style="color:#f44f4f">    of the driveway, while the drive back to the road where you left your</span>
<span style="color:#f44f4f">    getaway vehicle runs off though a belt of trees to the southwest."</span>

    roomFirstDesc <span style="color:#3f8058">=</span> <span style="color:#f44f4f">"Here you are in the drive of Number 305 Erehwon Avenue,</span>
<span style="color:#f44f4f">        with the great house you've come to burgle standing just before you to</span>
<span style="color:#f44f4f">        the north. The drive back to the road where you left your getaway</span>
<span style="color:#f44f4f">        vehicle runs off though a belt of trees to the southwest."</span>

    north <span style="color:#3f8058">=</span> frontDoor
    <span style="font-weight:bold">in</span> asExit<span style="color:#3f8058">(</span>north<span style="color:#3f8058">)</span>
    southwest <span style="color:#3f8058">=</span> drive
;

<span style="color:#3f8058">+</span> me: Actor
    pcDesc <span style="color:#3f8058">=</span> <span style="color:#f44f4f">"You're Alexis Lightfinger, burglar extraordinaire, the most</span>
<span style="color:#f44f4f">        professional thief in the known universe; but you're on a job now, so</span>
<span style="color:#f44f4f">        you don't have time for the narcissistic indulgence of admiring your own</span>
<span style="color:#f44f4f">        appearance. You're far too professional not to have come fully prepared,</span>
<span style="color:#f44f4f">        so there's no practical need to look yourself over again. "</span>
;

<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>
    <span style="color:#f44f4f">"It's a large white bag with </span><span style="color:#27ae60;font-style:italic">&lt;q></span><span style="color:#f44f4f">SWAG</span><span style="color:#27ae60;font-style:italic">&lt;/q></span><span style="color:#f44f4f"> printed on it in very large</span>
<span style="color:#f44f4f">    letters. Everyone knows that no real burglar would ever carry such a thing,</span>
<span style="color:#f44f4f">    so by carrying it you know no one will take you for a real burglar. Cunning,</span>
<span style="color:#f44f4f">    eh? "</span>
;

<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>
    <span style="color:#f44f4f">"The lintel above the front door is carved with the date 1589, presumably</span>
<span style="color:#f44f4f">    the date the house was built. The door itself is made of solid oak. "</span>
    keyList <span style="color:#3f8058">=</span> <span style="color:#3f8058">[</span>brassKey<span style="color:#3f8058">]</span>

    makeOpen<span style="color:#3f8058">(</span>stat<span style="color:#3f8058">)</span>
    {
        <span style="font-weight:bold">inherited</span><span style="color:#3f8058">(</span>stat<span style="color:#3f8058">)</span>;
        <span style="font-weight:bold">if</span><span style="color:#3f8058">(</span>stat<span style="color:#3f8058">)</span>
            achievement.awardPointsOnce<span style="color:#3f8058">()</span>;
    }

    achievement: Achievement { <span style="color:#3f8058">+</span><span style="color:#f67400">10</span> <span style="color:#f44f4f">"opening the front door"</span> }

;

<span style="color:#3f8058">+</span> flowerPot: ComplexContainer <span style="color:#f44f4f">'terracotta small flower flowerpot/pot*pots</span><span style="color:#f44f4f">'</span>
    <span style="color:#f44f4f">'flower pot</span><span style="color:#f44f4f">'</span>
    <span style="color:#f44f4f">"It's a perfectly ordinary small terracota pot, though it looks like no</span>
<span style="color:#f44f4f">    one's got round to putting a plant in it yet. "</span>
    subContainer: ComplexComponent<span style="color:#3f8058">,</span> Container { bulkCapacity <span style="color:#3f8058">=</span> <span style="color:#f67400">3</span>}
    subUnderside: ComplexComponent<span style="color:#3f8058">,</span> Underside { }

    initSpecialDesc <span style="color:#3f8058">=</span> <span style="color:#f44f4f">"A small flower pot rests on the ground not far from the</span>
<span style="color:#f44f4f">        front door. "</span>

    bulk <span style="color:#3f8058">=</span> <span style="color:#f67400">3</span>
    bulkCapacity <span style="color:#3f8058">=</span> <span style="color:#f67400">3</span>
;

<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>
    <span style="color:#f44f4f">"It's an ordinary enough small brass key. "</span>
    subLocation <span style="color:#3f8058">=</span> <span style="color:#3f8058">&amp;</span>subUnderside
;

<span style="color:#3f8058">+</span> Enterable <span style="color:#3f8058">-></span> frontDoor <span style="color:#f44f4f">'large red red-brick tudor house/mansion/front</span>
<span style="color:#f44f4f">    *houses*buildings</span><span style="color:#f44f4f">'</span> <span style="color:#f44f4f">'house</span><span style="color:#f44f4f">'</span>
    <span style="color:#f44f4f">"It's a large red-brick Tudor house with mullioned windows, climbing</span>
<span style="color:#f44f4f">    creepers and the date 1589 carved over the door. "</span>
;

<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>
    <span style="color:#f44f4f">"Its most noteworthy feature is the date 1589 carved into it. "</span>
;

<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>
    <span style="color:#f44f4f">"They're architecturally attractive, no doubt, but not especially helpful to</span>
<span style="color:#f44f4f">    burglars. "</span>

    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>
<span style="color:#f44f4f">        mess with windows. </span><span style="color:#f44f4f">'</span>
    isPlural <span style="color:#3f8058">=</span> <span style="font-weight:bold">true</span>
;

<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>
    <span style="color:#f44f4f">"The front of the house is festooned with green creepers -- ivy, perhaps,</span>
<span style="color:#f44f4f">    but botany was never your strong point since in the main plants aren't</span>
<span style="color:#f44f4f">    worth burgling. "</span>

    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>
<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>
<span style="color:#f44f4f">        stealing -- so you may as well leave them alone. </span><span style="color:#f44f4f">'</span>
    isPlural <span style="color:#3f8058">=</span> <span style="font-weight:bold">true</span>
;

<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>
    <span style="color:#f44f4f">"The drive leading back to the road runs off through a belt of trees to the</span>
<span style="color:#f44f4f">    southwest. "</span>

    dobjFor<span style="color:#3f8058">(</span>TravelVia<span style="color:#3f8058">)</span>
    {
        action<span style="color:#3f8058">()</span>
        {
            <span style="color:#f44f4f">"You retrace your steps back to the road, where your trusty unmarked</span>
<span style="color:#f44f4f">            burglarmobile is still parked, ready for your quick getaway. "</span>;

            <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>
            {
                <span style="color:#f44f4f">"Congratulations! You have got away with the Orb of Ultimate</span>
<span style="color:#f44f4f">                Satisfaction, a feat never before performed. As you slip the orb</span>
<span style="color:#f44f4f">                onto the back seat of your car and climb into the driver's seat</span>
<span style="color:#f44f4f">                you tell yourself that you're now absolutely certain to win</span>
<span style="color:#f44f4f">                the Burglar of the Year Award!</span><span style="color:#3daee9;font-weight:bold">\b</span><span style="color:#f44f4f">"</span>;

                achievement.awardPointsOnce<span style="color:#3f8058">()</span>;

                finishGameMsg<span style="color:#3f8058">(</span>ftVictory<span style="color:#3f8058">,</span> <span style="color:#3f8058">[</span>finishOptionUndo<span style="color:#3f8058">,</span>
                    finishOptionFullScore<span style="color:#3f8058">])</span>;
            }
            <span style="font-weight:bold">else</span>
            {
                <span style="color:#f44f4f">"It's a shame you didn't manage to steal the orb, though.</span>
<span style="color:#f44f4f">                Without it you'll never win the Burglar of the Year Award</span>
<span style="color:#f44f4f">                now.</span><span style="color:#3daee9;font-weight:bold">\b</span><span style="color:#f44f4f">"</span>;

                finishGameMsg<span style="color:#3f8058">(</span>ftFailure<span style="color:#3f8058">,</span> <span style="color:#3f8058">[</span>finishOptionUndo<span style="color:#3f8058">])</span>;
            }
        }
    }

    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>
    achievement: Achievement { <span style="color:#3f8058">+</span><span style="color:#f67400">10</span> <span style="color:#f44f4f">"getting away with the orb"</span> }
;

<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>
    <span style="color:#f44f4f">"The trees are in full leaf, which is good, because they hide what you're</span>
<span style="color:#f44f4f">    doing from the road. "</span>

    notImportantMsg <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'The trees are doing a good job of hiding you from the</span>
<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>
<span style="color:#f44f4f">        something you could steal, after all. </span><span style="color:#f44f4f">'</span>
;

hallway: Room <span style="color:#f44f4f">'Hallway</span><span style="color:#f44f4f">'</span>
    <span style="color:#f44f4f">"This hall is or grand proportions but pretty bare. The front door lies to</span>
<span style="color:#f44f4f">    the south and other exits lead east, north and west. "</span>

    south <span style="color:#3f8058">=</span> hallDoor
    out asExit<span style="color:#3f8058">(</span>south<span style="color:#3f8058">)</span>
    west <span style="color:#3f8058">=</span> study
    north: FakeConnector { <span style="color:#f44f4f">"You're pretty sure that only leads to the kitchen,</span>
<span style="color:#f44f4f">        and you haven't come here to cook a meal. "</span> }

    east: DeadEndConnector { <span style="color:#f44f4f">'the living room</span><span style="color:#f44f4f">'</span> <span style="color:#f44f4f">"You </span><span style="color:#27aeae;font-style:italic">&lt;&lt;one of>></span><span style="color:#f44f4f">walk through the</span>
<span style="color:#f44f4f">        doorway and find yourself in</span><span style="color:#27aeae;font-style:italic">&lt;&lt;or>></span><span style="color:#f44f4f">return to</span><span style="color:#27aeae;font-style:italic">&lt;&lt;stopping>></span><span style="color:#f44f4f"> the living room</span>
<span style="color:#f44f4f">        where you take </span><span style="color:#27aeae;font-style:italic">&lt;&lt;one of>></span><span style="color:#f44f4f"> a </span><span style="color:#27aeae;font-style:italic">&lt;&lt;or>></span><span style="color:#f44f4f">another</span><span style="color:#27aeae;font-style:italic">&lt;&lt;stopping>></span><span style="color:#f44f4f"> quick look around,</span>
<span style="color:#f44f4f">        but </span><span style="color:#27aeae;font-style:italic">&lt;&lt;one of>>&lt;&lt;or>></span><span style="color:#f44f4f"> once again</span><span style="color:#27aeae;font-style:italic">&lt;&lt;stopping>></span><span style="color:#f44f4f"> failing to find anything of</span>
<span style="color:#f44f4f">        interest you quickly return to the hall. "</span>}
;

<span style="color:#3f8058">+</span> hallDoor: Lockable<span style="color:#3f8058">,</span> Door <span style="color:#3f8058">-></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>
;

<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>
    <span style="color:#f44f4f">"It's a small mahogany table standing on four thin legs. "</span>
    initSpecialDesc <span style="color:#3f8058">=</span> <span style="color:#f44f4f">"A small table rests by the east wall. "</span>
    bulk <span style="color:#3f8058">=</span> <span style="color:#f67400">5</span>

    dobjFor<span style="color:#3f8058">(</span>Take<span style="color:#3f8058">)</span>
    {
        check<span style="color:#3f8058">()</span>
        {
            <span style="font-weight:bold">if</span><span style="color:#3f8058">(</span>contents.length <span style="color:#3f8058">></span> <span style="color:#f67400">0</span><span style="color:#3f8058">)</span>
                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>
<span style="color:#f44f4f">                    up the table while </span><span style="color:#27ae60;font-style:italic">&lt;&lt;contents[1].nameIs></span><span style="color:#f44f4f">> still on it. </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">)</span>;
        }
    }
;

<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>
    <span style="color:#f44f4f">"It's only a cheap thing, made of china but painted in a tasteless floral</span>
<span style="color:#f44f4f">    pattern using far too many primary colours. "</span>

    bulk <span style="color:#3f8058">=</span> <span style="color:#f67400">3</span>
    bulkCapacity <span style="color:#3f8058">=</span> <span style="color:#f67400">3</span>
;

<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>
;

study: Room <span style="color:#f44f4f">'Study</span><span style="color:#f44f4f">'</span>
    <span style="color:#f44f4f">"This study is much as you would expect: somewhat spartan. A desk stands in</span>
<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>
<span style="color:#27aeae;font-style:italic">      picture.moved>></span><span style="color:#f44f4f">safe is built into </span><span style="color:#27aeae;font-style:italic">&lt;&lt;else>></span><span style="color:#f44f4f"> rather bland painting hangs on</span>
<span style="color:#f44f4f">    </span><span style="color:#27aeae;font-style:italic">&lt;&lt;end>></span><span style="color:#f44f4f"> the west wall. The way out is to the east. "</span>
    east <span style="color:#3f8058">=</span> hallway
    out asExit<span style="color:#3f8058">(</span>east<span style="color:#3f8058">)</span>
;

<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>
    <span style="color:#f44f4f">"It's a plain wooden desk with a single drawer. "</span>
    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>
    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>
    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>
    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>
    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>
    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>
    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>
;

<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>
    <span style="color:#f44f4f">"It's an ordinary desk drawer with a small silver lock. "</span>
    keyList <span style="color:#3f8058">=</span> <span style="color:#3f8058">[</span>silverKey<span style="color:#3f8058">]</span>
;

<span style="color:#3f8058">+++</span> notebook: Readable <span style="color:#f44f4f">'small bright red notebook/book/cover/pages</span><span style="color:#f44f4f">'</span>
    <span style="color:#f44f4f">'small red notebook</span><span style="color:#f44f4f">'</span>
    <span style="color:#f44f4f">"It's a small notebook with a bright red cover. "</span>

    readDesc <span style="color:#3f8058">=</span> <span style="color:#f44f4f">"You open the notebook and flick through its pages. The only</span>
<span style="color:#f44f4f">        thing you find of any interest is a page with </span><span style="color:#27ae60;font-style:italic">&lt;q></span><span style="color:#f44f4f">SAFE DATE</span><span style="color:#27ae60;font-style:italic">&lt;/q></span><span style="color:#f44f4f"> scrawled</span>
<span style="color:#f44f4f">        across it. After satisfying yourself that the notebook contains nothing</span>
<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>
<span style="color:#27ae60;font-style:italic">        safe-date></span><span style="color:#f44f4f">"</span>

    dobjFor<span style="color:#3f8058">(</span>Open<span style="color:#3f8058">)</span> asDobjFor<span style="color:#3f8058">(</span>Read<span style="color:#3f8058">)</span>
    dobjFor<span style="color:#3f8058">(</span>LookIn<span style="color:#3f8058">)</span> asDobjFor<span style="color:#3f8058">(</span>Read<span style="color:#3f8058">)</span>

    dobjFor<span style="color:#3f8058">(</span>Read<span style="color:#3f8058">)</span>
    {
        action<span style="color:#3f8058">()</span>
        {
            <span style="font-weight:bold">inherited</span>;
            achievement.awardPointsOnce<span style="color:#3f8058">()</span>;
        }
    }

    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>
    achievement: Achievement { <span style="color:#3f8058">+</span><span style="color:#f67400">5</span> <span style="color:#f44f4f">"reading the notebook"</span> }
;

<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>
    <span style="color:#f44f4f">"It's a typical office swivel chair, covered in red fabric. "</span>

    cannotTakeMsg <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'You see no reason to burden yourself with such a useless</span>
<span style="color:#f44f4f">        object; that would be quite unprofessional. </span><span style="color:#f44f4f">'</span>

;

<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>
    <span style="color:#f44f4f">'picture</span><span style="color:#f44f4f">'</span>
    <span style="color:#f44f4f">"It's a landscape, pleasantly executed enough, but of no great distinction</span>
<span style="color:#f44f4f">    and definitely not worth the bother of stealing. "</span>

    initNominalRoomPartLocation <span style="color:#3f8058">=</span> defaultWestWall
    initSpecialDesc <span style="color:#3f8058">=</span> <span style="color:#f44f4f">"A rather bland painting hangs on the west wall. "</span>
    isListed <span style="color:#3f8058">=</span> <span style="color:#3f8058">(</span>moved<span style="color:#3f8058">)</span>

    bulk <span style="color:#3f8058">=</span> <span style="color:#f67400">8</span>

    dobjFor<span style="color:#3f8058">(</span>LookBehind<span style="color:#3f8058">)</span>
    {
        action<span style="color:#3f8058">()</span>
        {
            <span style="font-weight:bold">if</span><span style="color:#3f8058">(</span>moved<span style="color:#3f8058">)</span>
                <span style="font-weight:bold">inherited</span>;
            <span style="font-weight:bold">else</span>
            {
                safe.discover<span style="color:#3f8058">()</span>;
                <span style="color:#f44f4f">"Behind the picture is a safe built into the wall. "</span>;
            }
        }
    }

    moveInto<span style="color:#3f8058">(</span>newDest<span style="color:#3f8058">)</span>
    {
        <span style="font-weight:bold">if</span><span style="color:#3f8058">(!</span>safe.discovered<span style="color:#3f8058">)</span>
        {
            <span style="color:#f44f4f">"Removing the painting from the wall reveals a safe behind. "</span>;
            safe.discover<span style="color:#3f8058">()</span>;
        }
        <span style="font-weight:bold">inherited</span><span style="color:#3f8058">(</span>newDest<span style="color:#3f8058">)</span>;
    }
;

<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
    <span style="color:#f44f4f">'sturdy steel safe</span><span style="color:#f44f4f">'</span> <span style="color:#f44f4f">'safe</span><span style="color:#f44f4f">'</span>
    <span style="color:#f44f4f">"It's a sturdy steel safe with a single dial on its door. "</span>

    subContainer: ComplexComponent<span style="color:#3f8058">,</span> IndirectLockable<span style="color:#3f8058">,</span> OpenableContainer
    {
        bulkCapacity <span style="color:#3f8058">=</span> <span style="color:#f67400">5</span>
        makeOpen<span style="color:#3f8058">(</span>stat<span style="color:#3f8058">)</span>
        {
            <span style="font-weight:bold">inherited</span><span style="color:#3f8058">(</span>stat<span style="color:#3f8058">)</span>;
            <span style="font-weight:bold">if</span><span style="color:#3f8058">(</span>stat<span style="color:#3f8058">)</span>
                achievement.awardPointsOnce<span style="color:#3f8058">()</span>;
        }

        achievement: Achievement { <span style="color:#3f8058">+</span><span style="color:#f67400">10</span> <span style="color:#f44f4f">"opening the safe"</span> }
    }

    specialDesc <span style="color:#3f8058">=</span> <span style="color:#f44f4f">"A safe is built into the west wall. "</span>
    specialNominalRoomPartLocation <span style="color:#3f8058">=</span> defaultWestWall
    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>

    discover<span style="color:#3f8058">()</span>
    {
        <span style="font-weight:bold">if</span><span style="color:#3f8058">(!</span>discovered<span style="color:#3f8058">)</span>
        {
            <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>
                cur.discover<span style="color:#3f8058">()</span>;

            achievement.awardPointsOnce<span style="color:#3f8058">()</span>;
        }
        <span style="font-weight:bold">inherited</span><span style="color:#3f8058">()</span>;
    }

    achievement: Achievement { <span style="color:#3f8058">+</span><span style="color:#f67400">5</span> <span style="color:#f44f4f">"finding the safe"</span> }
;

<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>
    <span style="color:#f44f4f">"It has a circular dial attached to its centre. "</span>
;

<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>
    <span style="color:#f44f4f">"The dial can be turned to any number between </span><span style="color:#27aeae;font-style:italic">&lt;&lt;minSetting>></span><span style="color:#f44f4f"> and</span>
<span style="color:#f44f4f">    </span><span style="color:#27aeae;font-style:italic">&lt;&lt;maxSetting>></span><span style="color:#f44f4f">. It's currently at </span><span style="color:#27aeae;font-style:italic">&lt;&lt;curSetting>></span><span style="color:#f44f4f">. "</span>

    minSetting <span style="color:#3f8058">=</span> <span style="color:#f67400">0</span>
    maxSetting <span style="color:#3f8058">=</span> <span style="color:#f67400">99</span>
    curSetting <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'35</span><span style="color:#f44f4f">'</span>

    num1 <span style="color:#3f8058">=</span> <span style="color:#f67400">0</span>
    num2 <span style="color:#3f8058">=</span> <span style="color:#f67400">0</span>
    correctCombination <span style="color:#3f8058">=</span> <span style="color:#f67400">1589</span>

    makeSetting<span style="color:#3f8058">(</span>val<span style="color:#3f8058">)</span>
    {
        <span style="font-weight:bold">inherited</span><span style="color:#3f8058">(</span>val<span style="color:#3f8058">)</span>;
        num2 <span style="color:#3f8058">=</span> num1;
        num1 <span style="color:#3f8058">=</span> toInteger<span style="color:#3f8058">(</span>val<span style="color:#3f8058">)</span>;
        <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>
        {
            <span style="color:#f44f4f">"You hear a slight </span><span style="color:#27ae60;font-style:italic">&lt;i></span><span style="color:#f44f4f">click</span><span style="color:#27ae60;font-style:italic">&lt;/i></span><span style="color:#f44f4f"> come from the safe door. "</span>;
            safe.makeLocked<span style="color:#3f8058">(</span><span style="font-weight:bold">nil</span><span style="color:#3f8058">)</span>;
        }
        <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>
            safe.makeLocked<span style="color:#3f8058">(</span><span style="font-weight:bold">true</span><span style="color:#3f8058">)</span>;
    }
;

<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>
    <span style="color:#f44f4f">'Orb of Ultimate Satisfaction</span><span style="color:#f44f4f">'</span>
    <span style="color:#f44f4f">"It doesn't look much be honest, just a battered sphere made of some dull</span>
<span style="color:#f44f4f">    metal, but you've been told it's the most valuable and desirable object</span>
<span style="color:#f44f4f">    in the known universe! "</span>

    aName <span style="color:#3f8058">=</span> <span style="color:#3f8058">(</span>theName<span style="color:#3f8058">)</span>

    subLocation <span style="color:#3f8058">=</span> <span style="color:#3f8058">&amp;</span>subContainer

    okayRubMsg <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'As {you/he} rub{s} {the dobj/him} a shimmering djiin suddenly</span>
<span style="color:#f44f4f">        appears in the air before you!</span><span style="color:#3daee9;font-weight:bold">\b</span>
<span style="color:#f44f4f">        </span><span style="color:#27ae60;font-style:italic">&lt;q></span><span style="color:#f44f4f">Hello, you have reached the automated holographic answering service</span>
<span style="color:#f44f4f">        of Jeannie the Genie,</span><span style="color:#27ae60;font-style:italic">&lt;/q></span><span style="color:#f44f4f"> she announces. </span><span style="color:#27ae60;font-style:italic">&lt;q></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>
<span style="color:#f44f4f">        available to respond to your rub in person right now, but my hours of</span>
<span style="color:#f44f4f">        activity have been heavily curtailed by the European Working Time</span>
<span style="color:#f44f4f">        Directive. Before making a wish, please make sure that you have</span>
<span style="color:#f44f4f">        conducted a full risk assessment in line with the latest Health and</span>
<span style="color:#f44f4f">        Safety Guidelines. Also, please note that before any wish can be granted</span>
<span style="color:#f44f4f">        you must sign a Form P45/PDQ/LOL indemnifying this wish-granting agency</span>
<span style="color:#f44f4f">        against any consequential loss or damage arising from the fulfilment of</span>
<span style="color:#f44f4f">        your desires. Thank you for rubbing. Have a nice day!</span><span style="color:#27ae60;font-style:italic">&lt;/q></span><span style="color:#3daee9;font-weight:bold">\b</span>
<span style="color:#f44f4f">        Her message complete, the holographic djiin fades away into</span>
<span style="color:#f44f4f">        non-existence. </span><span style="color:#f44f4f">'</span>

    moveInto<span style="color:#3f8058">(</span>dest<span style="color:#3f8058">)</span>
    {
        <span style="font-weight:bold">inherited</span><span style="color:#3f8058">(</span>dest<span style="color:#3f8058">)</span>;
        <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>
            achievement.awardPointsOnce<span style="color:#3f8058">()</span>;
    }

    achievement: Achievement { <span style="color:#3f8058">+</span><span style="color:#f67400">10</span> <span style="color:#f44f4f">"taking the orb"</span> }
;

<span style="color:#7a7c7d">//------------------------------------------------------------------------------</span>

<span style="color:#7a7c7d">/* DEFINE A NEW VERB */</span>

DefineTAction<span style="color:#3f8058">(</span>Rub<span style="color:#3f8058">)</span>
;

VerbRule<span style="color:#3f8058">(</span>Rub<span style="color:#3f8058">)</span>
    <span style="color:#f44f4f">'rub</span><span style="color:#f44f4f">'</span> dobjList
    : RubAction
    verbPhrase <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'rub/rubbing (what)</span><span style="color:#f44f4f">'</span>
;

<span style="color:#7a7c7d">/* When creating a new verb, you'll want to modify the Thing class so as to provide</span>
<span style="color:#7a7c7d">   default handling for the command. The defaults specified here will be used except</span>
<span style="color:#7a7c7d">   on objects for which you define explicit handling of the command. */</span>

<span style="font-weight:bold">modify</span> Thing
    dobjFor<span style="color:#3f8058">(</span>Rub<span style="color:#3f8058">)</span>
    {
        preCond <span style="color:#3f8058">=</span> <span style="color:#3f8058">[</span>touchObj<span style="color:#3f8058">]</span>
        action<span style="color:#3f8058">()</span> { mainReport<span style="color:#3f8058">(</span>okayRubMsg<span style="color:#3f8058">)</span>; }
    }

    okayRubMsg <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'{You/he} rub{s} {the dobj/him} but not much happens as a</span>
<span style="color:#f44f4f">        result. </span><span style="color:#f44f4f">'</span>

    shouldNotBreakMsg <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'Only amateurs go round breaking things unnecessarily. </span><span style="color:#f44f4f">'</span>
;

<span style="color:#7a7c7d">//------------------------------------------------------------------------------</span>

<span style="color:#7a7c7d">/* HINTS */</span>

TopHintMenu;

<span style="color:#3f8058">+</span> Goal <span style="color:#3f8058">-></span> <span style="color:#3f8058">(</span>frontDoor.achievement<span style="color:#3f8058">)</span>
    <span style="color:#f44f4f">'How do I get into the house?</span><span style="color:#f44f4f">'</span>
    <span style="color:#3f8058">[</span>
        <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>
        <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>
        <span style="color:#f44f4f">'Could someone have left a key around somewhere? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <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>
        <span style="color:#f44f4f">'What about that flowerpot? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'Try looking under the flowerpot. </span><span style="color:#f44f4f">'</span>
    <span style="color:#3f8058">]</span>

    goalState <span style="color:#3f8058">=</span> OpenGoal
;

<span style="color:#7a7c7d">/* The closeWhenSeen property of the following Goal object is an example of how to</span>
<span style="color:#7a7c7d">   make your hint menu respond dynamically to the player's current situation. */</span>

<span style="color:#3f8058">+</span> Goal <span style="color:#f44f4f">'Where can I find the orb? </span><span style="color:#f44f4f">'</span>
    <span style="color:#3f8058">[</span>
        <span style="color:#f44f4f">'Something like that is bound to be kept safe. </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <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>
    <span style="color:#3f8058">]</span>

    goalState <span style="color:#3f8058">=</span> OpenGoal
    closeWhenSeen <span style="color:#3f8058">=</span> hallway
;

<span style="color:#3f8058">+</span> Goal <span style="color:#f44f4f">'Where can I find the orb?</span><span style="color:#f44f4f">'</span>
    <span style="color:#3f8058">[</span>
        <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>
        <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>
        <span style="color:#f44f4f">'Somewhere in the study seems the most likely place. </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        deskHint<span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'But it should be safely locked in a safe </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'Where might someone hide a safe in this study? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'What could be behind that picture on the wall? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'Try looking behind the picture (or simply taking the picture). </span><span style="color:#f44f4f">'</span>
    <span style="color:#3f8058">]</span>

    openWhenSeen <span style="color:#3f8058">=</span> hallway
    closeWhenSeen <span style="color:#3f8058">=</span> orb
;

<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>
    <span style="color:#3f8058">[</span>deskGoal<span style="color:#3f8058">]</span>
;

<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>
    <span style="color:#3f8058">[</span>
        <span style="color:#f44f4f">'Have you examined the drawer? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'What might you need to unlock it? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'Where might you find such a thing? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <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>
        <span style="color:#f44f4f">'How carefully have you searched the hall? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'What is (or was) on the hall table? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'What might that vase be for? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'Try looking in the vase. </span><span style="color:#f44f4f">'</span>
    <span style="color:#3f8058">]</span>
    closeWhenSeen <span style="color:#3f8058">=</span> notebook
;

<span style="color:#3f8058">+</span> Goal <span style="color:#f44f4f">'How do I get the safe open?</span><span style="color:#f44f4f">'</span>
    <span style="color:#3f8058">[</span>
        <span style="color:#f44f4f">'How carefully have you examined the safe? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'Where might someone leave a clue to the combination? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        deskHint<span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'Make sure you read the notebook. </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <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>
        <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>
<span style="color:#f44f4f">        in stages. </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <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>
<span style="color:#f44f4f">        dial to 12 and then turn it to 34. </span><span style="color:#f44f4f">'</span>
    <span style="color:#3f8058">]</span>

    openWhenSeen <span style="color:#3f8058">=</span> safe
    closeWhenAchieved <span style="color:#3f8058">=</span> <span style="color:#3f8058">(</span>safe.subContainer.achievement<span style="color:#3f8058">)</span>
;

<span style="color:#3f8058">+</span> Goal <span style="color:#f44f4f">'What does the clue in the notebook mean?</span><span style="color:#f44f4f">'</span>
    <span style="color:#3f8058">[</span>
        <span style="color:#f44f4f">'Well, </span><span style="color:#27ae60;font-style:italic">&lt;q></span><span style="color:#f44f4f">SAFE</span><span style="color:#27ae60;font-style:italic">&lt;/q></span><span style="color:#f44f4f"> might refer to something you want to open. </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'Have you seen a date round here? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'When was this house built? </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <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>
        <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>
        <span style="color:#f44f4f">'Did you examine the door? </span><span style="color:#f44f4f">'</span>
    <span style="color:#3f8058">]</span>

    openWhenRevealed <span style="color:#3f8058">=</span> <span style="color:#f44f4f">'safe-date</span><span style="color:#f44f4f">'</span>
    closeWhenAchieved <span style="color:#3f8058">=</span> <span style="color:#3f8058">(</span>safe.subContainer.achievement<span style="color:#3f8058">)</span>
;


<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>
    <span style="color:#3f8058">[</span>
        <span style="color:#f44f4f">'Well, you could try rubbing it. </span><span style="color:#f44f4f">'</span><span style="color:#3f8058">,</span>
        <span style="color:#f44f4f">'But the main thing to do now is to escape with it. </span><span style="color:#f44f4f">'</span>
    <span style="color:#3f8058">]</span>
    openWhenSeen <span style="color:#3f8058">=</span> orb
;
</pre></body></html>