! ************************************************************** ! frostham.inf ! ------------ ! Frostham locations in SPIRITWRAK, included in spirit.inf ! (Do not compile and/or use separately!) ! ************************************************************** Object FROSTHAM_Outskirts "Frostham Outskirts" with description [; print "You are at the northern outskirts of Frostham. \ The city proper is to the south. A few \ snow covered residences are nearby. \ A trail leads into a valley to the north"; if (self hasnt general) { give self general; ".^^The last time you saw Frostham was before you \ entered the Monastery -- many years ago at least. \ Oddly, it seemed bigger and less desolate then."; } else "."; ], name "city" "snow" "residences" "trail" "valley", n_to Valley_trail, s_to FROSTHAM_2, cant_go "You walk around the local area a bit, finding \ nothing of interest.", has light; Object FROSTHAM_2 "Frostham" with description "You are in Frostham City, the famous winter-\ lover's haven. The once booming ski vacation spot seems \ to be a bit more run-down than in times past. \ The city thins out towards the north, while \ another section of town is to the south. To the west is \ a large wood structure. To the southwest is a small \ building. To the southeast is another small building, possibly a \ store.", name "wood" "structure" "building" "store", n_to FROSTHAM_Outskirts, w_to FROSTHAM_Resort, sw_to FROSTHAM_Governer1, s_to FROSTHAM_GUSStop, se_to FROSTHAM_Store, cant_go "You walk around the local streets a bit, finding \ nothing of interest.", each_turn [ i ; if (GROC_hall1 has general) i = CheckHall(); ! Why check the grocery hallway here? ! Conceptually, if the player dies in the hallway (rather ! difficult, but possible by swearing, for example), ! the hallway should 'adjust' itself to the new weight. ! I simply check this here, because the player must go ! this way to reach the hallway for a second time. ], has light; Object FROSTHAM_Store "General Store" with description [; print "This appears to be a small grocery store, \ strangely abandoned at the moment. Shelves line the walls, \ although, since no one is minding \ the store, the current stock seems to be a bit depleted. \ You notice an exit south marked ~EMPLOYEES ONLY~ that \ appears to lead to "; if (GROC_hall1.number == 1) print "some hallway."; else print "a dark hole."; " The way back out is to the northwest."; ], name "stock" "shelves", nw_to FROSTHAM_2, s_to [; if (GROC_hall1.number == 1) return GROC_hall1; else "You pull back before falling into what appears to be a deep \ pit of some sort beyond the south exit."; ], after [ i ; Go: if (noun == n_obj) { i = CheckHall(); if (i == 1) print "You hear a grinding noise from behind \ you.^"; } ], has light; Class Barrel_class with name "crate", before [; Take, Pull, Turn: "It's rather heavy."; Push: "It's heavy, but you manage to make it slide \ along the floor a bit."; PushDir: if (location == FROSTHAM_Store && second == nw_obj) "A portion of the door seal blocks the crate from going outside."; if (location == GROC_hall1 && second == s_obj) { print "^You give the crate a good shove.^"; move self to GROC_hall2; <>; } if (location == GROC_hall1 && second == n_obj) { print "^You give the crate a good shove.^"; move self to FROSTHAM_Store; <>; } if (location == GROC_hall2 && second == n_obj) { print "^You give the crate a good shove.^"; move self to GROC_hall1; <>; } if (location == FROSTHAM_Store && second == s_obj && GROC_hall1.number == 1) { print "^You give the crate a good shove.^"; move self to GROC_hall1; <>; } ! (we do our own version to allow the CheckHall() to ! work properly) AllowPushDir(); rtrue; ], has static; Object BARREL1 "dusty crate" FROSTHAM_Store class Barrel_class, with name "dusty", description "A dust-covered crate.", ; Object BARREL2 "moldy crate" FROSTHAM_Store class Barrel_class, with name "moldy", description "A mold-covered crate.", ; Object BARREL3 "filthy crate" FROSTHAM_Store class Barrel_class, with name "filthy", description "A filth-covered crate.", ; Object GROC_hall1 "North end of Hallway" with name "end" "hallway", number 1, description [; print "You're at the north end of a short N-S hall. \ The hallway"; switch (GROC_hall1.number) { 1: print " slopes sharply upwards to the south. \ You notice two dark doorways above you along the northern wall, \ one above the other, \ but no obvious means of getting to them"; 2: print " travels evenly to the south. \ You notice a dark doorway above you along the northern wall, \ but no obvious means of getting to it"; 3: print " slopes sharply downwards to the south"; } ". To the north is an exit."; ], each_turn [; if (self hasnt general) { give self general; "^The hallway suddenly creaks underfoot! The floor \ shakes briefly and dust seems to rise from cracks near the \ walls. Apparently, your unexpected presence has jarred \ some old mechanisms back to life!"; } ], n_to [; switch (GROC_hall1.number) { 1: return FROSTHAM_Store; 2: return GROC_stockroom; 3: return GROC_attic; } ], after [ i ; Go: if (noun == n_obj or s_obj) { i = CheckHall(); if (i == 2) print "^You hear a low grinding noise. \ The hallway underfoot suddenly shifts and drops!^"; } ], s_to GROC_hall2, before [; Jump: "You jump for a bit. The floor feels strangely \ unsteady."; ], has light; Object GROC_hall2 "South end of Hallway" with name "end" "hallway", number 3, description [; print "You're at the south end of a short N-S hall \ that seems to lead nowhere. The hallway"; switch (GROC_hall2.number) { 1: " slopes sharply upwards to the north."; 2: " travels evenly to the north."; 3: " slopes sharply downwards to the north."; } ], after [ i ; Go: if (noun == s_obj) { i = CheckHall(); if (i == 1) print "^You hear a low grinding noise. \ The hallway underfoot suddenly shifts and drops!^"; } ], before [; Jump: "You jump for a bit. The floor feels strangely \ unsteady."; ], n_to GROC_hall1, has light; ! (Routine for checking 'weights' of two sides of hallway) ! (assumes called from room's _after_ routine, thus all ! barrels and players are in their after_turn places) ! RETURNS: 0 if no change ! 1 if NORTH END now higher than before ! 2 if NORTH END now lower than before [ CheckHall i ! local total of weight points for north end j ! local total of weight points for south end k ! local -- orig setting of north end (.number) ; i = 0; j = 0; k = GROC_hall1.number; if (player in GROC_hall1) i = i + 2; if (player in GROC_hall2) j = j + 2; if (BARREL1 in GROC_hall1) i = i + 1; if (BARREL1 in GROC_hall2) j = j + 1; if (BARREL2 in GROC_hall1) i = i + 1; if (BARREL2 in GROC_hall2) j = j + 1; if (BARREL3 in GROC_hall1) i = i + 1; if (BARREL3 in GROC_hall2) j = j + 1; if (i == j) { GROC_hall1.number = 2; GROC_hall2.number = 2; } if (i > j) { GROC_hall1.number = 1; GROC_hall2.number = 3; } if (i < j) { GROC_hall1.number = 3; GROC_hall2.number = 1; } if (GROC_hall1.number == k) return 0; if (GROC_hall1.number > k) return 1; if (GROC_hall1.number < k) return 2; ]; Object GROC_stockroom "Stockroom" with description [; print "This is a tiny poorly lit room, that \ is covered in dust. An exit south leads to a"; if (GROC_hall1.number == 2) print " short hallway"; else print " dark hole"; if (GROC_attic has general) print ". Above, a hole has been exposed in the ceiling structure"; "."; ], name "dust", u_to [; if (GROC_attic hasnt general) "You can't go that way."; else return GROC_attic; ], s_to [; if (GROC_hall1.number == 2) return GROC_hall1; else "You pull back before falling into what appears to be a deep \ pit of some sort beyond the south exit."; ], after [ i ; Go: if (noun == n_obj) { i = CheckHall(); if (i == 2 or 1) print "You hear a low grinding noise behind you.^"; } ], has light; Object GROC_attic "Attic" with description [; print "This is an exceptionally cramped attic, obviously \ unused for some time. The floorboards are starting to crack."; if (self has general) print " One section of the floor is particularly poor, and has \ a gaping hole leading downwards into darkness."; " An exit heads south."; ], name "sag" "crack" "hole", d_to [; if (GROC_attic hasnt general) "You can't go that way."; else return GROC_stockroom; ], s_to [; if (GROC_hall1.number == 3) return GROC_hall1; else "You pull back at the edge of the exit. The floor, it \ appears, is too far below you!"; ], after [ i ; Go: if (noun == n_obj) { i = CheckHall(); if (i == 2) print "You hear a low grinding noise behind you.^"; } ], has light; Object attic_floorboards "floorboards" GROC_attic with name "boards" "floorboards", description [; print "Some badly rotting floorboards"; if (GROC_attic has general) " with a noticeable hole in one section."; else { if (self has general) " with a noticeable sag in one section."; else "."; } ], before [; Take: "They're nailed into the floor."; Push, Pull, Attack, Shake: if (self has general) "The floor shakes a bit, but nothing else happens."; else { move loose_board to GROC_stockroom; give self general; "The floor shakes under your abuse, and suddenly, a \ portion in the middle sags considerably! But nothing else \ happens."; } ], has scenery; Object loose_board "loose board" with name "loose" "board", initial "You notice a loose board, partially \ broken, hanging from the ceiling structure.", description "A portion of the ceiling boards \ has apparently broken loose.", before [; Pull, Attack, Shake: give GROC_attic general; remove self; "You give the board a good couple of yanks. The board \ soon breaks off, taking a small portion of the ceiling \ with it! After the dust settles, you notice the rather \ poor remodeling job you've done to the ceiling."; ], has static; ! (the coffee was moved to the cafe in Borphee) Object decaf_coffee_can "can of decaf coffee" with name "can" "coffee" "decaf", description "The can reads: ~Frobozz coffee crystals~^^\ ~Rich, mountain-grown flavor.~^^DECAFFEINATED.", before [; Open: "You'd need a good can-opener for that."; ], size 15, ; Object icebox_key "square key" GROC_attic with name "key" "square", size 5, ; Object icebox "icebox" GROC_stockroom with name "icebox" "box", description "A rather old-looking icebox.", capacity 10, size 20, with_key icebox_key, when_closed "A dust-covered icebox stands closed against \ the northern wall.", when_open [ x; print "The icebox is open. "; x = children(self); if (x == 0) "It is also empty."; print "Inside "; if (x == 1) print "is: "; else print "are: ^"; x = FULLINV_BIT + INDENT_BIT + NEWLINE_BIT + RECURSE_BIT; WriteListFrom (child(self), x, 1); rtrue; ], has static container openable lockable locked; Object cerealbox1 "blue cereal box" icebox with name "box" "blue" "Crunchies", description "A blue paper box with lettering that reads:^^\ ~Grueslayer Crunchies!^^\ (It's not just for adventurers anymore!)^^\ [Free bonus scroll surprise inside!]~^^\ Writing on the box reads ~50zm~.", size 10, capacity 5, before [; Receive: if (noun == cerealbox2 or cerealbox3) { "That doesn't quite fit."; } Cast: if (the_spell_was == zemdor_spell) { if (self hasnt general) { give self general; move cerealbox2 to parent(cerealbox1); move cerealbox3 to parent(cerealbox1); Achieved(1); "The box of cereal suddenly seems to dance with magic! \ Before your very eyes, the box suddenly splits into \ three boxes! The magic fades, but the boxes remain."; } else "The magic fights against the cereal box, but fails. \ I guess you can only triplicate once."; } ], has container openable; Object cerealbox2 "navy-blue cereal box" with name "box" "navy-blue" "Sugarglobs", description "A navy-blue paper box with lettering that reads:^^\ ~Frobozz Super Sugar Globs!^^\ (Seventeen times the sugar of any other cereal!)^^\ [Free bonus Frobozz toy inside!]~^^\ Writing on the box reads ~50zm~.", !weight 10, size 10, capacity 5, before [; Receive: if (noun == cerealbox1 or cerealbox3) { "That doesn't quite fit."; } ], has container openable; Object cerealbox3 "royal-blue cereal box" with name "box" "royal-blue" "Dornflakes", description "A royal-blue paper box with lettering that reads:^^\ ~Dornflakes^^\ (Just like Grandma Dimwit used to make!)^^\ [Free bonus Frobozz toy inside!]~^^\ Writing on the box reads ~50zm~.", !weight 10, size 10, capacity 5, before [; Receive: if (noun == cerealbox1 or cerealbox2) { "That doesn't quite fit."; } ], has container openable; ! A Breakfast cereal class -- what a concept Class cereal_class with name "cereal", description "A quantity of overly-sweetened breakfast cereal.", !weight 5, size 8, before [; Eat: remove self; "You consume the cereal. The sugar rush occurs five seconds \ later and ends just as quickly."; ], has edible; Object cereal1 "crunchy cereal" cerealbox1 class cereal_class with name "crunchy"; Object cereal2 "sugary cereal" cerealbox2 class cereal_class with name "sugary"; Object cereal3 "flaky cereal" cerealbox3 class cereal_class with name "flaky"; Object baking_powder "packet of baking powder" icebox with name "powder" "baking" "packet", short_name "packet of baking powder", description "A single-use packet of baking powder from \ ~Port Foozle Bakers Guild~ products.", !weight 5, size 5, before [; Eat: remove self; "You eat the baking powder. Yuck."; ], has edible; Object butter "stick of butter" icebox with name "butter" "stick" "fat", description "A good-sized stick of butter.", !weight 5, size 5, before [; Eat: remove self; print "You eat the entire stick of butter."; if (random(20) < 15) " Your heart will no doubt thank you for that someday."; deadflag = 1; " The sudden \ intake of concentrated fat is too much of a shock to your \ system, and an important artery somewhere bursts."; ], has edible; Object FROSTHAM_Resort "Ski Resort" with description "You are inside a large ski resort. Perhaps \ it's not ski-season, as the entire place is \ basically empty. Frostham city lies to the \ east.", name "resort" "city" "ski" "skis" "earmuff" "earmuffs", e_to FROSTHAM_2, out_to FROSTHAM_2, w_to "You don't have a lift-ticket. Also, you don't have \ skis. Most importantly, however, the slopes look \ pretty lousy.", has light; Object FROSTHAM_Governer1 "Governor's House, Waiting Room" with description "You are in a waiting room in the house of the Frostham \ Governor. The carpet is surprisingly plush. \ The walls have been painted a rather bland \ peach-like color. The furnishings \ are also colored peach, which complements the \ walls without being too nouveau. The way out \ is to the northeast.", name "carpet" "furnishings", ne_to FROSTHAM_2, out_to FROSTHAM_2, s_to Gov_door, after [; Go: if (noun==n_obj) { give Gov_door ~open locked; print "You hear the door slam and lock behind you.^"; } ], has light; Object Gov_couch "couch" FROSTHAM_Governer1 with name "couch" "peach", initial "A comfortable-looking peach-colored couch is here.", description "It looks pretty comfy, but the color wouldn't \ have been your first choice.", before [; Search: if (self hasnt general) { give self general; move c1 to FROSTHAM_Governer1; "You rummage through the cushions and a coin falls out!"; } "You find nothing of interest."; ], has static enterable supporter; Object travel_posters "travel brochure" FROSTHAM_Governer1 with name "brochure" "travel", description "The brochure has pictures of various cheerful-looking \ people in rather cheerful-looking places. \ Bold lettering reads ~FEEL BETTER IN MIZNIA~, \ ~IT'S ARAGAIN, AGAIN~, \ and ~NEW BORPHEE, EVERYONE'S FAVORITE CITY~", size 10, ; Object c1 "coin" class coin_class; Object Gov_desk1 "desk" FROSTHAM_Governer1 with name "desk" "waiting" "room", description "A fairly plain-looking desk", has scenery supporter; Object Gov_ledger "ledger" Gov_desk1 with name "ledger", description [; if (receptionist in FROSTHAM_Governer1) "The receptionist seems to be using it at the moment."; "The ledger reads:^^\ ~ -- New signed petition for presentation and coronation of \ new King delivered to Aragain Magistrate, awaiting word of \ event schedule.~^^That's all. I guess the governor hasn't been \ very busy as of late."; ], !weight 20, size 15, before [; Take: if (receptionist in FROSTHAM_Governer1) "The receptionist gives you a rather menacing look."; ], ; Object alarm_clock "alarm clock" Gov_desk1 with name "clock" "alarm", description [; print "A small round desk-clock, with a set of bells \ on the top, and a small pull-knob on the back. \ Strangely, the clock seems to be stopped. Two hands, black and golden, \ are sitting at ",alarm_clock.number," and ", alarm_clock_dial.number; " respectively."; ], article "an", number 9, ! setting of the clock hand time_left 0, time_out [ x ; alarm_clock.number = alarm_clock.number + 1; if (alarm_clock.number > 12) alarm_clock.number = 1; x = TestScope(alarm_clock,player); if (x==1) print "^The alarm clock suddenly makes an \ awful grinding noise"; if (alarm_clock.number == alarm_clock_dial.number) { ! alarm goes off if (x==1) print ", followed by a ear-splitting clang!^"; ! certain events follow: ! if receptionist still in office and self in office, ! receptionist leaves (if player in office, he'll ! see this, or see it outside the office) if ((receptionist in FROSTHAM_Governer1) && (((self in FROSTHAM_Governer1) || (self in Gov_desk1)) || ((self in player) && (player in FROSTHAM_Governer1))) ) { remove receptionist; ! a long lunch hour, apparently... ! give alarm_clock general; Achieved(2); if (player in FROSTHAM_Governer1) "^The receptionist suddenly jumps from her \ seat and rushes out of the room, screaming ~Lunchtime!~"; if (player in FROSTHAM_2) "^You see a woman rush out of the building \ to the southwest, and quickly vanish."; rtrue; } ! future: boutique in Miznia -- brings salesman to front if (((self in MIZNIA_Boutique) || (self in player)) && (player in MIZNIA_Boutique)) { print "^From somewhere in the back of the \ store, a tailor rushes out and"; if (MIZNIA_Boutique hasnt general) { give MIZNIA_Boutique general; move fancy_scroll to player; Achieved(23); " sees you. ~We've got a rather \ busy schedule,~ he explains, ~but let me see what I can do.~ \ He gives you a somewhat unapproving look. ~The ascetic-monk \ look is out, you know. Here.~ He pins a rolled paper object \ to your clothes. ~The latest craze -- wearing magic scrolls. \ Beats using them nowadays, I hear. Now, like I said, we're \ very busy.~ He goes off to the back of the store."; } else " recognizes you. \ ~I've done all I can for you right now,~ he explains as \ goes off to the back of the store."; } rtrue; } else if (x==1) "!"; ], size 5, add_to_scope alarm_clock_dial alarm_clock_bells alarm_clock_hands, has transparent; Object alarm_clock_dial "knob" with name "pull" "knob", description "A small, pullable knob on the back of the clock.", number 12, before [; Push: print "The knob "; if (self has general) { give self ~general; "pushes in a short bit."; } else "is as far in as it can go."; Pull: print "The knob "; if (self hasnt general) { give self general; "pulls out a short bit."; } else "is as far out as it can go."; Turn: if (self hasnt general) { ! wind clock StartTimer(alarm_clock,1); "The knob turns -- barely. You \ hear a small clicking noise as well."; } else { ! set alarm hand alarm_clock_dial.number = alarm_clock_dial.number + 1; if (alarm_clock_dial.number > 12) alarm_clock_dial.number = 1; print "The knob turns easily. You notice the \ golden hand on the front sweep to ",alarm_clock_dial.number; "."; } ! if (alarm_clock hasnt general) { ! } ! "It doesn't turn anymore. I guess the receptionist \ ! broke the clock (not that it was in good shape to \ ! begin with)."; ], has static; Object alarm_clock_hands "hands" with name "hand" "hands" has static; Object alarm_clock_bells "bells" with name "bell" "bells" has static; Object FROSTHAM_Governer2 "Governor's Office" with description "You are in a rather spacious office. The \ carpeting is quite plush, and all the furnishings seem \ excessively lavish.", name "carpeting" "furnishings", n_to Gov_door, has light; Object Gov_desk2 "desk" FROSTHAM_Governer2 with name "desk" "office", description "A fairly impressive looking desk, made from \ a massive lacquered piece of black oak wood.", before [; Cast: if (the_spell_was == egdelp_spell) "The desk is covered with a ugly waxy film. \ The governor looks extremely annoyed and wipes the desk clean with \ a stack of papers."; Push, Pull, Rub, Attack, Search: "~Do you mind?~ the governor says."; ], has scenery supporter; Object Gov_door "door" with name "door" "office", when_closed [; print "There's a closed door to the "; if (self in FROSTHAM_Governer1) "south."; else "north."; ], when_open [; print "There's an open door to the "; if (self in FROSTHAM_Governer1) "south."; else "north."; ], description "It's just a thick door.", door_dir [ ; if (location==FROSTHAM_Governer1) return s_to; return n_to; ], door_to [ ; if (location==FROSTHAM_Governer1) return FROSTHAM_Governer2; return FROSTHAM_Governer1; ], before [ ; Open: if ((location==FROSTHAM_Governer1) && (receptionist in FROSTHAM_Governer1)) "The receptionist puts a hand in your way and says, \ ~The governor is currently busy.~"; Close: if (location==FROSTHAM_Governer2) "~Close it on your way _out_~, the governor snarls."; ], found_in FROSTHAM_Governer1 FROSTHAM_Governer2, has static door openable lockable; Object FROSTHAM_GUSStop "Subway Entrance" with description "You're near the southern end of the city. \ The rest of the city lies to the north. \ There's also a rather conspicuous \ stairway down here.", name "stairway", n_to FROSTHAM_2, u_to "You can't go that way.", d_to FROSTHAM_GUSStation, cant_go "You walk around the local streets a bit, finding \ nothing of interest.", has light; ! ****************************************************************** ! People/Creatures ! ****************************************************************** Object ski_instructor "ski instructor" FROSTHAM_Resort with name "instructor" "dude" "skier" "guy" "tall" "lanky", initial [; print "A tall lanky guy is here, holding two colorful \ skis. He seems to be "; if (waxy_scroll in self) "waxing them with a scroll."; "concentrating greatly on waxing \ his skis."; ], description "A tall lanky guy, like I said. He's \ decked out in fancy bright winter clothes.", life [; Attack, ThrowAt: "~Dude, you must chill.~"; Answer, Tell: if (special_word == 'hello' or 'hi') "The skier gives you the 'thumbs-up' sign. \ ~Hey, dude.~"; else "~Uh, whatever, dude.~"; Show: if (noun==rag) "~Hey dude, can I borrow that?~"; "~Uh, whatever, dude.~"; Order: if (action==##Give) { if (noun=='skis') "~No way, dude.~"; if (((noun==waxy_scroll) && (self hasnt general)) || ((noun==rag) && (self has general))) "~I'm using it, dude.~"; } "~Dude, I have no idea what you're talking about.~"; Ask: if (second=='rag') "~A rag makes an excellent ski-maintenance accessory, dude.~"; if ((second=='scroll' or 'waxy') && (self hasnt general)) "~Something I found at the top of a run. \ Doesn't work too well, but hey, I gotta wax.~"; if (second=='skis') "~My rad Grayslopes Slaloms. If you don't wax 'em \ every 30 seconds, they lose their speed.~"; if ((second=='slopes') || (second=='slope') || (second=='powder') || (second=='runs') || (second=='skiing')) "The skier takes you aside. ~Listen dude, \ between you and me, the slopes here rot. They \ used to be way better. But you know, I hear there \ are some _killer_ drops up north.~"; "~Dude, I have no idea what you're talking about.~"; Give: if (noun==rag) { move waxy_scroll to FROSTHAM_Resort; move rag to self; give self general; Achieved(3); "The skier gladly takes the rag and starts \ polishing immediately. He lets the scroll \ fall to the ground. ~Excellent man, thanks!~"; } "~No thanks, dude.~"; default: "At the moment, the skier is too busy waxing."; ], each_turn [; if (waxy_scroll notin self && self hasnt general) { Achieved(3); remove self; "^~Dude, like, that scroll thing just \ vanished! What a cosmic experience!~ On that note, \ the skier opts to head for the slopes, and leaves to the west."; } if (random(20) < 5) "^The skier polishes a spot on his skis."; ], before [; Cast: if (the_spell_was == foblub_spell or espnis_spell) "A pair of fluffy earmuffs the skier is wearing \ prevents him from hearing the full impact of your sermon."; ], has animate transparent; Object receptionist "receptionist" FROSTHAM_Governer1 with name "receptionist", initial "A receptionist sits behind a desk, engrossed in \ the ledger.", description "A gruff-looking lady who apparently is far \ more interested in her work than you.", each_turn [; if (receptionist hasnt general) { give receptionist general; "^Without even looking up, the receptionist says, \ ~The governor is busy right now.~"; } if (random(10) == 1) "^The receptionist turns a page in the ledger."; ], life [; Answer, Order: print "The receptionist"; if (special_word=='hello') ", without looking up, says \ ~Can I help you?~."; " seems to be ignoring you."; Ask: print "The receptionist"; if (second=='governor') ", without looking up, says \ ~He's very busy right now.~."; " shrugs."; default: "The receptionist seems to be ignoring you."; ], react_before [; Cast: "The receptionist, in a rather shrill voice says, \ ~If you're gonna wait, do it quietly,~ disrupting your chant."; Blow: if (noun==whistle) "You make an unusually high-pitched noise. The receptionist, \ in a rather shrill voice says, \ ~If you're gonna wait, do it quietly.~"; Sneeze: "~If you want to spread germs, do it outside.~"; Yell: "~If you're gonna wait, do it quietly.~"; Sing: "~We're not holding auditions, you know.~"; ], has animate female; Object governor "governor" FROSTHAM_Governer2 with name "governor" "gov", initial "The governor of Frostham is sitting behind a \ desk here, trying to look busy.", description "A sour-looking man who tries his best not \ to notice you.", each_turn [ i ; if (governor hasnt general) { give governor general; move c2 to player; "^The governor scowls as you enter. ~What do you want?~ \ he says, and doesn't wait for a response. ~Oh, I know. \ More complaints about the snow, I suppose? Well \ look, I didn't ask for this job. Do you want it? I \ didn't think so.~ He shoves something into your hand. \ ~Here, buy yourself a cup of coffee, and stop \ bothering me.~"; } i = random(4); print "^The governor "; if (i == 1) "thumbs through some papers."; if (i==2) "balances a pencil on his nose."; if (i==3) "scribbles something meaningless."; if (i==4) "looks up and notices you. ~Don't you \ have anything else to do?~ he says."; ], life [; Ask: if (second=='key' or 'shiny') { print "~Some key an important visitor \ forgot while visiting. Probably useless now"; if (parent(cab_key) == player) print ". You can keep it, for all I care"; ".~"; } if (second=='receptionist') "~I think she's out to lunch,~ he says, \ with obvious annoyance."; if (second=='magistrate' or 'king' or 'sydney') "He looks at you suspiciously. \ ~Never heard of him,~ he says."; if (second=='ledger') "~I think my receptionist has it.~"; if (second=='pencil') "~Please! I'm a very busy man!~"; "~Sorry, that's not my problem. Now run along.~"; Kiss: "The governor brushes you off. ~Are you \ planning on running for office or something?~"; Attack, ThrowAt: deadflag = 1; "As you make a threatening move, the governor \ presses some unseen switch behind his desk. Before you \ know it, a hidden trapdoor opens in the floor and you \ plunge to your death. A good politician is always \ prepared, it seems..."; Tell: "~Sure, sure. Scram, will you?~"; Answer, Order: if (special_word=='hello') "~Yeah, sure. So what's your problem?~"; "The governor is busy trying to look busy."; Give: "Bribing a politician, eh?"; Show: if (noun==Gov_ledger) "~Hey, return that to the receptionist!~"; "~Please! I'm a very busy man!~"; ], react_after [; Take: if (noun == cab_key) "~Oh sure, just go ahead and take things \ from my office. See if I care.~"; ], before [; Cast: if (the_spell_was == foblub_spell) "Actually, the governor seems pretty glued to his \ seat already. In any event, nothing seems to happen."; if (the_spell_was == espnis_spell) "The governor seems to nod off, but only for \ a second."; ], has animate transparent; ! *************** ! More objects... ! *************** Object pencil "pencil" governor with name "pencil"; Object c2 "coin" class coin_class; ! (cereal box prizes) Object whistle "whistle" cerealbox2 with name "whistle", description "A tiny plastic whistle.", !weight 1, size 1, before [; Blow: "You make an unusually high-pitched noise."; ], ; ! (a fancier packaged prize :) Object plastic_wrapper "plastic wrapper" cerealbox3 with name "wrapper" "plastic", description "A small plastic see-through package.", before [; Open: while (child(self)~=0) move child(self) to parent(self); remove plastic_wrapper; "The wrapper rips open with ease, and disintegrates, \ leaving the contents behind."; ], !weight 0, size 5, has container openable transparent; Object toy_volcano "toy volcano" plastic_wrapper with name "toy" "volcano", description "A strange thing indeed -- a miniature \ ceramic toy, that has been painted and shaped \ in painstaking detail to look like a volcano.", !weight 5, size 5, ; Object volcano_note "instruction notice" plastic_wrapper with name "notice" "instruction", article "an", description "~Frobozz Instant Volcano~^^\ (parental supervision recommended)^^\ To use: Just add a good quantity of water! We suggest \ a very large safety radius.~", size 5, ; ! ****************** ! Scrolls and spells ! ****************** Object waxy_scroll "waxy scroll" ski_instructor class scroll_class, with name "waxy", ; Object egdelp_spell "create waxy build-up on wood" waxy_scroll class spell_class, with name "egdelp", magic [; if (second ~= 0 && second ~= player) { CDefArt(second); " looks pretty polished as is."; } else { "The chant, seeking wood to polish, fails."; } ], ; Object sugar_scroll "sugar-coated scroll" cerealbox1 class scroll_class, with name "sugar-coated" "coated", ; Object zemdor_spell "triplicate object" sugar_scroll class spell_class, with name "zemdor", number 0, magic [; if (second == 0) "The chant, seeking a locus for \ triplication, fails."; if (second has animate) "The chant, not designed for living creatures, fails."; if (second has is_spell) "This violates certain unwritten laws of magic."; if (second has is_coin) { ! new twist for zemdor, as sugg. by player print "The coin shimmers suddenly! You blink in \ disbelief as the coin seems to split \ into three copies of itself! "; if (self hasnt general) { give self general; move c12 to parent(second); move c13 to parent(second); "You notice there are now three coins where \ there was once but one!"; } "Suddenly, a financial nymph appears! She gives \ you a denunciatory look. ~Line 7234-6 of the Pierpont \ tax laws clearly states that repeated unauthorized \ triplication of monetary \ items is strictly forbidden,~ she says, and takes the \ the two newly created coins before disappearing."; } print (The) second, " shimmers suddenly! You blink in \ disbelief as ", (the) second, " seems to split \ into three copies of itself! "; "But, as you finish the chant, \ the mystic energy seems to fade, and the copies \ coalesce back into one unchanged object. The \ chant fails."; ], ; Object c12 "coin" class coin_class; Object c13 "coin" class coin_class;