2 ! **************************************************************
5 ! Frostham locations in SPIRITWRAK, included in spirit.inf
6 ! (Do not compile and/or use separately!)
8 ! SPIRITWRAK is free software; you can redistribute it and/or modify
9 ! it under the terms of the GNU General Public License as published by
10 ! the Free Software Foundation; either version 3 of the License, or
11 ! (at your option) any later version.
13 ! SPIRITWRAK is distributed in the hope that it will be useful, but
14 ! WITHOUT ANY WARRANTY; without even the implied warranty of
15 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 ! General Public License for more details.
18 ! You should have received a copy of the GNU General Public License
19 ! along with SPIRITWRAK. If not, see <https://www.gnu.org/licenses/>./>
20 ! **************************************************************
22 Object FROSTHAM_Outskirts "Frostham Outskirts"
24 print "You are at the northern outskirts of Frostham. \
25 The city proper is to the south. A few \
26 snow covered residences are nearby. \
27 A trail leads into a valley to the north";
28 if (self hasnt general) {
30 ".^^The last time you saw Frostham was before you \
31 entered the Monastery -- many years ago at least. \
32 Oddly, it seemed bigger and less desolate then.";
36 name "city" "snow" "residences" "trail" "valley",
39 cant_go "You walk around the local area a bit, finding \
40 nothing of interest.",
43 Object FROSTHAM_2 "Frostham"
44 with description "You are in Frostham City, the famous winter-\
45 lover's haven. The once booming ski vacation spot seems \
46 to be a bit more run-down than in times past. \
47 The city thins out towards the north, while \
48 another section of town is to the south. To the west is \
49 a large wood structure. To the southwest is a small \
50 building. To the southeast is another small building, possibly a \
52 name "wood" "structure" "building" "store",
53 n_to FROSTHAM_Outskirts,
55 sw_to FROSTHAM_Governer1,
56 s_to FROSTHAM_GUSStop,
58 cant_go "You walk around the local streets a bit, finding \
59 nothing of interest.",
61 if (GROC_hall1 has general)
63 ! Why check the grocery hallway here?
64 ! Conceptually, if the player dies in the hallway (rather
65 ! difficult, but possible by swearing, for example),
66 ! the hallway should 'adjust' itself to the new weight.
67 ! I simply check this here, because the player must go
68 ! this way to reach the hallway for a second time.
72 Object FROSTHAM_Store "General Store"
74 print "This appears to be a small grocery store, \
75 strangely abandoned at the moment. Shelves line the walls, \
76 although, since no one is minding \
77 the store, the current stock seems to be a bit depleted. \
78 You notice an exit south marked ~EMPLOYEES ONLY~ that \
80 if (GROC_hall1.number == 1)
81 print "some hallway.";
84 " The way back out is to the northwest.";
86 name "stock" "shelves",
89 if (GROC_hall1.number == 1) return GROC_hall1;
91 "You pull back before falling into what appears to be a deep \
92 pit of some sort beyond the south exit.";
99 print "You hear a grinding noise from behind \
108 Take, Pull, Turn: "It's rather heavy.";
109 Push: "It's heavy, but you manage to make it slide \
110 along the floor a bit.";
112 if (location == FROSTHAM_Store && second == nw_obj)
113 "A portion of the door seal blocks the crate from going outside.";
114 if (location == GROC_hall1 && second == s_obj) {
115 print "^You give the crate a good shove.^";
116 move self to GROC_hall2;
119 if (location == GROC_hall1 && second == n_obj) {
120 print "^You give the crate a good shove.^";
121 move self to FROSTHAM_Store;
124 if (location == GROC_hall2 && second == n_obj) {
125 print "^You give the crate a good shove.^";
126 move self to GROC_hall1;
129 if (location == FROSTHAM_Store && second == s_obj && GROC_hall1.number == 1) {
130 print "^You give the crate a good shove.^";
131 move self to GROC_hall1;
134 ! (we do our own version to allow the CheckHall() to
136 AllowPushDir(); rtrue;
140 Object BARREL1 "dusty crate" FROSTHAM_Store
143 description "A dust-covered crate.",
145 Object BARREL2 "moldy crate" FROSTHAM_Store
148 description "A mold-covered crate.",
150 Object BARREL3 "filthy crate" FROSTHAM_Store
153 description "A filth-covered crate.",
156 Object GROC_hall1 "North end of Hallway"
157 with name "end" "hallway",
160 print "You're at the north end of a short N-S hall. \
162 switch (GROC_hall1.number) {
163 1: print " slopes sharply upwards to the south. \
164 You notice two dark doorways above you along the northern wall, \
165 one above the other, \
166 but no obvious means of getting to them";
167 2: print " travels evenly to the south. \
168 You notice a dark doorway above you along the northern wall, \
169 but no obvious means of getting to it";
170 3: print " slopes sharply downwards to the south";
172 ". To the north is an exit.";
175 if (self hasnt general) {
177 "^The hallway suddenly creaks underfoot! The floor \
178 shakes briefly and dust seems to rise from cracks near the \
179 walls. Apparently, your unexpected presence has jarred \
180 some old mechanisms back to life!";
184 switch (GROC_hall1.number) {
185 1: return FROSTHAM_Store;
186 2: return GROC_stockroom;
187 3: return GROC_attic;
192 if (noun == n_obj or s_obj) {
195 print "^You hear a low grinding noise. \
196 The hallway underfoot suddenly shifts and drops!^";
201 Jump: "You jump for a bit. The floor feels strangely \
207 Object GROC_hall2 "South end of Hallway"
208 with name "end" "hallway",
211 print "You're at the south end of a short N-S hall \
212 that seems to lead nowhere. The hallway";
213 switch (GROC_hall2.number) {
214 1: " slopes sharply upwards to the north.";
215 2: " travels evenly to the north.";
216 3: " slopes sharply downwards to the north.";
224 print "^You hear a low grinding noise. \
225 The hallway underfoot suddenly shifts and drops!^";
229 Jump: "You jump for a bit. The floor feels strangely \
235 ! (Routine for checking 'weights' of two sides of hallway)
236 ! (assumes called from room's _after_ routine, thus all
237 ! barrels and players are in their after_turn places)
238 ! RETURNS: 0 if no change
239 ! 1 if NORTH END now higher than before
240 ! 2 if NORTH END now lower than before
242 i ! local total of weight points for north end
243 j ! local total of weight points for south end
244 k ! local -- orig setting of north end (.number)
247 k = GROC_hall1.number;
248 if (player in GROC_hall1)
250 if (player in GROC_hall2)
252 if (BARREL1 in GROC_hall1) i = i + 1;
253 if (BARREL1 in GROC_hall2) j = j + 1;
254 if (BARREL2 in GROC_hall1) i = i + 1;
255 if (BARREL2 in GROC_hall2) j = j + 1;
256 if (BARREL3 in GROC_hall1) i = i + 1;
257 if (BARREL3 in GROC_hall2) j = j + 1;
259 GROC_hall1.number = 2;
260 GROC_hall2.number = 2;
263 GROC_hall1.number = 1;
264 GROC_hall2.number = 3;
267 GROC_hall1.number = 3;
268 GROC_hall2.number = 1;
270 if (GROC_hall1.number == k)
272 if (GROC_hall1.number > k)
274 if (GROC_hall1.number < k)
279 Object GROC_stockroom "Stockroom"
281 print "This is a tiny poorly lit room, that \
282 is covered in dust. An exit south leads to a";
283 if (GROC_hall1.number == 2) print " short hallway";
284 else print " dark hole";
285 if (GROC_attic has general)
286 print ". Above, a hole has been exposed in the ceiling structure";
290 u_to [; if (GROC_attic hasnt general)
291 "You can't go that way.";
292 else return GROC_attic;
295 if (GROC_hall1.number == 2) return GROC_hall1;
297 "You pull back before falling into what appears to be a deep \
298 pit of some sort beyond the south exit.";
305 print "You hear a low grinding noise behind you.^";
310 Object GROC_attic "Attic"
312 print "This is an exceptionally cramped attic, obviously \
313 unused for some time. The floorboards are starting to crack.";
314 if (self has general)
315 print " One section of the floor is particularly poor, and has \
316 a gaping hole leading downwards into darkness.";
317 " An exit heads south.";
319 name "sag" "crack" "hole",
321 if (GROC_attic hasnt general)
322 "You can't go that way.";
323 else return GROC_stockroom;
326 if (GROC_hall1.number == 3) return GROC_hall1;
328 "You pull back at the edge of the exit. The floor, it \
329 appears, is too far below you!";
336 print "You hear a low grinding noise behind you.^";
341 Object attic_floorboards "floorboards" GROC_attic
342 with name "boards" "floorboards",
344 print "Some badly rotting floorboards";
345 if (GROC_attic has general)
346 " with a noticeable hole in one section.";
348 if (self has general)
349 " with a noticeable sag in one section.";
354 Take: "They're nailed into the floor.";
355 Push, Pull, Attack, Shake:
356 if (self has general)
357 "The floor shakes a bit, but nothing else happens.";
359 move loose_board to GROC_stockroom;
361 "The floor shakes under your abuse, and suddenly, a \
362 portion in the middle sags considerably! But nothing else \
368 Object loose_board "loose board"
369 with name "loose" "board",
370 initial "You notice a loose board, partially \
371 broken, hanging from the ceiling structure.",
372 description "A portion of the ceiling boards \
373 has apparently broken loose.",
376 give GROC_attic general;
378 "You give the board a good couple of yanks. The board \
379 soon breaks off, taking a small portion of the ceiling \
380 with it! After the dust settles, you notice the rather \
381 poor remodeling job you've done to the ceiling.";
386 ! (the coffee was moved to the cafe in Borphee)
387 Object decaf_coffee_can "can of decaf coffee"
388 with name "can" "coffee" "decaf",
389 description "The can reads: ~Frobozz coffee crystals~^^\
390 ~Rich, mountain-grown flavor.~^^DECAFFEINATED.",
393 "You'd need a good can-opener for that.";
398 Object icebox_key "square key" GROC_attic
399 with name "key" "square",
404 Object icebox "icebox" GROC_stockroom
405 with name "icebox" "box",
406 description "A rather old-looking icebox.",
410 when_closed "A dust-covered icebox stands closed against \
413 print "The icebox is open. ";
415 if (x == 0) "It is also empty.";
417 if (x == 1) print "is: "; else print "are: ^";
418 x = FULLINV_BIT + INDENT_BIT + NEWLINE_BIT + RECURSE_BIT;
419 WriteListFrom (child(self), x, 1);
422 has static container openable lockable locked;
424 Object cerealbox1 "blue cereal box" icebox
425 with name "box" "blue" "Crunchies",
426 description "A blue paper box with lettering that reads:^^\
427 ~Grueslayer Crunchies!^^\
428 (It's not just for adventurers anymore!)^^\
429 [Free bonus scroll surprise inside!]~^^\
430 Writing on the box reads ~50zm~.",
434 if (noun == cerealbox2 or cerealbox3) {
435 "That doesn't quite fit.";
438 if (the_spell_was == zemdor_spell) {
439 if (self hasnt general) {
441 move cerealbox2 to parent(cerealbox1);
442 move cerealbox3 to parent(cerealbox1);
444 "The box of cereal suddenly seems to dance with magic! \
445 Before your very eyes, the box suddenly splits into \
446 three boxes! The magic fades, but the boxes remain.";
449 "The magic fights against the cereal box, but fails. \
450 I guess you can only triplicate once.";
453 has container openable;
455 Object cerealbox2 "navy-blue cereal box"
456 with name "box" "navy-blue" "Sugarglobs",
457 description "A navy-blue paper box with lettering that reads:^^\
458 ~Frobozz Super Sugar Globs!^^\
459 (Seventeen times the sugar of any other cereal!)^^\
460 [Free bonus Frobozz toy inside!]~^^\
461 Writing on the box reads ~50zm~.",
466 if (noun == cerealbox1 or cerealbox3) {
467 "That doesn't quite fit.";
470 has container openable;
472 Object cerealbox3 "royal-blue cereal box"
473 with name "box" "royal-blue" "Dornflakes",
474 description "A royal-blue paper box with lettering that reads:^^\
476 (Just like Grandma Dimwit used to make!)^^\
477 [Free bonus Frobozz toy inside!]~^^\
478 Writing on the box reads ~50zm~.",
483 if (noun == cerealbox1 or cerealbox2) {
484 "That doesn't quite fit.";
487 has container openable;
489 ! A Breakfast cereal class -- what a concept
492 description "A quantity of overly-sweetened breakfast cereal.",
498 "You consume the cereal. The sugar rush occurs five seconds \
499 later and ends just as quickly.";
503 Object cereal1 "crunchy cereal" cerealbox1
506 Object cereal2 "sugary cereal" cerealbox2
509 Object cereal3 "flaky cereal" cerealbox3
513 Object baking_powder "packet of baking powder" icebox
514 with name "powder" "baking" "packet",
515 short_name "packet of baking powder",
516 description "A single-use packet of baking powder from \
517 ~Port Foozle Bakers Guild~ products.",
523 "You eat the baking powder. Yuck.";
527 Object butter "stick of butter" icebox
528 with name "butter" "stick" "fat",
529 description "A good-sized stick of butter.",
535 print "You eat the entire stick of butter.";
537 " Your heart will no doubt thank you for that someday.";
540 intake of concentrated fat is too much of a shock to your \
541 system, and an important artery somewhere bursts.";
545 Object FROSTHAM_Resort "Ski Resort"
546 with description "You are inside a large ski resort. Perhaps \
547 it's not ski-season, as the entire place is \
548 basically empty. Frostham city lies to the \
550 name "resort" "city" "ski" "skis" "earmuff" "earmuffs",
553 w_to "You don't have a lift-ticket. Also, you don't have \
554 skis. Most importantly, however, the slopes look \
558 Object FROSTHAM_Governer1 "Governor's House, Waiting Room"
559 with description "You are in a waiting room in the house of the Frostham \
560 Governor. The carpet is surprisingly plush. \
561 The walls have been painted a rather bland \
562 peach-like color. The furnishings \
563 are also colored peach, which complements the \
564 walls without being too nouveau. The way out \
565 is to the northeast.",
566 name "carpet" "furnishings",
573 give Gov_door ~open locked;
574 print "You hear the door slam and lock behind you.^";
579 Object Gov_couch "couch" FROSTHAM_Governer1
580 with name "couch" "peach",
581 initial "A comfortable-looking peach-colored couch is here.",
582 description "It looks pretty comfy, but the color wouldn't \
583 have been your first choice.",
586 if (self hasnt general) {
588 move c1 to FROSTHAM_Governer1;
589 "You rummage through the cushions and a coin falls out!";
591 "You find nothing of interest.";
593 has static enterable supporter;
595 Object travel_posters "travel brochure" FROSTHAM_Governer1
596 with name "brochure" "travel",
597 description "The brochure has pictures of various cheerful-looking \
598 people in rather cheerful-looking places. \
599 Bold lettering reads ~FEEL BETTER IN MIZNIA~, \
600 ~IT'S ARAGAIN, AGAIN~, \
601 and ~NEW BORPHEE, EVERYONE'S FAVORITE CITY~",
605 Object c1 "coin" class coin_class;
607 Object Gov_desk1 "desk" FROSTHAM_Governer1
608 with name "desk" "waiting" "room",
609 description "A fairly plain-looking desk",
610 has scenery supporter;
612 Object Gov_ledger "ledger" Gov_desk1
615 if (receptionist in FROSTHAM_Governer1)
616 "The receptionist seems to be using it at the moment.";
617 "The ledger reads:^^\
618 ~ -- New signed petition for presentation and coronation of \
619 new King delivered to Aragain Magistrate, awaiting word of \
620 event schedule.~^^That's all. I guess the governor hasn't been \
621 very busy as of late.";
627 if (receptionist in FROSTHAM_Governer1)
628 "The receptionist gives you a rather menacing look.";
633 Object alarm_clock "alarm clock" Gov_desk1
634 with name "clock" "alarm",
636 print "A small round desk-clock, with a set of bells \
637 on the top, and a small pull-knob on the back. \
638 Strangely, the clock seems to be stopped. Two hands, black and golden, \
639 are sitting at ",alarm_clock.number," and ",
640 alarm_clock_dial.number;
644 number 9, ! setting of the clock hand
647 alarm_clock.number = alarm_clock.number + 1;
648 if (alarm_clock.number > 12) alarm_clock.number = 1;
649 x = TestScope(alarm_clock,player);
650 if (x==1) print "^The alarm clock suddenly makes an \
651 awful grinding noise";
652 if (alarm_clock.number == alarm_clock_dial.number) {
654 if (x==1) print ", followed by a ear-splitting clang!^";
655 ! certain events follow:
656 ! if receptionist still in office and self in office,
657 ! receptionist leaves (if player in office, he'll
658 ! see this, or see it outside the office)
659 if ((receptionist in FROSTHAM_Governer1) &&
660 (((self in FROSTHAM_Governer1) || (self in Gov_desk1)) ||
661 ((self in player) && (player in FROSTHAM_Governer1))) ) {
662 remove receptionist; ! a long lunch hour, apparently...
663 ! give alarm_clock general;
665 if (player in FROSTHAM_Governer1)
666 "^The receptionist suddenly jumps from her \
667 seat and rushes out of the room, screaming ~Lunchtime!~";
668 if (player in FROSTHAM_2)
669 "^You see a woman rush out of the building \
670 to the southwest, and quickly vanish.";
673 ! future: boutique in Miznia -- brings salesman to front
674 if (((self in MIZNIA_Boutique) || (self in player)) &&
675 (player in MIZNIA_Boutique)) {
676 print "^From somewhere in the back of the \
677 store, a tailor rushes out and";
678 if (MIZNIA_Boutique hasnt general) {
679 give MIZNIA_Boutique general;
680 move fancy_scroll to player;
682 " sees you. ~We've got a rather \
683 busy schedule,~ he explains, ~but let me see what I can do.~ \
684 He gives you a somewhat unapproving look. ~The ascetic-monk \
685 look is out, you know. Here.~ He pins a rolled paper object \
686 to your clothes. ~The latest craze -- wearing magic scrolls. \
687 Beats using them nowadays, I hear. Now, like I said, we're \
688 very busy.~ He goes off to the back of the store.";
692 ~I've done all I can for you right now,~ he explains as \
693 goes off to the back of the store.";
700 add_to_scope alarm_clock_dial alarm_clock_bells alarm_clock_hands,
703 Object alarm_clock_dial "knob"
704 with name "pull" "knob",
705 description "A small, pullable knob on the back of the clock.",
710 if (self has general) {
712 "pushes in a short bit.";
714 else "is as far in as it can go.";
717 if (self hasnt general) {
719 "pulls out a short bit.";
721 else "is as far out as it can go.";
723 if (self hasnt general) {
725 StartTimer(alarm_clock,1);
726 "The knob turns -- barely. You \
727 hear a small clicking noise as well.";
731 alarm_clock_dial.number = alarm_clock_dial.number + 1;
732 if (alarm_clock_dial.number > 12)
733 alarm_clock_dial.number = 1;
734 print "The knob turns easily. You notice the \
735 golden hand on the front sweep to ",alarm_clock_dial.number;
738 ! if (alarm_clock hasnt general) {
740 ! "It doesn't turn anymore. I guess the receptionist \
741 ! broke the clock (not that it was in good shape to \
746 Object alarm_clock_hands "hands"
747 with name "hand" "hands"
750 Object alarm_clock_bells "bells"
751 with name "bell" "bells"
754 Object FROSTHAM_Governer2 "Governor's Office"
755 with description "You are in a rather spacious office. The \
756 carpeting is quite plush, and all the furnishings seem \
757 excessively lavish.",
758 name "carpeting" "furnishings",
762 Object Gov_desk2 "desk" FROSTHAM_Governer2
763 with name "desk" "office",
764 description "A fairly impressive looking desk, made from \
765 a massive lacquered piece of black oak wood.",
768 if (the_spell_was == egdelp_spell)
769 "The desk is covered with a ugly waxy film. \
770 The governor looks extremely annoyed and wipes the desk clean with \
772 Push, Pull, Rub, Attack, Search:
773 "~Do you mind?~ the governor says.";
775 has scenery supporter;
777 Object Gov_door "door"
778 with name "door" "office",
780 print "There's a closed door to the ";
781 if (self in FROSTHAM_Governer1)
786 print "There's an open door to the ";
787 if (self in FROSTHAM_Governer1)
791 description "It's just a thick door.",
792 door_dir [ ; if (location==FROSTHAM_Governer1) return s_to;
795 door_to [ ; if (location==FROSTHAM_Governer1)
796 return FROSTHAM_Governer2;
797 return FROSTHAM_Governer1;
801 if ((location==FROSTHAM_Governer1) &&
802 (receptionist in FROSTHAM_Governer1))
803 "The receptionist puts a hand in your way and says, \
804 ~The governor is currently busy.~";
806 if (location==FROSTHAM_Governer2)
807 "~Close it on your way _out_~, the governor snarls.";
809 found_in FROSTHAM_Governer1 FROSTHAM_Governer2,
810 has static door openable lockable;
812 Object FROSTHAM_GUSStop "Subway Entrance"
813 with description "You're near the southern end of the city. \
814 The rest of the city lies to the north. \
815 There's also a rather conspicuous \
816 stairway down here.",
819 u_to "You can't go that way.",
820 d_to FROSTHAM_GUSStation,
821 cant_go "You walk around the local streets a bit, finding \
822 nothing of interest.",
826 ! ******************************************************************
828 ! ******************************************************************
830 Object ski_instructor "ski instructor" FROSTHAM_Resort
831 with name "instructor" "dude" "skier" "guy" "tall" "lanky",
833 print "A tall lanky guy is here, holding two colorful \
834 skis. He seems to be ";
835 if (waxy_scroll in self)
836 "waxing them with a scroll.";
837 "concentrating greatly on waxing \
840 description "A tall lanky guy, like I said. He's \
841 decked out in fancy bright winter clothes.",
844 "~Dude, you must chill.~";
846 if (special_word == 'hello' or 'hi')
847 "The skier gives you the 'thumbs-up' sign. \
849 else "~Uh, whatever, dude.~";
852 "~Hey dude, can I borrow that?~";
853 "~Uh, whatever, dude.~";
855 if (action==##Give) {
858 if (((noun==waxy_scroll) && (self hasnt general)) ||
859 ((noun==rag) && (self has general)))
860 "~I'm using it, dude.~";
862 "~Dude, I have no idea what you're talking about.~";
865 "~A rag makes an excellent ski-maintenance accessory, dude.~";
866 if ((second=='scroll' or 'waxy') && (self hasnt general))
867 "~Something I found at the top of a run. \
868 Doesn't work too well, but hey, I gotta wax.~";
870 "~My rad Grayslopes Slaloms. If you don't wax 'em \
871 every 30 seconds, they lose their speed.~";
872 if ((second=='slopes') || (second=='slope') ||
873 (second=='powder') || (second=='runs') ||
875 "The skier takes you aside. ~Listen dude, \
876 between you and me, the slopes here rot. They \
877 used to be way better. But you know, I hear there \
878 are some _killer_ drops up north.~";
879 "~Dude, I have no idea what you're talking about.~";
882 move waxy_scroll to FROSTHAM_Resort;
886 "The skier gladly takes the rag and starts \
887 polishing immediately. He lets the scroll \
888 fall to the ground. ~Excellent man, thanks!~";
890 "~No thanks, dude.~";
891 default: "At the moment, the skier is too busy waxing.";
894 if (waxy_scroll notin self && self hasnt general) {
897 "^~Dude, like, that scroll thing just \
898 vanished! What a cosmic experience!~ On that note, \
899 the skier opts to head for the slopes, and leaves to the west.";
902 "^The skier polishes a spot on his skis.";
906 if (the_spell_was == foblub_spell or espnis_spell)
907 "A pair of fluffy earmuffs the skier is wearing \
908 prevents him from hearing the full impact of your sermon.";
910 has animate transparent;
912 Object receptionist "receptionist" FROSTHAM_Governer1
913 with name "receptionist",
914 initial "A receptionist sits behind a desk, engrossed in \
916 description "A gruff-looking lady who apparently is far \
917 more interested in her work than you.",
919 if (receptionist hasnt general) {
920 give receptionist general;
921 "^Without even looking up, the receptionist says, \
922 ~The governor is busy right now.~";
925 "^The receptionist turns a page in the ledger.";
929 print "The receptionist";
930 if (special_word=='hello')
931 ", without looking up, says \
933 " seems to be ignoring you.";
935 print "The receptionist";
936 if (second=='governor')
937 ", without looking up, says \
938 ~He's very busy right now.~.";
941 "The receptionist seems to be ignoring you.";
945 "The receptionist, in a rather shrill voice says, \
946 ~If you're gonna wait, do it quietly,~ disrupting your chant.";
949 "You make an unusually high-pitched noise. The receptionist, \
950 in a rather shrill voice says, \
951 ~If you're gonna wait, do it quietly.~";
953 "~If you want to spread germs, do it outside.~";
955 "~If you're gonna wait, do it quietly.~";
957 "~We're not holding auditions, you know.~";
961 Object governor "governor" FROSTHAM_Governer2
962 with name "governor" "gov",
963 initial "The governor of Frostham is sitting behind a \
964 desk here, trying to look busy.",
965 description "A sour-looking man who tries his best not \
968 if (governor hasnt general) {
969 give governor general;
971 "^The governor scowls as you enter. ~What do you want?~ \
972 he says, and doesn't wait for a response. ~Oh, I know. \
973 More complaints about the snow, I suppose? Well \
974 look, I didn't ask for this job. Do you want it? I \
975 didn't think so.~ He shoves something into your hand. \
976 ~Here, buy yourself a cup of coffee, and stop \
980 print "^The governor ";
982 "thumbs through some papers.";
984 "balances a pencil on his nose.";
986 "scribbles something meaningless.";
988 "looks up and notices you. ~Don't you \
989 have anything else to do?~ he says.";
993 if (second=='key' or 'shiny') {
994 print "~Some key an important visitor \
995 forgot while visiting. Probably useless now";
996 if (parent(cab_key) == player)
997 print ". You can keep it, for all I care";
1000 if (second=='receptionist')
1001 "~I think she's out to lunch,~ he says, \
1002 with obvious annoyance.";
1003 if (second=='magistrate' or 'king' or 'sydney')
1004 "He looks at you suspiciously. \
1005 ~Never heard of him,~ he says.";
1006 if (second=='ledger')
1007 "~I think my receptionist has it.~";
1008 if (second=='pencil')
1009 "~Please! I'm a very busy man!~";
1010 "~Sorry, that's not my problem. Now run along.~";
1012 "The governor brushes you off. ~Are you \
1013 planning on running for office or something?~";
1016 "As you make a threatening move, the governor \
1017 presses some unseen switch behind his desk. Before you \
1018 know it, a hidden trapdoor opens in the floor and you \
1019 plunge to your death. A good politician is always \
1020 prepared, it seems...";
1022 "~Sure, sure. Scram, will you?~";
1024 if (special_word=='hello')
1025 "~Yeah, sure. So what's your problem?~";
1026 "The governor is busy trying to look busy.";
1028 "Bribing a politician, eh?";
1030 if (noun==Gov_ledger)
1031 "~Hey, return that to the receptionist!~";
1032 "~Please! I'm a very busy man!~";
1036 if (noun == cab_key)
1037 "~Oh sure, just go ahead and take things \
1038 from my office. See if I care.~";
1042 if (the_spell_was == foblub_spell)
1043 "Actually, the governor seems pretty glued to his \
1044 seat already. In any event, nothing seems to happen.";
1045 if (the_spell_was == espnis_spell)
1046 "The governor seems to nod off, but only for \
1049 has animate transparent;
1056 Object pencil "pencil" governor
1059 Object c2 "coin" class coin_class;
1061 ! (cereal box prizes)
1062 Object whistle "whistle" cerealbox2
1063 with name "whistle",
1064 description "A tiny plastic whistle.",
1069 "You make an unusually high-pitched noise.";
1072 ! (a fancier packaged prize :)
1073 Object plastic_wrapper "plastic wrapper" cerealbox3
1074 with name "wrapper" "plastic",
1075 description "A small plastic see-through package.",
1078 while (child(self)~=0) move child(self) to parent(self);
1079 remove plastic_wrapper;
1080 "The wrapper rips open with ease, and disintegrates, \
1081 leaving the contents behind.";
1085 has container openable transparent;
1087 Object toy_volcano "toy volcano" plastic_wrapper
1088 with name "toy" "volcano",
1089 description "A strange thing indeed -- a miniature \
1090 ceramic toy, that has been painted and shaped \
1091 in painstaking detail to look like a volcano.",
1096 Object volcano_note "instruction notice" plastic_wrapper
1097 with name "notice" "instruction",
1099 description "~Frobozz Instant Volcano~^^\
1100 (parental supervision recommended)^^\
1101 To use: Just add a good quantity of water! We suggest \
1102 a very large safety radius.~",
1108 ! ******************
1109 ! Scrolls and spells
1110 ! ******************
1112 Object waxy_scroll "waxy scroll" ski_instructor
1117 Object egdelp_spell "create waxy build-up on wood" waxy_scroll
1121 if (second ~= 0 && second ~= player) {
1122 CDefArt(second); " looks pretty polished as is."; }
1123 else { "The chant, seeking wood to polish, fails."; }
1127 Object sugar_scroll "sugar-coated scroll" cerealbox1
1129 with name "sugar-coated" "coated",
1132 Object zemdor_spell "triplicate object" sugar_scroll
1138 "The chant, seeking a locus for \
1139 triplication, fails.";
1140 if (second has animate)
1141 "The chant, not designed for living creatures, fails.";
1142 if (second has is_spell)
1143 "This violates certain unwritten laws of magic.";
1144 if (second has is_coin) {
1145 ! new twist for zemdor, as sugg. by player
1146 print "The coin shimmers suddenly! You blink in \
1147 disbelief as the coin seems to split \
1148 into three copies of itself! ";
1149 if (self hasnt general) {
1151 move c12 to parent(second);
1152 move c13 to parent(second);
1153 "You notice there are now three coins where \
1154 there was once but one!";
1156 "Suddenly, a financial nymph appears! She gives \
1157 you a denunciatory look. ~Line 7234-6 of the Pierpont \
1158 tax laws clearly states that repeated unauthorized \
1159 triplication of monetary \
1160 items is strictly forbidden,~ she says, and takes the \
1161 the two newly created coins before disappearing.";
1163 print (The) second, " shimmers suddenly! You blink in \
1164 disbelief as ", (the) second, " seems to split \
1165 into three copies of itself! ";
1166 "But, as you finish the chant, \
1167 the mystic energy seems to fade, and the copies \
1168 coalesce back into one unchanged object. The \
1173 Object c12 "coin" class coin_class;
1174 Object c13 "coin" class coin_class;