f1212403aefeeca997372158a03c3b1c543ef573
[spiritwrak.git] / src / FUBLIO.INF
1
2 ! ******************************************************************
3 ! FUBLIO.INF
4 ! ----------
5 ! Add-on file for SPIRITWRAK
6 ! -- Contains South Fublio Valley locations, items and creatures
7 ! ******************************************************************
8
9 Object FUBLIO_GUSStop "Southern Fublio Valley"
10    with description "You are in a southern region of Fublio \
11 Valley, where someone apparently decided to start \
12 a city. So far, a couple huts and farmhouses are the \
13 result. A rather run-down farmhouse lies to the \
14 southwest, a trail runs through grasslands to \
15 the south and a smaller trail runs along the hills to the \
16 southeast. To the north, you see a decrepit old \
17 building. There is also a stairway into the ground here.",
18         name "huts" "farmhouses" "farmhouse" "trail" "grasslands"
19 "hills" "stairway",
20         d_to FUBLIO_GUSStation,
21         sw_to Farm,
22         s_to Grasslands,
23         se_to Fublio_forest,
24         n_to Fublio_bank,
25         cant_go "You amble around the local area a bit, and return here.",
26    has light;
27    
28 Object Fublio_bank "Abandoned Bank"
29    with description "You're inside what must have once been a \
30 small branch office of the once indestructible Bank of Zork. \
31 However, the place has clearly been abandoned, and age has not \
32 been kind. Even the required portrait of J. Pierpont Flathead \
33 has been pilfered. An exit lies south.",
34    s_to [;
35 ! first case, r & (!p & !q & !s)
36       if ((children(r_vault) == 20) &&
37           (children(p_vault) == 0) &&
38           (children(q_vault) == 0) &&
39           (children(s_vault) == 0)) return FUBLIO_GUSStop;
40 ! second case, (p & s) & (q & !r)
41       if (((children(s_vault) > 0) && 
42            (children(p_vault) == children(s_vault))) &&
43           ((children(q_vault) == (children(p_vault) + 5)) &&
44            (children(r_vault) ~= 20))) 
45          return FUBLIO_GUSStop;
46       "A buzzer sounds, and some mysterious force \
47 prevents you from leaving!";
48    ],   
49    has light;
50
51 Class vault_class
52    with name "vault",
53    description "Basically a hollow rectangular hole cut \
54 into the wall.",
55    before [;
56       Receive:
57 if (noun hasnt is_coin)
58    "A strange force pushes your hand away.";
59    ],
60    capacity 100,
61    size 10,
62 has static container open transparent;      
63
64 Object p_vault "interest vault" Fublio_bank
65    class vault_class,
66    with name "interest",
67         initial [;
68           print "An vault labeled ~INTEREST PAID~ is \
69 open in the wall";
70 if (children(self) > 0) {
71    print ". Inside";
72    WriteListFrom(child(self), FULLINV_BIT + ENGLISH_BIT + ISARE_BIT);
73 }
74 ".";
75         ],
76 ;
77 Object q_vault "overhead vault" Fublio_bank
78    class vault_class,
79    with name "overhead",
80         initial [;
81 print "An vault labeled ~OVERHEAD~ is \
82 open in the wall";
83 if (children(self) > 0) {
84    print ". Inside";
85    WriteListFrom(child(self), FULLINV_BIT + ENGLISH_BIT + ISARE_BIT);
86 }
87 ".";
88         ],
89 ;
90 Object r_vault "basis vault" Fublio_bank
91    class vault_class,
92    with name "basis",
93         initial [;
94 print "An vault labeled ~BASIS~ is \
95 open in the wall";
96 if (children(self) > 0) {
97    print ". Inside";
98    WriteListFrom(child(self), FULLINV_BIT + ENGLISH_BIT + ISARE_BIT);
99 }
100 ".";
101         ],
102 ;
103 Object s_vault "loans vault" Fublio_bank
104    class vault_class,
105    with name "loans",
106         initial [;
107 print "An vault labeled ~LOANS~ is \
108 open in the wall";
109 if (children(self) > 0) {
110    print ". Inside";
111    WriteListFrom(child(self), FULLINV_BIT + ENGLISH_BIT + ISARE_BIT);
112 }
113 ".";
114         ],
115 ;
116
117
118 Object bank_memo "bank memo" Fublio_bank
119     with name "memo",
120 description "BANK WORKER GUIDELINES^^\
121 If at any point, account activity has been suspended \
122 (i.e. all regular account vaults have no funds) then \
123 it must be ensured that 20 zorkmids remain in basis, \
124 for potential loan requests.^^\
125 Otherwise, vaults must be maintained as follows:^^\
126 For interest waiting to be paid, the amount must \
127 equal the amount held in the loan payments vault. \
128 If this amount goes over the loan payments, talk \
129 to your local gnome manager to see about getting \
130 some outstanding loans paid back.^^\
131 Overhead should be kept at the amount in interest,
132 plus five.^^\
133 Loan payments should be kept at a positive amount.^^\
134 Make sure that both the loan and interest vaults \
135 are maintained properly, and at the same time, the \
136 overhead vault is maintained while the basis vault \
137 is kept at a non-suspended bank amount. If this \
138 is not the case, you may need to put some overtime \
139 in to straighten out the bank funds.",
140    size 15;
141
142 Object c30 "coin" r_vault class coin_class;
143 Object c31 "coin" r_vault class coin_class;
144 Object c32 "coin" r_vault class coin_class;
145 Object c33 "coin" r_vault class coin_class;
146 Object c34 "coin" r_vault class coin_class;
147 Object c35 "coin" r_vault class coin_class;
148 Object c36 "coin" r_vault class coin_class;
149 Object c37 "coin" r_vault class coin_class;
150 Object c38 "coin" r_vault class coin_class;
151 Object c39 "coin" r_vault class coin_class;
152 Object c40 "coin" r_vault class coin_class;
153 Object c41 "coin" r_vault class coin_class;
154 Object c42 "coin" r_vault class coin_class;
155 Object c43 "coin" r_vault class coin_class;
156 Object c44 "coin" r_vault class coin_class;
157 Object c45 "coin" r_vault class coin_class;
158 Object c46 "coin" r_vault class coin_class;
159 Object c47 "coin" r_vault class coin_class;
160 Object c48 "coin" r_vault class coin_class;
161 Object c49 "coin" r_vault class coin_class;
162
163 Object Farm "Farm"
164    with description "You're standing in front of a small farmhouse. \
165 A trail leads northeast, a sand bar lies to the southwest, \
166 and another trail heads east.",
167         name "trail",
168         ne_to FUBLIO_GUSStop,
169         sw_to Veg_fields,
170         e_to Grasslands,
171    has light;
172    
173 Nearby farmhouse "farmhouse"
174    with name "farmhouse" "house",
175         description "A small farmhouse, barely a shack.",
176         before [;
177            Enter: "The farmhouse is run-down enough already without you \
178                   stomping around in it.";
179         ],
180    has scenery;   
181    
182 Object Veg_fields "Oyster Farm"
183    with description [;
184            print "A coastline sand bar curves west a short distance \
185 here, ending in a shoal of large rocks. Nearby, \
186 someone has dug some shallow holes in the \
187 sand, probably farming for live Rotund Oysters, a popular \
188 Eastland delicacy.";
189            if (self hasnt general)
190 "Unfortunately, the oyster \
191 beds are too far inland, and they appear to be \
192 empty. A bit to the west you can see a small \
193 shoreline cave in the rocks.";
194            else
195 "The oyster \
196 beds are filled with water (similar to a good portion \
197 of the shoal) and look well stocked!";
198              ],
199              name "sand" "bar" "shoal" "rocks" "cave",
200              before [;
201 Fill: "Seawater is hardly a rare commodity these days.";
202              ],
203              ne_to Farm,
204              w_to [;
205                if (self hasnt general) {
206                   print "You try to head towards the cave, but \
207 the unstable rocks and sea waves make it "; 
208                   if (FUBLIO_Cave hasnt general) {
209                   give FUBLIO_Cave general;
210                   print "difficult \
211 to get there from here. Suddenly, a rock slips from underfoot! \
212 You fall...^";
213                   return FUBLIO_Cave;
214                   }
215                   else 
216                   print "impossible \
217 to get there from here.^"; return 1;
218                } 
219                else
220                   "Any remainder of the sand bar west is \
221 now submerged by a high tide or rise in the sea.";
222              ],
223    has light;
224    
225 Nearby oyster_beds "oyster beds"
226    with name "beds" "holes" "hole",
227         description [; 
228           print "Some shallow";
229           if (Veg_fields hasnt general)
230             ", mostly empty holes in the sand.";
231             " holes in the sand, filled with sea water.";
232         ],
233         before [;
234            Search:
235               if (Veg_fields has general)
236                  "You find a couple immature oysters, and throw \
237 them back."; 
238            Receive:
239               "Someone is obviously trying to use these holes \
240 for oyster farming. Best to leave them as you found them.";
241         ],
242    has scenery;
243
244 Object FUBLIO_Cave "Dark Damp Cave"
245    with description [;
246         print "You seem to be in some underground cave. ";
247         if (FUBLIO_Cave.number == 1)
248 "There are no visible exits. You feel rather claustrophobic. \
249 You also hear some unexpected noises.";
250         else 
251 "There is a small dark tunnel leading south. \
252 You hear the sounds of rushing water from somewhere nearby.";
253         ],
254         number 1,
255         name "tunnel",
256         s_to [;
257            if (FUBLIO_Cave.number == 1)
258               "You can't go that way.";
259            if (FUBLIO_Cave.number == 3)
260               "The dark tunnel becomes blocked after a short distance \
261 by a great tidal swell! The sea has risen above the entrance!";              
262            else {
263               print "^You crawl through the dark tunnel, which \
264 seems to snake back and forth. After what seems like an \
265 eternity, you see daylight, and stumble forward. You find \
266 yourself on the sand bar again! Looking back, you can't \
267 locate the tunnel you just left at all!^";
268               FUBLIO_Cave.number = 3;
269               return Veg_fields;
270            } 
271         ],
272         before [;
273           Listen: "You hear the sounds of the sea all around you.";
274           Smell: "You smell the musty odor of the sea.";
275         ],
276 ;
277
278
279
280 Object Grasslands "Grassland Beach"
281    with description [;
282         if (self hasnt general)
283           print "A nice beach with lots of tall grasses hides \
284 behind a short dune here. The Great Sea stretches out \
285 to the south.";
286         else 
287            print "A deep marsh hides behind a short dune here. The Great Sea \
288         is making some inroads here, apparently. That volcano in \
289         the water to the south may have had something to do with it.";
290         " From here, you can go north, west or east. \
291         You can just glimpse some sort of tower-like structure \ 
292         far across the bay in the east.";
293         ],
294         name "beach" "grasses" "dune" "marsh" "sea" "tower",
295         w_to [;
296              if (player in sailboat)
297                 "You'll have to get out of the sailboat first.";
298              else return Farm;
299              ],
300         e_to [;
301              if (player in sailboat)
302                 "You'll have to get out of the sailboat first.";
303              else return Fublio_forest;
304              ],
305         n_to [;
306              if (player in sailboat)
307                 "You'll have to get out of the sailboat first.";
308              else return FUBLIO_GUSStop;
309              ],
310         s_to [;
311              if (player in sailboat) return On_Fublio_bay;
312              else
313                 "The tides here make swimming unadvisable.";
314              ],
315         before [;
316              Swim:  
317                 "The tides here make swimming unadvisable.";
318         ],
319   has light;
320   
321 Nearby sailboat "small sailboat"
322    with name "sailboat" "boat",
323         description [; 
324            if (self hasnt general)
325               "A nice little sailboat that looks pretty sea-worthy. \
326 The word ~MINIRVA~ is painted on one side.";
327            "A badly damaged sailboat. Several places bear deep \
328 cracks, as though the boat had been tossed in a violent storm.";
329         ],
330         before [;
331            Go:
332               if (self has general) {
333                  print "In it's current condition, this boat is lucky to \
334                  be floating.^";
335                  return 2;  ! disallow movement but say nothing
336                  }
337               else rtrue;
338            Cast:
339               if (the_spell_was == fiznav_spell) {
340                  print "You perform a nice liturgy to the Sea Gods,";
341                  if (self has general) {
342                  give self ~general;
343                  Achieved(6);
344                  " and before your very eyes, the sailboat repairs itself!";
345                  }
346                  else " however the boat seems unchanged.";
347               }
348            Take: 
349               "That's too cumbersome to carry.";
350         ],
351         capacity 15,                                                          
352         size 30,
353    has enterable static container open;
354    
355 ! Object c6 "coin" sailboat class coin_class;
356
357 Object On_Fublio_bay "On Fublio Bay"
358    with description [;
359         print "You are sailing on Fublio Bay. A shoreline lies \
360 to the north. You could probably sail out of the bay \
361 to the south, but I'd advise against it, \
362 the winds aren't very strong. To the northeast \
363 you can see ";
364         if (self hasnt general)
365            "the tip \
366            of a peninsula where a lighthouse tower is standing.";
367         else 
368            "a partially submerged lighthouse tower. \
369            Also, to the southeast is a small volcanic island where \
370            you could probably land.";
371         ],
372         name "shoreline" "bay" "peninsula" "tower" "lighthouse"
373 "island",
374         n_to Grasslands,
375         s_to Lost_at_sea,
376         ne_to [;
377            if (self hasnt general)
378               "The winds blow the wrong way, and you end up back here.";
379            else return Lighthouse2;
380         ],
381         se_to [;
382            if (self hasnt general)
383               "You can't go that way.";
384            else return Volcano_island;
385         ],
386         before [;
387            Go:
388               if (noun==s_obj)
389                  print "^A sudden gust of wind sends your small craft \
390                    skimming out of control!^";
391            Swim, Exit:
392               if (player in sailboat)
393                  "The water's pretty deep here. I'd stay in the boat.";
394            Fill: "Seawater is hardly a rare commodity these days.";
395         ],
396         each_turn [;
397            if (seawater.number == 5) {
398               seawater.number = 10;
399               "^Many large bubbles are coming from somewhere deep in the \
400               seawater near you, as though the water was boiling! Also, \
401               you see some dark shape in the depths below rising!";
402            }
403            if (seawater.number == 4) {
404               seawater.number = 5;
405               "^There appears to be a steady stream of bubbles coming from \
406               somewhere deep in the water near you! Also, you see something \
407               dark rising from the depths below you!";
408            }
409            if (seawater.number == 3) {
410               seawater.number = 4;
411               "^You notice a few small bubbles rise to the surface of the sea.";
412            }
413            if (seawater.number == 2)
414               seawater.number = 3;
415         ],
416         
417    has light;
418
419 Object Lost_at_sea "Lost at Sea"
420    with description [;
421           print "You're lost at sea. The winds are completely dead. \
422 They managed to take you quite a ways out before they died, \
423 however, and it's currently hard to tell which way land was \
424 from here";
425          if (self has general)
426            ". Oddly, there's a volcano far out to the south, \
427            still smoldering from a recent eruption.";      
428          else ".";
429         ],
430         name "sea" "winds" "land",
431            cant_go "The winds are dead, and you're not going anywhere.",
432         before [;
433            Swim, Exit:
434               if (player in sailboat)
435                  "The water's pretty deep here. I'd stay in the boat.";
436            Fill: "Seawater is hardly a rare commodity these days.";
437         ],
438         each_turn [;
439            if (seawater.number == 9) {
440               seawater.number = 11;
441               "^Many large bubbles are coming from somewhere deep in the \
442               seawater near you, as though the water was boiling! Also, \
443               you see some dark shape in the depths below rising!";
444            }
445            if (seawater.number == 8) {
446               seawater.number = 9;
447               "^There appears to be a steady stream of bubbles coming from \
448               somewhere deep in the water near you.";
449            }
450            if (seawater.number == 7) {
451               seawater.number = 8;
452               "^You notice a small bubble rise to the surface of the sea.";
453            }
454            if (seawater.number == 6)
455               seawater.number = 7;
456         ],
457    has light;
458    
459 Object Fublio_forest "On Peninsula"
460    with description [;
461         print "You stand ";
462         if (self hasnt general)
463          "in a clearing on a grassland peninsula. A \
464           trail leads northwest from here, and another leads west. \
465           Off to the \
466           southeast, there's an entrance into what looks like an old \
467           abandoned lighthouse, just at the tip of the peninsula.";
468         if (self has general)
469          "on the southeast tip of a grassland peninsula. A \
470           trail leads northwest from here, and another leads west. Off to the \
471           southeast, you can see the top of what looks like a \
472           lighthouse, partially submerged in the Great Sea.";
473         ],
474         name "clearing" "grassland" "peninsula" "trail" 
475 "tower" "lighthouse" "sea",
476         nw_to FUBLIO_GUSStop,
477         w_to Grasslands,
478         se_to [;
479               if (self has general)
480               "Looks like you'd need a boat to get out to that \
481               lighthouse now."; 
482               else return Lighthouse1;
483               ],
484    has light;
485   
486 Object Lighthouse1 "Bottom of Lighthouse"
487    with description [;
488         print "You're inside an ancient lighthouse. The place \
489            must have been deserted quite a long time ago, and \
490            is now a mess of broken stone, cobwebs and seabird \
491            droppings. The rest of the peninsula is back \
492            northwest. You can see a hole above where a stairway \
493            probably entered an upper floor of the place, but \
494            the stairway itself crumbled into dust long ago";
495            if ((self hasnt general) && (amulet has worn)) {
496               give self general;
497            ".^^Your amulet suddenly gives off a bright purple flash, then \
498            returns to normal!";
499            }
500            else ".";
501        ],
502        name "stone" "cobwebs" "droppings" "hole",
503        nw_to Fublio_forest,
504        u_to "The hole is too far above you.",
505    has light;
506  
507 ! more scenery stuff.  This one's key though
508 ! (Sidenote:  Here's an example of a situation where one would probably
509 ! want an object that could be both a supporter and a container --
510 ! i.e. objects that float or sink could be handled easily.) 
511 Object seawater "water"
512    with name "water" "sea" "ocean",
513         description "Salty blue-green water surrounds you.",
514         time_left 0,
515         number 1,
516         weight 0,
517         size 100,
518         before [;
519            ThrownAt, Receive:
520               if (noun == toy_volcano) {
521                  if (location == On_Fublio_bay)  {
522                     seawater.number = 2;
523                     seawater.weight = 1;
524                  }
525                  else {
526                     seawater.number = 6;
527                     seawater.weight = 2;
528                  }
529                  StartTimer(self,3);
530                  remove toy_volcano;
531                  "The toy volcano drops into the water and sinks like a stone.";
532               }                            
533               else {
534                  remove noun;
535                  if (noun == umbrella && umbrella has open)
536                     "The umbrella seems to float on the water like a \
537 cloth dome for a short bit, but eventually sinks into the water.";
538                  CDefArt(noun); " sinks into the water and is soon out of sight.";
539               }              
540            Push, Pull, Turn, Take, Attack, Rub, Squeeze: "The sea water runs through your fingers.";
541            Taste, Drink: "It's just salty sea water.";
542            Search, LookUnder:
543               if (seawater.weight > 0 && seawater.number < 12)
544                  "There's something down there all right!";
545               else {
546                  if (random(10) < 2)
547                     "You glimpse a large grouper swimming under the \
548 water, and watch it swim away.";
549                  else
550                     "The water seems choppy and deep. You notice \
551 nothing beneath the waves at the moment.";
552               }
553         ],
554         found_in On_Fublio_bay Lost_at_sea,
555         time_out [ ;
556            ! a fairly simple event here, but nonetheless dramatic...
557            ! -- 1st, if we dropped the volcano in the bay (correct)
558            ! set water descriptions so that player won't see bubbles
559            seawater.number = 12;           
560            ! set CAVE number for endgame
561            FUBLIO_Cave.number = 3;
562            if (seawater.weight == 1) {
563            ! first, set up all room generals so that descriptions are 
564            ! changed.
565            give Grasslands general;
566            give Veg_fields general;
567            give Fublio_forest general;
568            give farmer general;  ! he'll give player sphere next encounter
569            give sailboat general;  ! damages sailboat, regardless of where it is
570            move sailboat to Grasslands;
571            ! Modify On_Fublio_bay paths, new one to island, new one to tower.
572            give On_Fublio_bay general;
573            ! Now, check location.  Certain areas will kill player in 
574            ! tidalwave.  Certain areas will cause an audible explosion.
575            ! Remainder do nothing (but shouldn't happen)
576            if (location == Veg_fields or Grasslands or Lighthouse1) {
577               deadflag = 1;
578               "^There's a massive explosion from the south! You turn \
579               and rub your eyes in disbelief. There's a \
580               volcano rising out of the sea! Unfortunately, \
581               there's also a large tidalwave headed your way \
582               (caused by volcanic eruption at sea, no doubt) which \
583               engulfs you as you try to scramble for higher ground! \
584               You struggle valiantly, but drown in deep water.";              
585            }
586            if (location == FUBLIO_GUSStop or Farm or Fublio_forest) {
587               "^You hear a massive explosion from the south! \
588               It sounded pretty far off, but whatever it was, it \
589               was loud.";           
590            }
591            if (location == On_Fublio_bay) {
592               deadflag = 1;
593                     "^Suddenly, the water around you literally lifts you into \
594                     the sky in an enormous explosion! The last thing you \
595                     see is the emerging mouth of an active and hungry volcano!";
596                           }        
597            if (location == Lost_at_sea) {
598               deadflag = 1;
599               "^You hear a large explosion off to the north! \
600 A massive tidal swell rushes by and tosses your small craft violently, \
601 knocking you into the water. As you watch the waves carry the boat
602 away, a giant grouper swims up and swallows you."; 
603            }             
604            }
605            ! -- else, we dropped it in the sea (bummer)
606            ! (this implies that 1) only the sea descrp will change, 
607            ! 2) the player is still stuck at sea, and will be killed 
608            ! for his trouble.
609           else {
610              give sailboat general;  ! just keeping with the story...
611              give Lost_at_sea general;
612              move sailboat to Grasslands;  ! made it back to shore somehow...
613              deadflag = 1;
614              "^Suddenly, the water around you literally lifts you into \
615              the sky in an enormous explosion! The last thing you \
616              see is the emerging mouth of an active and hungry volcano!";
617           }        
618         ],
619    has scenery container open;
620
621
622 Object Lighthouse2 "Near Submerged Lighthouse"
623    with description [;
624           print "You're on the outside of what looks like the upper \
625            part of a lighthouse, sticking straight out of the sea. \
626            The lighthouse is broken in many places, and several areas \
627            provide ledge-space to stand on. In fact, you could probably \
628            climb into the lighthouse through one of many large \
629            cracks in the walls to the east. The rest of Fublio bay \
630            is back southwest";
631           if ((self has general) || (Lighthouse1 has general) || 
632               (amulet hasnt worn))
633            ".";
634            else {
635               give self general;
636            ".^^Your amulet suddenly gives off a bright purple flash, then \
637            returns to normal!";
638           }                             
639         ],
640         name "lighthouse" "cracks",
641         e_to [;
642            if (player in sailboat) 
643               "You'll need to get out of the boat first.";
644            else return In_lighthouse;
645         ],
646      !   in_to [;
647      !      if (player in sailboat) 
648      !         "You'll need to get out of the boat first.";
649      !      else return In_lighthouse;
650      !   ],
651         sw_to [;
652            if (player notin sailboat)
653               "The water looks pretty choppy. I'd suggest you use a \
654               sea-going vessel of some sort.";
655            else return On_Fublio_bay;
656         ],
657     has light;
658     
659     
660 Object Volcano_island "Volcanic Island"
661    with description "You're on the north shore of a small volcanic \
662          island in the middle of Fublio bay. A little more \
663          shore lies to the south. The bay spreads out before \
664          you to the northwest.",
665         name "bay",
666         nw_to [;
667            if (player notin sailboat)
668               "The water looks pretty choppy. I'd suggest you use a \
669               sea-going vessel of some sort.";
670            else return On_Fublio_bay;
671         ],
672         s_to [;
673            if (player in sailboat) 
674               "You'll need to get out of the boat first.";
675            else return Island2;
676         ],
677         before [;
678            Swim:  "Near a still-active volcano? Not wise.";
679         ],
680    has light;                    
681
682 Object Island2 "South Part of Island"
683    with description "You're on a southern section of a small \
684           volcanic island in the middle of Fublio bay. Most \
685           of the area here is lava-rock, still warm. You can \
686           see a more open shore to the north.",
687         name "bay" "rock" "lava" "shore",
688         n_to Volcano_island,
689         before [;
690            Swim:  "Near a still-active volcano? Not wise.";
691         ],
692    has light; 
693
694 Nearby shipwreck "old shipwreck"
695    with name "shipwreck" "wreck" "ship",
696         initial "An old shipwreck is almost embedded in the lava \
697              here.",
698         description "It looks like an old navy vessel, \
699              stuck fast in the surrounding rock. Its obviously \
700              been underwater for some time, as it is covered in \
701              barnacles and seaweed. The hull has partially rotted apart \
702              in many places.",
703         before [;
704            Enter:
705               "You find that anything left to enter in the wreck \
706               has pretty much decayed away.";
707            Cast:
708               if (the_spell_was == fiznav_spell) 
709                  "You perform a nice ritual to the Sea Gods, and \
710                  before your very eyes, the ship attempts to repair \
711                  itself! But there's too much damage, and not \
712                  even the aid of the Sea Gods can fix this craft. \
713                  The chant fails.";
714            Search: 
715               if (self has general) {
716                  move green_rod_piece to parent(self);
717                  give self ~general;
718                  Achieved(7);
719                  "Something about the old boat rings a familiar tune. \
720 You check near something that might have once been a mast, and \
721 uncover a familiar green rod!";
722               }
723         ],
724    has static;   
725
726 Object In_lighthouse "Lighthouse, upper level"
727    with description "You're inside an abandoned lighthouse, on what \
728           must be an upper floor. The whole interior is lifeless and \
729           barren. There's a large broken crack in the western wall. \
730           You also notice a hole in the floor nearby, which might \
731           have been an exitway a long, long time ago.",
732        name "crack" "hole",
733        w_to [;
734           if (water_spirit in self)
735              "The water spirit buffets you with water and \
736              prevents you from leaving.";
737           else return Lighthouse2;
738        ],
739        d_to [;
740           deadflag = 1;
741           "You drop through the hole, and land in cold dark water! \
742           Trapped in an enclosed pool of seawater, with the hole \
743           too far above you, you drown shortly afterwards.";
744        ],   
745        before [;
746           Listen:  "You hear some sloshing noises from below the floor.";
747        ],
748 has light;
749
750
751
752 ! ************
753 ! creatures
754 ! ************
755
756 Object farmer "farmer" Farm
757    with name "farmer",
758         initial "There's a tired-looking farmer here.",
759         description "It looks like he's been working pretty hard \
760                      in the sun.",
761         each_turn [;
762            if (self hasnt general) {
763               if (random(10) == 1)
764                  "^~'Forget zucchini,' they told me, 'Go into oyster \
765                  farming. You'll make a fortune.' Ha!~";
766            }
767            else {
768               remove farmer;
769               move silver_sphere to player;
770               "^The farmer sees you approach and rushes to \
771               greet you. ~I saw what you did, sir, yes indeed. \
772               A mighty crazy thing to do, calling a volcano outa \
773               the water like that. But you did it! And \
774               my oyster beds thank you kindly! I'd like to \
775               repay the favor, but I'm only a poor farmer.~ He \
776               pauses, then searches his pockets. ~Here,~ he says, \
777               putting something in your hand. ~Found it digging in \
778               the sand. Don't know what it is, but I'll bet you \
779               can use it.~ He smiles and disappears into the \
780               farmhouse.";
781            }
782         ], 
783         life [;
784            Attack, ThrowAt:
785               "Something about attacking a down-on-his-luck \
786 farmer just doesn't seem right, so you stop.";
787            Answer:
788               if (special_word == 'hello')
789                  "The farmer nods in your direction. \
790 ~How do, stranger?~";
791            Ask:
792               if (second == 'oyster' or 'farm' or 'oysters')
793                  "~Did a foolish thing, sir, tried my luck with \
794                  oyster farming this year. The place is too far \
795                  from the sea, and I can't get any oysters in my \
796                  beds, 'cause there's no water to grow 'em in.~";
797            Show:
798               if (noun has is_sphere)
799                  "~Hey, I seen something like that once.~";
800            Give, Tell:
801               "The farmer smiles, but shakes his head.";
802            default:  "The farmer is preoccupied with something as \
803 he squints into the sun.";
804         ],             
805         before [;
806            Cast:
807              if (the_spell_was == foblub_spell or espnis_spell)
808 "~I'm just a simple farmer, sir. I'm afraid you're losing me \
809 with your fancy words.~"; 
810         ],
811    has animate;
812
813 Object water_spirit "water spirit" In_Lighthouse
814   with name "spirit",
815        description "It looks like a large moving mass of seawater, \
816                   in a somewhat man-like shape.",
817        each_turn [ i ;
818        ! spirit attack
819        ! (in general, the 4 spirits are _very_ dangerous.
820        ! There's a 1/5 chance of killing outright, and 2
821        ! chances of doing 10 and 5 points of damage respectively.
822        ! In short, the player needs to realize it's time to swanko,
823        ! and do so, quickly)
824        if (self hasnt general) {
825             give self general ~concealed;    
826             "^Suddenly, water seeps in from the west, and forms \
827             into a large vaguely-humanoid shape before your very \
828             eyes!";
829        }
830        i = random(5);
831        if (i == 1) {
832           deadflag = 1;
833           "^The water creature moves quickly, and smothers you \
834           in water! You try to escape, but the creature has \
835           amazing strength and weight! The spirit soon \
836           envelopes your head, and you drown...";
837        }
838        if (i == 2) 
839           Player_HP_CUR = Player_HP_CUR - 10;
840        if (i==3) 
841           Player_HP_CUR = Player_HP_CUR - 5;
842        if (Player_HP_CUR <= 0) {
843           deadflag = 1;
844           "^The last blow from the water spirit was too much for \
845           you, I'm afraid to say. You sink to the ground, to \
846           weak to defend yourself, as the spirit slowly oozes \
847           towards you for the final blow...";
848        } 
849        print "^The water spirit ";
850        if (i==2)
851           "blasts you with a jet of seawater! \
852           It feels like a battering ram just used you for a \
853           practice drawbridge!";
854        if (i==3)
855           "buffets you with small jets of water! \
856           You feel exposed areas of skin getting rubbed raw by \
857           the force of the water!";
858        "forms into a small wave and tries to \
859        crush you, but you evade just in time!";
860        ],
861        before [;
862           Cast:
863             if (the_spell_was == swanko_spell) {
864                remove self;
865                "As you speak the chant, the water spirit falls back \
866                in fear! You finish the chant, and the water spirit \
867                makes one last attempt to smother you, but dissipates \
868                with a splash!";
869             }
870             print "The creature makes a banshee-howl as you chant.^"; 
871        ],
872        life [ ;
873           Attack: 
874             print "You ";
875             if (random(20) >= 8)
876             "strike the water creature, but your attack passes \
877             harmlessly through it! You hear a strange noise from \
878             the creature -- akin to a drowning man laughing.";
879             "attack the water spirit, but miss!";
880           default: "It's too busy trying to kill you.";
881        ],
882    has animate concealed;
883
884 Object mad_hermit "mad hermit" FUBLIO_Cave
885    with name "hermit" "madman" "mad",
886         description "He looks quite crazed -- his wild eyes \
887 are almost unbearable to watch. His clothes are complete \
888 tatters, and he looks rather emaciated.",
889         each_turn [ i ;
890         i = random(10);
891         switch(i) {
892         1: "^The hermit stares at you and screams. \
893 ~Demon, trickster -- you'll not fool me again!~";
894         2: "^The hermit smiles at you. ~Come to pay \
895 your respects to an old man, Humboz? I know it's you.~";
896         3: "^The hermit shrinks into a corner and weeps. ~No more, no more. I \
897 can help you no more.~"; 
898         4: "^The hermit hums a little tune.";
899         5: "^The hermit talks to someone or thing unseen. \
900 ~Closer, closer, nary a sound betray...~";
901         6: "^The hermit grabs your shoulder. ~I am hampered,~ \
902 he pleads with you, ~by the lack of an algebraic solution! \
903 That was where I went wrong!~";
904         7: "^The hermit babbles something about a shining \
905 tower on a hill.";
906         8: "^The hermit pauses. ~Listen, do you hear them? \
907 The voices -- everywhere!~";
908         default: "^The hermit giggles for no reason.";
909         }  
910         ],
911         life [;
912           Answer:
913             if (special_word=='hello')
914                "~We meet again, do we not?~";
915           Ask:
916             switch (second) {
917             'exit', 'outside':  "The hermit laughs. \
918 ~You want to leave already? Very well, you'll find \
919 the exit where you came in.~";
920             'entrance': 
921                print "The hermit chuckles. ~Forgotten where \
922 you came in? It hasn't gone anywhere.";  
923                if (FUBLIO_Cave.number == 1) {
924                   FUBLIO_Cave.number = 2;
925                   "~ He points at a space in the south wall, which \
926 you realize is actually a well-hidden tunnel.";  
927                }
928                else "~";
929           !  'sack': "~A fine pet, mine and mine forever.~";
930             'food', 'fish': "~My friends of the deep, they \
931 sacrifice themselves for me, as I will some day for them.~";
932             default: "~Many are the secrets you keep.~";
933             }
934           Give:
935             if (noun has edible) {
936                print "The hermit greedily takes ", (the) noun, " and \
937 gobbles it quickly";
938                remove noun;
939                if (p1 in self) {
940                   move p1 to player;
941                   print ". ~Good, yes. \
942 I have something for you -- something you will treasure as I have.~ He \
943 gives you a piece of parchment.";
944                }
945                "."; 
946             }
947             "~No, no, I already have many of those.~";
948           Attack, ThrowAt, Order:
949             "The hermit cowers in one corner of \
950 the cave, screaming. You stop, and reconsider.";
951           Kiss:
952             "Tears run down the hermit's cheek.";
953           Show, Tell:
954             if (noun has edible)
955                "The hermit visibly salivates.";
956             "The hermit gibbers maniacally."; 
957         ],
958         before [;
959            Cast:
960        "The hermit joins in with your chanting, and \
961 twists the meaning of the words! You quickly stop.";
962         ],
963         time_left 0,
964         time_out [;
965            deadflag = 1;
966            "^The hermit seems to recognize you through his madness! \
967 ~You have returned! The Big Man! Biggest of them all! \
968 Returned to deliver me from my prison. I had never forsaken \
969 you!~^^\
970 ~Wait,~ you protest, ~stop this madness!~^^\
971 But the crazed hermit continues. He prostrates in front \
972 of you and babbles incoherently. ~I put all my faith \
973 in you -- I have to leave here, before I go insane! \
974 The others, they abandoned hope. But not me. No! \
975 You have always had our best interests in mind.~^^\
976 He begins an eerie, frenetic song that jars your very soul. \
977 You watch the water level start to rise near the southern \
978 entrance, and wait for the end.";
979         ],           
980    has animate transparent;
981
982
983  
984 ! ************
985 ! spells/scrolls
986 ! ************
987
988 Object spotted_scroll "spotted scroll" FUBLIO_Cave
989   class scroll_class,
990   with name "spotted",
991 ;
992
993 Object bekdab_spell "turn iron to rust" spotted_scroll
994   class spell_class,
995   with name "bekdab",
996        magic [;
997              "Your chant goes unanswered. I guess you need pure iron.";
998        ],
999 ;
1000
1001 ! ************
1002 ! Misc objects
1003 ! ************
1004
1005
1006 Object sack "fur sack" sailboat
1007    with name "sack" "fur",
1008         description "A fairly large sack made of furs and animal \
1009 hides.",
1010         ! weight 20, 
1011         size 24,
1012         ! capacity 20,
1013    has container openable;
1014
1015 ! (wet -- Anabais is one of four evil elemental powers)
1016 Object p1 "wet parchment" mad_hermit
1017    class parchment_class,
1018    with name "wet",
1019 description "~...evidence that there are more demons like \
1020 the evil Anabais! In fact, I suspect that four demons, not \
1021 one, faced the Ancient Ones in spiritual battle at the \
1022 dawn of time! To suspect this is...~";
1023
1024
1025 ! 1st rod piece -- GRAY
1026 Object gray_rod_piece "gray rod piece" In_Lighthouse
1027   class rod_class,
1028   with name "gray",
1029        initial "In the center of the room is a short gray rod.",
1030        description "It's a short section of a rod made of some \
1031 undeterminable hard substance, \
1032 colored gray like murky water. A piece of the Rod of \
1033 the Ancients, no doubt!",
1034 ;
1035
1036 ! 1st sphere - SILVER
1037 Object silver_sphere "silver sphere"
1038    class sphere_class,
1039    with name "silver",
1040         description "A tiny perfect silver sphere, made of some strange \
1041            unknown metal.",
1042 ;
1043