+
+! ******************************************************************
+! FUBLIO.INF
+! ----------
+! Add-on file for SPIRITWRAK
+! -- Contains South Fublio Valley locations, items and creatures
+! ******************************************************************
+
+Object FUBLIO_GUSStop "Southern Fublio Valley"
+ with description "You are in a southern region of Fublio \
+Valley, where someone apparently decided to start \
+a city. So far, a couple huts and farmhouses are the \
+result. A rather run-down farmhouse lies to the \
+southwest, a trail runs through grasslands to \
+the south and a smaller trail runs along the hills to the \
+southeast. To the north, you see a decrepit old \
+building. There is also a stairway into the ground here.",
+ name "huts" "farmhouses" "farmhouse" "trail" "grasslands"
+"hills" "stairway",
+ d_to FUBLIO_GUSStation,
+ sw_to Farm,
+ s_to Grasslands,
+ se_to Fublio_forest,
+ n_to Fublio_bank,
+ cant_go "You amble around the local area a bit, and return here.",
+ has light;
+
+Object Fublio_bank "Abandoned Bank"
+ with description "You're inside what must have once been a \
+small branch office of the once indestructible Bank of Zork. \
+However, the place has clearly been abandoned, and age has not \
+been kind. Even the required portrait of J. Pierpont Flathead \
+has been pilfered. An exit lies south.",
+ s_to [;
+! first case, r & (!p & !q & !s)
+ if ((children(r_vault) == 20) &&
+ (children(p_vault) == 0) &&
+ (children(q_vault) == 0) &&
+ (children(s_vault) == 0)) return FUBLIO_GUSStop;
+! second case, (p & s) & (q & !r)
+ if (((children(s_vault) > 0) &&
+ (children(p_vault) == children(s_vault))) &&
+ ((children(q_vault) == (children(p_vault) + 5)) &&
+ (children(r_vault) ~= 20)))
+ return FUBLIO_GUSStop;
+ "A buzzer sounds, and some mysterious force \
+prevents you from leaving!";
+ ],
+ has light;
+
+Class vault_class
+ with name "vault",
+ description "Basically a hollow rectangular hole cut \
+into the wall.",
+ before [;
+ Receive:
+if (noun hasnt is_coin)
+ "A strange force pushes your hand away.";
+ ],
+ capacity 100,
+ size 10,
+has static container open transparent;
+
+Object p_vault "interest vault" Fublio_bank
+ class vault_class,
+ with name "interest",
+ initial [;
+ print "An vault labeled ~INTEREST PAID~ is \
+open in the wall";
+if (children(self) > 0) {
+ print ". Inside";
+ WriteListFrom(child(self), FULLINV_BIT + ENGLISH_BIT + ISARE_BIT);
+}
+".";
+ ],
+;
+Object q_vault "overhead vault" Fublio_bank
+ class vault_class,
+ with name "overhead",
+ initial [;
+print "An vault labeled ~OVERHEAD~ is \
+open in the wall";
+if (children(self) > 0) {
+ print ". Inside";
+ WriteListFrom(child(self), FULLINV_BIT + ENGLISH_BIT + ISARE_BIT);
+}
+".";
+ ],
+;
+Object r_vault "basis vault" Fublio_bank
+ class vault_class,
+ with name "basis",
+ initial [;
+print "An vault labeled ~BASIS~ is \
+open in the wall";
+if (children(self) > 0) {
+ print ". Inside";
+ WriteListFrom(child(self), FULLINV_BIT + ENGLISH_BIT + ISARE_BIT);
+}
+".";
+ ],
+;
+Object s_vault "loans vault" Fublio_bank
+ class vault_class,
+ with name "loans",
+ initial [;
+print "An vault labeled ~LOANS~ is \
+open in the wall";
+if (children(self) > 0) {
+ print ". Inside";
+ WriteListFrom(child(self), FULLINV_BIT + ENGLISH_BIT + ISARE_BIT);
+}
+".";
+ ],
+;
+
+
+Object bank_memo "bank memo" Fublio_bank
+ with name "memo",
+description "BANK WORKER GUIDELINES^^\
+If at any point, account activity has been suspended \
+(i.e. all regular account vaults have no funds) then \
+it must be ensured that 20 zorkmids remain in basis, \
+for potential loan requests.^^\
+Otherwise, vaults must be maintained as follows:^^\
+For interest waiting to be paid, the amount must \
+equal the amount held in the loan payments vault. \
+If this amount goes over the loan payments, talk \
+to your local gnome manager to see about getting \
+some outstanding loans paid back.^^\
+Overhead should be kept at the amount in interest,
+plus five.^^\
+Loan payments should be kept at a positive amount.^^\
+Make sure that both the loan and interest vaults \
+are maintained properly, and at the same time, the \
+overhead vault is maintained while the basis vault \
+is kept at a non-suspended bank amount. If this \
+is not the case, you may need to put some overtime \
+in to straighten out the bank funds.",
+ size 15;
+
+Object c30 "coin" r_vault class coin_class;
+Object c31 "coin" r_vault class coin_class;
+Object c32 "coin" r_vault class coin_class;
+Object c33 "coin" r_vault class coin_class;
+Object c34 "coin" r_vault class coin_class;
+Object c35 "coin" r_vault class coin_class;
+Object c36 "coin" r_vault class coin_class;
+Object c37 "coin" r_vault class coin_class;
+Object c38 "coin" r_vault class coin_class;
+Object c39 "coin" r_vault class coin_class;
+Object c40 "coin" r_vault class coin_class;
+Object c41 "coin" r_vault class coin_class;
+Object c42 "coin" r_vault class coin_class;
+Object c43 "coin" r_vault class coin_class;
+Object c44 "coin" r_vault class coin_class;
+Object c45 "coin" r_vault class coin_class;
+Object c46 "coin" r_vault class coin_class;
+Object c47 "coin" r_vault class coin_class;
+Object c48 "coin" r_vault class coin_class;
+Object c49 "coin" r_vault class coin_class;
+
+Object Farm "Farm"
+ with description "You're standing in front of a small farmhouse. \
+A trail leads northeast, a sand bar lies to the southwest, \
+and another trail heads east.",
+ name "trail",
+ ne_to FUBLIO_GUSStop,
+ sw_to Veg_fields,
+ e_to Grasslands,
+ has light;
+
+Nearby farmhouse "farmhouse"
+ with name "farmhouse" "house",
+ description "A small farmhouse, barely a shack.",
+ before [;
+ Enter: "The farmhouse is run-down enough already without you \
+ stomping around in it.";
+ ],
+ has scenery;
+
+Object Veg_fields "Oyster Farm"
+ with description [;
+ print "A coastline sand bar curves west a short distance \
+here, ending in a shoal of large rocks. Nearby, \
+someone has dug some shallow holes in the \
+sand, probably farming for live Rotund Oysters, a popular \
+Eastland delicacy.";
+ if (self hasnt general)
+"Unfortunately, the oyster \
+beds are too far inland, and they appear to be \
+empty. A bit to the west you can see a small \
+shoreline cave in the rocks.";
+ else
+"The oyster \
+beds are filled with water (similar to a good portion \
+of the shoal) and look well stocked!";
+ ],
+ name "sand" "bar" "shoal" "rocks" "cave",
+ before [;
+Fill: "Seawater is hardly a rare commodity these days.";
+ ],
+ ne_to Farm,
+ w_to [;
+ if (self hasnt general) {
+ print "You try to head towards the cave, but \
+the unstable rocks and sea waves make it ";
+ if (FUBLIO_Cave hasnt general) {
+ give FUBLIO_Cave general;
+ print "difficult \
+to get there from here. Suddenly, a rock slips from underfoot! \
+You fall...^";
+ return FUBLIO_Cave;
+ }
+ else
+ print "impossible \
+to get there from here.^"; return 1;
+ }
+ else
+ "Any remainder of the sand bar west is \
+now submerged by a high tide or rise in the sea.";
+ ],
+ has light;
+
+Nearby oyster_beds "oyster beds"
+ with name "beds" "holes" "hole",
+ description [;
+ print "Some shallow";
+ if (Veg_fields hasnt general)
+ ", mostly empty holes in the sand.";
+ " holes in the sand, filled with sea water.";
+ ],
+ before [;
+ Search:
+ if (Veg_fields has general)
+ "You find a couple immature oysters, and throw \
+them back.";
+ Receive:
+ "Someone is obviously trying to use these holes \
+for oyster farming. Best to leave them as you found them.";
+ ],
+ has scenery;
+
+Object FUBLIO_Cave "Dark Damp Cave"
+ with description [;
+ print "You seem to be in some underground cave. ";
+ if (FUBLIO_Cave.number == 1)
+"There are no visible exits. You feel rather claustrophobic. \
+You also hear some unexpected noises.";
+ else
+"There is a small dark tunnel leading south. \
+You hear the sounds of rushing water from somewhere nearby.";
+ ],
+ number 1,
+ name "tunnel",
+ s_to [;
+ if (FUBLIO_Cave.number == 1)
+ "You can't go that way.";
+ if (FUBLIO_Cave.number == 3)
+ "The dark tunnel becomes blocked after a short distance \
+by a great tidal swell! The sea has risen above the entrance!";
+ else {
+ print "^You crawl through the dark tunnel, which \
+seems to snake back and forth. After what seems like an \
+eternity, you see daylight, and stumble forward. You find \
+yourself on the sand bar again! Looking back, you can't \
+locate the tunnel you just left at all!^";
+ FUBLIO_Cave.number = 3;
+ return Veg_fields;
+ }
+ ],
+ before [;
+ Listen: "You hear the sounds of the sea all around you.";
+ Smell: "You smell the musty odor of the sea.";
+ ],
+;
+
+
+
+Object Grasslands "Grassland Beach"
+ with description [;
+ if (self hasnt general)
+ print "A nice beach with lots of tall grasses hides \
+behind a short dune here. The Great Sea stretches out \
+to the south.";
+ else
+ print "A deep marsh hides behind a short dune here. The Great Sea \
+ is making some inroads here, apparently. That volcano in \
+ the water to the south may have had something to do with it.";
+ " From here, you can go north, west or east. \
+ You can just glimpse some sort of tower-like structure \
+ far across the bay in the east.";
+ ],
+ name "beach" "grasses" "dune" "marsh" "sea" "tower",
+ w_to [;
+ if (player in sailboat)
+ "You'll have to get out of the sailboat first.";
+ else return Farm;
+ ],
+ e_to [;
+ if (player in sailboat)
+ "You'll have to get out of the sailboat first.";
+ else return Fublio_forest;
+ ],
+ n_to [;
+ if (player in sailboat)
+ "You'll have to get out of the sailboat first.";
+ else return FUBLIO_GUSStop;
+ ],
+ s_to [;
+ if (player in sailboat) return On_Fublio_bay;
+ else
+ "The tides here make swimming unadvisable.";
+ ],
+ before [;
+ Swim:
+ "The tides here make swimming unadvisable.";
+ ],
+ has light;
+
+Nearby sailboat "small sailboat"
+ with name "sailboat" "boat",
+ description [;
+ if (self hasnt general)
+ "A nice little sailboat that looks pretty sea-worthy. \
+The word ~MINIRVA~ is painted on one side.";
+ "A badly damaged sailboat. Several places bear deep \
+cracks, as though the boat had been tossed in a violent storm.";
+ ],
+ before [;
+ Go:
+ if (self has general) {
+ print "In it's current condition, this boat is lucky to \
+ be floating.^";
+ return 2; ! disallow movement but say nothing
+ }
+ else rtrue;
+ Cast:
+ if (the_spell_was == fiznav_spell) {
+ print "You perform a nice liturgy to the Sea Gods,";
+ if (self has general) {
+ give self ~general;
+ Achieved(6);
+ " and before your very eyes, the sailboat repairs itself!";
+ }
+ else " however the boat seems unchanged.";
+ }
+ Take:
+ "That's too cumbersome to carry.";
+ ],
+ capacity 15,
+ size 30,
+ has enterable static container open;
+
+! Object c6 "coin" sailboat class coin_class;
+
+Object On_Fublio_bay "On Fublio Bay"
+ with description [;
+ print "You are sailing on Fublio Bay. A shoreline lies \
+to the north. You could probably sail out of the bay \
+to the south, but I'd advise against it, \
+the winds aren't very strong. To the northeast \
+you can see ";
+ if (self hasnt general)
+ "the tip \
+ of a peninsula where a lighthouse tower is standing.";
+ else
+ "a partially submerged lighthouse tower. \
+ Also, to the southeast is a small volcanic island where \
+ you could probably land.";
+ ],
+ name "shoreline" "bay" "peninsula" "tower" "lighthouse"
+"island",
+ n_to Grasslands,
+ s_to Lost_at_sea,
+ ne_to [;
+ if (self hasnt general)
+ "The winds blow the wrong way, and you end up back here.";
+ else return Lighthouse2;
+ ],
+ se_to [;
+ if (self hasnt general)
+ "You can't go that way.";
+ else return Volcano_island;
+ ],
+ before [;
+ Go:
+ if (noun==s_obj)
+ print "^A sudden gust of wind sends your small craft \
+ skimming out of control!^";
+ Swim, Exit:
+ if (player in sailboat)
+ "The water's pretty deep here. I'd stay in the boat.";
+ Fill: "Seawater is hardly a rare commodity these days.";
+ ],
+ each_turn [;
+ if (seawater.number == 5) {
+ seawater.number = 10;
+ "^Many large bubbles are coming from somewhere deep in the \
+ seawater near you, as though the water was boiling! Also, \
+ you see some dark shape in the depths below rising!";
+ }
+ if (seawater.number == 4) {
+ seawater.number = 5;
+ "^There appears to be a steady stream of bubbles coming from \
+ somewhere deep in the water near you! Also, you see something \
+ dark rising from the depths below you!";
+ }
+ if (seawater.number == 3) {
+ seawater.number = 4;
+ "^You notice a few small bubbles rise to the surface of the sea.";
+ }
+ if (seawater.number == 2)
+ seawater.number = 3;
+ ],
+
+ has light;
+
+Object Lost_at_sea "Lost at Sea"
+ with description [;
+ print "You're lost at sea. The winds are completely dead. \
+They managed to take you quite a ways out before they died, \
+however, and it's currently hard to tell which way land was \
+from here";
+ if (self has general)
+ ". Oddly, there's a volcano far out to the south, \
+ still smoldering from a recent eruption.";
+ else ".";
+ ],
+ name "sea" "winds" "land",
+ cant_go "The winds are dead, and you're not going anywhere.",
+ before [;
+ Swim, Exit:
+ if (player in sailboat)
+ "The water's pretty deep here. I'd stay in the boat.";
+ Fill: "Seawater is hardly a rare commodity these days.";
+ ],
+ each_turn [;
+ if (seawater.number == 9) {
+ seawater.number = 11;
+ "^Many large bubbles are coming from somewhere deep in the \
+ seawater near you, as though the water was boiling! Also, \
+ you see some dark shape in the depths below rising!";
+ }
+ if (seawater.number == 8) {
+ seawater.number = 9;
+ "^There appears to be a steady stream of bubbles coming from \
+ somewhere deep in the water near you.";
+ }
+ if (seawater.number == 7) {
+ seawater.number = 8;
+ "^You notice a small bubble rise to the surface of the sea.";
+ }
+ if (seawater.number == 6)
+ seawater.number = 7;
+ ],
+ has light;
+
+Object Fublio_forest "On Peninsula"
+ with description [;
+ print "You stand ";
+ if (self hasnt general)
+ "in a clearing on a grassland peninsula. A \
+ trail leads northwest from here, and another leads west. \
+ Off to the \
+ southeast, there's an entrance into what looks like an old \
+ abandoned lighthouse, just at the tip of the peninsula.";
+ if (self has general)
+ "on the southeast tip of a grassland peninsula. A \
+ trail leads northwest from here, and another leads west. Off to the \
+ southeast, you can see the top of what looks like a \
+ lighthouse, partially submerged in the Great Sea.";
+ ],
+ name "clearing" "grassland" "peninsula" "trail"
+"tower" "lighthouse" "sea",
+ nw_to FUBLIO_GUSStop,
+ w_to Grasslands,
+ se_to [;
+ if (self has general)
+ "Looks like you'd need a boat to get out to that \
+ lighthouse now.";
+ else return Lighthouse1;
+ ],
+ has light;
+
+Object Lighthouse1 "Bottom of Lighthouse"
+ with description [;
+ print "You're inside an ancient lighthouse. The place \
+ must have been deserted quite a long time ago, and \
+ is now a mess of broken stone, cobwebs and seabird \
+ droppings. The rest of the peninsula is back \
+ northwest. You can see a hole above where a stairway \
+ probably entered an upper floor of the place, but \
+ the stairway itself crumbled into dust long ago";
+ if ((self hasnt general) && (amulet has worn)) {
+ give self general;
+ ".^^Your amulet suddenly gives off a bright purple flash, then \
+ returns to normal!";
+ }
+ else ".";
+ ],
+ name "stone" "cobwebs" "droppings" "hole",
+ nw_to Fublio_forest,
+ u_to "The hole is too far above you.",
+ has light;
+
+! more scenery stuff. This one's key though
+! (Sidenote: Here's an example of a situation where one would probably
+! want an object that could be both a supporter and a container --
+! i.e. objects that float or sink could be handled easily.)
+Object seawater "water"
+ with name "water" "sea" "ocean",
+ description "Salty blue-green water surrounds you.",
+ time_left 0,
+ number 1,
+ weight 0,
+ size 100,
+ before [;
+ ThrownAt, Receive:
+ if (noun == toy_volcano) {
+ if (location == On_Fublio_bay) {
+ seawater.number = 2;
+ seawater.weight = 1;
+ }
+ else {
+ seawater.number = 6;
+ seawater.weight = 2;
+ }
+ StartTimer(self,3);
+ remove toy_volcano;
+ "The toy volcano drops into the water and sinks like a stone.";
+ }
+ else {
+ remove noun;
+ if (noun == umbrella && umbrella has open)
+ "The umbrella seems to float on the water like a \
+cloth dome for a short bit, but eventually sinks into the water.";
+ CDefArt(noun); " sinks into the water and is soon out of sight.";
+ }
+ Push, Pull, Turn, Take, Attack, Rub, Squeeze: "The sea water runs through your fingers.";
+ Taste, Drink: "It's just salty sea water.";
+ Search, LookUnder:
+ if (seawater.weight > 0 && seawater.number < 12)
+ "There's something down there all right!";
+ else {
+ if (random(10) < 2)
+ "You glimpse a large grouper swimming under the \
+water, and watch it swim away.";
+ else
+ "The water seems choppy and deep. You notice \
+nothing beneath the waves at the moment.";
+ }
+ ],
+ found_in On_Fublio_bay Lost_at_sea,
+ time_out [ ;
+ ! a fairly simple event here, but nonetheless dramatic...
+ ! -- 1st, if we dropped the volcano in the bay (correct)
+ ! set water descriptions so that player won't see bubbles
+ seawater.number = 12;
+ ! set CAVE number for endgame
+ FUBLIO_Cave.number = 3;
+ if (seawater.weight == 1) {
+ ! first, set up all room generals so that descriptions are
+ ! changed.
+ give Grasslands general;
+ give Veg_fields general;
+ give Fublio_forest general;
+ give farmer general; ! he'll give player sphere next encounter
+ give sailboat general; ! damages sailboat, regardless of where it is
+ move sailboat to Grasslands;
+ ! Modify On_Fublio_bay paths, new one to island, new one to tower.
+ give On_Fublio_bay general;
+ ! Now, check location. Certain areas will kill player in
+ ! tidalwave. Certain areas will cause an audible explosion.
+ ! Remainder do nothing (but shouldn't happen)
+ if (location == Veg_fields or Grasslands or Lighthouse1) {
+ deadflag = 1;
+ "^There's a massive explosion from the south! You turn \
+ and rub your eyes in disbelief. There's a \
+ volcano rising out of the sea! Unfortunately, \
+ there's also a large tidalwave headed your way \
+ (caused by volcanic eruption at sea, no doubt) which \
+ engulfs you as you try to scramble for higher ground! \
+ You struggle valiantly, but drown in deep water.";
+ }
+ if (location == FUBLIO_GUSStop or Farm or Fublio_forest) {
+ "^You hear a massive explosion from the south! \
+ It sounded pretty far off, but whatever it was, it \
+ was loud.";
+ }
+ if (location == On_Fublio_bay) {
+ deadflag = 1;
+ "^Suddenly, the water around you literally lifts you into \
+ the sky in an enormous explosion! The last thing you \
+ see is the emerging mouth of an active and hungry volcano!";
+ }
+ if (location == Lost_at_sea) {
+ deadflag = 1;
+ "^You hear a large explosion off to the north! \
+A massive tidal swell rushes by and tosses your small craft violently, \
+knocking you into the water. As you watch the waves carry the boat
+away, a giant grouper swims up and swallows you.";
+ }
+ }
+ ! -- else, we dropped it in the sea (bummer)
+ ! (this implies that 1) only the sea descrp will change,
+ ! 2) the player is still stuck at sea, and will be killed
+ ! for his trouble.
+ else {
+ give sailboat general; ! just keeping with the story...
+ give Lost_at_sea general;
+ move sailboat to Grasslands; ! made it back to shore somehow...
+ deadflag = 1;
+ "^Suddenly, the water around you literally lifts you into \
+ the sky in an enormous explosion! The last thing you \
+ see is the emerging mouth of an active and hungry volcano!";
+ }
+ ],
+ has scenery container open;
+
+
+Object Lighthouse2 "Near Submerged Lighthouse"
+ with description [;
+ print "You're on the outside of what looks like the upper \
+ part of a lighthouse, sticking straight out of the sea. \
+ The lighthouse is broken in many places, and several areas \
+ provide ledge-space to stand on. In fact, you could probably \
+ climb into the lighthouse through one of many large \
+ cracks in the walls to the east. The rest of Fublio bay \
+ is back southwest";
+ if ((self has general) || (Lighthouse1 has general) ||
+ (amulet hasnt worn))
+ ".";
+ else {
+ give self general;
+ ".^^Your amulet suddenly gives off a bright purple flash, then \
+ returns to normal!";
+ }
+ ],
+ name "lighthouse" "cracks",
+ e_to [;
+ if (player in sailboat)
+ "You'll need to get out of the boat first.";
+ else return In_lighthouse;
+ ],
+ ! in_to [;
+ ! if (player in sailboat)
+ ! "You'll need to get out of the boat first.";
+ ! else return In_lighthouse;
+ ! ],
+ sw_to [;
+ if (player notin sailboat)
+ "The water looks pretty choppy. I'd suggest you use a \
+ sea-going vessel of some sort.";
+ else return On_Fublio_bay;
+ ],
+ has light;
+
+
+Object Volcano_island "Volcanic Island"
+ with description "You're on the north shore of a small volcanic \
+ island in the middle of Fublio bay. A little more \
+ shore lies to the south. The bay spreads out before \
+ you to the northwest.",
+ name "bay",
+ nw_to [;
+ if (player notin sailboat)
+ "The water looks pretty choppy. I'd suggest you use a \
+ sea-going vessel of some sort.";
+ else return On_Fublio_bay;
+ ],
+ s_to [;
+ if (player in sailboat)
+ "You'll need to get out of the boat first.";
+ else return Island2;
+ ],
+ before [;
+ Swim: "Near a still-active volcano? Not wise.";
+ ],
+ has light;
+
+Object Island2 "South Part of Island"
+ with description "You're on a southern section of a small \
+ volcanic island in the middle of Fublio bay. Most \
+ of the area here is lava-rock, still warm. You can \
+ see a more open shore to the north.",
+ name "bay" "rock" "lava" "shore",
+ n_to Volcano_island,
+ before [;
+ Swim: "Near a still-active volcano? Not wise.";
+ ],
+ has light;
+
+Nearby shipwreck "old shipwreck"
+ with name "shipwreck" "wreck" "ship",
+ initial "An old shipwreck is almost embedded in the lava \
+ here.",
+ description "It looks like an old navy vessel, \
+ stuck fast in the surrounding rock. Its obviously \
+ been underwater for some time, as it is covered in \
+ barnacles and seaweed. The hull has partially rotted apart \
+ in many places.",
+ before [;
+ Enter:
+ "You find that anything left to enter in the wreck \
+ has pretty much decayed away.";
+ Cast:
+ if (the_spell_was == fiznav_spell)
+ "You perform a nice ritual to the Sea Gods, and \
+ before your very eyes, the ship attempts to repair \
+ itself! But there's too much damage, and not \
+ even the aid of the Sea Gods can fix this craft. \
+ The chant fails.";
+ Search:
+ if (self has general) {
+ move green_rod_piece to parent(self);
+ give self ~general;
+ Achieved(7);
+ "Something about the old boat rings a familiar tune. \
+You check near something that might have once been a mast, and \
+uncover a familiar green rod!";
+ }
+ ],
+ has static;
+
+Object In_lighthouse "Lighthouse, upper level"
+ with description "You're inside an abandoned lighthouse, on what \
+ must be an upper floor. The whole interior is lifeless and \
+ barren. There's a large broken crack in the western wall. \
+ You also notice a hole in the floor nearby, which might \
+ have been an exitway a long, long time ago.",
+ name "crack" "hole",
+ w_to [;
+ if (water_spirit in self)
+ "The water spirit buffets you with water and \
+ prevents you from leaving.";
+ else return Lighthouse2;
+ ],
+ d_to [;
+ deadflag = 1;
+ "You drop through the hole, and land in cold dark water! \
+ Trapped in an enclosed pool of seawater, with the hole \
+ too far above you, you drown shortly afterwards.";
+ ],
+ before [;
+ Listen: "You hear some sloshing noises from below the floor.";
+ ],
+has light;
+
+
+
+! ************
+! creatures
+! ************
+
+Object farmer "farmer" Farm
+ with name "farmer",
+ initial "There's a tired-looking farmer here.",
+ description "It looks like he's been working pretty hard \
+ in the sun.",
+ each_turn [;
+ if (self hasnt general) {
+ if (random(10) == 1)
+ "^~'Forget zucchini,' they told me, 'Go into oyster \
+ farming. You'll make a fortune.' Ha!~";
+ }
+ else {
+ remove farmer;
+ move silver_sphere to player;
+ "^The farmer sees you approach and rushes to \
+ greet you. ~I saw what you did, sir, yes indeed. \
+ A mighty crazy thing to do, calling a volcano outa \
+ the water like that. But you did it! And \
+ my oyster beds thank you kindly! I'd like to \
+ repay the favor, but I'm only a poor farmer.~ He \
+ pauses, then searches his pockets. ~Here,~ he says, \
+ putting something in your hand. ~Found it digging in \
+ the sand. Don't know what it is, but I'll bet you \
+ can use it.~ He smiles and disappears into the \
+ farmhouse.";
+ }
+ ],
+ life [;
+ Attack, ThrowAt:
+ "Something about attacking a down-on-his-luck \
+farmer just doesn't seem right, so you stop.";
+ Answer:
+ if (special_word == 'hello')
+ "The farmer nods in your direction. \
+~How do, stranger?~";
+ Ask:
+ if (second == 'oyster' or 'farm' or 'oysters')
+ "~Did a foolish thing, sir, tried my luck with \
+ oyster farming this year. The place is too far \
+ from the sea, and I can't get any oysters in my \
+ beds, 'cause there's no water to grow 'em in.~";
+ Show:
+ if (noun has is_sphere)
+ "~Hey, I seen something like that once.~";
+ Give, Tell:
+ "The farmer smiles, but shakes his head.";
+ default: "The farmer is preoccupied with something as \
+he squints into the sun.";
+ ],
+ before [;
+ Cast:
+ if (the_spell_was == foblub_spell or espnis_spell)
+"~I'm just a simple farmer, sir. I'm afraid you're losing me \
+with your fancy words.~";
+ ],
+ has animate;
+
+Object water_spirit "water spirit" In_Lighthouse
+ with name "spirit",
+ description "It looks like a large moving mass of seawater, \
+ in a somewhat man-like shape.",
+ each_turn [ i ;
+ ! spirit attack
+ ! (in general, the 4 spirits are _very_ dangerous.
+ ! There's a 1/5 chance of killing outright, and 2
+ ! chances of doing 10 and 5 points of damage respectively.
+ ! In short, the player needs to realize it's time to swanko,
+ ! and do so, quickly)
+ if (self hasnt general) {
+ give self general ~concealed;
+ "^Suddenly, water seeps in from the west, and forms \
+ into a large vaguely-humanoid shape before your very \
+ eyes!";
+ }
+ i = random(5);
+ if (i == 1) {
+ deadflag = 1;
+ "^The water creature moves quickly, and smothers you \
+ in water! You try to escape, but the creature has \
+ amazing strength and weight! The spirit soon \
+ envelopes your head, and you drown...";
+ }
+ if (i == 2)
+ Player_HP_CUR = Player_HP_CUR - 10;
+ if (i==3)
+ Player_HP_CUR = Player_HP_CUR - 5;
+ if (Player_HP_CUR <= 0) {
+ deadflag = 1;
+ "^The last blow from the water spirit was too much for \
+ you, I'm afraid to say. You sink to the ground, to \
+ weak to defend yourself, as the spirit slowly oozes \
+ towards you for the final blow...";
+ }
+ print "^The water spirit ";
+ if (i==2)
+ "blasts you with a jet of seawater! \
+ It feels like a battering ram just used you for a \
+ practice drawbridge!";
+ if (i==3)
+ "buffets you with small jets of water! \
+ You feel exposed areas of skin getting rubbed raw by \
+ the force of the water!";
+ "forms into a small wave and tries to \
+ crush you, but you evade just in time!";
+ ],
+ before [;
+ Cast:
+ if (the_spell_was == swanko_spell) {
+ remove self;
+ "As you speak the chant, the water spirit falls back \
+ in fear! You finish the chant, and the water spirit \
+ makes one last attempt to smother you, but dissipates \
+ with a splash!";
+ }
+ print "The creature makes a banshee-howl as you chant.^";
+ ],
+ life [ ;
+ Attack:
+ print "You ";
+ if (random(20) >= 8)
+ "strike the water creature, but your attack passes \
+ harmlessly through it! You hear a strange noise from \
+ the creature -- akin to a drowning man laughing.";
+ "attack the water spirit, but miss!";
+ default: "It's too busy trying to kill you.";
+ ],
+ has animate concealed;
+
+Object mad_hermit "mad hermit" FUBLIO_Cave
+ with name "hermit" "madman" "mad",
+ description "He looks quite crazed -- his wild eyes \
+are almost unbearable to watch. His clothes are complete \
+tatters, and he looks rather emaciated.",
+ each_turn [ i ;
+ i = random(10);
+ switch(i) {
+ 1: "^The hermit stares at you and screams. \
+~Demon, trickster -- you'll not fool me again!~";
+ 2: "^The hermit smiles at you. ~Come to pay \
+your respects to an old man, Humboz? I know it's you.~";
+ 3: "^The hermit shrinks into a corner and weeps. ~No more, no more. I \
+can help you no more.~";
+ 4: "^The hermit hums a little tune.";
+ 5: "^The hermit talks to someone or thing unseen. \
+~Closer, closer, nary a sound betray...~";
+ 6: "^The hermit grabs your shoulder. ~I am hampered,~ \
+he pleads with you, ~by the lack of an algebraic solution! \
+That was where I went wrong!~";
+ 7: "^The hermit babbles something about a shining \
+tower on a hill.";
+ 8: "^The hermit pauses. ~Listen, do you hear them? \
+The voices -- everywhere!~";
+ default: "^The hermit giggles for no reason.";
+ }
+ ],
+ life [;
+ Answer:
+ if (special_word=='hello')
+ "~We meet again, do we not?~";
+ Ask:
+ switch (second) {
+ 'exit', 'outside': "The hermit laughs. \
+~You want to leave already? Very well, you'll find \
+the exit where you came in.~";
+ 'entrance':
+ print "The hermit chuckles. ~Forgotten where \
+you came in? It hasn't gone anywhere.";
+ if (FUBLIO_Cave.number == 1) {
+ FUBLIO_Cave.number = 2;
+ "~ He points at a space in the south wall, which \
+you realize is actually a well-hidden tunnel.";
+ }
+ else "~";
+ ! 'sack': "~A fine pet, mine and mine forever.~";
+ 'food', 'fish': "~My friends of the deep, they \
+sacrifice themselves for me, as I will some day for them.~";
+ default: "~Many are the secrets you keep.~";
+ }
+ Give:
+ if (noun has edible) {
+ print "The hermit greedily takes ", (the) noun, " and \
+gobbles it quickly";
+ remove noun;
+ if (p1 in self) {
+ move p1 to player;
+ print ". ~Good, yes. \
+I have something for you -- something you will treasure as I have.~ He \
+gives you a piece of parchment.";
+ }
+ ".";
+ }
+ "~No, no, I already have many of those.~";
+ Attack, ThrowAt, Order:
+ "The hermit cowers in one corner of \
+the cave, screaming. You stop, and reconsider.";
+ Kiss:
+ "Tears run down the hermit's cheek.";
+ Show, Tell:
+ if (noun has edible)
+ "The hermit visibly salivates.";
+ "The hermit gibbers maniacally.";
+ ],
+ before [;
+ Cast:
+ "The hermit joins in with your chanting, and \
+twists the meaning of the words! You quickly stop.";
+ ],
+ time_left 0,
+ time_out [;
+ deadflag = 1;
+ "^The hermit seems to recognize you through his madness! \
+~You have returned! The Big Man! Biggest of them all! \
+Returned to deliver me from my prison. I had never forsaken \
+you!~^^\
+~Wait,~ you protest, ~stop this madness!~^^\
+But the crazed hermit continues. He prostrates in front \
+of you and babbles incoherently. ~I put all my faith \
+in you -- I have to leave here, before I go insane! \
+The others, they abandoned hope. But not me. No! \
+You have always had our best interests in mind.~^^\
+He begins an eerie, frenetic song that jars your very soul. \
+You watch the water level start to rise near the southern \
+entrance, and wait for the end.";
+ ],
+ has animate transparent;
+
+
+
+! ************
+! spells/scrolls
+! ************
+
+Object spotted_scroll "spotted scroll" FUBLIO_Cave
+ class scroll_class,
+ with name "spotted",
+;
+
+Object bekdab_spell "turn iron to rust" spotted_scroll
+ class spell_class,
+ with name "bekdab",
+ magic [;
+ "Your chant goes unanswered. I guess you need pure iron.";
+ ],
+;
+
+! ************
+! Misc objects
+! ************
+
+
+Object sack "fur sack" sailboat
+ with name "sack" "fur",
+ description "A fairly large sack made of furs and animal \
+hides.",
+ ! weight 20,
+ size 24,
+ ! capacity 20,
+ has container openable;
+
+! (wet -- Anabais is one of four evil elemental powers)
+Object p1 "wet parchment" mad_hermit
+ class parchment_class,
+ with name "wet",
+description "~...evidence that there are more demons like \
+the evil Anabais! In fact, I suspect that four demons, not \
+one, faced the Ancient Ones in spiritual battle at the \
+dawn of time! To suspect this is...~";
+
+
+! 1st rod piece -- GRAY
+Object gray_rod_piece "gray rod piece" In_Lighthouse
+ class rod_class,
+ with name "gray",
+ initial "In the center of the room is a short gray rod.",
+ description "It's a short section of a rod made of some \
+undeterminable hard substance, \
+colored gray like murky water. A piece of the Rod of \
+the Ancients, no doubt!",
+;
+
+! 1st sphere - SILVER
+Object silver_sphere "silver sphere"
+ class sphere_class,
+ with name "silver",
+ description "A tiny perfect silver sphere, made of some strange \
+ unknown metal.",
+;
+