Implement per-file license notices
[spiritwrak.git] / src / subway.inf
1
2 ! ******************************************************************
3 ! subway.inf
4 ! ----------
5 ! Add-on file for SPIRITWRAK
6 ! -- Contains Great Underground Subway system (trains and tunnels 
7 !    and various denizens)
8 !
9 ! SPIRITWRAK is free software; you can redistribute it and/or modify
10 ! it under the terms of the GNU General Public License as published by
11 ! the Free Software Foundation; either version 3 of the License, or
12 ! (at your option) any later version.
13 !
14 ! SPIRITWRAK is distributed in the hope that it will be useful, but
15 ! WITHOUT ANY WARRANTY; without even the implied warranty of
16 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 ! General Public License for more details.
18 !
19 ! You should have received a copy of the GNU General Public License
20 ! along with SPIRITWRAK. If not, see <https://www.gnu.org/licenses/>.
21 ! ******************************************************************
22
23 ! First, some globals (sigh)
24 ! Two for each train line -- one indicates 'direction' of train,
25 ! the second indicates the current 'location' of train.
26 global PURPLELINE_dir = 0;  ! 0 North, 1 South
27 global PURPLELINE_loc = 1;  ! 1-10, frostham to fublio
28 global ORANGELINE_dir = 0;  ! 0 West, 1 East
29 global ORANGELINE_loc = 1;  ! 1-10, Aragain to Gurth 
30 global GREENLINE_dir = 0; ! 0 North, 1 South
31 global GREENLINE_loc = 1; ! 1-10, New Borphee to Miznia
32
33 ! (Subway stops in each city are named as part of the city in
34 !  caps, concat'd with "_GUSStation".  All are (of course)
35 ! underground.
36
37 Object FROSTHAM_GUSStation "Frostham GUS Station"
38    with description [;
39          print "You are standing ";
40          if (self hasnt general) {
41            give self general; 
42            "in a dimly lit underground \
43            chamber. There seems \
44            to be a much larger room to the southeast, which is \
45            unfortunately almost completely blocked by a long metal \
46            barricade and gate. Stairs lead up to the outside.";
47          }
48          "at the entrance to the Frostham \
49           Great Underground Subway (GUS) station. The train \
50           platform lies past the gate to the southeast, or \
51           stairs lead up into the city.";
52        ],
53        name "stairs" "platform",
54        u_to FROSTHAM_GUSStop,
55        se_to FG_Gate,
56        before [;
57           Go:
58              if (noun==se_obj) {
59                 if (FG_Gate_slot hasnt general)
60                   "A strange buzzing noise sounds as you try \ 
61                   to pass through the gate, and an invisible \
62                   force blocks your way!";
63                 else {
64                   give FG_Gate_slot ~general; 
65                   print "You saunter through the apparently open gate.^";
66                 }
67              }
68        ],
69    has light;
70
71
72 Object ARAGAIN_GUSStation "Aragain GUS Station"
73    with description "You are standing at the entrance to the Aragain \
74 Great Underground Subway (GUS) station. The train \
75 platform lies past the gate to the southeast, or \
76 stairs lead up into the city. Some lettering on the \
77 wall reads ~TRANSFER STATION~.",
78        name "stairs" "platform",
79        u_to ARAGAIN_GUSStop,
80        se_to AG_Gate,
81        before [;
82           Go:
83              if (noun==se_obj) {
84                 if (AG_Gate_slot hasnt general)
85                   "A strange buzzing noise sounds as you try \ 
86                   to pass through the gate, and an invisible \
87                   force blocks your way!";
88                 else {
89                   give AG_Gate_slot ~general; 
90                   print "You saunter through the apparently open gate.^";
91                 }
92              }
93        ],
94    has light;
95
96 Object FUBLIO_GUSStation "Fublio Valley GUS Station"
97    with description "You are standing at the entrance to the \
98 South Fublio Valley \
99 Great Underground Subway (GUS) station. The train \
100 platform lies past the gate to the southeast, or \
101 stairs lead up into the city.",
102        name "stairs" "platform",
103        u_to FUBLIO_GUSStop,
104        se_to FublioG_Gate,
105        before [;
106           Go:
107              if (noun==se_obj) {
108                 if (FublioG_Gate_slot hasnt general)
109                   "A strange buzzing noise sounds as you try \ 
110                   to pass through the gate, and an invisible \
111                   force blocks your way!";
112                 else {
113                   give FublioG_Gate_slot ~general; 
114                   print "You saunter through the apparently open gate.^";
115                 }
116              }
117        ],
118    has light;
119
120 ! (Orange stations - one)
121 Object ANTHAR_GUSStation "Greater Anthar GUS Station"
122    with description "You are standing at the entrance to the Greater Anthar \
123 Great Underground Subway (GUS) station. The train \
124 platform lies past the gate to the south, or \
125 stairs lead up into the city.",
126        name "stairs" "platform",
127        u_to ANTHAR_GUSStop,
128        s_to AntharG_Gate,
129        before [;
130           Go:
131              if (noun==s_obj) {
132                 if (AntharG_Gate_slot hasnt general)
133                   "A strange buzzing noise sounds as you try \ 
134                   to pass through the gate, and an invisible \
135                   force blocks your way!";
136                 else {
137                   give AntharG_Gate_slot ~general; 
138                   print "You saunter through the apparently open gate.^";
139                 }
140              }
141        ],
142    has light;
143    
144 ! (Green stations - three)
145 Object GURTH_GUSStation "Gurth City GUS Station"
146    with description "You are standing at the entrance to the Gurth City \
147 Great Underground Subway (GUS) station. The train \
148 platform lies past the gate to the southwest, or \
149 stairs lead up into the city. Some lettering on the \
150 wall reads ~TRANSFER STATION~.",
151        name "stairs" "platform",
152        u_to GURTH_GUSStop,
153        sw_to GurthG_Gate,
154        before [;
155           Go:
156              if (noun==u_obj)
157                 print "You are greeted by a light rain as you leave the \
158 station.^";
159              if (noun==sw_obj) {
160                 if (GurthG_Gate hasnt general) ! note diff
161                   "A strange buzzing noise sounds as you try \ 
162                   to pass through the gate, and an invisible \
163                   force blocks your way!";
164                 else {
165                   give GurthG_Gate ~general; 
166                   print "You saunter through the apparently open gate.^";
167                 }
168              }
169        ],
170    has light;
171
172 Object BORPHEE_GUSStation "New Borphee GUS Station"
173    with description "You are standing at the entrance to the New Borphee \
174 Great Underground Subway (GUS) station. The train \
175 platform lies past the gate to the southwest, or \
176 stairs lead up into the city.",
177        name "stairs" "platform",
178        u_to BORPHEE_GUSStop,
179        sw_to BorpheeG_Gate,
180        before [;
181           Go:
182              if (noun==u_obj)
183                 print "You enter the city and are nearly \
184                       flattened by crowds rushing past.^";
185              if (noun==sw_obj) {
186                 if (BorpheeG_Gate_slot hasnt general) 
187                   "A strange buzzing noise sounds as you try \ 
188                   to pass through the gate, and an invisible \
189                   force blocks your way!";
190                 else {
191                   give BorpheeG_Gate_slot ~general; 
192                   print "You saunter through the apparently open gate.^";
193                 }
194              }
195        ],
196    has light;
197
198 Object MIZNIA_GUSStation "Miznia GUS Station"
199    with description "You are standing at the entrance to the Miznia \
200 Great Underground Subway (GUS) station. The train \
201 platform lies past the gate to the southwest, or \
202 stairs lead up into the city.",
203        name "stairs" "platform",
204        u_to MIZNIA_GUSStop,
205        sw_to MizniaG_Gate,
206        before [;
207           Go:
208              if (noun==sw_obj) {
209                 if (MizniaG_Gate_slot hasnt general) 
210                   "A strange buzzing noise sounds as you try \ 
211                   to pass through the gate, and an invisible \
212                   force blocks your way!";
213                 else {
214                   give MizniaG_Gate_slot ~general; 
215                   print "You saunter through the apparently open gate.^";
216                 }
217              }
218        ],
219    has light;
220
221 Object FROSTHAM_GUSPlatform "Frostham Train Platform"
222    with description [;
223            print "You are standing in a long underground \
224            chamber. The east side of the room contains a \
225            lowered set of what appear to be train tracks. \           
226            The tracks run south into a dark tunnel. \
227            Along one wall painted lettering \
228            reads ~FROSTHAM STATION~. \
229            A short walkway leads northwest, to a metal fence";
230           if (self has general)
231            ". There is a large train car sitting on the tracks \
232            to the east.";
233           else ".";
234         ],
235         name "tunnel",
236         nw_to FG_Gate,
237         s_to "A helpful subway worker says ~Hey pal, get outa there!~",
238         e_to PURPLELINE_car,
239         in_to PURPLELINE_car,
240         before [;
241            Go:
242 !              if (noun == nw_obj)
243 !                print "You saunter through the apparently open gate.^";
244               if ((self hasnt general) &&
245                   (noun == e_obj or in_obj))
246               "You'd fall onto the tracks if you went that way.";              
247         ],     
248         each_turn [ i ;
249            if (self hasnt general) {
250               i = random(10);
251               if (i==1 or 2 or 3) {
252                  give self general;
253                  PURPLELINE_loc = 1;            
254                  PURPLELINE_dir = 1;    ! will be heading south
255                  "^Suddenly, from the south, a train emerges from \
256                  the tunnel! It pulls to a screeching halt, the \
257                  doors open, and several people rush out and exit \
258                  the station.";
259               }
260               if (i==10) 
261                  "^You hear a distant rumbling noise from the south.";
262            }
263            else {
264               if (self has general) {
265                  if (PURPLELINE_loc == 2) {
266                     give self ~general;
267                     "^The train doors close, and the train rolls off \
268                     to the south."; 
269                  }
270                  else {
271                     PURPLELINE_loc = 2;
272                     "^A few exit the train, and hurry out \
273                     of the station. You hear a voice from inside the \
274                     train say, ~Doors will be closing, please stand \
275                     clear.~";
276                  }
277               }
278            }
279         ],        
280    has light;
281
282
283 ! (Classes for gates and slots)
284 Class GUS_Gate_Class
285    with name "gate" "metal",
286    initial "A metal gate bisects the fence.",
287    door_dir nw_to,
288    door_to FROSTHAM_GUSPlatform,
289    before [; 
290       Climb, JumpOver: "A subway worker yells ~Hey pal, no fare-jumpers!";
291       Open:  "It looks like it's already open.";
292       Close:  "There doesn't seem to be anything to close.";
293       Enter: "You'll have to walk in the appropriate direction to go through it.";    
294    ],
295    description "It's an odd metal gate that only comes up to about \
296 your waist. Odder still is the fact that there's \
297 no door on the gate, just two metal sides",
298    has static door transparent open;
299 Class GUS_Gate_Slot_Class
300    with name "slot" "metal" "thin" "small",
301        description "You see a rather small, thin slot that seems to be \
302 almost cut into one of the metal sides of the gate.",
303        before [;
304           LetGo: "There's no way to get anything out of that tiny, \
305 thin slot.";
306           Receive:
307              if (noun has is_coin) {
308                 give self general;
309                 remove noun;  ! collection
310                 "The coin slides into the slot with a satisfying thunk.";
311              }
312              "It doesn't look like that's going to fit into the slot."; 
313        ],
314        size 1,
315    has scenery container open;
316    
317  
318 Object FG_Gate "platform gate"
319    class GUS_Gate_Class,
320    with initial [;
321            if (location==FROSTHAM_GUSStation)
322               "A metal gate bisects the fence to the southeast.";
323            "A metal gate bisects the fence to the northwest.";
324         ],
325         door_dir [;
326            if (location==FROSTHAM_GUSStation)
327               return se_to;
328            return nw_to;
329         ],
330         door_to [;
331            if (location==FROSTHAM_GUSStation)
332               return FROSTHAM_GUSPlatform;
333            return FROSTHAM_GUSStation;
334         ],
335         before [; 
336            Enter:
337               if (location==FROSTHAM_GUSStation) <<Go se_obj>>;
338               else <<Go nw_obj>>;
339         ],
340         description [;
341         print "It's an odd metal gate that only comes up to about \
342                your waist. Odder still is the fact that there's \
343                no door on the gate, just two metal sides";
344         if (location == FROSTHAM_GUSStation)
345            ". There's a thin slot on one of the sides.";
346         else ".";
347         ],
348         found_in FROSTHAM_GUSStation FROSTHAM_GUSPlatform,
349 ;
350    
351    
352       
353 Object FG_Gate_slot "metal slot" FG_Gate
354    class GUS_Gate_Slot_Class
355    with description [;
356           if (location == FROSTHAM_GUSPlatform)
357              "You can't see any such thing.";
358           if (location == FROSTHAM_GUSStation)
359              "You see a rather small, thin slot that seems to be \
360 almost cut into one of the metal sides of the gate.";
361      ],
362        before [;
363           if (location == FROSTHAM_GUSPlatform)
364                 "You can't see any such thing.";
365        ],
366 ;
367    
368    
369 Object AG_Gate "platform gate"
370    class GUS_Gate_Class
371    with initial [;
372            if (location==ARAGAIN_GUSStation)
373               "A metal gate bisects the fence to the southeast.";
374            "A metal gate bisects the fence to the northwest.";
375         ],
376         door_dir [;
377            if (location==ARAGAIN_GUSStation)
378               return se_to;
379            return nw_to;
380         ],
381         door_to [;
382            if (location==ARAGAIN_GUSStation)
383               return ARAGAIN_GUSPlatform;
384            return ARAGAIN_GUSStation;
385         ],
386         before [; 
387            Enter:
388               if (location==FROSTHAM_GUSStation) <<Go se_obj>>;
389               else <<Go nw_obj>>;
390         ],
391         description [;
392        print "It's an odd metal gate that only comes up to about \
393                your waist. Odder still is the fact that there's \
394                no door on the gate, just two metal sides";
395            if (location == ARAGAIN_GUSStation)
396               ". There's a thin slot on one of the sides.";
397            else ".";
398         ],
399         found_in ARAGAIN_GUSStation ARAGAIN_GUSPlatform,
400 ;
401    
402 Object AG_Gate_slot "metal slot" AG_Gate
403    class GUS_Gate_Slot_Class
404    with description [;
405           if (location == ARAGAIN_GUSPlatform)
406              "You can't see any such thing.";
407           if (location == ARAGAIN_GUSStation)
408              "You see a rather small, thin slot that seems to be \
409 almost cut into one of the metal sides of the gate.";
410      ],
411        before [;
412           if (location == ARAGAIN_GUSPlatform)
413                 "You can't see any such thing.";
414        ],
415 ;
416    
417    
418 Object FublioG_Gate "platform gate"
419    class GUS_Gate_Class
420    with initial [;
421            if (location==FUBLIO_GUSStation)
422               "A metal gate bisects the fence to the southeast.";
423            "A metal gate bisects the fence to the northwest.";
424         ],
425         door_dir [;
426            if (location==FUBLIO_GUSStation)
427               return se_to;
428            return nw_to;
429         ],
430         door_to [;
431            if (location==FUBLIO_GUSStation)
432               return FUBLIO_GUSPlatform;
433            return FUBLIO_GUSStation;
434         ],
435         before [; 
436            Enter:
437               if (location==FUBLIO_GUSStation) <<Go se_obj>>;
438               else <<Go nw_obj>>;
439         ],
440         description [;
441        print "It's an odd metal gate that only comes up to about \
442             your waist. Odder still is the fact that there's \
443             no door on the gate, just two metal sides";
444            if (location == FUBLIO_GUSStation)
445               ". There's a thin slot on one of the sides.";
446            else ".";
447         ],
448         found_in FUBLIO_GUSStation FUBLIO_GUSPlatform,
449 ;
450    
451 Object FublioG_Gate_slot "metal slot" FublioG_Gate
452    class GUS_Gate_Slot_Class
453    with description [;
454           if (location == FUBLIO_GUSStation)
455              "You see a rather small, thin slot that seems to be \
456              almost cut into one of the metal sides of the gate.";
457 !! See if this works instead...
458           "You can't see any such thing.";
459        ],
460        before [;
461           if (location == FUBLIO_GUSPlatform)
462              "You can't see any such thing.";
463        ],
464 ;
465
466 ! (Orange gates (1))
467 Object AntharG_Gate "platform gate"
468    class GUS_Gate_Class
469    with initial [;
470            if (location==ANTHAR_GUSStation)
471               "A metal gate bisects the fence to the south.";
472            "A metal gate bisects the fence to the north.";
473         ],
474         door_dir [;
475            if (location==ANTHAR_GUSStation)
476               return s_to;
477            return n_to;
478         ],
479         door_to [;
480            if (location==ANTHAR_GUSStation)
481               return ANTHAR_GUSPlatform;
482            return ANTHAR_GUSStation;
483         ],
484         before [; 
485            Enter:
486               if (location==ANTHAR_GUSStation) <<Go s_obj>>;
487               else <<Go n_obj>>;
488         ],
489         description [;
490         print "It's an odd metal gate that only comes up to about \
491             your waist. Odder still is the fact that there's \
492             no door on the gate, just two metal sides";
493            if (location == ANTHAR_GUSStation)
494                ". There's a thin slot on one of the sides.";
495            else ".";
496         ],
497         found_in ANTHAR_GUSStation ANTHAR_GUSPlatform,
498 ;
499    
500 Object AntharG_Gate_slot "metal slot" AntharG_Gate
501    class GUS_Gate_Slot_Class
502    with description [;
503           if (location == ANTHAR_GUSStation)
504              "You see a rather small, thin slot that seems to be \
505              almost cut into one of the metal sides of the gate.";
506           "You can't see any such thing.";
507        ],
508        before [;
509           if (location == ANTHAR_GUSPlatform) 
510              "You can't see any such thing.";
511        ],
512 ;   
513
514
515 ! (Green gates (3))
516 Object BorpheeG_Gate "platform gate"
517    class GUS_Gate_Class
518    with initial [;
519            if (location==BORPHEE_GUSStation)
520               "A metal gate bisects the fence to the southwest.";
521            "A metal gate bisects the fence to the northeast.";
522         ],
523         door_dir [;
524            if (location==BORPHEE_GUSStation)
525               return sw_to;
526            return ne_to;
527         ],
528         door_to [;
529            if (location==BORPHEE_GUSStation)
530               return BORPHEE_GUSPlatform;
531            return BORPHEE_GUSStation;
532         ],
533         before [; 
534            Enter:
535               if (location == BORPHEE_GUSStation) <<Go sw_obj>>;
536               else <<Go ne_obj>>;
537         ],
538         description [;
539             print "It's an odd metal gate that only comes up to about \
540                your waist. Odder still is the fact that there's \
541                no door on the gate, just two metal sides";
542            if (location == BORPHEE_GUSStation)
543               ". There's a thin slot on one of the sides.";
544            else ".";
545         ],
546         found_in BORPHEE_GUSStation BORPHEE_GUSPlatform,
547 ;
548    
549 Object BorpheeG_Gate_slot "metal slot" BorpheeG_Gate
550    class GUS_Gate_Slot_Class
551    with description [;
552           if (location == BORPHEE_GUSStation)
553              "You see a rather small, thin slot that seems to be \
554              almost cut into one of the metal sides of the gate.";
555           "You can't see any such thing.";
556        ],
557        before [;
558           if (location == BORPHEE_GUSPlatform) 
559              "You can't see any such thing.";
560        ],
561 ;
562    
563 ! (NOTE: Gurth is different, read: broken)   
564 Object GurthG_Gate "platform gate"
565    class GUS_Gate_Class
566    with initial [;
567            if (location==GURTH_GUSStation)
568               "A metal gate bisects the fence to the southwest.";
569            "A metal gate bisects the fence to the northeast.";
570         ],
571         door_dir [;
572            if (location==GURTH_GUSStation)
573               return sw_to;
574            return ne_to;
575         ],
576         door_to [;
577            if (location==GURTH_GUSStation)
578               return GURTH_GUSPlatform;
579            return GURTH_GUSStation;
580         ],
581         before [; 
582            Enter:  if (location == GURTH_GUSStation) <<Go sw_obj>>;
583                    else <<Go ne_obj>>;
584         ],
585         description [;
586            print "It's an odd metal gate that only comes up to about \
587             your waist. Odder still is the fact that there's \
588             no door on the gate, just two metal sides";
589            if (location == GURTH_GUSStation)
590               ". There's a thin slot on one of the sides that looks \
591               slightly dented.";
592            else ".";
593         ],
594         found_in GURTH_GUSStation GURTH_GUSPlatform,
595 ;
596    
597 Object GurthG_Gate_slot "metal slot" GurthG_Gate
598    class GUS_Gate_Slot_Class
599    with name "dented",
600        description [;
601           if (location == GURTH_GUSStation)
602              "You see a rather small, thin slot that seems to be \
603              almost cut into one of the metal sides of the gate. \
604              It looks slightly dented.";
605           "You can't see any such thing.";
606        ],
607        before [;
608           if (location == GURTH_GUSPlatform)
609              "You can't see any such thing.";
610           Receive:
611              if (noun has is_coin) {
612                 give self general;
613                 remove noun;
614                 "The coin slides into the slot, but you hear a strange click \
615                 almost immediately.^^\
616                 A subway nymph suddenly appears. She looks at the gate \
617                 disapprovingly. ~Broken again? I thought they \
618                 just fixed it. Well, fine.~ She seems rather annoyed. \
619                 ~We'll get someone to look at it, eventually. Bye!~ She \
620                 disappears.";
621              }
622              if (noun==wire) {
623                 if (self hasnt general)
624                    "You poke the wire in the slot for a bit, but nothing \
625                    happens.";
626                 if (self has general) {
627                    give self ~general;
628                    Achieved(20);
629                    give GurthG_Gate general;
630                    "You poke around in the slot, and manage to free something! \
631                    There is a solid thunk-like noise.";
632                 }             
633              }
634              "It doesn't look like that's going to fit into the slot."; 
635        ],
636 ;   
637
638 Object MizniaG_Gate "platform gate"
639    class GUS_Gate_Class
640    with initial [;
641            if (location==MIZNIA_GUSStation)
642               "A metal gate bisects the fence to the southwest.";
643            "A metal gate bisects the fence to the northeast.";
644         ],
645         door_dir [;
646            if (location==MIZNIA_GUSStation)
647               return sw_to;
648            return ne_to;
649         ],
650         door_to [;
651            if (location==MIZNIA_GUSStation)
652               return MIZNIA_GUSPlatform;
653            return MIZNIA_GUSStation;
654         ],
655         before [; 
656            Enter: if (location==MIZNIA_GUSStation) <<Go sw_obj>>;
657                   else <<Go ne_obj>>;
658         ],
659         description [;
660            print "It's an odd metal gate that only comes up to about \
661             your waist. Odder still is the fact that there's \
662             no door on the gate, just two metal sides";
663            if (location == MIZNIA_GUSStation)
664               ". There's a thin slot on one of the sides.";
665            else ".";
666         ],
667         found_in MIZNIA_GUSStation MIZNIA_GUSPlatform,
668 ;
669    
670 Object MizniaG_Gate_slot "metal slot" MizniaG_Gate
671    class GUS_Gate_Slot_Class
672    with description [;
673           if (location == MIZNIA_GUSStation)
674              "You see a rather small, thin slot that seems to be \
675              almost cut into one of the metal sides of the gate.";
676           "You can't see any such thing.";
677        ],
678        before [;
679           if (location==MIZNIA_GUSPlatform)
680              "You can't see any such thing.";
681        ],
682 ;
683
684
685    
686 !Object FS_Platform_sign2 "laminated paper" FROSTHAM_GUSPlatform
687 !   with name "paper" "laminated" "safety",
688 !      initial "A small stiff-looking piece of paper is attached to the west wall.",
689 !      description "The paper reads: ^^\
690 !      GREAT UNDERGROUND SUBWAY STATION RULES:^
691 !      1) No going onto tracks.^
692 !      2) No going into tunnels on foot unless authorized.",
693 !   has static;
694    
695 Object train_tracks "train tracks"
696    with name "tracks" "train",
697         description "A pair of large metal train tracks.",
698         found_in FROSTHAM_GUSPlatform ARAGAIN_GUSPlatform FUBLIO_GUSPlatform
699                  ARAGAIN_GUSPlatform2,
700    has scenery;
701    
702    
703 Object ARAGAIN_GUSPlatform "Aragain Train Platform"
704    with description [;
705            print "You are standing in a long underground \
706            chamber. The east side of the room contains a \
707            lowered set of what appear to be train tracks. \
708            The tracks run north and south into dark tunnels. \
709            Along one wall painted lettering \
710            reads ~ARAGAIN STATION~. \
711            A short walkway leads northwest, to a metal fence. \
712            There is also a stairway down here";
713           if (self has general)
714            ". In addition, there is a large train car sitting on the tracks \
715            to the east.";
716           else ".";
717         ],
718         name "tunnel" "tunnels" "stairway",
719         nw_to AG_Gate,
720         s_to "A helpful subway worker says ~Hey pal, get outa there!~",
721         n_to "A helpful subway worker says ~Hey pal, get outa there!~",
722         e_to PURPLELINE_car,
723         d_to ARAGAIN_GUSPlatform2,
724         in_to PURPLELINE_car,
725         before [;
726            Go:
727 !              if (noun == nw_obj)
728 !                print "You saunter through the apparently open gate.^";
729               if ((self hasnt general) &&
730                   (noun == e_obj or in_obj))
731               "You'd fall onto the tracks if you went that way.";              
732         ],     
733         each_turn [ i ;
734            if (self hasnt general) {
735               i = random(10);
736               if (i==1 or 3 or 5) {
737                  give self general;
738                  PURPLELINE_loc = 5;            
739                  PURPLELINE_dir = 1;    ! will be heading south
740                  "^Suddenly, from the north, a train emerges from \
741                  the tunnel! It pulls to a screeching halt, the \
742                  doors open, and several people rush out and exit \
743                  the station.";
744               }
745               if (i==2 or 4 or 6) {
746                  give self general;
747                  PURPLELINE_loc = 5;            
748                  PURPLELINE_dir = 0;    ! will be heading north
749                  "^Suddenly, from the south, a train emerges from \
750                  the tunnel! It pulls to a screeching halt, the \
751                  doors open, and several people rush out and exit \
752                  the station.";
753               }
754               if (i==9)
755                  "^You hear a distant rumbling noise from the north.";
756               if (i==10) 
757                  "^You hear a distant rumbling noise from the south.";
758            }
759            else {
760               if (self has general) {
761                  if (PURPLELINE_loc == 6) {
762                     give self ~general;
763                     "^The train doors close, and the train rolls off."; 
764                  }
765                  else {
766                     PURPLELINE_loc = 6;
767                     "^A few exit the train, and hurry out \
768                     of the station. You hear a voice from inside the \
769                     train say, ~Doors will be closing, please stand \
770                     clear.~";
771                  }
772               }
773            }
774         ],        
775    has light;
776  
777 Object ARAGAIN_GUSPlatform2 "Aragain Train Platform (lower)"
778    with description [;
779            print "You are standing in a long underground \
780            chamber. The south side of the room contains a \
781            lowered set of what appear to be train tracks. \
782            The tracks run west into a dark tunnel. \
783            Along one wall painted lettering \
784            reads ~ARAGAIN STATION~. \
785            A set of stairs leads up out of the gloom";
786           if (self has general)
787            ". There is a large train car sitting on the tracks \
788            to the south.";
789           else ".";
790         ],
791         name "tunnel" "stairs",
792         w_to "A helpful subway worker says ~Hey pal, get outa there!~",
793         s_to ORANGELINE_car,
794         in_to ORANGELINE_car,
795         u_to ARAGAIN_GUSPlatform,
796         before [;
797            Go:
798               if ((self hasnt general) &&
799                   (noun == s_obj or in_obj))
800               "You'd fall onto the tracks if you went that way.";              
801         ],     
802         each_turn [ i ;
803            if (self hasnt general) {
804               i = random(10);
805               if (i==1 or 3 or 5) {
806                  give self general;
807                  ORANGELINE_loc = 9;            
808                  ORANGELINE_dir = 0;    ! will be heading west
809                  "^Suddenly, from the west, a train emerges from \
810                  the tunnel! It pulls to a screeching halt, the \
811                  doors open, and several people rush out and up \
812                  the stairs.";
813               }
814               if (i==10) 
815                  "^You hear a distant rumbling noise from the west.";
816            }
817            else {
818               if (self has general) {
819                  if (ORANGELINE_loc == 10) {
820                     give self ~general;
821                     "^The train doors close, and the train heads off \
822                     to the west."; 
823                  }
824                  else {
825                     ORANGELINE_loc = 10;
826                     "^A few people exit the train, and hurry up the stairs. \
827                     You hear a voice from inside the \
828                     train say, ~Doors will be closing, please stand \
829                     clear.~";
830                  }
831               }
832            }
833         ],        
834    has light;      
835    
836    
837 Object FUBLIO_GUSPlatform "Fublio Valley Train Platform"
838    with description [;
839            print "You are standing in a long underground \
840            chamber. The east side of the room contains a \
841            lowered set of what appear to be train tracks. \
842            The tracks run north into a dark tunnel. \
843            Along one wall painted lettering \
844            reads ~FUBLIO VALLEY STATION~. \
845            A short walkway leads northwest, to a metal fence";
846           if (self has general)
847            ". There is a large train car sitting on the tracks \
848            to the east.";
849           else ".";
850         ],
851         name "tunnel",
852         nw_to FublioG_Gate,
853         n_to "A helpful subway worker says ~Hey pal, get outa there!~",
854         e_to PURPLELINE_car,
855         in_to PURPLELINE_car,
856         before [;
857            Go:
858 !              if (noun == nw_obj)
859 !                print "You saunter through the apparently open gate.^";
860               if ((self hasnt general) &&
861                   (noun == e_obj or in_obj))
862               "You'd fall onto the tracks if you went that way.";              
863         ],     
864         each_turn [ i ;
865            if (self hasnt general) {
866               i = random(10);
867               if (i==1 or 3 or 4) {
868                  give self general;
869                  PURPLELINE_loc = 10;            
870                  PURPLELINE_dir = 0;    ! will be heading north
871                  "^Suddenly, from the north, a train emerges from \
872                  the tunnel! It pulls to a screeching halt, the \
873                  doors open, and several people rush out and exit \
874                  the station.";
875               }
876               if (i==10) 
877                  "^You hear a distant rumbling noise from the north.";
878            }
879            else {
880               if (self has general) {
881                  if (PURPLELINE_loc == 9) {
882                     give self ~general;
883                     "^The train doors close, and the train rolls off \
884                     to the north."; 
885                  }
886                  else {
887                     PURPLELINE_loc = 9;
888                     "^A few people exit the train, and hurry out \
889                     of the station. You hear a voice from inside the \
890                     train say, ~Doors will be closing, please stand \
891                     clear.~";
892                  }
893               }
894            }
895         ],        
896    has light;      
897
898    
899 ! *** Orange line platforms
900
901
902 Object GURTH_GUSPlatform2 "Gurth City Train Platform (lower)"
903    with description [;
904            print "You are standing in a long underground \
905            chamber. The south side of the room contains a \
906            lowered set of what appear to be train tracks. \
907            The tracks run east into a dark tunnel. \
908            Along one wall painted lettering \
909            reads ~GURTH CITY STATION~. \
910            A set of stairs leads up out of the gloom";
911           if (self has general)
912            ". There is a large train car sitting on the tracks \
913            to the south.";
914           else ".";
915         ],
916         name "tunnel" "stairs", 
917         e_to "A helpful subway worker says ~Hey pal, get outa there!~",
918         s_to ORANGELINE_car,
919         in_to ORANGELINE_car,
920         u_to GURTH_GUSPlatform,
921         before [;
922            Go:
923               if ((self hasnt general) &&
924                   (noun == s_obj or in_obj))
925               "You'd fall onto the tracks if you went that way.";              
926         ],     
927         each_turn [ i ;
928            if (self hasnt general) {
929               i = random(10);
930               if (i==1 or 2 or 4) {
931                  give self general;
932                  ORANGELINE_loc = 1;            
933                  ORANGELINE_dir = 1;    ! will be heading east
934                  "^Suddenly, from the east, a train emerges from \
935                  the tunnel! It pulls to a screeching halt, the \
936                  doors open, and several people rush out and up \
937                  the stairs.";
938               }
939               if (i==10) 
940                  "^You hear a distant rumbling noise from the east.";
941            }
942            else {
943               if (self has general) {
944                  if (ORANGELINE_loc == 2) {
945                     give self ~general;
946                     "^The train doors close, and the train heads off \
947                     to the east."; 
948                  }
949                  else {
950                     ORANGELINE_loc = 2;
951                     "^A few people exit the train, and hurry up the stairs. \
952                     You hear a voice from inside the \
953                     train say, ~Doors will be closing, please stand \
954                     clear.~";
955                  }
956               }
957            }
958         ],        
959    has light;      
960    
961 Object ANTHAR_GUSPlatform "Greater Anthar Train Platform"
962    with description [;
963            print "You are standing in a long underground \
964            chamber. The south side of the room contains a \
965            lowered set of what appear to be train tracks. \
966            The tracks run east and west into dark tunnels. \
967            Along one wall painted lettering \
968            reads ~ANTHAR STATION~. \
969            A short walkway leads north, to a metal fence";
970           if (self has general)
971            ". There is a large train car sitting on the tracks \
972            to the south.";
973           else ".";
974         ],
975         name "tunnel" "tunnels" "walkway",
976         n_to AntharG_Gate,
977         e_to "A helpful subway worker says ~Hey pal, get outa there!~",
978         w_to "A helpful subway worker says ~Hey pal, get outa there!~",        
979         s_to ORANGELINE_car,
980         in_to ORANGELINE_car,
981         before [;
982            Go:
983 !              if (noun == n_obj)
984 !                print "You saunter through the apparently open gate.^";
985               if ((self hasnt general) &&
986                   (noun == s_obj or in_obj))
987               "You'd fall onto the tracks if you went that way.";              
988         ],     
989         each_turn [ i ;
990            if (self hasnt general) {
991               i = random(10);
992               if (i==1 or 4 or 5) {
993                  give self general;
994                  ORANGELINE_loc = 5;            
995                  ORANGELINE_dir = 1;    ! will be heading east
996                  "^Suddenly, from the west, a train emerges from \
997                  the tunnel! It pulls to a screeching halt, the \
998                  doors open, and several people rush out and exit \
999                  the station.";
1000               }
1001               if (i==2 or 3 or 6) {
1002                  give self general;
1003                  ORANGELINE_loc = 5;            
1004                  ORANGELINE_dir = 0;    ! will be heading west
1005                  "^Suddenly, from the east, a train emerges from \
1006                  the tunnel! It pulls to a screeching halt, the \
1007                  doors open, and several people rush out and exit \
1008                  the station.";
1009               }
1010               if (i==9)
1011                  "^You hear a distant rumbling noise from the east.";
1012               if (i==10) 
1013                  "^You hear a distant rumbling noise from the west.";
1014            }
1015            else {
1016               if (self has general) {
1017                  if (ORANGELINE_loc == 6) {
1018                     give self ~general;
1019                     "^The train doors close, and the train rolls off."; 
1020                  }
1021                  else {
1022                     ORANGELINE_loc = 6;
1023                     "^A few people exit the train, and hurry out \
1024                     of the station. You hear a voice from inside the \
1025                     train say, ~Doors will be closing, please stand \
1026                     clear.~";
1027                  }
1028               }
1029            }
1030         ],        
1031    has light;
1032
1033
1034 ! *** Green line platforms
1035
1036 Object BORPHEE_GUSPlatform "New Borphee Train Platform"
1037    with description [;
1038            print "You are standing in a long underground \
1039            chamber. The west side of the room contains a \
1040            lowered set of what appear to be train tracks. \
1041            The tracks run south into a dark tunnel. \
1042            Along one wall painted lettering \
1043            reads ~NEW BORPHEE STATION~. \
1044            A short walkway leads northeast, to a metal fence";
1045           if (self has general)
1046            ". There is a large train car sitting on the tracks \
1047            to the west.";
1048           else ".";
1049         ],
1050         name "tunnel" "walkway",
1051         ne_to BorpheeG_Gate,
1052         s_to "A helpful subway worker says ~Hey pal, get outa there!~",
1053         w_to GREENLINE_car,
1054         in_to GREENLINE_car,
1055         before [;
1056            Go:
1057 !              if (noun == ne_obj)
1058 !                print "You saunter through the apparently open gate.^";
1059               if ((self hasnt general) &&
1060                   (noun == w_obj or in_obj))
1061               "You'd fall onto the tracks if you went that way.";              
1062         ],     
1063         each_turn [ i ;
1064            if (self hasnt general) {
1065               i = random(10);
1066               if (i==1 or 2 or 3) {
1067                  give self general;
1068                  GREENLINE_loc = 1;            
1069                  GREENLINE_dir = 1;    ! will be heading south
1070                  "^Suddenly, from the south, a train emerges from \
1071                  the tunnel! It pulls to a screeching halt, the \
1072                  doors open, and several people rush out and exit \
1073                  the station.";
1074               }
1075               if (i==10) 
1076                  "^You hear a distant rumbling noise from the south.";
1077            }
1078            else {
1079               if (self has general) {
1080                  if (GREENLINE_loc == 2) {
1081                     give self ~general;
1082                     "^The train doors close, and the train rolls off \
1083                     to the south."; 
1084                  }
1085                  else {
1086                     GREENLINE_loc = 2;
1087                     "^A few people exit the train, and hurry out \
1088                     of the station. You hear a voice from inside the \
1089                     train say, ~Doors will be closing, please stand \
1090                     clear.~";
1091                  }
1092               }
1093            }
1094         ],        
1095    has light;      
1096
1097 Object MIZNIA_GUSPlatform "Miznia Train Platform"
1098    with description [;
1099            print "You are standing in a long underground \
1100            chamber. The west side of the room contains a \
1101            lowered set of what appear to be train tracks. \
1102            The tracks run north into a dark tunnel. \
1103            Along one wall painted lettering \
1104            reads ~MIZNIA STATION~. \
1105            A short walkway leads northeast, to a metal fence";
1106           if (self has general)
1107            ". There is a large train car sitting on the tracks \
1108            to the west.";
1109           else ".";
1110         ],
1111         name "tunnel" "walkway",
1112         ne_to MizniaG_Gate,
1113         n_to "A helpful subway worker says ~Hey pal, get outa there!~",
1114         w_to GREENLINE_car,
1115         in_to GREENLINE_car,
1116         before [;
1117            Go:
1118 !              if (noun == ne_obj)
1119 !                print "You saunter through the apparently open gate.^";
1120               if ((self hasnt general) &&
1121                   (noun == w_obj or in_obj))
1122               "You'd fall onto the tracks if you went that way.";              
1123         ],     
1124         each_turn [ i ;
1125            if (self hasnt general) {
1126               i = random(10);
1127               if (i==1 or 2 or 3) {
1128                  give self general;
1129                  GREENLINE_loc = 9;            
1130                  GREENLINE_dir = 0;    ! will be heading south
1131                  "^Suddenly, from the north, a train emerges from \
1132                  the tunnel! It pulls to a screeching halt, the \
1133                  doors open, and several people rush out and exit \
1134                  the station.";
1135               }
1136               if (i==10) 
1137                  "^You hear a distant rumbling noise from the north.";
1138            }
1139            else {
1140               if (self has general) {
1141                  if (GREENLINE_loc == 10) {
1142                     give self ~general;
1143                     "^The train doors close, and the train rolls off \
1144                     to the north."; 
1145                  }
1146                  else {
1147                     GREENLINE_loc = 10;
1148                     "^A few people exit the train, and hurry out \
1149                     of the station. You hear a voice from inside the \
1150                     train say, ~Doors will be closing, please stand \
1151                     clear.~";
1152                  }
1153               }
1154            }
1155         ],        
1156    has light;      
1157
1158 Object GURTH_GUSPlatform "Gurth City Train Platform"
1159    with description [;
1160            print "You are standing in a long underground \
1161            chamber. The west side of the room contains a \
1162            lowered set of what appear to be train tracks. \
1163            The tracks run north and south into dark tunnels. \
1164            Along one wall painted lettering \
1165            reads ~GURTH CITY STATION~. \
1166            A short walkway leads northeast, to a metal fence. \
1167            There is also a stairway down here";
1168           if (self has general)
1169            ". There is a large train car sitting on the tracks \
1170            to the west.";
1171           else ".";
1172         ],
1173         name "tunnel" "tunnels" "walkway" "stairway",
1174         ne_to GurthG_Gate,
1175         s_to "A helpful subway worker says ~Hey pal, get outa there!~",
1176         n_to "A helpful subway worker says ~Hey pal, get outa there!~",
1177         w_to GREENLINE_car,
1178         d_to GURTH_GUSPlatform2,
1179         in_to GREENLINE_car,
1180         before [;
1181            Go:
1182 !              if (noun == ne_obj)
1183 !                print "You saunter through the apparently open gate.^";
1184               if ((self hasnt general) &&
1185                   (noun == w_obj or in_obj))
1186               "You'd fall onto the tracks if you went that way.";              
1187         ],     
1188         each_turn [ i ;
1189            if (self hasnt general) {
1190               i = random(10);
1191               if (i==1 or 3) {
1192                  give self general;
1193                  GREENLINE_loc = 5;            
1194                  GREENLINE_dir = 1;    ! will be heading south
1195                  "^Suddenly, from the north, a train emerges from \
1196                  the tunnel! It pulls to a screeching halt, the \
1197                  doors open, and several people rush out and exit \
1198                  the station.";
1199               }
1200               if (i==2 or 4) {
1201                  give self general;
1202                  GREENLINE_loc = 5;            
1203                  GREENLINE_dir = 0;    ! will be heading north
1204                  "^Suddenly, from the south, a train emerges from \
1205                  the tunnel! It pulls to a screeching halt, the \
1206                  doors open, and several people rush out and exit \
1207                  the station.";
1208               }
1209               if (i==9)
1210                  "^You hear a distant rumbling noise from the north.";
1211               if (i==10) 
1212                  "^You hear a distant rumbling noise from the south.";
1213            }
1214            else {
1215               if (self has general) {
1216                  if (GREENLINE_loc == 6) {
1217                     give self ~general;
1218                     "^The train doors close, and the train rolls off."; 
1219                  }
1220                  else {
1221                     GREENLINE_loc = 6;
1222                     "^A few people exit the train, and hurry out \
1223                     of the station. You hear a voice from inside the \
1224                     train say, ~Doors will be closing, please stand \
1225                     clear.~";
1226                  }
1227               }
1228            }
1229         ],        
1230    has light;    
1231
1232 ! **************************
1233 ! TRAINS
1234 ! Some notes:
1235 !     While it may seem more logical to implement the trains with
1236 !     an 'enterable' property, I decided to implement them as 
1237 !     'rooms' instead.  Mainly, I did this because:
1238 !     1) I wanted total control of the "movement" of the train.
1239 !     2) I wanted to fill the cars with various people/things.
1240 !     3) I wanted seats on the train :)
1241 !     Again, this is all probably possible with 'vehicles', I
1242 !     just saw things slightly differently.
1243 !     Be warned, the logic in moving the train is probably one
1244 !     of the more unfathomable things I've ever coded.
1245 ! **************************
1246
1247 ! *** The purple line (Eastlands)
1248
1249 Object PURPLELINE_car "Subway car"
1250    with description "You are in an underground train car. Various \
1251            people fill the train, some in uncomfortable-looking seats.",
1252         name "car" "people",
1253         w_to FROSTHAM_GUSPlatform,  ! we adjust this, see below
1254         out_to FROSTHAM_GUSPlatform,
1255         after [;
1256          Go:
1257           if (noun == e_obj or in_obj) {
1258            ! determine boarding location, direction train was
1259            ! traveling 
1260            give self general; ! we're off and moving...
1261            print "^You enter the train car. The doors slam shut behind you.^";
1262            if (PURPLELINE_loc == 1 or 2) {
1263               ! Frostham, south
1264               give FROSTHAM_GUSPlatform ~general;
1265               PURPLELINE_loc = 3; ! leaving
1266            }
1267            if (PURPLELINE_loc == 5 or 6) {
1268               ! Aragain
1269               ! give ARAGAIN_GUSPlatform ~general;
1270               if (PURPLELINE_dir == 1) {
1271                  ! South
1272                  PURPLELINE_loc = 7;
1273               }
1274               else {
1275                  ! North
1276                  PURPLELINE_loc = 4;
1277               }
1278            }
1279            if (PURPLELINE_loc == 9 or 10) {
1280               ! Fublio, north
1281               ! give FUBLIO_GUSPlatform ~general;
1282               PURPLELINE_loc = 8;
1283            }
1284           }
1285         ],
1286         before [;
1287           Go:
1288             if (noun == w_obj or out_obj) {
1289                if (self has general)
1290                   "The train is moving right now. Better wait til \
1291                   it stops to get off.";               
1292                if (thug in self)
1293                   "As you try to get off, the thug gets in your way. \
1294                   ~Going somewhere, Padre?~.";
1295             }
1296         ],
1297         each_turn [;
1298           ! check location of train, print appropriate msg, 
1299           ! and increment location of train, given direction
1300           if (PURPLELINE_loc == 1) {
1301             ! reached Frostham, dir = S, not moving
1302             give self ~general;
1303             give FROSTHAM_GUSPlatform general;
1304             PURPLELINE_dir = 1;
1305             PURPLELINE_loc = 2;
1306             PURPLELINE_car.w_to = FROSTHAM_GUSPlatform;
1307             PURPLELINE_car.out_to = FROSTHAM_GUSPlatform;
1308             "^The train suddenly lurches to a stop! A voice from \
1309             somewhere overhead says ~Frostham station, watch your \
1310             step please.~";
1311           }
1312           if (PURPLELINE_loc == 2) {
1313             ! still in Frostham, not moving
1314             PURPLELINE_loc = 3;
1315             "^A voice overhead says ~Doors will be closing, please \
1316              stand clear.~";
1317           }
1318           if (PURPLELINE_loc == 3) {
1319             if (PURPLELINE_dir == 1) {
1320                ! moving away from Frostham
1321                give self general;
1322                give FROSTHAM_GUSPlatform ~general;
1323                PURPLELINE_loc = 4;
1324                "^The train starts to move, quickly exiting the station \
1325                going south.";
1326             }
1327             if (PURPLELINE_dir == 0) {
1328                ! moving towards Frostham
1329                PURPLELINE_loc = 1;  ! We will 'arrive' in Frostham next
1330                "^The train rumbles as it moves.";
1331             }
1332           }
1333           if (PURPLELINE_loc == 4) {
1334             if (PURPLELINE_dir == 0) {
1335                ! We're leaving Aragain
1336                PURPLELINE_loc = 3;
1337                give self general;
1338                give ARAGAIN_GUSPlatform ~general;
1339                "^The train starts to move, quickly exiting the station \
1340                going north.";
1341             }
1342             if (PURPLELINE_dir == 1) {
1343                PURPLELINE_loc = 5; 
1344                "^The train rumbles as it moves.";
1345             }
1346           }
1347           if (PURPLELINE_loc == 5) {
1348             ! reached Aragain, stop the train
1349             give self ~general;
1350             give ARAGAIN_GUSPlatform general;
1351             PURPLELINE_loc = 6;  ! we'll be stopping for 1 turn
1352             PURPLELINE_car.w_to = ARAGAIN_GUSPlatform;
1353             PURPLELINE_car.out_to = ARAGAIN_GUSPlatform;
1354             "^The train suddenly lurches to a stop! A voice from \
1355             somewhere overhead says ~Aragain station, watch your \
1356             step please.~";
1357           }
1358           if (PURPLELINE_loc == 6) {
1359             ! about to leave Aragain station
1360             if (PURPLELINE_dir == 0) 
1361                PURPLELINE_loc = 4;
1362             else
1363                PURPLELINE_loc = 7;
1364             "^A voice overhead says ~Doors will be closing, please \
1365              stand clear.~";
1366           }
1367           if (PURPLELINE_loc == 7) {
1368              if (PURPLELINE_dir == 1) {
1369                ! We're leaving Aragain
1370                PURPLELINE_loc = 8;
1371                give self general;
1372                give ARAGAIN_GUSPlatform ~general;
1373                "^The train starts to move, quickly exiting the station \
1374                going south.";
1375             }
1376             if (PURPLELINE_dir == 0) {
1377                PURPLELINE_loc = 5;   ! we will arrive in Aragain shortly...
1378                "^The train rumbles as it moves.";
1379             }
1380           }
1381           if (PURPLELINE_loc == 8) {
1382             if (PURPLELINE_dir == 0) {
1383                ! we're leaving Fublio
1384                PURPLELINE_loc = 7;
1385                give self general;
1386                give FUBLIO_GUSPlatform ~general;
1387                "^The train starts to move, quickly exiting the station \
1388                going north.";
1389             }
1390             if (PURPLELINE_dir == 1) {
1391                PURPLELINE_loc = 10;  ! will arrive in Fublio (BACKWARDS!!)
1392                "^The train rumbles as it moves.";
1393             }
1394           }
1395           if (PURPLELINE_loc == 9) {
1396             ! still waiting in Fublio
1397             PURPLELINE_loc = 8;
1398             "^A voice overhead says ~Doors will be closing, please \
1399              stand clear.~";
1400           }
1401           if (PURPLELINE_loc == 10) {
1402             ! arriving in Fublio
1403             PURPLELINE_loc = 9;   
1404             PURPLELINE_dir = 0; ! north
1405             give self ~general;
1406             give FUBLIO_GUSPlatform general;
1407             PURPLELINE_car.w_to = FUBLIO_GUSPlatform;
1408             PURPLELINE_car.out_to = FUBLIO_GUSPlatform;
1409             "^The train suddenly lurches to a stop! A voice from \
1410             somewhere overhead says ~Fublio station, watch your \
1411             step please.~";
1412           }
1413         ],
1414    has light;
1415
1416 Class Train_Car_Seat_Class
1417    with name "seat" "seats",
1418    description "There seem to be a few seats that haven't been taken.",
1419    before [;
1420       Enter:
1421          if (random(10) < 3)
1422             "As you attempt to grab an open seat, someone rudely \
1423             beats you to it.";
1424    ],
1425 has scenery enterable;
1426
1427
1428 Object PURPLELINE_car_seats "subway seat" PURPLELINE_car
1429    class Train_Car_Seat_Class
1430    with before [;
1431            Search:
1432               if (self hasnt general) {
1433                  give self general;
1434                  move c9 to player;
1435                  "Good fortune is your friend! You notice a \
1436 forgotten coin stuck in a seat crack, and fend off two \
1437 passengers to grab it.";
1438               }
1439         ],
1440 ;
1441
1442
1443 ! *** ORANGE LINE CAR (Gurth to Aragain)
1444
1445
1446 Object ORANGELINE_car "Subway car"
1447    with description "You are in an underground train car. Various \
1448            people fill the train, some in uncomfortable-looking seats.",
1449         name "car" "people",
1450         n_to ANTHAR_GUSPlatform,  ! we adjust this, see below
1451         out_to ANTHAR_GUSPlatform,
1452         after [;
1453          Go:
1454           if (noun == s_obj or in_obj) {
1455            ! determine boarding location, direction train was
1456            ! traveling 
1457            give self general;  ! we're off and moving...
1458            print "^You squeeze onto the train car. The doors close behind you.^";
1459            if (ORANGELINE_loc == 1 or 2) {
1460               ! Gurth, east
1461               give GURTH_GUSPlatform2 ~general;
1462               ORANGELINE_loc = 3; ! leaving
1463            }
1464            if (ORANGELINE_loc == 5 or 6) {
1465               ! Anthar
1466               give ANTHAR_GUSPlatform ~general;
1467               if (ORANGELINE_dir == 1) {
1468                  ! east
1469                  ORANGELINE_loc = 7;
1470               }
1471               else {
1472                  ! west
1473                  ORANGELINE_loc = 4;
1474               }
1475            }
1476            if (ORANGELINE_loc == 9 or 10) {
1477               ! Aragain, west
1478               give ARAGAIN_GUSPlatform2 ~general;
1479               ORANGELINE_loc = 8;
1480            }
1481           }
1482         ],
1483         before [;
1484           Go:
1485             if (noun == n_obj or out_obj) {
1486                if (self has general)
1487                   "The train is moving right now. Better wait til \
1488                   it stops to get off.";               
1489             }
1490         ],
1491         each_turn [;
1492           ! check location of train, print appropriate msg, 
1493           ! and increment location of train, given direction
1494           if (ORANGELINE_loc == 1) {
1495             ! reached Gurth, dir = S, not moving
1496             give self ~general;
1497             give GURTH_GUSPlatform2 general;
1498             ORANGELINE_dir = 1;
1499             ORANGELINE_loc = 2;
1500             ORANGELINE_car.n_to = GURTH_GUSPlatform2;
1501             ORANGELINE_car.out_to = GURTH_GUSPlatform2;
1502             "^The train suddenly lurches to a stop! A voice from \
1503             somewhere overhead says ~Gurth City station, watch your \
1504             step please.~";
1505           }
1506           if (ORANGELINE_loc == 2) {
1507             ! still in Gurth, not moving
1508             ORANGELINE_loc = 3;
1509             "^A voice overhead says ~Doors will be closing, please \
1510              stand clear.~";
1511           }
1512           if (ORANGELINE_loc == 3) {
1513             if (ORANGELINE_dir == 1) {
1514                ! moving away from Gurth
1515                give self general;
1516                give GURTH_GUSPlatform2 ~general;
1517                ORANGELINE_loc = 4;
1518                "^The train starts to move, quickly exiting the station \
1519                going east.";
1520             }
1521             if (ORANGELINE_dir == 0) {
1522                ! moving towards Gurth
1523                ORANGELINE_loc = 1;  ! We will 'arrive' in Gurth next
1524                "^The train rumbles as it moves.";
1525             }
1526           }
1527           if (ORANGELINE_loc == 4) {
1528             if (ORANGELINE_dir == 0) {
1529                ! We're leaving Anthar
1530                ORANGELINE_loc = 3;
1531                give self general;
1532                give ANTHAR_GUSPlatform ~general;
1533                "^The train starts to move, quickly exiting the station \
1534                going west.";
1535             }
1536             if (ORANGELINE_dir == 1) {
1537                ORANGELINE_loc = 5; 
1538                "^The train rumbles as it moves.";
1539             }
1540           }
1541           if (ORANGELINE_loc == 5) {
1542             ! reached Anthar, stop the train
1543             give self ~general;
1544             give ANTHAR_GUSPlatform general;
1545             ORANGELINE_loc = 6;  ! we'll be stopping for 1 turn
1546             ORANGELINE_car.n_to = ANTHAR_GUSPlatform;
1547             ORANGELINE_car.out_to = ANTHAR_GUSPlatform;
1548             "^The train suddenly lurches to a stop! A voice from \
1549             somewhere overhead says ~Greater Anthar station, watch your \
1550             step please.~";
1551           }
1552           if (ORANGELINE_loc == 6) {
1553             ! about to leave Anthar station
1554             if (ORANGELINE_dir == 0) 
1555                ORANGELINE_loc = 4;
1556             else
1557                ORANGELINE_loc = 7;
1558             "^A voice overhead says ~Doors will be closing, please \
1559              stand clear.~";
1560           }
1561           if (ORANGELINE_loc == 7) {
1562              if (ORANGELINE_dir == 1) {
1563                ! We're leaving Anthar
1564                ORANGELINE_loc = 8;
1565                give self general;
1566                give ANTHAR_GUSPlatform ~general;
1567                "^The train starts to move, quickly exiting the station \
1568                going east.";
1569             }
1570             if (ORANGELINE_dir == 0) {
1571                ORANGELINE_loc = 5;   ! we will arrive in anthar shortly...
1572                "^The train rumbles as it moves.";
1573             }
1574           }
1575           if (ORANGELINE_loc == 8) {
1576             if (ORANGELINE_dir == 0) {
1577                ! we're leaving Aragain
1578                ORANGELINE_loc = 7;
1579                give self general;
1580                give ARAGAIN_GUSPlatform2 ~general;
1581                "^The train starts to move, quickly exiting the station \
1582                going west.";
1583             }
1584             if (ORANGELINE_dir == 1) {
1585                ORANGELINE_loc = 9;  ! will arrive in Aragain
1586                "^The train rumbles as it moves.";
1587             }
1588           }
1589           if (ORANGELINE_loc == 10) {
1590             ! still waiting in Aragain
1591             ORANGELINE_loc = 8;
1592             "^A voice overhead says ~Doors will be closing, please \
1593              stand clear.~";
1594           }
1595           if (ORANGELINE_loc == 9) {
1596             ! arriving in Aragain
1597             ORANGELINE_loc = 10;   
1598             ORANGELINE_dir = 0; ! west
1599             give self ~general;
1600             give ARAGAIN_GUSPlatform2 general;
1601             ORANGELINE_car.n_to = ARAGAIN_GUSPlatform2;
1602             ORANGELINE_car.out_to = ARAGAIN_GUSPlatform2;
1603             "^The train suddenly lurches to a stop! A voice from \
1604             somewhere overhead says ~Aragain station, watch your \
1605             step please.~";
1606           }
1607         ],
1608    has light;
1609
1610 Object ORANGELINE_car_seats "subway seat" ORANGELINE_car
1611    class Train_Car_Seat_Class
1612    with before [;
1613            Search:
1614               if (self hasnt general) {
1615                  give self general;
1616                  move c10 to player;
1617                  "Good fortune is your friend! You notice a \
1618 forgotten coin stuck in a seat crack, and fend off two \
1619 passengers to grab it.";
1620               }
1621         ],
1622 ;
1623
1624
1625 ! *** GREEN LINE (Borphee to Miznia)
1626
1627 Object GREENLINE_car "Subway car"
1628    with description "You are in an underground train car. Various \
1629            people fill the train, some in uncomfortable-looking seats.",
1630         name "car" "people",
1631         e_to BORPHEE_GUSPlatform,  ! we adjust this, see below
1632         out_to BORPHEE_GUSPlatform,
1633         after [;
1634          Go:
1635           if (noun == w_obj or in_obj) {
1636            ! determine boarding location, direction train was
1637            ! traveling 
1638            give self general;  ! we're off and moving
1639            print "^You shove your way onto train car. The doors close behind you.^";
1640            if (GREENLINE_loc == 1 or 2) {
1641               ! Borphee, south
1642               give BORPHEE_GUSPlatform ~general;
1643               GREENLINE_loc = 3; ! leaving
1644            }
1645            if (GREENLINE_loc == 5 or 6) {
1646               ! Gurth
1647               give GURTH_GUSPlatform ~general;
1648               if (GREENLINE_dir == 1) {
1649                  ! South
1650                  GREENLINE_loc = 7;
1651               }
1652               else {
1653                  ! North
1654                  GREENLINE_loc = 4;
1655               }
1656            }
1657            if (GREENLINE_loc == 9 or 10) {
1658               ! Miznia, north
1659               give MIZNIA_GUSPlatform ~general;
1660               GREENLINE_loc = 8;
1661            }
1662           }
1663         ],
1664         before [;
1665           Go:
1666             if (noun == e_obj or out_obj) {
1667                if (self has general)
1668                   "The train is moving right now. Better wait til \
1669                   it stops to get off.";               
1670                if (yupple in self)
1671                   "As you try to get off, the yupple jumps up and gets in your \
1672                   way. ~Wait, wait, we have so much to talk about!~.";
1673             }
1674         ],
1675         each_turn [;
1676           ! check location of train, print appropriate msg, 
1677           ! and increment location of train, given direction
1678           if (GREENLINE_loc == 1) {
1679             ! reached Borphee, dir = S, not moving
1680             give self ~general;
1681             give BORPHEE_GUSPlatform general;
1682             GREENLINE_dir = 1;
1683             GREENLINE_loc = 2;
1684             GREENLINE_car.e_to = BORPHEE_GUSPlatform;
1685             GREENLINE_car.out_to = BORPHEE_GUSPlatform;
1686             "^The train suddenly lurches to a stop! A voice from \
1687             somewhere overhead says ~New Borphee station, watch your \
1688             step please.~";
1689           }
1690           if (GREENLINE_loc == 2) {
1691             ! still in Borphee, not moving
1692             GREENLINE_loc = 3;
1693             "^A voice overhead says ~Doors will be closing, please \
1694              stand clear.~";
1695           }
1696           if (GREENLINE_loc == 3) {
1697             if (GREENLINE_dir == 1) {
1698                ! moving away from Borphee
1699                give self general;
1700                give BORPHEE_GUSPlatform ~general;
1701                GREENLINE_loc = 4;
1702                "^The train starts to move, quickly exiting the station \
1703                going south.";
1704             }
1705             if (GREENLINE_dir == 0) {
1706                ! moving towards BORPHEE
1707                GREENLINE_loc = 1;  
1708                "^The train rumbles as it moves.";
1709             }
1710           }
1711           if (GREENLINE_loc == 4) {
1712             if (GREENLINE_dir == 0) {
1713                ! We're leaving gurth
1714                GREENLINE_loc = 3;
1715                give self general;
1716                give GURTH_GUSPlatform ~general;
1717                "^The train starts to move, quickly exiting the station \
1718                going north.";
1719             }
1720             if (GREENLINE_dir == 1) {
1721                GREENLINE_loc = 5; 
1722                "^The train rumbles as it moves.";
1723             }
1724           }
1725           if (GREENLINE_loc == 5) {
1726             ! reached Gurth, stop the train
1727             give self ~general;
1728             give GURTH_GUSPlatform general;
1729             GREENLINE_loc = 6;  ! we'll be stopping for 1 turn
1730             GREENLINE_car.e_to = GURTH_GUSPlatform;
1731             GREENLINE_car.out_to = GURTH_GUSPlatform;
1732             "^The train suddenly lurches to a stop! A voice from \
1733             somewhere overhead says ~Gurth City station, watch your \
1734             step please.~";
1735           }
1736           if (GREENLINE_loc == 6) {
1737             ! about to leave gurth station
1738             if (GREENLINE_dir == 0) 
1739                GREENLINE_loc = 4;
1740             else
1741                GREENLINE_loc = 7;
1742             "^A voice overhead says ~Doors will be closing, please \
1743              stand clear.~";
1744           }
1745           if (GREENLINE_loc == 7) {
1746              if (GREENLINE_dir == 1) {
1747                ! We're leaving gurth
1748                GREENLINE_loc = 8;
1749                give self general;
1750                give GURTH_GUSPlatform ~general;
1751                "^The train starts to move, quickly exiting the station \
1752                going south.";
1753             }
1754             if (GREENLINE_dir == 0) {
1755                GREENLINE_loc = 5;   ! we will arrive in gurth shortly...
1756                "^The train rumbles as it moves.";
1757             }
1758           }
1759           if (GREENLINE_loc == 8) {
1760             if (GREENLINE_dir == 0) {
1761                ! we're leaving Miznia
1762                GREENLINE_loc = 7;
1763                give self general;
1764                give MIZNIA_GUSPlatform ~general;
1765                "^The train starts to move, quickly exiting the station \
1766                going north.";
1767             }
1768             if (GREENLINE_dir == 1) {
1769                GREENLINE_loc = 9;  
1770                "^The train rumbles as it moves.";
1771             }
1772           }
1773           if (GREENLINE_loc == 10) {
1774             ! still waiting in Miznia
1775             GREENLINE_loc = 8;
1776             "^A voice overhead says ~Doors will be closing, please \
1777              stand clear.~";
1778           }
1779           if (GREENLINE_loc == 9) {
1780             ! arriving in Miznia
1781             GREENLINE_loc = 10;   
1782             GREENLINE_dir = 0; ! north
1783             give self ~general;
1784             give MIZNIA_GUSPlatform general;
1785             GREENLINE_car.e_to = MIZNIA_GUSPlatform;
1786             GREENLINE_car.out_to = MIZNIA_GUSPlatform;
1787             "^The train suddenly lurches to a stop! A voice from \
1788             somewhere overhead says ~Miznia station, watch your \
1789             step please.~";
1790           }
1791         ],
1792    has light;
1793
1794 Object GREENLINE_car_seats "subway seat" GREENLINE_car
1795    class Train_Car_Seat_Class
1796    with before [;
1797            Search:
1798               if (self hasnt general) {
1799                  give self general;
1800                  move c11 to player;
1801                  "Good fortune is your friend! You notice a \
1802 forgotten coin stuck in a seat crack, and fend off two \
1803 passengers to grab it.";
1804               }
1805         ],
1806 ;
1807
1808
1809 ! *** A fake scenery item, to describe the subway cars from outside ***
1810 Object subway_car_fake "subway car"
1811    with name "car" "train",
1812        description [;
1813           print "It's a rather large, sleek-looking train car, oddly colored ";
1814           if (((location==FROSTHAM_GUSPlatform) && (FROSTHAM_GUSPlatform has general)) ||
1815               ((location==ARAGAIN_GUSPlatform) && (ARAGAIN_GUSPlatform has general)) ||
1816               ((location==FUBLIO_GUSPlatform) && (FUBLIO_GUSPlatform has general))) 
1817              "purple.";
1818           if (((location==ANTHAR_GUSPlatform) && (ANTHAR_GUSPlatform has general)) ||
1819               ((location==ARAGAIN_GUSPlatform2) && (ARAGAIN_GUSPlatform2 has general)) ||
1820               ((location==GURTH_GUSPlatform2) && (GURTH_GUSPlatform2 has general))) 
1821              "orange.";
1822           if (((location==BORPHEE_GUSPlatform) && (BORPHEE_GUSPlatform has general)) ||
1823               ((location==GURTH_GUSPlatform) && (GURTH_GUSPlatform has general)) ||
1824               ((location==MIZNIA_GUSPlatform) && (MIZNIA_GUSPlatform has general))) 
1825              "green.";
1826            "You can't see any such thing.";
1827        ],
1828    found_in FROSTHAM_GUSPlatform ARAGAIN_GUSPlatform FUBLIO_GUSPlatform
1829    ANTHAR_GUSPlatform ARAGAIN_GUSPlatform2 GURTH_GUSPlatform2
1830    BORPHEE_GUSPlatform GURTH_GUSPlatform MIZNIA_GUSPlatform,   
1831    before [;
1832       Enter:
1833          "A subway nymph suddenly appears. ~Remember passengers, to \
1834          board the subway cars, you just have to go 'in', or in the \
1835          appropriate direction of the car. Bye!~";
1836    ],
1837    has scenery;
1838                             
1839 Object metal_fence "metal fence"
1840    with name "fence" "barricade",
1841         description "It looks like a smooth metal fence.",
1842         before [;
1843            Climb, JumpOver: 
1844               "A subway worker yells ~Hey pal, no fare-jumpers!";
1845         ],
1846    found_in FROSTHAM_GUSPlatform ARAGAIN_GUSPlatform FUBLIO_GUSPlatform
1847             FROSTHAM_GUSStation ARAGAIN_GUSStation FUBLIO_GUSStation
1848    ANTHAR_GUSPlatform BORPHEE_GUSPlatform GURTH_GUSPlatform MIZNIA_GUSPlatform
1849    ANTHAR_GUSStation BORPHEE_GUSStation GURTH_GUSStation MIZNIA_GUSStation,   
1850    has scenery;            
1851    
1852
1853 ! **************************
1854 ! People/denizens/creatures
1855 ! **************************
1856       
1857 ! Thug, on PURPLE LINE
1858 Object thug "sinister-looking thug" PURPLELINE_car
1859    with name "thug" "hoodlum" "Davey",
1860         description "A thug, clearly. Some scrapper with an attitude, \
1861           and the desire to use it.",
1862         each_turn [ i ;
1863            if (self hasnt general) {
1864               give self general;
1865               "^The sinister-looking thug notices you from the back \
1866               of the car, and approaches. ~Well, well, well,~ he \
1867               says, ~what do we have here?~.";
1868            }
1869            i = random(4);
1870            if (i==1)
1871               "^The thug pokes you in the ribs.";
1872            if (i==2)
1873               "^The thug snarls at you. ~Hey, I'm talking to you, \
1874               Preacher-man.~";
1875            if (i==3)
1876               "^The thug tries to act friendly, and fails.";
1877            if (i==4)
1878               "^The thug scowls. ~You gonna tell me the error of \
1879               my ways, Padre?~";
1880         ],
1881         life [;
1882            Attack:
1883               "As you move to show the rake a lesson, you notice \
1884               several more thugs in the background, eyeing your every \
1885               move. The thug smiles as you back-off, cautiously.";      
1886            default:  "The thug is too busy being sinister.";
1887         ],
1888         before [;
1889            Cast:
1890               if (the_spell_was == espnis_spell) {
1891                  remove thug;
1892                  "You begin to extol the virtues of bedtime prayers, \
1893                  and the thug starts to yawn. Soon, his eyes blink \
1894                  slowly, and before long, he nods off to sleep! Two \
1895                  subway police officers, hiding until now, get up the \
1896                  nerve to capture the snoring thug, and drag him \
1897                  off, disappearing into the throng of people.";
1898               }
1899               if (the_spell_was == foblub_spell) {
1900                  "You give the thug a timely sermon on the \
1901 folly of crime in a moral society. He seems momentarily \
1902 fascinated. Too bad he wasn't actually sitting in anything."; 
1903               }
1904         ],        
1905    has animate;
1906         
1907 ! Annoying Yupple, on GREEN LINE (kinda a cross between a yuppie and a yipple)
1908 Object yupple "annoying yupple" GREENLINE_car
1909    with name "yupple" "annoying",
1910         description "A young yupple, immaculately dressed in a pinstripe \
1911           three-piece suit and tie.",
1912         article "an", 
1913         each_turn [ i ;
1914            if (self hasnt general) {
1915               give self general;
1916               "^The annoying-looking yupple notices you from the back \
1917               of the car, and approaches. ~A priest,~ he \
1918               says, ~Just the person I was looking for.~ He \
1919               squeezes into a seat near you.";
1920            }
1921            i = random(4);
1922            if (i==1)
1923               "^The yupple talks unceasingly about rainfall in some \
1924               place called ~the Amazon basin~.";
1925            if (i==2)
1926               "^The yupple smiles brightly. ~There's so much I have to \
1927               talk about!~";
1928            if (i==3)
1929               "^The yupple drones on about the science behind large \
1930               corporate takeovers.";
1931            if (i==4)
1932               "^The yupple laughs -- a sound somewhat like a snoring \
1933               bloodworm. ~So the guy says, 'I thought you meant my _wife_.' \
1934               Get it? Wife?~";
1935         ],
1936         life [;
1937            Attack:
1938               "Much as you'd like to, that's just something the \
1939               Order would probably frown upon.";              
1940         ],
1941         before [;
1942            Cast:
1943               if (the_spell_was == espnis_spell) {
1944                  "You give a sermon on the dangers of \
1945 improper bathtub caulking, but the yupple seems quite \
1946 fascinated. ~That reminds me of...~ You cringe.";
1947               }
1948               if (the_spell_was == foblub_spell) {
1949                  remove self;
1950                  "You draw a stunning parallel between corporate \
1951 morality and monarchy ruling. The yupple's jaw drops. ~I've got \
1952 to tell my boss that,~ he says, and tries to leave his seat, \
1953 but finds himself stuck fast. Several passengers nearby \
1954 take the opportunity to remove the yupple (seat included) to \
1955 a different part of the train.";
1956               }
1957         ],        
1958    has animate;
1959
1960
1961 ! **************************
1962 ! misc objects
1963 ! **************************
1964
1965 Object c9 "coin" class coin_class;
1966 Object c10 "coin" class coin_class;
1967 Object c11 "coin" class coin_class;
1968
1969 ! (Some common objects associated with GUS)
1970 Object GUS_sign "Sign" 
1971    with name "sign" "circular" "pole" "GUS",
1972         initial "Standing on a tall pole next to the stairs is \
1973                  a circular sign.",
1974         description "The sign reads ~GUS~, and has an arrow \
1975                      pointing down.",
1976         found_in FROSTHAM_GUSStop ARAGAIN_GUSStop ANTHAR_GUSStop
1977                  FUBLIO_GUSStop BORPHEE_GUSStop MIZNIA_GUSStop
1978                  GURTH_GUSStop,
1979    has static;
1980
1981
1982 Object GUS_brochure "subway brochure" FROSTHAM_Governer1
1983    with name "brochure" "subway" "GUS",
1984         description "\
1985            ~The Great Underground Subway~^^
1986            Adventurers who really need to get where they're going \
1987            in a hurry are going to love GUS! The new underground \
1988            high-speed rail system can be your personal ride to the \
1989            major travel points in Quendor, for just one mere zorkmid! \
1990            For Eastland travel to Frostham, Aragain and Fublio Valley, \
1991            the Purple line is at your service! For Westland travel \
1992            to New Borphee, Gurth City and Miznia, just jump on board \
1993            the Green line! And for you folks who need to get across \
1994            the Great Sea in a hurry, don't forget the Orange line, \
1995            stopping off at Aragain, Anthar and Gurth City! Remember, \
1996            there's no costs for transferring between lines either. \
1997            So don't delay, take the GUS today!",
1998     ! weight 5, 
1999     size 10,
2000 ;
2001         
2002 Object newspaper "newspaper" PURPLELINE_car
2003    with name "newspaper" "paper",
2004         initial "There's a discarded newspaper in a seat nearby.",
2005         description "A copy of ~The Fublio Tribune~, with \
2006         news, sports and feature sections to read about.",
2007         before
2008             [ w1; Consult:
2009             if (consult_words > 1)
2010                "Try reading about 'news', 'sports' or 'features'.";
2011             wn = consult_from; w1 = NextWord();
2012             switch (w1) {
2013                'news', 'headline', 'headlines':
2014                   "The news section has three major stories. \
2015 The headliner is the continued failure to resolve peace in the \
2016 Kobold war in southern Egreth. Recently, various troops have \
2017 been cut-off from the main camps by clever kobold raiding groups. \
2018 ^^A second story details the shocking death of a GUE Tech student \
2019 found in the subway tunnels in Gurth City Station, the apparent \
2020 victim of a GUS train. ~Don't know how he got in there.~ a \
2021 subway worker is quoted as saying.^^\
2022 Finally, a sad local news story about a nice couple in Fublio \
2023 valley who recently were victims of the kidnaping of their son. No \
2024 leads as of yet.";
2025                'sports':
2026                "Apparently, the golem brothers at Flathead \
2027 Stadium have amassed an amazing 322-0 win streak.";
2028                'features', 'feature':
2029                "The paper points out that culture seekers \
2030 should check out the newly discovered Leonardo Flathead \
2031 painting on exhibit at the Royal Museum.";     
2032                'ads', 'classified':
2033                "~FOR SALE: A new IF game -- 'SPIRITWRAK'. \
2034                Price: $0.00~";
2035                'comics', 'funnies':
2036                "No comics section. Bummer.";
2037                default: "You can't find anything in the paper about that.";             
2038             }
2039             ],
2040         ! weight 15, 
2041         size 15,
2042 ;
2043
2044 ! **************************
2045 ! spells & scrolls
2046 ! **************************