2 ! ****************************************************************
4 ! -- Add-on for SPIRITWRAK
6 ! ****************************************************************
8 Object ANTHAR_GUSStop "Entrance to Greater Anthar"
9 with description "You're just west of Greater Anthar on the \
10 island nation of Antharia. The bright sunlight \
11 seems to make the city streets east of here glitter. \
12 A stairway leads down.",
13 name "sunlight" "streets" "glitter" "stairway",
14 d_to ANTHAR_GUSStation,
18 Object ANTHAR_West "Anthar West"
19 with description "You are standing in a busy section of \
20 West Greater Anthar City. The city seems to thin \
21 out to the west. A roadway heads east, \
22 the ever-popular Flathead \
23 Stadium lies to the northeast, and a pub lies to the \
25 name "roadway" "stadium" "pub",
30 ne_to Stadium_entrance,
31 cant_go "You walk around the area, take in the local scene, and \
32 find yourself back here.",
34 Smell: "You can smell scents of local cooking coming \
39 Object ANTHAR_East "Anthar East"
40 with description "You are standing in a busy section of \
41 East Greater Anthar City. The city continues to \
42 the west. There is a large odd structure to the \
43 east, made mostly of glass. The ever-popular Flathead \
44 Stadium lies to the northwest. A short walk down \
45 to a waterfront area is to the south.",
46 name "structure" "glass" "stadium" "waterfront",
48 e_to Conservatory_entrance,
49 s_to ANTHAR_Waterfront,
50 nw_to Stadium_entrance,
51 cant_go "You walk around the area, take in the local scene, and \
52 find yourself back here.",
54 Smell: "You smell rather nice floral scents coming \
60 Object ANTHAR_Waterfront "Swank Waterfront"
61 with description "A pleasant waterfront walk is your current \
62 location. You can see the Great Sea stretching out \
63 before you to the south, a breath-taking sight. \
64 A rail runs along the south end, preventing \
65 an untimely fall into the rock shore below. The \
66 city is back to the north.",
67 name "waterfront" "sea" "great" "railing" "rail" "rock" "shore",
71 Object telescope "viewing telescope" ANTHAR_Waterfront
72 with name "telescope" "viewing" "scope",
74 when_closed "There's a viewing telescope here, attached to the railing.",
76 print "There's a viewing telescope here, attached to the \
77 railing. One of the lenses seems loose";
78 if (children(self) == 0) ".";
80 print ". Inside you see:^";
81 x = FULLINV_BIT + INDENT_BIT + NEWLINE_BIT + RECURSE_BIT;
82 WriteListFrom (child(telescope), x, 1); rtrue;
85 description "A nice tourist toy. Perfect for getting a good view.",
87 Open: print "You pry loose a lens. ";
88 Close: print "You push the lens back in place. ";
90 if (self hasnt open) {
91 print "You take a peak through the telescope";
92 if (children(self) ~= 0)
93 " but oddly, there's something blocking your \
97 " and see a ship in the distance! Wait, perhaps not. \
99 " and see a nice expanse of the Great Sea.";
104 has static container openable;
106 ! (Conservatory gardens)
108 Object Conservatory_entrance "Conservatory Entrance"
109 with description "You stand before the entrance to a large public \
110 conservatory. You can enter the greenhouses to the northeast \
111 and southeast, or walk back to Anthar to the \
113 name "greenhouse" "greenhouses",
115 ne_to Con_Desert_garden,
116 se_to Con_Flower_garden,
118 Smell: "You can smell floral scents from the southeast.";
122 Object Con_Desert_garden "Desert Garden"
123 with description "A nicely arranged collection of desert plants \
124 is here in the ~Desert Garden~. Bright sunlight \
125 and a sandy ground enhance the overall effect. \
126 The conservatory entrance is to the southwest, or \
127 more gardens lie to the south and east.",
128 name "sunlight" "plants" "sand" "gardens",
129 sw_to Conservatory_entrance,
130 e_to Con_Forest_garden,
131 s_to Con_Decor_garden,
135 Object Con_Flower_garden "Flower Garden"
136 with description "A rather lovely flower garden lies before you. \
137 The multi-colored flowers are turning the air into \
138 perfume. The conservatory entrance is northwest, \
139 or more greenhouse gardens lie to the north and \
140 east. A tiny trail leads south past the flower \
142 name "perfume" "entrance" "trail" "greenhouse",
143 nw_to Conservatory_entrance,
144 e_to Con_Jungle_garden,
145 n_to Con_Decor_garden,
148 Smell: "The bouquet of flowers is quite intoxicating.";
152 Nearby flowers "flowers"
153 with name "flowers" "flower" "garden",
154 description "A lovely assortment of flowers.",
156 Take: "Don't pick the flowers.";
158 if (the_spell_was == throck_spell)
159 "Suddenly, a few more flowers spring out of the \
164 Object Con_storehouse "Gardener's Storehouse"
165 with description "This must be a storehouse for the conservatory \
166 gardeners. There are soil stains and plant debris all over. \
167 The only exit is north.",
168 name "soil" "stains" "debris" "plant",
169 n_to Con_Flower_garden,
172 Nearby toolshed "toolshed"
173 with name "toolshed" "shed",
174 description "A plain toolshed.",
178 when_closed "A toolshed stands closed against the wall.",
180 print "The toolshed is open. ";
182 if (x == 0) "It is empty.";
184 if (x == 1) print "is: "; else print "are: ^";
185 x = FULLINV_BIT + INDENT_BIT + NEWLINE_BIT + RECURSE_BIT;
186 WriteListFrom (child(self), x, 1);
189 has static container openable lockable locked;
192 Object gardeners_cap "cap" toolshed
194 description "A cap with an odd green emblem stitched on \
195 the front that looks like a clover.",
198 Object hedge_clipper "hedge clipper" toolshed
199 with name "clipper" "clippers",
200 description "Basically a long pair of scissors.",
203 Object rubber_gloves "rubber gloves" toolshed
204 with name "gloves" "pair" "rubber",
206 description "A pair of yellow rubber gloves, slightly \
207 worn. Good for gardening, or washing dishes, I suppose.",
211 ! (cracked -- magic has questionable source, doesn't always work)
212 Object p3 "cracked parchment" toolshed
213 class parchment_class,
215 description "~...is true that those who go by the title of \
216 'Enchanters' need not wear any holy symbol through which \
217 to draw magical power. Indeed, it seems as though the very \
218 amulets we must wear are our only link to magical powers \
219 at all. Worse yet, the powers are indeed granted from \
220 powers above, but the Ancient Ones? I think not. For indeed, \
221 I have found places where magic powers will not work, with or \
222 without the amulet. Likewise, I have found places where \
223 magic works, but praying to the Ancient Ones goes unanswered! \
226 Object Con_Decor_garden "Decorative Plants Garden"
228 You are standing in a small well-kept garden. The plots surrounding the \
229 paths are filled with a variety of general ground-cover plants, all \
230 appropriate for most discerning homeowners. Exits lie north and south.",
231 name "ground-cover" "plots" "flamingo" "tinsel" "ornament",
232 n_to Con_Desert_garden,
233 s_to Con_Flower_Garden,
236 Object Con_Forest_garden "Forest Garden"
237 with description "A garden path winds through this narrow \
238 greenhouse, which is stocked with various forest plants. \
239 The path winds back to the west and south.",
241 w_to Con_Desert_garden,
245 Nearby plants1 "plants"
246 with name "plants" "plant" "tree" "forest",
247 description "You are reminded of a hiking trip you took once.",
250 if (the_spell_was == throck_spell)
251 "The forest seems a bit livelier now.";
255 Object Con_Jungle_garden "Jungle Garden"
256 with description "A garden path winds through this \
257 long greenhouse, which is filled with plants native to \
258 jungle settings. The environment is somewhat \
259 humid. The path heads west and north from here.",
261 w_to Con_Flower_garden,
264 if (waterfall hasnt general)
265 "You can't go that way.";
266 else return Con_Nursery;
269 Smell: "You smell flowers to the west.";
273 Nearby plants2 "plants"
274 with name "plants" "plant" "tree" "jungle",
275 description "Reminds you of a picture you once saw of \
276 the Miznia jungles.",
279 if (the_spell_was == throck_spell)
280 "The jungle seems a bit livelier now.";
284 Object waterfall "small waterfall" Con_Jungle_garden
285 with name "waterfall" "fall" "falls",
287 if (self hasnt general)
288 print "A nice little waterfall enhances the jungle \
291 print "A fake waterfall hides a passage";
296 if (self has general) print " fake";
297 " waterfall drops out of a mock-stucco \
301 Pull, Push, Touch, Search, Rub:
303 "You reach out, expecting to get your hands wet, but \
304 to your surprise, you feel a cloth-like substance. \
305 On closer examination, you realize that the waterfall \
306 is a clever realistic-looking fake, made of cloth \
307 and wood. Stepping around some low plants, you also \
308 notice the waterfall covers a passage east!";
310 move noun to Con_Jungle_garden;
311 CDefArt(noun); ", to your surprise, literally \
312 bounces off the waterfall, and lands with a thump \
317 Object Con_Nursery "Nursery"
318 with description "This small back room is apparently the \
319 conservatory nursery. Bits of soil and plant \
320 debris are everywhere, along with immature \
321 seedling plants. A exit lies west, partially \
322 covered by some cloth.",
323 name "soil" "plant" "debris" "seedling" "cloth",
324 w_to Con_Jungle_garden,
327 Object smallpot "small flower pot" Con_Nursery
329 description "A small red-ceramic flower pot, \
330 ideal for small plants, I suppose.",
333 if ((location == Con_Nursery) && (self hasnt general)) {
335 move shed_key to Con_Nursery;
336 print "Moving the pot uncovers a small key hidden \
338 if (action==##Push) rtrue; else rfalse;
341 if ((location == Con_Nursery) && (self hasnt general)) {
342 "The pot does appear to be sitting crooked. But \
343 you can't see whatever is under it.";
346 if ((the_spell_was == huncho_spell or luncho_spell) &&
347 (self hasnt general)) {
349 move shed_key to Con_Nursery;
354 has container open transparent;
357 Object Con_Fountain "Fountain"
358 with description "A tasteful fountain intercepts a north-south \
361 n_to Con_Forest_garden,
362 s_to Con_Jungle_garden,
365 "^You hear someone whistling nearby, but there doesn't \
366 seem to be anyone around.";
370 Nearby fountain "fountain"
371 with name "fountain",
372 description "A stone basin with a central fountain spout \
373 shaped like a fish. There's no water running currently.",
377 if (self hasnt general) {
380 "You fish in the fountain for a bit and find a coin!";
383 print "Mostly wet plant debris";
386 ", nothing interesting.";
387 print ". You also notice:^";
388 x = FULLINV_BIT + INDENT_BIT + NEWLINE_BIT + RECURSE_BIT;
389 WriteListFrom (child(self), x, 1); rtrue;
392 if (noun has is_coin)
393 print "Hoping for a little luck, I presume?";
397 has scenery container open;
399 Object glasses "pair of glasses" Con_Fountain
401 initial "It looks like someone left their glasses here.",
402 description "Thick lenses and a heavy frame.",
404 Wear: "You put the glasses on for a moment, and it's like \
405 looking through a fishtank. Deciding \
406 against continuing your quest without adequate \
407 vision, you take them off.";
412 Object c3 "coin" class coin_class;
414 Object shed_key "small key"
415 with name "key" "small",
416 description "A small metal key.",
423 Object Delbins "Delbin's Pub"
425 print "Delbin's Pub has been a popular food and drink spot in \
426 South Anthar for quite a while. ";
427 if (self hasnt general)
428 print "Usually, you need to \
429 fight off barbarians to find a place to sit. At the moment, \
430 however, the place is unusually quiet. A group of \
431 barbarians seem paralyzed with fear near the back wall, \
432 glancing nervously at the front of the bar.";
433 else print "A group of barbarians \
434 are making a lot of noise nearby.";
435 " The exit is to the north.";
441 if (self has general)
442 "The barbarians are a rather noisy bunch.";
444 if ((noun == n_obj) || (noun==out_obj))
445 print "Delbin calls out ~Visit us again!~ as you leave.^";
450 if (Morgan in Delbins) {
452 if ((i==1) && (Delbins.number == 0)) {
454 "^The man in black makes a lightning fast move for the \
455 glass of ale, but is countered by an equally fast move by the warrior. \
456 ~Lose something, thief?~ the woman says. ~No need to get violent, Morgan,~ \
459 if ((i==1) && (Delbins.number == 1)) {
461 "^The wizard looks at his companions. ~Say, did I ever \
462 show any of you my famous disappearing glass trick?~ He starts to take \
463 off his wizard's hat, but the gentleman and ranger stop him. ~Don't \
464 even try it, Frobar.~ the woman warrior says.";
466 if ((i==1) && (Delbins.number == 2)) {
468 "^The female ranger fixates on the glass of ale. \
469 ~Look you two, some of us have better things to do, like fight wars.~ \
470 The wizard scowls. ~Oh save it, Morgan.~ he says.";
476 Nearby barbarians "barbarians"
477 with name "barbarians" "group",
478 description "A group of dirty barbarians. One of them \
479 sees you staring at them, and gives you a dirty look.",
482 if (Morgan in Delbins)
483 "The barbarians are somewhat paralyzed with fear at the moment.";
485 "The barbarians are far too busy telling rude jokes \
488 has animate concealed;
490 Object headdress "headdress" Delbins
491 with name "headdress",
492 initial "A gaudy headdress of some kind is \
493 hanging on a nearby wall.",
494 description "A large headdress made of animal fur and colorful \
499 Object bar "bar" Delbins
501 description "A long flat wood bar that could probably use a \
505 if (the_spell_was == egdelp_spell) {
506 print "The bar is covered with a waxy film. \
507 Delbin notices this and shrugs.";
510 if (noun==ale_glass) {
511 <Take ale_glass>; rtrue; }
513 has scenery supporter;
515 Object ale_glass "glass of ale" bar
516 with name "glass" "ale",
517 description "A small glass filled with an amber liquid.",
520 "You receive cold stares from the three individuals \
521 at the bar. ~Get your own,~ the Ranger says and \
524 "You receive cold stares from the three individuals \
525 at the bar. ~Get your own,~ the Thief says and \
526 takes the glass from you before you can bring it \
528 Turn, Push, Pull, Shake:
529 "You receive cold stares from the three individuals \
530 at the bar. ~Get your own,~ the Wizard says and \
534 CDefArt(noun); " hits the glass and nearly topples it! \
535 A voice from the back of the room says ~Garn! He \
536 nearly ruined a perfectly good glass of ale, he did.~ \
537 The three individuals at the bar turn to you with \
538 angry stares, but before you can respond, some \
539 barbarians pummel you to death for poor bar manners.";
541 if (the_spell_was == zemdor_spell) {
542 give Delbins general;
546 ! -- Morgan, fairly easy
547 move Morgan to Ravine_pass;
548 ! -- Frobar, a little tougher
549 move Frobar to FROBAR_Study;
550 if (Ench_mag in Frobar_mailbox)
551 move Ench_mag to Frobar;
553 ! -- Thief, trickiest
554 remove Thief; ! he'll be back
555 if ((Painting_REAL in Museum_north) &&
556 (glass_wall notin Museum_north))
557 move Painting_REAL to THIEF_Storeroom;
558 ! Thief steals painting (no door left behind!)
559 "You quickly make the zemdor chant and watch the glass \
560 of ale start to shimmer! In short time, there are three glasses filled \
561 with ale on the bar!^^\
562 Morgan the Ranger looks suspiciously at Frobar the Enchanter. \
563 ~Is this your doing, wizard?~ Frobar shakes his head. ~Surely not, \
564 you know I can't do magic anymore.~ He glances briefly in your \
565 direction. ~No matter,~ the thief says, and raises a glass. \
566 ~To the spirit of adventure!~ The three down their glasses quickly. \
567 Morgan smiles. ~Now, that's good ale.~ She adjusts her broadsword. \
568 ~I'm off to the Egreth front. Want to help end a war, Frobar?~ \
569 Frobar chuckles. ~Thank you, no. I've got, err, something to do \
570 at home,~ he says and quickly leaves. ~Well, then, what about you, \
571 thief?~ Morgan asks, and notices that the thief has already slipped \
572 away. She shrugs and leaves the bar as well. ~Good hunting!~ Delbin \
575 if (the_spell_was == huncho_spell or luncho_spell)
576 "You begin the chant, but something about it gets the \
577 Enchanter's attention. ~If you have something to say, \
578 why don't you share it?~ With a subtle gesture, the Enchanter \
583 Object rag "dirty rag" bar
584 with name "rag" "dirty",
585 description "A slightly dirty cleaning rag.",
592 Object Stadium_entrance "Entrance to Flathead Stadium"
593 with description "Here stands the entrance into the still \
594 popular Flathead Stadium, home to esoteric \
595 sports activities you never fully understood. \
596 Walkways lie southeast and southwest from here, or \
597 you can enter the stadium to the north.",
598 name "stadium" "walkways" "entrance",
605 "You can hear the roars of a good crowd from \
606 inside the stadium. Must be playoff season.";
608 if ((noun==n_obj) || (noun==in_obj))
609 print "You walk right into the stadium. The ticket-takers \
610 must be on strike or something.^";
614 ! (fake stadium entrance, for "past")
616 Object Stadium_entrance2 "Entrance to Flathead Stadium"
617 with description "You appear to be in front of Flathead Stadium once \
618 again, however something seems different. Even the stadium itself seems \
619 dissimilar, newer. Walkways lie southeast and southwest from here, or \
620 you can enter the stadium to the north.",
621 name "stadium" "walkways" "entrance",
622 sw_to "A strange feeling compels you to stay.",
623 se_to "A strange feeling compels you to stay.",
626 "As you head towards the entrance, a mob of crazed fans \
627 rushes out of the stadium (~Isn't that Babe Flathead?~ you hear someone \
628 scream) and tramples you to death.";
632 "The place is surprisingly quiet.";
637 Object stadium_sign "stadium sign" Stadium_entrance
639 initial "A stadium event sign is pasted to one of the stadium walls here.",
643 ALL CHALLENGERS WELCOME!!!^\
644 THREE ROUNDS, THREE BOUTS!^\
645 BIG CASH FOR THE WINNER!^^\
646 (All Golems have undefeated records, so^\
647 only trained golem-wrestlers need apply!)~",
650 Object stadium_statue "stadium statue" Stadium_entrance
652 initial "A statue depicting the legendary Babe \
653 Flathead greets all visitors in front of the stadium.",
655 "According to the inscription, this statue honors the legendary Babe Flathead.",
658 if (self has general)
659 "Oddly, the statue seems to sit slightly tilted.";
661 if (self has general) {
663 move statue_base to Stadium_entrance;
665 "You give the statue a shove, and it wobbles and falls, \
666 breaking into useless dust! A passing sportsfan notices your act \
667 of vandalism, and says to a friend, ~Look at that. The guy wins one \
668 bout of Golem wrestling, and he thinks he's better than Babe \
671 else "The statue seems to be firmly fixed in place.";
675 Object statue_base "square hole" Stadium_entrance2
676 with name "hole" "square",
677 describe "In front of the stadium is a square hole.",
678 description "There's a large square hole in the ground near \
679 the front of the stadium.",
682 ! move stadium_sign to Stadium_entrance;
683 ! move stadium_statue to Stadium_entrance;
684 print "^You hear voices behind you, and suddenly, a \
685 small crowd of people pass by, pushing a statue.^^\
686 ~Right there,~ someone shouts, and a few people position the \
687 statue into the square hole.";
688 if (children(self) == 0) {
689 print " It fits neatly in place.";
690 remove red_rod_piece;
693 give stadium_statue general;
694 print " It fits, but seems just slightly \
697 ! remove statue_base;
698 ! give Stadium_entrance ~general;
699 Mystical_Cave.number = Mystical_Cave.number + 1;
700 print "^^~That's perfect,~ you hear a voice say, and \
701 the crowd murmurs in agreement. Why, it's Babe Flathead himself! \
702 He saunters up towards the statue, which is indeed a good \
703 likeness, and starts handing out cigars. ~We'll get to \
704 autographs later,~ he says while lighting your cigar as you \
705 try to protest. Seconds later, the cigar explodes! You see \
706 sparkling stars, which seem to change to purple flashes. You \
708 PlayerTo(Mystical_Cave);
712 has static container open;
714 Object Stadium_top "In Flathead Stadium, upper seats"
716 You are near the top cheap seats of Flathead Stadium. \
717 The crowd is busy cheering whatever is going on down on the \
718 field. Looking at the field, you see two small dots. The Stadium exit \
719 is back south, or you can walk down to the front seats to \
721 name "seats" "crowd" "field" "dots" "fans",
722 s_to Stadium_entrance,
725 e_to "You try to push your way through the fans, but fail.",
726 w_to "You climb over a few seats, but the crowd blocks any \
727 further progress west.",
729 Listen: "The crowd is deafening.";
734 Object Stadium_bottom "In Flathead Stadium, lower seats"
736 You are near the good seats in Flathead Stadium. \
737 The crowd is busy cheering for the current event on the \
738 field. Looking at the field, you see two large dots. The \
739 seats continue up and south, or you can walk down to the \
741 name "seats" "crowd" "field" "dots" "fans",
745 if (burly_man hasnt general)
746 "The burly man jumps out of his seat as you try to pass. \
747 ~Hey buddy, I'm saving those seats.~ He points to an entire \
748 row of seats below you. ~I've been waiting all season, and \
749 I don't want an obstructed view, so look for somewhere else to \
750 sit.~ He sits back in his seat.";
751 else return Near_locker_room;
754 if (burly_man hasnt general)
755 "The burly man jumps out of his seat as you try to pass. \
756 ~Hey buddy, I'm saving those seats.~ He points to an entire \
757 row of seats below you. ~I've been waiting all season, and \
758 I don't want an obstructed view, so look for somewhere else to \
759 sit.~ He sits back in his seat.";
760 else return Near_locker_room;
762 w_to "You try to push past a couple fans, but the angry looks make you stop.",
763 e_to "You try to push past a couple fans, but the rude looks make you stop.",
765 Listen: "The crowd is deafening.";
769 Object Near_locker_room "Near Locker Room"
771 You are near a locker room under Flathead field. \
772 You can enter the locker room to the north, or start the climb back into \
773 the roaring crowd to the south.",
774 name "crowd" "field" "fans",
779 if (self hasnt general) {
781 move pale_scroll to Near_locker_room;
782 "^A couple front row fans are getting a bit boisterous. \
783 Several of them throw garbage and paper debris towards the field. \
784 You notice something flutter down by your feet.";
788 Listen: "The crowd is deafening.";
792 Object Locker_room "Locker Room"
794 You are inside a locker room under Flathead field. You can hear the \
795 crowds outside. The room is empty. There is an exit \
796 to the south, and the entrance to the field is to the north.",
797 name "field" "locker" "lockers",
799 s_to Near_locker_room,
801 Listen: "You can hear the crowd outside.";
805 Object Flathead_field "Flathead Field"
806 with description "You're on Flathead field, in front of millions of zany \
807 fans, a lifetime dream. Or not. Well, anyway, \
808 there's a locker room to the south.",
811 if (self has general)
812 "You head for the showers, but the coach springs out and blocks \
813 your way. ~Come on kid, keep your head in the game.~";
814 else return Locker_room;
817 if (self has general) {
820 "^Someone in the crowd yells out, ~Get him a body bag!~ \
821 We assume he was referring to the golem, not you.";
823 "^The crowd does 'the wave'.";
825 "^The crowd waves some strange colorful objects. \
826 Rather distracting.";
828 "^Someone in the crowd screams ~Flathead that golem!~";
832 Listen: "The crowd is deafening.";
843 Object Christmas_tree_monster "Christmas tree monster" Con_Decor_garden
844 with name "tree" "monster" "Christmas",
845 initial "A Christmas Tree stands in one plot, swaying back and forth.",
847 The Christmas Tree monster has obviously seen some good years. It towers \
848 above you, wrapped with tinsel that sparkles marvelously. The \
849 plastic flamingo ornaments are a rather gaudy touch. Surprisingly, it seems to \
850 have taken root in the soil.",
854 "^The Christmas Tree Monster belts out a few bars of 'I'm dreaming \
855 of a Black Cavern' arranged by Bing Frozby.";
857 "^The Christmas Tree Monster sings a few measures from Berknip's own \
858 rendition of 'Silent Night', a rather morbid version.";
860 "^The Christmas Tree Monster hums a few notes from 'Dornbeasts \
861 Roasting on an Open Pyre'.";
863 "^The Christmas Tree Monster whistles a part of 'Frosty the Snow Wight'.";
865 "^The Christmas Tree Monster sways in time to 'Let it snow, let it snow, \
868 "^The Christmas Tree Monster treats you to an abridged version of \
869 Handel's 'Messiah'.";
870 "^The Christmas Tree Monster hums to itself.";
874 if (hedge_clipper notin player)
875 "You'll need a gardening implement to do that.";
876 if (self has general)
877 "The gardener said he'd make you dig for slugs, and \
878 that doesn't sound too exciting, so let's leave the tree \
880 if (self hasnt general) {
881 print "You being to clip a few of the lower branches of the Christmas Tree \
882 Monster, who bellows in pain!^^\
883 Out of nowhere, a short old man appears, wearing full gardener \
884 regalia. He drags your hand away from the tree.^^\
885 ~What are ya trying to do there, kill the thing?~ he says. ";
886 if ((glasses hasnt moved) || (glasses in Con_Fountain)) {
888 remove hedge_clipper;
890 out a pair of glasses and puts it on. ~Say, I don't know you,~ \
891 he says. ~If you want to practice introductory horticulture, do \
892 it in someone else's garden!~ He grabs the clippers from your hands \
897 to be squinting at you. ~Who are you sonny?~ he asks. He starts
898 searching his pockets. ~Confound it, lost my glasses again.~ ";
899 if (gardeners_cap hasnt worn) {
900 remove hedge_clipper;
901 "He squints again, and says, ~Well, whoever you are, the gardens are \
902 for looking at, not practicing landscape design!~ He grabs the \
903 clippers out of your hands and stalks off.";
905 if (gardeners_cap has worn) {
908 "He looks at you again, and notices your cap. ~You must be one of the \
909 new boys. Here, look, I'm not going to show you twice.~ He takes \
910 the clippers and delicately clips away several lower branches, all \
911 the while singing ~It's beginning to look a lot like Christmas~. \
912 He finishes trimming the tree, leaving a nice opening exposing the \
913 shrub next to it, and stops singing. ~I'm starting to hate \
914 that tune,~ he says under his breath. He hands the clippers back \
915 to you and says, ~Now if I catch you doing this wrong again, I'm \
916 going to make you dig for slugs, understand?~ He disappears as \
917 quickly as he appeared.";
922 "You start chanting, but the tree starts singing \
923 ~Plover the river and frotz the woods~ and you \
924 can't help joining in, ruining your chant.";
928 "You song is drowned out by a boisterous chorus \
933 if (noun==toy_volcano)
934 "The tree abruptly stops singing, and seems \
935 a trifle flustered for some reason. Moments later, it \
936 resumes its chorus.";
937 default: "The tree just keeps on singing.";
941 ! (ok, the bush isn't defined as alive. But it is...)
942 Object dornberry_bush "Dornberry bush" Con_Decor_garden
943 with name "shrub" "bush",
945 print "A small shrub sits near and under the Christmas Tree";
946 if (Christmas_tree_monster hasnt general)
947 ", almost covered by it.";
952 if (self hasnt general)
953 "The small shrub looks rather poorly tended. Just a few green leaves \
954 distinguish it from the surrounding soil.";
956 "The small shrub looks quite healthy. A cluster of green leaves and \
957 branches make a nice plant. It's still smaller than the tree, though.";
962 if (the_spell_was == throck_spell) {
963 if (Christmas_tree_monster hasnt general)
964 "The shrub seems to shake suddenly! A new leaf grows, searchs for the \
965 sunlight, fails, and withers.";
966 if ((Christmas_tree_monster has general) &&
967 (self hasnt general)) {
969 move dornberries to self;
970 "The shrub seems to shake suddenly! A new leaf grows, searchs for the \
971 sunlight, and finds it! Another leaf follows, and soon the shrub is \
972 sprouting new branches. In the sunlight, flowers appear, and a cycle \
973 of missed-out seasons is made-up for in minutes! The shrub is now \
974 quite a thriving plant, covered with tiny red fruit.";
976 if (self has general)
977 "The shrub shakes a bit, but the plant remains the \
978 same. For a Dornberry bush, it's already probably \
979 the healthiest one you've ever seen.";
982 if (noun ~= dornberries)
983 "I don't think the shrub can support that.";
985 has static supporter;
987 Object dornberries "bunch of dornberries"
988 with name "dornberries" "berries",
989 description "A bunch of tasty-looking red berries.",
994 ! (moved here so that it shows up 'last' in room descr)
995 Object plaque "plaque" Con_Decor_garden
997 initial "A small plaque sticks out of the soil near the two plants.",
999 print "The plaque reads:^^";
1001 print "~CHRISTMAS TREE MONSTER DORNBERRY BUSH^";
1002 print "<Jinglebellus Adnauseam> <Smallus Shrubus>~^";
1005 ! ~CHRISTMAS TREE MONSTER DORNBERRY BUSH^\
1006 ! <Jinglebellus Adnauseous> <Smallus Shrubus>~",
1010 ! (Characters in Flathead Stadium)
1013 Object burly_man "burly man" Stadium_bottom
1014 with name "man" "burly",
1015 description "A big man who's apparently into sports.",
1018 if ((the_spell_was == foblub_spell) && (self hasnt general)) {
1021 "You begin your sermon. The man starts to tell you to knock \
1022 it off, but starts to listen with awe. As you finish, the man \
1023 tries to get up to shake your hand, but realizes he is stuck \
1024 fast. ~They gotta start cleaning these seats,~ he says.";
1026 if (the_spell_was == espnis_spell)
1027 "You begin a description of the 1700 different kinds of \
1028 holy water, but the man seems so enthralled with the \
1029 game below, he just isn't paying attention.";
1034 "~You were amazing pal. Ever think of going pro?~";
1036 if (second=='fight' or 'game' or 'fights')
1037 "~It's the three-golem special. One contestant \
1038 versus three golems, one after the other. Great \
1041 "~Give it a rest pal, I'm watching the game.~";
1045 Object coach "tough-looking coach" Locker_room
1048 print "An old fellow with bushy eyebrows and \
1049 a gruff demeanor. He's dressed like a sports coach";
1051 ". You also notice he's holding some sort of trophy.";
1056 if (self hasnt general) {
1057 if (Flathead_field hasnt general) {
1058 give Flathead_field general;
1059 print "^The coach looks up and notices you. ~Oh, you must be the \
1060 replacement,~ he says. He drags you over to the field entrance. \
1061 ~Well, I hoped you're warmed up, cuz you're up.~ He shoves you \
1062 north. ~Remember, these guys are tough, so give 'em your \
1064 PlayerTo(Flathead_field);
1067 print "^The coach looks up and notices you. \
1068 ~Where have you been? The ref was about to default \
1069 it to the golems!~ He shoves you north. ~Now get in there and \
1071 PlayerTo(Flathead_field);
1074 if ((self has general) && (coach.number == 1)) {
1075 move win_bag to player;
1077 "^The coach gives you a slap on the back that \
1078 knocks the wind out of you. ~You did it! I didn't think \
1079 you had it in you!~ He hands you a small bag. ~Here's the \
1080 winnings. I went ahead and took out my cut, of course.~^";
1084 ! essentially, the only chances to do 'life' things
1085 ! will occur when the coach is lingering around
1086 ! the lockerroom after the match.
1088 "~You want a couple rounds with the old man \
1089 too? Well, I'm ready.~ For an old coach, he still looks \
1090 like he's in pretty good shape. You decide against violent \
1093 "The coach merely nods.";
1095 if (second == 'trophy')
1096 "~It's a beauty all right.~";
1097 if (second == 'winnings' or 'cut')
1098 "~It's all there, count it if you want.~";
1099 if (second == 'life' or 'game' or 'sport')
1100 "The coach looks momentarily reflective. \
1101 ~Life is all about getting into the game,~ he says. \
1102 ~Remember that, it's not about winning or losing, but \
1103 giving it your best shot.~";
1105 if (noun == cereal1 ||
1108 noun == cerealbox1 ||
1109 noun == cerealbox2 ||
1111 "~A bowlful of that each morning is bound to make a \
1112 champion out of you.~";
1114 ! *** note2: this seems to contradict documentation,
1115 ! i.e. 'ask coach for trophy' results in noun==trophy and
1116 ! second==(?)coach or player, not the other way
1118 if ((action==##Give) && (noun==trophy) &&
1120 move trophy to player;
1122 "The coach looks lovingly at the trophy, and then at you. \
1123 ~Fair enough kid, you earned it.~ he says, and gives it \
1124 to you. ~I've seen a lot of golem-wrestlers in my time, \
1125 but I gotta say, you're the best golem-wrestler I've ever \
1126 seen.~ He leaves the locker room to greet his fans.";
1128 default: "At the moment, it looks like the coach is too busy \
1129 writing a Hall of Fame acceptance speech to \
1130 pay you much attention.";
1134 "~What's that you're saying? Speak up, I'm your \
1135 coach, I'm hear to listen.~";
1137 has animate transparent;
1139 Object referee "referee" Flathead_field
1140 with name "referee" "ref",
1141 description "A stout looking man in a funny striped shirt.",
1143 if (self hasnt general) {
1145 "^The ref blows his whistle and says ~Round 1~. The golem, not \
1146 needing any encouragement, jumps into the fray.";
1151 "Your opponent is the golem, not the referee.";
1153 if (second == 'time' or 'timeout')
1154 "~Sorry, no timeouts!~ the ref says.";
1155 if (second == 'foul')
1156 "~It looked good to me.~";
1157 if (second == 'round') {
1158 if (wood_golem in Flathead_field)
1159 "~You're in round 1.~";
1160 if (stone_golem in Flathead_field)
1161 "~You're in round 2.~";
1162 if (iron_golem in Flathead_field)
1163 "~You're in round 3, the final round.~";
1165 default: "The ref makes some completely \
1166 bewildering hand signal, that could be an insult, for \
1167 all you know about wrestling. In any event, nothing happens.";
1171 if (the_spell_was == espnis_spell) {
1173 "You start to relate the advantages of Bingo over Double \
1174 Fanucci to the ref, and sooner that you can say ~Zounds~, the \
1175 ref is fast asleep! Unfortunately, the golem takes advantage of \
1176 this opportunity and breathes poison gas at you! You reflect \
1177 on this display of poor sportsmanship as you slowly lose \
1184 ! In general: To be fair, the golems only have a 1 in 30 chance
1185 ! of actually hitting. When they do hit, however, it's pretty
1186 ! painful. They also tend to have high HP, although I guess
1187 ! theoretically, they could be beaten without spells.
1188 ! (note: I've tried this with the iron golem and never
1189 ! succeeded. The odds are definitely not in the players favor)
1190 Object wood_golem "dangerous-looking wood golem" Flathead_field
1191 with name "golem" "wood",
1194 The wood golem stands at about twice your height, an animated statue \
1195 made completely of wood. He may move like an old cabinet, but \
1196 watch those hands!",
1200 Player_HP_CUR = Player_HP_CUR - 15;
1201 if (Player_HP_CUR <= 0) {
1203 "^The wood golem jumps forward and flattens you, \
1204 which feels similar to getting hit by a falling \
1208 "^The golem staggers you with a punch that sends you \
1211 "^The wood golem tries to move in for a clinch, and you dance \
1214 "^The wood golem makes a lumbering swing at your head, and misses!";
1215 "^The wood golem makes a swipe for you, and misses.";
1219 if (the_spell_was == egdelp_spell) {
1221 move stone_golem to Flathead_field;
1222 "The wood golem is suddenly covered with a waxy buildup! \
1223 Greatly embarrassed, he turns to call foul, and slips! \
1224 With a great thud, the golem hits the turf, and knocks \
1225 himself out cold!^^\
1226 The ref says ~Knockout!~. The crowd cheers in approval.^^\
1227 Several dwarves appear and cart the wood golem off. \
1228 Unfortunately, a stone golem soon walks into view!^^\
1229 The coach yells from the doorway ~You're doing great kid, \
1230 just hang in there.~^^\
1231 The ref says ~Round 2!~";
1238 wood_golem.number = wood_golem.number - 1;
1239 if (wood_golem.number <= 0) {
1241 move stone_golem to Flathead_field;
1242 "With a thundering blow, you smash the golem into \
1244 The ref says ~Knockout!~. The crowd cheers in approval.^^\
1245 Several dwarves appear and cart the wood golem off. \
1246 Unfortunately, a stone golem soon walks into view!^^\
1247 The coach yells from the doorway ~You're doing great kid, \
1248 just hang in there.~^^\
1249 The ref says ~Round 2!~";
1252 print "Good shot! You whack the golem, and splinters fly";
1253 if (wood_golem.number > 10)
1254 ". It didn't seem to slow him down, though.";
1258 "You swing, but miss.";
1262 Object stone_golem "fierce-looking stone golem"
1263 with name "golem" "stone",
1266 The stone golem is quite a towering piece of work. He looks like a crude \
1267 statue made of animated granite. He probably has all the \
1268 finesse of a giant boulder, so don't let him pin ya!",
1272 Player_HP_CUR = Player_HP_CUR - 20;
1273 if (Player_HP_CUR <= 0) {
1275 "^The stone golem jumps forward and flattens you, \
1276 which feels similar to getting crushed by a giant \
1280 "^The golem hits you with a punch that sends you \
1283 "^The golem jabs with his left, and misses!";
1284 "^The golem tries to close, and misses.";
1288 if (the_spell_was == tossio_spell) {
1290 move iron_golem to Flathead_field;
1291 "The golem is suddenly replaced with a pile of steaming \
1292 linguini alfredo!^^\
1293 The ref yells ~Takeout!~ The crowd goes wild! \
1294 Several dwarves appear and serve the pasta to the crowd \
1295 on platters. Unfortunately, an iron golem soon \
1296 walks into view! ^^\
1297 The coach yells out from the safety of the locker room ~Okay kid, drop \
1298 this golem, and we can celebrate.~^^\
1299 The ref yells ~Round 3!~";
1306 stone_golem.number = stone_golem.number - 1;
1307 if (stone_golem.number <= 0) {
1309 move iron_golem to Flathead_field;
1310 "With a thundering blow, you smash the golem into \
1312 The ref says ~Knockout!~. The crowd cheers in approval.^^\
1313 Several dwarves appear and cart the stone golem off. \
1314 Unfortunately, an iron golem soon walks into view!^^\
1315 The coach yells out from the safety of the locker room ~Okay kid, drop \
1316 this golem, and we can celebrate.~^^\
1317 The ref yells ~Round 3!~";
1320 print "Solid blow! Stone chips fly.";
1321 if (stone_golem.number > 10)
1322 ". It didn't seem to slow him down, though.";
1326 "You swing, but miss.";
1330 Object iron_golem "deadly-looking iron golem"
1331 with name "golem" "iron",
1334 The iron golem resembles a huge nightmare made out of iron. \
1335 Towering at least 30 feet high, this animated iron statue isn't \
1336 something you'd want to meet in a dark alley, much less \
1337 in an arena filled with screaming fans.",
1341 Player_HP_CUR = Player_HP_CUR - 30;
1342 if (Player_HP_CUR <= 0) {
1344 "^The iron golem jumps forward and flattens you, \
1345 which feels similar to getting mashed by a giant \
1346 block of iron. Oww.";
1349 "^The golem staggers you with a punch that sends you \
1350 reeling! That felt quite painful.";
1352 "^The golem tries to flatten you, and you evade just in time!";
1353 "^The golem tries to step on you, and you dodge.";
1357 if (the_spell_was == bekdab_spell) {
1360 give Flathead_field ~general;
1362 move trophy to coach;
1364 "The golem suddenly develops many unsightly patches of rust. \
1365 Mortified, the golem calls for his oil trainer, but to no \
1366 avail! It soon falls apart into several rusty metal pieces!^^\
1367 The ref calls out ~The winner!~ and holds your hand aloft. \
1368 The crowd is on its feet! They'd probably be chanting your \
1369 name, if they knew it.^^\
1370 Several dwarves appear and drag off the rusty metal plates. \
1371 The ref explains that the prize money and a championship \
1372 trophy will be awarded in the \
1373 locker room, and exits.";
1380 iron_golem.number = iron_golem.number - 1;
1381 if (iron_golem.number <= 0) {
1384 give Flathead_field ~general;
1386 move trophy to coach;
1388 "With a thundering blow, you smash the golem into \
1390 The ref calls out ~The winner!~ and holds your hand aloft. \
1391 The crowd is on its feet! They'd probably be chanting your \
1392 name, if they knew it.^^\
1393 Several dwarves appear and collect the ball-bearings. \
1394 The ref explains that the trophy will be awarded in the \
1395 locker room, and exits.";
1398 print "Solid blow! You make a small dent.";
1399 if (iron_golem.number > 10)
1400 ". It didn't seem to slow him down, though.";
1404 "You swing, but miss.";
1408 ! (Three important NPCs)
1410 Object Morgan "Morgan the Ranger" Delbins
1411 with name "ranger" "warrior" "Morgan" "captain" "maiden",
1414 if (self in Delbins)
1415 "There's a warrior-maiden sitting at the bar, her \
1416 eyes riveted to the glass of ale.";
1418 "Morgan the Ranger is here.";
1420 description "She's nearly twice your height, and \
1421 probably twice your strength too. She's armed and armored in \
1422 typical military Ranger gear. She gives you the impression of \
1423 being the type who'd hunt dragons as a hobby -- assuming there were \
1424 any dragons left to hunt, of course.",
1426 if ((self in Ravine_pass) && (Morgan.number == 1)) {
1428 "^The Ranger sees you approach and recognizes you. \
1429 ~Well met again, Priest. I have need of your \
1430 assistance to end the kobold border war that has been going \
1431 on far too long.~ She pauses. ~To the \
1432 west and east are two of my lieutenants and their \
1433 soldiers, cut off from the rest of us by previous kobold \
1434 raids. I have the power to end this war and call a truce, \
1435 but to do so, I need \
1436 to inform both of my lieutenants to \
1438 windcat message carriers.~ She points to the two windcats \
1439 in the wicker cage and the pile of colored flags. \
1440 ~The 'red' flags indicate 'attack', the \
1441 'blue', truce. When my lieutenants receive the instructions, \
1442 they will verify my commands by sending additional messengers \
1443 with 'attack' or 'truce' instructions to each other. \
1445 received messages, each lieutenant will act accordingly.~ \
1446 She slaps you on the back, jolting you to attention. \
1447 ~Herein lies my problem, Priest. I know for a fact, that \
1448 one of my lieutenants is a traitor, who will \
1449 disobey my orders. Any instruction I send to the traitor, \
1450 the opposite will be sent by the traitor to my remaining \
1451 good lieutenant. The traitor will also take the two orders \
1452 he receives and do the opposite, if there is a majority, or \
1453 attack outright, if there are messages of 'truce' and 'attack'. \
1454 Thankfully, my good lieutenant will faithfully copy my \
1455 instructions to the other lieutenant, and will follow orders \
1456 received, if there is a majority, or follow a 'truce' if \
1457 there are mixed messages. My greatest problem, Priest, is that \
1458 I do not know which lieutenant is the traitor! If you \
1459 can bring peace once and for all to Southern Egreth, many \
1460 will remember your good deeds.~";
1465 if (special_word == 'hello') {
1467 if (Morgan.number == 2)
1472 "She's well-armed and probably dangerous.";
1474 "A gracious gesture, perhaps, but she isn't \
1477 "She nearly splits your skull with the flat of \
1478 a huge broadsword before you even get close. ~For a man of \
1479 the cloth, you've got a lot of nerve,~ she says.";
1481 if (((second == 'cat') || (second=='cats') ||
1482 (second == 'windcat') || (second=='windcats')) &&
1483 (Morgan.number == 2))
1484 "~Right, the windcats. \
1485 The speckled cat will find the lieutenant to the east. \
1486 The spotted cat will find the lieutenant to the west.";
1487 if (second == 'frobar' or 'wizard' or 'enchanter') {
1488 print "She laughs. ~You've never heard of \
1489 Frobar, the dullest Enchanter? The Enchanter who was so dull \
1490 that his fellow wizards forgot to invite him to the last \
1491 great meeting? This saved him from becoming an amphibian, so \
1492 perhaps dullness has its virtues";
1493 if (self in Delbins)
1494 ".~ The wizard looks rather insulted. \
1495 ~Oh hush up, Morgan.~ the wizard says.";
1498 if (second == 'thief' or 'gentleman') {
1499 print "She smiles. ~I can't say as I know \
1501 if (self in Delbins)
1502 "this fellow over here,~ she says and \
1503 gives the gentleman a whack on the back that nearly knocks his \
1504 teeth out. ~But I hear he's something of a thief.~ ~Nothing \
1505 of the sort!~ the gentleman protests.";
1507 "that thief fellow. I've been told \
1508 he has a hideout somewhere, nearly impossible to find.~";
1510 if (second=='kobold' or 'war')
1511 "~The war wages on, priest, even though the battle was lost \
1512 long ago, and there were no winners, kobold or man.~";
1513 if (second=='dragon' or 'dragons')
1514 "Morgan becomes momentarily thoughtful. ~Some of the best \
1515 dragon-hunting I ever did was up in Frostham long ago. \
1516 Those white frost dragons are quite a vicious lot. Best not \
1517 to wake a sleeping white dragon unless you have a weapon handy \
1518 and know how to use it!~";
1519 else "~Sorry, I'm not sure about that.~";
1520 default: "Morgan the Ranger appears to be \
1521 thinking important thoughts at the moment.";
1525 "~What's that you're mumbling there priest?~";
1527 has animate female proper;
1529 Object Frobar "Frobar" Delbins
1530 with name "Frobar" "wizard" "sorcerer" "enchanter",
1532 if (self in Delbins)
1533 "There's an old wizard sitting at the bar, his \
1534 eyes riveted to the glass of ale.";
1535 else "Frobar the Enchanter is here.";
1537 description "A wizardly old figure of a man.",
1540 "You make a threatening move. The wizard practically yawns! \
1541 ~Just what the world needs, another violent Priest.~ You stop, \
1542 somewhat embarrassed.";
1544 if (special_word=='hello')
1545 "The wizard nods. ~Hello, hello, and all that rubbish.~";
1547 if (self in Delbins)
1548 "The wizard is somewhat occupied at the moment.";
1550 if (second=='magic' or 'mystic') {
1551 print "Frobar scowls. ~Magic? We've seen the last \
1552 of magic, let me tell you. Does anyone remember what it did \
1553 for us? Does anyone mention the Enchanters that saved Quendor \
1554 from certain ruin many a time? Of course not. A bunch of \
1556 if (term_paper notin self)
1557 ". I just hope they're teaching the kids at Tech what magic \
1558 was all about, before we got all this 'new science' stuff everyone's \
1559 blabbering about.~";
1562 if (second=='golem' or 'golems')
1563 "Frobar sighs. ~Golems used to be useful, you know. But now, \
1564 without magic to control them, they go off and get into all \
1565 sorts of mischief.~";
1566 if (second == 'thief' or 'gentleman')
1567 "~Some fellow I've had some dealings with \
1568 in the past. Not a bad chap, but he does like to \
1569 supplement his income, if you know what I mean. Far \
1570 too risky a profession for my taste.~";
1571 if (second == 'morgan' or 'ranger' or 'warrior')
1572 "~Morgan Grueslayer, top military Ranger \
1573 in her graduating class, I hear. If she asks you to join \
1574 her on one of her campaigns, just walk away. All that \
1575 fighting -- too stressful if you ask me.~";
1576 if (second == 'barsap' or 'snaboz')
1577 !"~I don't even want to talk about it.~";
1578 "~Don't even get me started.~";
1581 if (self in Delbins)
1582 "The wizard is somewhat occupied at the moment.";
1583 if (noun == Ench_mag) {
1584 move Ench_mag to Frobar;
1585 "Frobar snatches the magazine out of your hands. \
1586 ~What are you doing with my mail?~ he says, irritated.";
1588 if (noun has is_scroll)
1589 "~A magic scroll, eh? Doesn't do me a lot of good \
1591 if ((noun has is_rod) || (noun has is_sphere)) {
1592 print "Frobar looks at ", (the) noun;
1593 " for a moment. ~Something \
1594 more than meets the eye here. Couldn't tell you what, though.~";
1596 if (noun==wood_book)
1597 "~So, you're a carpenter too?~ Frobar says, somewhat \
1599 if ((noun==term_paper) && (glossy_scroll in self))
1603 "~Hmm. Not very interesting.~";
1606 if ((noun==term_paper) && (glossy_scroll in self))
1608 if (self notin Delbins)
1610 else "The wizard pushes your offering aside. \
1611 ~I'm somewhat busy at the moment,~ he says, his eyes glued to \
1614 if (noun == Ench_mag) {
1615 move Ench_mag to Frobar;
1616 "Frobar grabs the magazine. \
1617 ~What are you doing with my mail?~ he says, irritated.";
1621 default: "~I'm rather busy at the moment.~";
1624 ! Handle Frobar's actions here...ALWAYS CHECK PARENT AND LOCATION
1626 if ((self in location) && (player in FROBAR_Bed)) {
1627 print "Frobar seems annoyed. ~Get out of my bed!~ he says, \
1628 and drags you to your feet. ";
1632 ! Misc housekeeping actions...
1633 if (random(3) < 3) {
1634 if ((frobar_plant in parent(self)) && (self in location))
1635 print "^Frobar tends to the plant.^";
1636 if (FROBAR_Bed in parent(self) && self in location)
1637 print "^Frobar arranges some quilts on the bed.^";
1638 if (FROBAR_shelves in parent(self) && self in location)
1639 print "^Frobar pulls a book off the shelves, glances through it, and puts it back.^";
1640 if (parent(self) == FROBAR_Lounge && self in location)
1641 print "^Frobar dusts the furniture a bit.^";
1644 ! Random self mutterings...
1646 if (self in location && self notin Delbins) {
1648 1 : "^Frobar mutters to himself, ~They didn't even invite \
1649 me to the Last Enchanter's Guild Meeting.~";
1650 2 : "^Frobar mutters to himself, ~Good old dependable Frobar. Bah!~";
1651 3 : if (Ench_mag in self)
1652 "^Frobar leafs through a magazine he holds. ~What happened to \
1653 Barsap? Hah! Did they ask me? No, of course not.~";
1655 "^Frobar checks his pockets. ~What did I do with this \
1656 month's 'Enchanter Monthly'?~ he muses outloud.";
1661 daemon [ i j k Mdest Mdir;
1662 ! This daemon will only deal with NPC movement...
1664 if (random(3) ~= 1) rfalse; ! doesn't always immed. move
1666 ! Count the available exits quickly
1667 objectloop(i in Compass)
1668 if (ZRegion(parent(self).(i.door_dir)) == 1)
1670 if (k == 0) rtrue; ! no exits...
1672 ! Pick a place to move to.
1673 ! In Frobar's case, most of the time he only has one exit.
1674 ! Also, we can block the sw exit of home here.
1675 if (parent(self) == FROBAR_Foyer) {
1677 Mdest = FROBAR_Parlor;
1678 MovePrintNPC(Frobar,Mdest,Mdir);
1682 ! Pick an exit at random and attempt to travel that way
1683 j = random(k); k = 0;
1684 objectloop(i in Compass) {
1685 if (ZRegion(parent(self).(i.door_dir)) == 1) {
1689 Mdest = parent(self).(i.door_dir);
1690 MovePrintNPC(Frobar,Mdest,Mdir);
1700 move term_paper to self;
1701 move glossy_scroll to player;
1702 "Frobar glances over the term paper and his eyes widen. \
1703 ~Wilbur -- why, that's my great nephew!~ He takes the paper and \
1704 reads. ~So true, so true,~ he mumbles and smiles. ~A fine boy, \
1705 perhaps he'll become a great man someday, if he stops skipping class. \
1706 He reminds me of my days at Tech -- all filled with dreams and hopes.~ \
1707 He pauses, and searches his pockets. ~I even perfected a spell, did \
1708 you know? Good old loyal, boring Frobar perfected a spell, and, \
1709 if it hadn't been for that Snaboz show-off who had to go and perfect the \
1710 izyuk spell, I might have even tried to publish mine.~ He finds a \
1711 scroll amongst his robes and hands it to you. ~You don't believe me? Here, \
1712 see for yourself.~";
1715 Object Thief "thief" Delbins
1716 with name "thief" "character" "gentleman",
1719 if (self in Delbins)
1720 "There's a gentleman dressed in black sitting at the \
1721 bar, his eyes riveted to the glass of ale.";
1723 description "A lean crafty-looking individual, dressed mostly \
1724 in black. He seems a bit too scruffy to be a nobleman, but also \
1725 a bit too distinguished to be a common thug. Probably a thief, I'd \
1729 "You make a threatening move, but the thief seems to \
1730 move twice as fast! You find yourself looking at the sharp end \
1731 of a stiletto. ~I'm too much of a gentleman to harm a Priest,~ \
1732 the thief says, ~so don't force me to make an exception.~";
1734 if (special_word == 'hello')
1735 "The gentleman gives a sharp nod in your direction.";
1737 if (second == 'magistrate')
1738 "The thief gives you a knowing nod. ~The Aragain magistrate? \
1739 A honorless cur, if I ever saw one.~";
1740 if (second == 'painting')
1741 "The thief shrugs. ~I hear there's a nice new painting on \
1742 exhibit at the royal museum. You might want to check it out.~";
1743 if (second == 'lock' or 'locks')
1744 "The thief shrugs. ~Do I look like a locksmith?~";
1747 if (noun has is_coin || noun==trophy) {
1749 "Confused, the thief pockets your offering. \
1750 ~Quite generous of you, sir.~ he says.";
1753 default: "The gentleman glances at you with \
1754 dark suspicious eyes.";
1758 "You speak the chant perfectly, but nothing \
1759 seems to happen! The gentleman smiles and pats his dark cloak, \
1760 which seems to glow briefly with mystic energy, then fade!";
1764 Object thief_cloak "dark cloak" Thief
1765 with name "dark" "cloak",
1766 description "A coal-black cloak, which blends into \
1767 the surrounding shadows.",
1770 "You speak the chant perfectly, but nothing \
1771 seems to happen! The gentleman smiles and pats his dark cloak, \
1772 which seems to glow briefly with mystic energy, then fade!";
1776 Object Delbin "Delbin" Delbins
1777 with name "Delbin" "bartender" "owner",
1779 initial "Delbin himself is standing behind the bar.",
1780 description "Delbin is a stout bald fellow with laughing eyes and \
1781 a heavy beard. He somehow seems both young and old at the same \
1784 if (random(20) == 1)
1785 "^Delbin cleans some glasses behind the bar.";
1789 if (noun == headdress)
1790 "~You're welcome to that unsightly thing, sir. \
1791 Been trying to get rid of it for sometime.~";
1793 "Delbin give you a curious look, \
1798 Attack, Kiss, ThrowAt: "Leave good old Delbin alone.";
1800 if (special_word == 'hello')
1801 "~Welcome to Delbin's, good sir.~";
1803 if (noun has is_coin) {
1804 print "Delbin refuses your offering. \
1805 ~Keep your change, sir. If you're looking for a good tip, \
1806 I can tell you what I hear.~^^";
1807 <<Ask Delbin 'rumor'>>;
1811 "Delbin takes the rag and cleans a spot on the bar, leaving \
1812 it in a familiar place.";
1814 "Delbin politely refuses.";
1816 if (noun == headdress)
1817 "~There's a good story behind that ugly thing. Maybe if you \
1818 keep reminding me, I'll remember it.~";
1819 print "~A nice ", (name) noun;
1820 " you've got yourself there.~";
1822 if (second == 'ale' or 'situation') {
1823 if (Morgan in Delbins)
1824 "~Quite a situation we've got sir. Those three at \
1825 the front of the bar all ordered a glass of Special Borphee Ale. Well, \
1826 with the shutdown of the Brewers Guild in Borphee since the Great \
1827 Change, I can't keep that particular beverage in stock, but I've got \
1828 that one left there. Seems none of them's leaving until they decide \
1829 who gets the ale -- and let me tell you, those three are folks who \
1830 don't like to be disappointed!~";
1831 "Delbin smiles. ~All out of ale sir. But I suppose \
1832 ye already knew that?~";
1834 if (second == 'rod')
1835 "Delbin shrugs. ~Sounds vaguely familiar sir, \
1836 maybe I heard a rumor about it once. Can't really say, though.~";
1837 if (second == 'headdress')
1838 "~There's a good story behind that ugly thing. Maybe if you \
1839 keep reminding me, I'll remember it.~";
1840 if (second == 'rag')
1841 "~Not much more than a rag, sir.~";
1842 if (second == 'minirva')
1843 "~I think that's the name of some old \
1844 Antharian Sea Goddess. Like a patron saint to sailors, in \
1846 if (second == 'morgan' or 'warrior' or 'ranger')
1847 "~Morgan Grueslayer's a skilled ranger.~";
1848 if (second == 'frobar' or 'wizard' or 'enchanter')
1849 "~Frobar's probably one of the last \
1850 enchanters around. He's a regular here.~";
1851 if (second == 'thief' or 'gentleman')
1852 "~Don't really know that fellow's name. \
1853 He tips well, though.~";
1854 if (second == 'rumor' or 'rumors' or 'story') {
1856 print "Delbin scratches his ear and says, \
1857 ~Yes, now, what did I hear...~^^";
1859 "~People tell me this new Flathead king is \
1860 a fake, plain and simple. Hasn't stopped people from trying to \
1861 get on his good side, though. Now, I haven't seen the fellow \
1862 myself, but if you ask me, somebody somewhere is up to no good.~";
1864 "~They say the kobold war up north is gonna \
1865 end real soon. I'll believe that when it happens.~";
1867 print "~Oh, this one's a good one.";
1868 if (headdress in Delbins)
1869 print " You see that headdress over there? \
1870 Well, this explorer fellow left it here, along with quite a story. \
1872 else print " Some explorer fellow";
1873 " claimed he found some lost ancient city in the Miznia \
1874 jungles. Said he made a map to the place, but lost it when bargaining \
1875 for his life with some jungle natives. I just nodded and let \
1876 the poor man talk.~";
1879 "~This crazy-looking old fellow stops in \
1880 the other day. Said that he was a professor, at GUE Tech, but \
1881 that he was giving that all up! Something about his \
1882 research going bad, on something he called 'an ethereal gate'. \
1883 What all of that means, I can't say.~";
1885 "~Say, you sorta remind me of this other Priest \
1886 fellow who stopped by here a long long time ago. Delbin \
1887 never forgets, you know? This fellow, who didn't give a name, \
1888 told me he was on an important \
1889 quest for something called -- now what was it -- 'The \
1890 Rod of the Ancients', or something like that. That \
1891 mean anything to you?~";
1893 print "~An artist friend of mine tells me that \
1894 this new Leonardo Flathead painting they've recently discovered \
1895 on display at the Royal Museum has a special secret. They \
1896 say that Leonardo painted over something else under the canvas, but no one's \
1897 saying what. They're keeping a watchful eye on it too, just \
1898 in case curiosity gets the better of some folk. In fact, \
1899 I hear they've already had a few people trying to steal the \
1901 if (Thief in Delbins)
1902 "!~ The thief suddenly starts to cough, and controls himself.";
1905 ! Add further rumors here...
1906 "Delbin shrugs. ~Guess I'm getting old, \
1907 nothing comes to mind at the moment. Maybe if you \
1908 give me a moment, I'll think of something.~";
1913 if (the_spell_was == foblub_spell)
1914 "You relate a fine sermon to Delbin about spirits -- \
1915 both the liquid kind and the not-so-liquid kind. Were \
1916 Delbin sitting rather than standing behind the bar, \
1917 he might even be glued to his seat by now. ~A fine \
1918 speech there, reverend.~";
1919 if (the_spell_was == espnis_spell)
1920 "You relate a dull sermon to Delbin about the various \
1921 types of wood casks used in brewing Mithicus beer. \
1922 Delbin, being a bartender, is a good listener, and \
1923 manages to stay awake.";
1931 Object musty_scroll "musty scroll" telescope
1936 Object fiznav_spell "make boat sea-worthy" musty_scroll
1940 if (second has animate)
1941 "Your chant goes unanswered. It's not intended for \
1944 "Your chant goes unanswered. It's intended for boats apparently.";
1948 Object pale_scroll "pale scroll"
1953 Object shazok_spell "call lightning from storm" pale_scroll
1957 if (second==0 && location==GURTH_Forest) {
1958 <<Cast shazok_spell storm1>>;
1960 "Your chant goes unanswered. You need a genuine \
1961 natural storm, I suppose.";
1965 Object glossy_scroll "glossy scroll" Frobar
1970 Object feeyuk_spell "allow creature to resist gravity" glossy_scroll
1974 if ((second == 0) || (second hasnt animate))
1975 "The chant backfires, and your feet feel numb!";
1976 if (second == player) {
1977 has_resist_gravity = 1;
1978 StartTimer(self,75);
1979 "You speak the chant in clear tones. Initially, you \
1980 feel no different. And then, strangely, your back feels better \
1981 than it has in years, and your step seems lighter!";
1984 " is no doubt thankful for the power to resist gravity.";
1988 has_resist_gravity = 0;
1989 "You feet feel heavy again.";
1997 Object trophy "trophy"
1999 description "A lovely gold and platinum grail-like trophy that looks \
2000 very antique. The letter ~D~ is inscribed on the side. \
2001 You notice three odd bumps on the bottom of the circular base.",
2007 ! if (noun hasnt is_sphere)
2008 ! "That doesn't seem to fit.";
2009 ! ! else fancy light tricks
2012 ! container open transparent;
2014 Object win_bag "bag"
2016 description "A small cloth bag.",
2022 Object c20 "coin" win_bag class coin_class;
2023 Object c21 "coin" win_bag class coin_class;
2024 Object c22 "coin" win_bag class coin_class;
2025 Object c23 "coin" win_bag class coin_class;
2026 Object c24 "coin" win_bag class coin_class;
2027 Object c25 "coin" win_bag class coin_class;
2028 Object c26 "coin" win_bag class coin_class;
2029 Object c27 "coin" win_bag class coin_class;
2030 Object c28 "coin" win_bag class coin_class;
2031 Object c29 "coin" win_bag class coin_class;
2032 !Object c30 "coin" win_bag class coin_class;