X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=src%2FBORPHEE.INF;fp=src%2FBORPHEE.INF;h=0000000000000000000000000000000000000000;hb=8cf6c360a875867b3cb9b78b9e73a0e72d527d17;hp=dd0b71aa52abb0d984c8b061be197bef7277c273;hpb=eabbe6652d6c382ba6fe25cba07074f73020b4d0;p=spiritwrak.git diff --git a/src/BORPHEE.INF b/src/BORPHEE.INF deleted file mode 100644 index dd0b71a..0000000 --- a/src/BORPHEE.INF +++ /dev/null @@ -1,1725 +0,0 @@ - -! ************************************************************* -! BORPHEE.INF -- add-on for SPIRITWRAK -! ************************************************************* - -! (Single global variable to store progress of 'Trophy room puzzle' -global trophy_stage = 0; ! equals 'stage' completed, up to 4(th) - -Object BORPHEE_GUSStop "Downtown New Borphee" - with description "You're right in the middle of downtown \ -New Borphee -- perhaps the busiest, most crowded \ -city you've ever seen. Huge brand-new buildings \ -and throngs of fast-moving people make the whole \ -scene somewhat surreal. The streets head north to \ -a business district, while a set of stairs here leads \ -down.", - name "buildings" "throngs" "crowd" "people" "streets" "district" -"stairs", - n_to BORPHEE_BD, - d_to BORPHEE_GUSStation, - cant_go "You walk around downtown a bit, are appalled by the \ - sights, and hastily return here.", - ! w_to "You walk around downtown a bit, are disturbed by the \ - ! sights, and hastily return here.", - has light; - -Object BORPHEE_BD "Business District" - with description "You're in a crowded business district filled \ -with busy people. The city thins out a bit to the north, \ -while city streets head west and south. Directly to the east is a \ -building so tall it makes you dizzy just looking at it.", - name "building" "crowd" "streets" "people", - s_to BORPHEE_GUSStop, - n_to BORPHEE_burbs, - w_to BORPHEE_CS, - e_to Skyscraper, - each_turn [; - if (self hasnt general) { - give self general; - move flour_scroll to BORPHEE_BD; - "^A number of people rudely brush past you and \ -accidentally knock you down. A kindly old lady helps you \ -to your feet. ~I think you dropped that,~ she says, pointing \ -to a paper object nearby that doesn't seem familiar. She \ -walks off, and is soon lost in the crowd."; - } - ], - has light; - -Object BORPHEE_CS "City Streets" - with description "You're on some busy side street in New Borphee. \ -There's a crowded walk back east. To the north is the \ -entrance to some sort of open area, with a large open arch.", - name "street" "walk" "area", - e_to BORPHEE_BD, - n_to GUE_Gate, - has light; - -Nearby fake_arch "arch" - with name "open" "arch", - description "A large metal and stone arch. You'll have \ -to get closer to see anything more.", - has scenery; - -Object Skyscraper "Inside Skyscraper" - with description "You're inside a gigantic \ -skyscraper. The marble and brass fixtures and trim \ -exude professionalism. There's a small open chamber \ -to the north. City streets are to the west.", - name "marble" "brass" "fixtures" "trim" "skyscraper" -"streets" "chamber", - w_to BORPHEE_BD, - e_to "You can't go that way.", ! but later... - n_to Elevator, - before [; - Go: - if (noun == n_obj) - print "As you enter the small chamber, metal \ - doors suddenly spring forward and close \ - behind you!^"; - ], - has light; - -Object ss_sign "sign" Skyscraper - with initial "There is a large sign posted near the small chamber.", - name "sign", - description [; - print "The sign reads:^^\ -~ELEVATOR UNDER CONSTRUCTION^PLEASE USE STAIRS."; - if ((self hasnt general) && (magic_door notin Skyscraper)) { - give self general; - "~^^Oddly, there don't seem to be any stairs."; - } - else "~"; - ], - has static; - -Object Elevator "Inside Elevator" - with description "You are inside a cramped metal room, with \ -featureless walls. There are no obvious exits.", - s_to "The doors seem to be closed tight.", - each_turn [; - if (random(20) == 1) { - print "^Suddenly, the doors spring open! You \ -dive out."; - PlayerTo(SkyScraper); - rtrue; - } - ], -; - -Object elevator_sign "sign" Elevator - with name "sign", - initial "There's a small paper sign attached to a wall.", - description "~Shep:^^Put the elevator buttons _here_.^^-T~", - has static; - -! (Not real doors, of course) -!Object elevator_doors "doors" Elevator -! with name "doors" "door", -! description "Solid-looking metal sliding doors.", -! before [; -! Push, Pull, Open: -! "Try as you might, the doors are shut fast."; -! Close: -! "They appear to already be closed."; -! ], -! has scenery; - -Object BORPHEE_burbs "Suburbs" - with description "A suburb starts here, in contrast to the start \ -of a big downtown to the south. For a residential area, \ -it's surprisingly crowded. A main street runs \ -north-south here.", - name "suburb" "downtown" "street", - n_to BORPHEE_Outskirts, - s_to BORPHEE_BD, - has light; - -Object BORPHEE_Outskirts "Outskirts" - with description "New Borphee stops here, although it probably \ -won't for long. A rough trail leads off into some \ -woods to the northwest, or you can enter the city to \ -the south.", - name "trail" "woods" "city", - s_to BORPHEE_burbs, - nw_to BORPHEE_forest, - ne_to "Accardi-By-The-Sea is closed to visitors these days.", - has light; - -Object BORPHEE_forest "Forest" - with description "Deep forest surrounds you. A rough trail runs \ -north and southeast.", - name "forest" "trail", - se_to BORPHEE_Outskirts, - n_to Over_river, - has light; - -Object Over_river "Over River" - with description "You're on a nice new bridge crossing some \ -large river below. Trails lead north and south into \ -woods.", - name "bridge" "trails" "woods", - n_to Forest_trail, - s_to BORPHEE_forest, - before [; - Jump: "Bridge-jumping carries a stiff fine around here."; - ], - has light; - -Object c5 "coin" Over_river class coin_class; - -Object Phee_river "river" Over_river - with name "river" "Phee", - description "Just a large east-west river.", - before [; - Receive: - remove noun; - print "You drop "; DefArt(noun); " into the river and \ - watch it disappear."; - Search, LetGo, Rub, Take, Push, Pull, Touch, Squeeze, Turn, Shake: -"The river is far below the bridge."; - ], - has scenery container; - -Object Forest_trail "Forest Trail" - with description "A beaten trail cuts through some very dense \ -forest running north and south.", - name "trail" "forest", - s_to Over_river, - n_to Ravine_pass, - has light; - -Object Ravine_pass "Ravine Pass" - with description "A forest ravine opens into some sort of clearing \ -to the north here, or a trail heads south.", - name "ravine" "forest" "clearing" "trail", - s_to Forest_trail, - n_to [; - if (army in self) - "The group of soldiers won't let you pass."; - else return Forest_clearing; - ], - has light; - -Nearby army "group of soldiers" - with name "group" "soldiers" "army", - description "A group of well-armed soldiers, who look a little \ - haggard.", - life [; - Attack: "Forget it."; - default: "The soldiers are a little too weary to pay you any \ -direct attention at the moment."; - ], - has animate; - -! (A rather mangled version of the Byzantine Generals Problem) -! (actually, completely different -- i.e., the BGP is unsolvable -! with three armies...) - -Object wicker_cage "wicker cage" Ravine_pass - with name "cage" "wicker", - description "A wicker cage, with two compartments, and a lever \ -attached to the front.", - capacity 3, - size 20, - before [; - Open: - "You can't seem to pry open the cage door by hand."; - ], - add_to_scope cage_lever, - has static container transparent; - -Object cage_lever "lever" - with name "lever", - description "A wooden lever attached to the cage.", - before [; - Pull: - if (Morgan in Delbins) - "A soldier slaps your hand away. ~That windcat \ - messenger box belongs to our Captain, \ - Morgan Grueslayer, so don't mess with it!~"; - if (Morgan notin Ravine_pass) - "You pull the lever and watch the cage door \ - momentarily open, then shut."; - if ((children(E_windcat) == 0) || (children(W_windcat) == 0)) - "Morgan stops you and points at the windcats. ~An \ -instruction must be sent with both of the cats, using the signal flags!~"; - print "Morgan stops your hand, just as you are about to \ -pull the lever. She looks at the cats. \ -~Are you quite sure, Priest?~^^\ -Now, that seems like a reasonable question. So, are you? "; - if (YesOrNo() == 0) "You pause, to reconsider."; - else { - remove E_windcat; - remove W_windcat; - remove army; - remove Morgan; - print "You nod and yank the lever. The cage door \ - latch is loosened enough for both windcats to break free! The \ - spotted windcat tears off to the west, and the speckled cat \ - zips off to the east!^^There is a somewhat stressful pause.^^"; - ! simply put, the flags must both be red - if (((rf1 in E_windcat) && (rf2 in W_windcat)) || - ((rf2 in E_windcat) && (rf1 in W_windcat))) { - Achieved(13); - "Simultaneously, from the east and west, a three horn signal sounds! \ - Morgan smiles triumphantly. ~A truce has been declared! The \ - war has ended!~ The army soldiers yell a round of ~Three cheers!~ \ - before heading off. Morgan shakes your hand \ - with almost enough force to break it. ~Well done indeed, Priest. \ - Your wisdom only compliments your tranquil nature.~ She walks off, \ - seeking the next challenge."; - } - else { - move battle to Forest_clearing; - "Suddenly, from somewhere, a single horn note sounds! The sounds \ - of a fight to the north are soon heard. Morgan \ - gives you a sad, tired look. ~Perhaps it was meant to be,~ she \ - says, as she and the army quickly march north to join their \ - comrades."; - } - } - ], - has static; - - -Object rf1 "red flag" Ravine_pass - class flag_class, - with name "red", - plural "red flags", - description "A red square of cloth."; -Object rf2 "red flag" Ravine_pass - class flag_class, - with name "red", - plural "red flags", - description "A red square of cloth."; -Object bf1 "blue flag" Ravine_pass - class flag_class, - with name "blue", - plural "blue flags", - description "A blue square of cloth."; -Object bf2 "blue flag" Ravine_pass - class flag_class, - with name "blue", - plural "blue flags", - description "A blue square of cloth."; - -Object E_windcat "speckled windcat" wicker_cage - with name "windcat" "cat" "speckled", - description "A sleek, speckled salt-and-pepper windcat, with \ -large paws.", - capacity 1, - before [; - Take: - "The windcat hisses and struggles until you desist."; - Receive: - if (noun hasnt is_flag) - "I don't think the windcat would appreciate that."; - Push, Pull, Attack, Squeeze, Turn: - "I don't think the windcat would appreciate that."; - Rub, Touch: "The windcat purrs."; - ], - has supporter; - -Object W_windcat "spotted windcat" wicker_cage - with name "windcat" "cat" "spotted", - description "A sleek, spotted black-and-white windcat, with \ -large paws.", - capacity 1, - before [; - Take: - "The windcat hisses and struggles until you desist."; - Receive: - if (noun hasnt is_flag) - "I don't think the windcat would appreciate that."; - Push, Pull, Attack, Squeeze, Turn: - "I don't think the windcat would appreciate that."; - Rub, Touch: "The windcat purrs."; - ], - has supporter; - -Object Forest_clearing "Forest Clearing" - with description "A open clearing is surrounded by forest trees here. \ -A ravine pass is to the south, and a short trail heads northwest. \ -You can just see a small cave opening to the northeast.", - name "clearing" "forest" "trees" "ravine" "pass" "trail" "cave", - s_to Ravine_pass, - nw_to [; - if (battle in self) - "You're not getting past that bloody battle (intact)."; - else return Forest_brambles; - ], - ne_to [; - if (battle in self) - "You're not getting past that bloody battle (intact)."; - else return Forest_cave; - ], - has light; - -Object battle "bloody battle" - with name "battle" "war" "warriors", - initial "There's a violent battle taking place in the middle \ -of the field.", - description "It's a fierce battle. Kobolds and soldiers are locked \ -in mortal combat. Getting too close would be certain death.", - life [; - Attack: - deadflag = 1; - "You give a yell and plunge into the battle, and get \ -skewered by a kobold arrow moments later."; -default: "At the moment, everyone seems rather occupied."; - ], - has animate; - -Object Forest_brambles "Forest Brambles" - with description "There's a small area of forest surrounded by \ -brambles and shrubs here. A trail leads southeast.", - name "forest" "brambles" "shrubs" "trail", - se_to Forest_clearing, - has light; - -Object Forest_cave "In front of cave" - with description "A small cave mouth enters into darkness to the \ -north here. A clearing lies to the southwest.", - name "cave" "mouth" "darkness" "clearing", - sw_to Forest_clearing, - n_to CAVE_NSTUNNEL, - has light; - -Object CAVE_NSTUNNEL "North-South Tunnel" - with description "You're in a natural cave tunnel running north and \ -south. To the south you can see a glimmer of daylight.", - name "glimmer" "daylight" "tunnel", - s_to Forest_cave, - n_to CAVE_INTER, - ; - -Object CAVE_INTER "Tunnel Intersection" - with description "Several natural cave tunnels intersect here, \ -running north, south, and east.", - name "tunnel" "tunnels", - s_to CAVE_NSTUNNEL, - n_to CAVE_CURVE, - e_to CAVE_NCREVASSE, - ; - -!Object CAVE_BARE "Bare Cavern", -! with description "A bare cavern. The exit is east.", -! e_to CAVE_INTER, -! ; - -Object CAVE_CURVE "Twisting Tunnel", - with description "A natural cave tunnel makes short twists and \ -turns here, running south and east.", - name "tunnel" "twists" "turns", - s_to CAVE_INTER, - e_to CAVE_DAMP, - ; - -Object CAVE_DAMP "Damp Cave" - with description "You're in a small cave with noticeably damp walls. \ -Exits lie to the west and south.", - name "cave" "damp", - w_to CAVE_CURVE, - s_to CAVE_NCREVASSE, - ; - -Object CAVE_NCREVASSE "Sloping Tunnel" - with description "You're in a windy tunnel that gradually slopes up to the \ -east, or down to the west. A cold breeze blows from a tunnel to the north.", - name "tunnel" "breeze", - w_to CAVE_INTER, - n_to CAVE_DAMP, - e_to CAVE_WINDY, - d_to CAVE_INTER, - u_to CAVE_WINDY, - ; - -Object CAVE_WINDY "Windy Tunnel" - with description "A strange wind seems to howl through this \ -winding tunnel heading east and west. A crack in the tunnel \ -wall exposes an exit north.", - name "wind" "tunnel" "crack", - w_to CAVE_NCREVASSE, - e_to CAVE_BARE2, - n_to Ancient_Tunnel, - before [; - Listen: "A light wind howls through this tunnel."; - ], - ; - -Object CAVE_BARE2 "Bare Cavern", - with description "A bare cavern. The exit is west.", - w_to CAVE_WINDY, - ; - -! (torn -- planes are reachable) -Object p4 "torn parchment" CAVE_BARE2 - class parchment_class, - with name "torn", -description "~...places no mortal man should go, \ -There are planes of existence far beyond our own, that \ -connect and interlace, so that even mortal man may \ -tread upon the featureless gray of . But, \ -I believe that there may be other planes, perhaps \ -where the Implementors are said to live. Are these \ -places just parts of existing planes or planes unto \ -themselves? I do not...~"; - -Object Ancient_Tunnel "Ancient Hallway" - with description "You're in a stone hallway, clearly man-made. \ -The dust and musty smell indicate the place hasn't \ -been used in quite some time. The corridor runs north, while the \ -south wall has a large crack, creating a dark opening.", - name "dust" "hallway" "crack" "opening", - s_to CAVE_WINDY, - n_to End_of_hall, - before [; - Smell: "The air smells a bit musty and stale."; - ], - ; - -Object End_of_hall "End of Hallway" - with description "You're at the north end of a long stone hallway. \ -You can follow the hallway back south, or you can take a set of \ -cracked stone stairs up.", - name "hallway" "stairs", - s_to Ancient_Tunnel, - u_to Domed_chamber, - ; - -Object Domed_chamber "Domed Chamber" - with description [; - print "You are in a large man-made underground chamber, with a \ -perfectly domed high ceiling. Smooth stone archways lead to rooms to the \ -north, south, east and west. Stone cut steps lead down. In the very \ -center of the ceiling you notice a strange circular depression in \ -the stone"; - if ((self hasnt general) && (amulet has worn)) { - give self general; - ".^^Your amulet suddenly gives off a flash of purple light, then fades!"; - } - else "."; - ], - name "dome" "archways" "steps" "ceiling", - d_to End_of_hall, - n_to TROPHY_N, - e_to TROPHY_E, - s_to TROPHY_S, - w_to TROPHY_W, - u_to "The ceiling is too far above you."; - -Nearby fake_depression "depression" - with name "depression" "circle" "hole", - description "It looks like a slightly recessed circular depression \ -in the ceiling. It's hard to tell from here if it was something cut out of \ -the stone, or perhaps it's a separate piece.", - has scenery; - -! (Player can only get here in end game, and probably doesn't want to be here either) -Object TROPHY_SECRET "Secret Trophy Room" - with description "You're in a small domed stone room. The only exit, \ -unfortunately, is a hole in the stone floor to a floor of another chamber \ -far below. Engraved in the wall is: ~LORD DUNCANTHRAX'S PRIVATE TROPHY \ -ROOM~.", - number 0, - name "hole", - each_turn [; - if (TROPHY_SECRET.number == 0) { - TROPHY_SECRET.number = 1; - TROPHY_SECRET.description = "You're in a small domed stone room. \ -There appear to be no exits -- the hole in the floor appears to have been \ -sealed with stone. Engraved in \ -the wall is: ~LORD DUNCANTHRAX'S PRIVATE TROPHY ROOM~."; - give self ~light ~visited; - "^Lord Duncanthrax and some of his soldiers are here.^^\ -Duncanthrax looks up and sees you. ~Who is that?~ he asks. ~Looks like a \ -priest,~ a soldier says. ~Wonderful. First, the black paint, and now, \ -a priest breaks into my trophy room.~ He sighs. ~Will no one rid me of \ -this meddlesome priest?~ One of the soldiers takes the hint and knocks \ -you out cold.^^You awake a short time later."; - } - else { - deadflag = 1; - "^You soon run out of air in the sealed stone room."; - } - ], -has light; - -Object TROPHY_N "North Trophy Room" - with description "This is a bare cubical stone chamber. Some worn black \ -lettering on the wall reads: ~THE EAST CHAMBER IS NOT THE FIRST TROPHY \ -ROOM~. An archway exits south.", - name "archway" "stone", - s_to Domed_chamber, -; - -Object TROPHY_E "East Trophy Room" - with description "This is a bare cubical stone chamber. Some worn black \ -lettering on the wall reads: ~THE NORTH CHAMBER HAS SILVER LETTERING~. \ -An archway exits west.", - name "archway" "stone", - w_to Domed_chamber, -; -! sigh: logic bug in rel 1. Try the following stmt below instead. Note -! that two solutions are possible in this case... -! on the wall reads: ~THE NORTH CHAMBER HAS GOLD LETTERING AND THE SOUTH \ -! CHAMBER IS THE SECOND TROPHY ROOM~. \ - -Object TROPHY_S "South Trophy Room" - with description "This is a bare cubical stone chamber. Some worn black \ -lettering on the wall reads: ~THE EAST CHAMBER HAS SILVER LETTERING AND \ -I HAVE GOLD LETTERING~. An archway exits north.", - name "archway" "stone", - n_to Domed_chamber, -; - -Object TROPHY_W "West Trophy Room" - with description "This is a bare cubical stone chamber. Some worn black \ -lettering on the wall reads: ~EITHER I AM THE SECOND TROPHY ROOM AND THE \ -NORTH CHAMBER IS THE LAST TROPHY ROOM, OR I HAVE GOLD LETTERING~. \ -An archway exits east.", - name "archway" "stone", - e_to Domed_chamber, -; - -Object lettering "lettering" - with name "lettering" "black" "writing", - description [; ; ], - found_in TROPHY_N TROPHY_E TROPHY_S TROPHY_W, - has scenery; - -! (Now, the special key depressions -! AUTHOR NOTE: Originally, I represented all 4 by one object. I -! switched to four identical but separate objects to simplify the -! ease of have the trophy still sitting in the given depression -! (potentially increasing the likelihood that the player might -! drop the trophy in more than once, thereby fouling the puzzle) -Object Nkey_depression "circular depression" TROPHY_N - class trophy_dep_class, - with before [; - Receive: - if (noun ~= trophy) - "That doesn't quite fit."; - else { - if (trophy_stage == 3) { - ! got it --- drop rod if in chamber - trophy_stage = 0; ! could get 'reset' - print "You hear a click"; - move trophy to self; - if (white_rod_piece in TROPHY_SECRET) { - Achieved(14); - move white_rod_piece to Domed_chamber; - move air_spirit to Domed_chamber; - Domed_chamber.description = "You are in a large man-made underground chamber, with a \ -perfectly domed high ceiling. Smooth stone archways lead to rooms to the \ -north, south, east and west. Stone cut steps lead down. In the very \ -center of the ceiling you notice a circular hole."; - fake_depression.description = "It's a small circular hole shrouded in darkness."; - ", followed by a dull thump \ - from the south."; - } - else "."; - } - else { - trophy_stage = 0; ! reset - move trophy to self; - "You hear a click."; - } - } - ], -; - -Object Ekey_depression "circular depression" TROPHY_E - class trophy_dep_class, - with before [; - Receive: - if (noun ~= trophy) - "That doesn't quite fit."; - else { - move trophy to self; - if (trophy_stage == 0) trophy_stage = 1; - else trophy_stage = 0; ! reset - "You hear a click."; - } - ], -; - -Object Skey_depression "circular depression" TROPHY_S - class trophy_dep_class, - with before [; - Receive: - if (noun ~= trophy) - "That doesn't quite fit."; - else { - move trophy to self; - if (trophy_stage == 2) trophy_stage = 3; - else trophy_stage = 0; ! reset - "You hear a click."; - } - ], -; - -Object Wkey_depression "circular depression" TROPHY_W - class trophy_dep_class, - with before [; - Receive: - if (noun ~= trophy) - "That doesn't quite fit."; - else { - move trophy to self; - if (trophy_stage == 1) trophy_stage = 2; - else trophy_stage = 0; ! reset - "You hear a click."; - } - ], -; - -! (GUE Tech -- with new curriculum...) -Object GUE_Gate "GUE Entrance" - with description "You're standing under an open archway that has \ -the letters ~GUE TECH~ prominently displayed in \ -twisted brass and copper. A busy street lies to the \ -south, and the campus quad opens up to the north.", - name "letters" "street" "quad", - s_to BORPHEE_CS, - n_to GUE_QuadS, - has light; - -Nearby GUE_arch "archway" - with name "arch" "archway", - description "It's an elaborate metal and stone affair that \ -probably cost a fortune. On one side, an inscription reads \ -~Forburn Gate~.", - has scenery; - -Object GUE_QuadS "South Quad" - with description "You're walking across a grassy field. More \ -lawn lies to the north, while an archway exits the area to the \ -south. To the west is a low stone building with the word \ -~GYMNASIUM~ etched in stone across the entrance. To the east \ -is a old brick building covered in ivy.", - name "grass" "field" "lawn" "archway" "building" -"ivy", - s_to GUE_Gate, - n_to GUE_Quad, - w_to GUE_Gym, - e_to GUE_Hum, - has light; - -Object GUE_Quad "Center of Quad" - with description "The center of the campus is a nicely tended \ -green lawn with a bronze statue in the center. \ -Paths lead north and south across grassy fields. \ -To the west is a small brick building. To the east \ -is a large stone building with a lintel roof and the \ -words ~WOOMAX LIBRARY~ enscribed across the entrance.", - name "lawn" "grass" "fields" "building" "lintel", - s_to GUE_QuadS, - n_to GUE_QuadN, - w_to GUE_Cafe, - e_to GUE_Library, - each_turn [ i ; - i = random(20); - if (i==8 or 17) - "^Some students walk by. They must be upperclassmen, \ -as they don't even look in your direction."; - if (i==9 or 14) - "^Some students walk by. They must be underclassmen, \ -as some of them look at you with puzzled expressions."; - ], - has light; - -Nearby belboz_statue "statue" - with name "statue" "bronze", - description "An old bronze statue of a wise-looking \ -man in wizard's clothes with a stern, disapproving look. An inscription \ -at the base reads ~BELBOZ AT MITHICUS~.", - has scenery; - -Object GUE_QuadN "North Quad" - with description "You're walking across a grassy field. More \ -lawn lies to the south, while a large building that resembles a \ -auditorium of some sort is north. An inscription near the entrance \ -reads ~ENCHANTER HALL~. To the west you see a small house-like \ -building. To the east you see a low stone building, clearly new \ -and rather modern looking in contrast to its surroundings.", - name "grass" "field" "lawn" "building" "auditorium", - s_to GUE_Quad, - n_to GUE_Enchanter_hall, - w_to GUE_Dorms, - e_to GUE_Labs, - has light; - -Object GUE_Gym "Gymnasium" - with description "There's a large field house here, filled with \ -gym equipment and helpful rubber mats. The exit is east.", - e_to GUE_QuadS, - before [; - Jump: "You do a bit of exercise."; - ], - has light; - -Nearby gym_stuff "equipment" - with description "Various things useful to those who exercise.", - name "equipment" "mats", - before [; - Pull, Push: "You do a bit of exercise."; - ], - has scenery; - -Object dorm_key "flat key" GUE_Gym - with name "key" "flat" "dorm", - initial "Someone left a key here.", - description "A flat metal key with ~102~ marked on one side.", - !weight 5, - size 5, -; - -Object GUE_Hum "Humanities Building" - with description "You're in the humanities building, which is \ -vacant and closed for the summer. The exit is west.", - w_to GUE_QuadS, - has light; - -Object History_book "history book" GUE_Hum - with name "book" "history", - initial "Someone left a history book here.", - description "It's a biography on the life and times of \ - Duncanthrax the Bellicose. Most of it chronicles fairly \ - dry stuff about his much publicized conquests of the \ - Eastlands and his famous battles. There is an interesting \ - bit about some secret trophy chamber that Duncanthrax \ - had constructed near the end of his reign, but for more \ - details, I'd suggest ~look up (word) in book~ specifically.", - before - [ w1; Consult: - if (consult_words > 1) - "The index is rather terse, try limiting your lookup \ - to one word."; - wn = consult_from; w1 = NextWord(); - switch (w1) { - 'trophy', 'secret': - "Apparently, in 680 GUE, Duncanthrax grew increasingly \ - withdrawn. At this time, of foremost importance to him was his collection of \ - various battle trophys and awards he had bestowed to \ - himself (for unusual valor on the field of battle) \ - over the years. He decided to construct a hidden \ - underground chamber south of Egreth to sequester this \ - collection, which would be locked in a most clever means. \ - He decided to order the construction of \ - a ~four-room key~ which, when a miniature trophy \ - was inserted and removed (once) in a special keyhole in each \ - of the four rooms (in a specific order), would unlock a holding chamber \ - in a center room containing his prized trophies. \ - Priding himself on his logic skills, he requested that \ - two captured foreigners produce a logic puzzle plainly \ - inscribed in the four key rooms themselves that would \ - detail the exact order that the key rooms were to be \ - ~applied~. A Prevaricon, \ - who could not help but write untruths, was given a can of \ - gold paint, while a Veritassi, who could only write the \ - truth, was given a can of silver paint. Imagine \ - Duncanthrax's rage when he discovered that the two \ - prisoners had secretly painted over their gold and \ - silver key phrases with _black_ paint! \ - The prisoners were \ - summarily executed, of course, but Duncanthrax sealed \ - off the chamber and researchers can only guess at \ - the final fate of the trophy collection of Duncanthrax."; - 'Zilbo': - "Zilbo the third was overthrown in the great revolt lead \ - by Duncanthrax in 659 GUE. The biographers suggest \ - reading their companion text ~How Zilbo Came to Mithicus~."; - 'Griffspotter', 'Antharia': - "In 665 GUE, Duncanthrax humiliated the Antharian naval \ - Armada in the famous battle at Fort Griffspotter. \ - (Well, okay, there's quite a bit more in the book about \ - this battle, but remember, you're a priest, not a \ - navy sailor.)"; - 'Diablo', 'Massacre': - "In 666 GUE, Duncanthrax invaded Zorbel Pass in the \ - Eastlands and severely trounced a local militia of \ - trolls armed with clubs and garlic. The key \ - significance of this victory on Duncanthrax's \ - conquest of the Eastlands, as well as the immediate \ - recall of all vampiric soldiers in Duncanthrax's \ - military force, cannot be understated."; - 'Ogre', 'battle', 'duel': - "In late 666 GUE, Duncanthrax was engaged in a fierce \ - battle with forces near Globby Hills. In a brilliant \ - tactical move, Duncanthrax goaded the opposing force \ - into decided the fate of the battle on a single duel -- \ - himself versus their champion. Unfortunately for \ - Duncanthrax, the Globby Hill champion turned out to \ - be an Ogre of immense size. In an attempted diversion, \ - Duncanthrax was quoted as saying to the Ogre, \ - ~It's all right, we're with Silvermane.~ The Ogre \ - was quoted as responding with ~Huh?~. Duncanthrax then, \ - perhaps in a moment of sheer bravado, was heard to \ - say ~Your shoes are untied.~ As the Ogre bent down \ - to examine his unshod feet, Duncanthrax gave the \ - signal, and the Ogre was buried under a massive \ - pile of granola."; - 'Silvermane': - "Silvermane, the book notes, was the name of \ - Duncanthrax's pet Dire Wolf."; - 'Index', 'index': - "There appear to be notable entries on ~trophy~, \ - ~Zilbo~, ~Griffspotter~, ~Diablo~, ~Ogre~, and \ - ~Silvermane~."; - default: - "You can't find anything interesting about that."; - } - ], - !weight 20, - size 15, -; - -Object GUE_Cafe "Cafeteria" - with description "A small cramped area with lots of tables and \ -chairs and food stains. The exit is east.", - name "table" "tables" "chair" "chairs" "food" "stains", - e_to GUE_Quad, - has light; - -Nearby cafe_mess "mess" - with name "mess" "cups" "napkins" "junk", - initial "Someone must've had a late night recently, as \ -there is quite a mess of coffee cups, napkins, and other junk \ -on one table.", - before [; - Search: - if (self hasnt general) { - give self general; - move sugar_cube to GUE_Cafe; - move decaf_coffee_can to GUE_Cafe; - "You dig through the mess and find an \ -unopened can of coffee and a sugar-cube."; - } - Take: - "There's too much to carry."; - Rub, Push, Pull, Turn, Touch, Shake: -"You mess with the mess. Nothing happens."; - ], - has static; - -Object sugar_cube "sugar cube" - with name "sugar" "cube", - short_name "sugar cube", - description "A perfect featureless white cube (of sugar).", - !weight 5, - size 5, - has edible; - -Object GUE_Library "Library" - with description "A student library is here, filled with \ -various texts. The exit is west.", - w_to [ x y z ; - objectloop (x in player) { - if ((x == marked_scroll) && (librarian hasnt general)) -"Some strange invisible force stops you as you try \ -to leave. The librarian doesn't look up, but merely says, \ -~If you want to check something out, I'll \ -need to see some ID first.~"; -! (now, instead of doing recursive tree traverse, I do two levels -! of checking, to save code space, since there aren't that many -! workable containers in this game) - if (children(x) > 0) { - objectloop (y in x) { - if ((y == marked_scroll) && (librarian hasnt general)) -"Some strange invisible force stops you as you try \ -to leave. The librarian doesn't look up, but merely says, \ -~If you want to check something out, I'll \ -need to see some ID first.~"; - if (children(y) > 0) { - objectloop (z in y) { - if ((z == marked_scroll) && (librarian hasnt general)) -"Some strange invisible force stops you as you try \ -to leave. The librarian doesn't look up, but merely says, \ -~If you want to check something out, I'll \ -need to see some ID first.~"; - } - } - } - } - } - return GUE_Quad; -! if ((marked_scroll notin GUE_Library) && (librarian hasnt general)) - ], - has light; - - -Object magazine_lib "wrinkled magazine" GUE_Library - with name "magazine" "wrinkled" "report", - initial "There's a wrinkled magazine (~US News and Dungeon Report~) here.", - description "SPIRITWRAK Author notes:^\ -3/96 -- Initial (beta) release. Functionally complete, some \ -nagging bugs and typos may still be present.^\ -4/96 -- Second release. Reported bugs fixed. A few puzzles \ -added, some removed.^\ -6/96 -- Third release. Bug fix release.", - size 15; - - - -Object GUE_Dorms "Dorms" - with description "You're in a short hallway inside some student \ -dormitories. The exit is east.", - e_to GUE_QuadN, - n_to dorm_doorN, - s_to dorm_doorS, - w_to "You wander the halls a bit and return here.", - has light; - -Object dorm_doorN "northern door" GUE_Dorms - with name "door" "northern", - when_closed "There's a closed door to the north.", - when_open "There's an open door to the north.", - description "A wooden door with a keylock. A note \ -attached to it says ~DOING WORK ABROAD~.", - with_key dorm_key, - door_dir n_to, - door_to GUE_dormroom, - after [; - Open: - give dorm_doorN2 open; - Close: - give dorm_doorN2 ~open; - ], - has static door openable lockable locked; - - -Object dorm_doorS "southern door" GUE_Dorms - with name "door" "southern", - when_closed "There's a closed door to the south.", - description "A wooden door with a keylock. A note \ -attached to it says ~BEWARE OF DOG~.", - door_dir n_to, - door_to GUE_Dorms, ! doesn't really go anywhere - before [; - Open: - deadflag = 1; - "As you open the door, an enormous hellhound jumps \ -out! The unusual watchdog creeps back into the room and closes the \ -door -- after having mauled you to pieces, of course."; - ], - has static door openable lockable; - -Object GUE_ID1 "dirty ID card" GUE_Dorms - with name "ID" "card" "dirty", - description "A slightly dirty ID card. There's a picture \ -of some woman with short dark hair and glasses, and the name \ -~Stephanie~ on the front.", - size 5, -; - -Object GUE_ID2 "clean ID card" - with name "ID" "card" "clean", - description "An ID card with a picture \ -of some young student and the name \ -~Harold~ written on the front.", - size 5, -; - -Object GUE_dormroom "Dorm room" - with description "A cramped room, mostly empty, with some \ -bare furnishings.", - name "furnishings" "desk" "chair" "bed", - s_to dorm_doorN2, - has light; - -! (due to short name confusion ("northern door"), 2nd half -! of this door done separately) -Object dorm_doorN2 "door" GUE_dormroom - with name "door", - when_closed "There's a closed door to the south.", - when_open "There's an open door to the south.", - description "An unremarkable wooden door.", -! with_key dorm_key, - door_dir s_to, - door_to GUE_Dorms, - after [; - Open: - give dorm_doorN open ~locked; - Close: - give dorm_doorN ~open; - ], - before [; - Lock: - "You can't lock the door from this side."; - Unlock: - "You can't unlock the door from this side."; - ], - has static door openable lockable; - -!Nearby dormroom_furnishings "furnishings" -! with name "furnishings" "desk" "chair" "bed", -! description "Minimal furnishings -- a desk and chair, \ -!a small bed. Almost reminds you of the Monastery.", -! has scenery; - -Object textbook "textbook" GUE_dormroom - with name "book" "textbook" "text", - initial "A forgotten textbook is lying in one corner of \ -the room.", - description [; - if (self hasnt open) - "The cover reads ~Ancient Mythology~."; - else - "~A colorful myth among ancient races has been \ -called 'The myth of the Four Brothers' by Elder Kroonwatz \ -(the famous Royal Chronicler). The story states that at the dawn of time, four \ -evil gods, who were brothers, sought dominance over that \ -which would become our world. Great battles were fought \ -between forces of light and darkness, and these \ -brothers were often victorious. \ -Fortunately for us, they \ -could not cooperate with each other, and \ -fought amongst themselves in petty power \ -struggles, driven individually by power and greed. -Indeed, legends state that on occassions, the brothers \ -would seek ways to actually destroy their own siblings, \ -along with the forces of good. \ -One brother constructed a strange artifact that would \ -have given him great power, but was discovered by agents of good. \ -He was imprisoned within the very object he built. The remaining \ -three, facing certain defeat without the combined strength of their \ -trapped brother, fled into planes unknown, but made a pact \ -that if the brother were ever freed, and the artifact of \ -power returned to him, the four would \ -agree to make their final attack against the forces of good. \ -Kroonwatz points out the obvious parallels with various other \ -mythologies that foretell the end of the known world.~"; - ], - !weight 20, - size 15, - before [; - Open: - if (self hasnt general) { - give self general; - give self open; - move GUE_ID2 to parent(player); - "As you open the book, a small card flies out and lands \ -at your feet."; - } - ], - has openable; - -Object GUE_Enchanter_hall "Enchanter Hall (top)" - with description "You're at the top of a large auditorium which \ -is empty. You can walk down a long aisle to the \ -front of the hall, or out to the south.", - name "aisle" "seats", - s_to GUE_QuadN, - d_to GUE_Enchanter_hall_front, - n_to GUE_Enchanter_hall_front, - has light; - -Object GUE_Enchanter_hall_front "Enchanter Hall (bottom)" - with description [; - print "You're at the very front of a large \ -auditorium. From here you can look south and sees rows upon \ -rows of empty seats focused on the stage-like area where you now \ -stand. You can walk back into the seats to the south"; - if (hall_switch has on) - ". A soft dim glow highlights your current area."; - else "."; - ], - name "rows" "seats" "glow", - s_to GUE_Enchanter_hall, - u_to GUE_Enchanter_hall, - has light; - -Nearby hall_switch "switch" - with name "switch", - initial "There's a curious switch in the wall here.", - description "A small switch in the far wall.", - before [; - SwitchOn: - if (self hasnt on) { - give self on; - print "You hear a click. A dim light now makes the \ -nearby area less gloomy.^"; - } - else "It seems to be on already."; - if (self hasnt general) { - give self general; - move notebook to hall_desk; - "^A student creeps out of the shadows. He looks \ -at you sheepishly. ~Sorry I haven't been to class all semester, \ -Professor,~ he begins. ~Anyway, here's my final paper.~ He puts \ -a notebook on the desk. ~All this stuff about the new 'science' \ --- I don't know what all the fuss \ -is about. Magic was okay too, wasn't it? There's a part in my \ -conclusion where --~ He stops and looks at the notebook. ~Well, \ -anyhow.~ he says, and disappears back into the shadows."; - } - else rtrue; - SwitchOff: - if (self has on) { - give self ~on; - "The dim light fades."; - } - else "It seems to be off already."; - ], - has static switchable; - -Object hall_desk "large desk" GUE_Enchanter_hall_front - with name "desk", - description "A long desk sits in the middle of this area.", - capacity 30, - has static supporter; - -Object notebook "notebook" - with name "notebook", - capacity 3, - description "A plain white notebook with some loose pages.", - !weight 10, - size 10, - before [; - Receive: - if ((noun ~= term_paper) && (noun hasnt is_scroll)) - "You can't put that into the notebook."; - ], - has container openable; - -Object term_paper "term paper" notebook - with name "paper" "term", - !weight 5, - size 10, - description "~Magic, so what's it good for?~ by \ -Wilbur Lunchbox. It's a long-winded haphazard writing about \ -the virtues of magic in a time of science. Some of the topic \ -sentences are particularly clumsy. However, there's an insightful \ -bit at the end about how under certain circumstances, magic and \ -science become indistinguishable.", -; - -Object GUE_Labs "Science Center" - with description "You are in a short hallway of some new \ -building. The words ~SCIENCE CENTER~ are painted on one wall. \ -The hallway opens to rooms to the east, or you can escape to the west.", - name "words", - w_to GUE_QuadN, - e_to GUE_Labs_Eng, - has light; - -Object GUE_Labs_Eng "Engineering Labs" - with description "\ -You shudder as you look around this area. \ -Clearly a place of science, piles of heavy machinery and strange \ -delicate-looking tools and artifacts are everywhere here. Hallways \ -run west and east.", - name "machinery" "tools" "artifacts", - w_to GUE_Labs, - e_to GUE_Labs_Office, - s_to GUE_Lab_door, - has light; - -Object wood_book "research paper" GUE_Labs_Eng - with name "paper" "research", - description "~On the Structural Strength of Woods~, \ -a short, fairly dry research paper. Apparently, the researcher was testing \ -the breaking point of various woods. The conclusions reached \ -are summed up in the final paragraph:^^\ -~In summary, our findings indicate that out of the materials \ -tested, Ebony wood is clearly the best choice, and Balsa wood \ -clearly the worst. Balsa wood structures broke immediately when \ -even the slightest weight was tested on them. Pine wood structures \ -fared slightly better, holding light weights, but tended to break \ -on repeated stress. Ebony wood structures were approximately twice \ -as strong as Pine structures, holding up to at least one repeated \ -stress test before breaking.~", - !weight 5, - size 15; - -Object GUE_Labs_Office "Office" - with description "You're in a small office of some sort. The \ -only exit is west.", - w_to GUE_Labs_Eng, - has light; - -Nearby Lab_desk "desk" - with name "desk", - initial "A small desk sits in one corner here.", - description "It's quite tiny really.", - has static supporter; - -Object Lab_journal "lab journal" Lab_desk - with name "journal" "lab", - description "Some loose handwritten pages read:^\ -^~...DAY 14) We've put the artifact in the south lab. Still \ -^ no idea what it does, but I'm sure I can find \ -^ some lab student who can figure it out. \ -^ DAY 20) My lab assistant Peabody believes that it's \ -^ some sort of 'mystical gate'. \ -^ Clearly this is hogwash. However \ -^ my grant has been awarded, so I have allowed \ -^ Peabody to continue work. \ -^ DAY 25) Peabody demonstrated something fantastic today. \ -^ He took my briefcase and put it on \ -^ the artifact and in a white flash, it was gone! \ -^ DAY 27) This is my last entry. I am leaving the University \ -^ tomorrow. Peabody, in my request to retrieve my briefcase \ -^ stepped onto the artifact, and was gone! I've read \ -^ his recent research notes, and if he's right, he's \ -^ now lost in a place unimaginable! I've locked the \ -^ artifact away and destroyed the combination -- I pray no \ -^ one ever sees it again!...~\ -^ (The journal breaks off here)", - !weight 15, - size 15, -; - -Object GUE_Lab_door "lab door" - with name "door" "lab", - when_closed [; - print "There's a closed heavy metal door to the"; - if (self in GUE_Labs_Eng) - " south."; - else " north."; - ], - when_open [; - print "There's an open metal door to the"; - if (self in GUE_Labs_Eng) - " south."; - else " north."; - ], - description "A large door made of some shiny hard metal. \ - There are no obvious handles or hinges.", - door_dir [; - if (self in GUE_Labs_Eng) return s_to; - else return n_to; - ], - door_to [; - if (self in GUE_Labs_Eng) return GUE_Labs_SECRET; - else return GUE_Labs_Eng; - ], - before [; - Close: - if (self has open) { - left_dial.number = random(9); - right_dial.number = random(9); - center_dial.number = random(9); - give self ~open locked; - "You close the door and hear some mechanisms spin."; - } - ], - found_in GUE_Labs_Eng GUE_Labs_SECRET, - has static door openable lockable locked; - -! (and now a combination lock, which is probably going to be more -! of an effort to code than for the player to figure out) -Object special_lock "set of dials" GUE_Labs_Eng - with name "dials", - initial "There's an odd set of dials in the wall near the \ -metal door.", - description [; - print "Three dials are in a left-to-right row. Above \ -each dial is a tiny square window with some number visible behind it. \ -The windows currently read: ~",left_dial.number,center_dial.number, right_dial.number; -"~. Right next to the set of dials is a small green button. \ -Letters right above the dials read: ~FrobozzCo~."; - ], - has static transparent; - -Class dial_class - with name "dial", - number 0, - description [; - print "A small dial. The window above reads ~", self.number; - "~."; - ], - has static; - - -Object left_dial "left dial" special_lock - class dial_class - with name "left", - before [; - Turn: - left_dial.number = left_dial.number + 1; - if (left_dial.number > 9) left_dial.number = 0; - print "The left window now reads: ~", left_dial.number; - "~."; - SetTo: - if ((second < 0) || (second > 9)) - "The left dial apparently only goes from 0 to 9."; - else left_dial.number = second; - print "The left window now reads: ~", left_dial.number; - "~."; - ], -; -Object center_dial "center dial" special_lock - class dial_class - with name "center" "middle", - before [; - Turn: - center_dial.number = center_dial.number + 1; - if (center_dial.number > 9) center_dial.number = 0; - print "The center window now reads: ~", center_dial.number; - "~."; - SetTo: - if ((second < 0) || (second > 9)) - "The center dial apparently only goes from 0 to 9."; - else center_dial.number = second; - print "The center window now reads: ~", center_dial.number; - "~."; - ], -; -Object right_dial "right dial" special_lock - class dial_class - with name "right", - before [; - Turn: - right_dial.number = right_dial.number + 1; - if (right_dial.number > 9) right_dial.number = 0; - print "The right window now reads: ~", right_dial.number; - "~."; - SetTo: - if ((second < 0) || (second > 9)) - "The right dial apparently only goes from 0 to 9."; - else right_dial.number = second; - print "The right window now reads: ~", right_dial.number; - "~."; - ], -; - -Object green_button "green button" special_lock - with name "button" "green", - number 0, - weight 0, - description "A small green button next to the dials.", - before [; - Push: - ! a simple game of mastermind. NOTE: I hate mastermind... - if (GUE_Lab_door has open) - "You hear a short buzzing noise."; - if ((left_dial.number == 7) && - (center_dial.number == 3) && - (right_dial.number == 4)) { - give GUE_Lab_door ~locked open; - Achieved(15); - "You hear three clicks, and the door swings open!"; - } - ! observe the bizarre numerical method of tracking guesses... - ! ('0' implies wrong) - ! (As with regular mastermind, we first check for all - ! 'right # and right spot' and build a bitstring that - ! indicates this (i.e. 700 combo would give 100 bitstring). - ! Then, we scan over the slots that were not marked as - ! 'right # and right spot' to check for 'right #, wrong - ! spot'. If, notably, we already found that number in - ! the 1st scan, we do _not_ treat it as 'right #, wrong - ! spot' (i.e. 777 should give us 1 click, not 1 click, - ! 2 thunks). - ! -- Author's note: There is no doubt a simpler method - ! to do this, and you Inform junkies should feel free - ! to let me know this, however I found this method to - ! be easy to code, easy to understand, and pretty - ! robust. - green_button.number = 0; ! RESET - green_button.weight = 0; ! (# of 'thunks') - ! FIRST SCAN - if (left_dial.number == 7) green_button.number = 100; - if (center_dial.number == 3) - green_button.number = green_button.number + 10; - if (right_dial.number == 4) - green_button.number = green_button.number + 1; - ! SECOND SCAN - if (green_button.number ~= 100 or 101 or 110) { - if (green_button.number ~= 11) { - if ((left_dial.number == 3) && - (green_button.number ~= 10)) - green_button.weight = green_button.weight + 1; ! 'add a thunk' - if ((left_dial.number == 4) && - (green_button.number ~= 1)) - green_button.weight = green_button.weight + 1; ! 'add a thunk' - } - } - if (green_button.number ~= 10 or 11 or 110) { - if (green_button.number ~= 101) { - if ((center_dial.number == 7) && - (green_button.number ~= 100)) - green_button.weight = green_button.weight + 1; ! 'add a thunk' - if ((center_dial.number == 4) && - (green_button.number ~= 1)) - green_button.weight = green_button.weight + 1; ! 'add a thunk' - } - } - if (green_button.number ~= 1 or 11 or 101) { - if (green_button.number ~= 110) { - if ((right_dial.number == 7) && - (green_button.number ~= 100)) - green_button.weight = green_button.weight + 1; ! 'add a thunk' - if ((right_dial.number == 3) && - (green_button.number ~= 10)) - green_button.weight = green_button.weight + 1; ! 'add a thunk' - } - } - ! Print number of clicks and thunks - if (green_button.number == 0 && green_button.weight == 0) - "Nothing happens."; - if (green_button.number == 1 or 10 or 100) { - print "You hear a single click"; - if (green_button.weight == 0) "."; - else print " followed by "; - } - else { - if (green_button.number == 11 or 101 or 110) { - print "You hear two clicks"; - if (green_button.weight == 0) "."; - else print " followed by "; - } - else { - print "You hear "; - } - } - EnglishNumber(green_button.weight); - if (green_button.weight == 1) - " thunk."; - else " thunks."; - - ], - has static; - - - -Object GUE_Labs_SECRET "Strange Lab" - with description "This is an odd room, cramped even by lab \ -standards. The place seems to have been cleared out recently.", - n_to GUE_Lab_door, -has light; - - -! ************* -! critters/people -! ************* - -Object librarian "librarian" GUE_Library - with name "librarian" "student" "Stephanie", - description "A young woman with short dark hair and \ -gold-framed glasses.", - life [; - Attack, ThrowAt: - "Attacking librarians is not very becoming of \ - a priest."; - Show, Give: - if (noun == glasses) - "~Thanks no, I already have a pair.~"; - if (noun == GUE_ID1) { - remove GUE_ID1; - "The librarian snatches the ID out of your hand. \ -~Where'd you get my ID?~ she says. ~I've been looking for it \ -everywhere.~"; - } - if (noun == GUE_ID2) { - print "The librarian peers at the ID. ~Hi "; - if (self has general) - "again, Harold,~ she says."; - else { - give self general; - "Harold,~ \ -she says. ~I heard you were going to be away for a least two \ -more years. Got tired of Mithicus, eh? Well, anyway, remember to \ -return anything you borrow after summer session is over.~ She \ -scribbles something down in a notebook."; - } - } - default: "The librarian is currently too busy \ -cataloging books."; - ], - react_before [; - Cast: - "The librarian frowns as you start to chant. \ -~Quiet! This is a library, you know.~ she says."; - Blow: - if (noun==whistle) - "You make an unusually high-pitched noise. \ -The librarian frowns. ~Please! This is a library, you know.~"; - Yell: - "The librarian frowns. ~Please! This is a library, you know.~"; - Sneeze: - "~You should see the school nurse about that cold.~"; - ], - has animate female; - - -Object kobold "large kobold" Forest_brambles - with name "kobold" "large", - initial "There appears to be a wounded kobold here, resting \ - against a shrub.", - description "He's a pretty tough looking kobold. The large wound \ - in his shoulder clearly has him in a foul mood.", - each_turn [; - if (random(20) == 1) - "^The kobold swipes at you with a club in his good arm, \ - but due to his condition, doesn't come close."; - ], - life [; - Attack,ThrowAt: "Attacking a defenseless wounded would be somewhat \ -unsporting."; - default: "The kobold hisses at you and spits out some words that \ - you can't understand at all."; - ], - before [; - Cast: - if (the_spell_was == espnis_spell or foblub_spell) - "The kobold cannot understand your language. The \ - chant fails."; - if (the_spell_was == taclor_spell) { - move green_sphere to Forest_brambles; - remove self; - "You begin your chant, and the kobold seems stricken with \ - fear. Soon, however, the kobold stands up and looks at \ - his healed shoulder with wonder. He starts to say something, \ - realizes you don't speak kobold, and stops. Puzzled by \ - your actions, he stares at you for a moment, then searchs \ - his jerkin, finding a small object which he tosses at your \ - feet. He walks off into the deep forest, and vanishes."; - } - ], - has animate; - -Object air_spirit "air spirit" - with name "spirit", - description "It looks like a small, animated tornado capable \ - of taking you for quite a spin.", - each_turn [ i ; - ! spirit attack - ! (in general, the 4 spirits are _very_ dangerous. - ! There's a 1/5 chance of killing outright, and 2 - ! chances of doing 10 and 5 points of damage respectively. - ! In short, the player needs to realize it's time to swanko, - ! and do so, quickly) - if (self hasnt general) { - give self general ~concealed; - "^You hear a strange intake of air from the hole above \ - your head. Without warning, a small tornado seems to \ - flow in from above. It seems to be sentient!"; - } - i = random(5); - if (i == 1) { - deadflag = 1; - "^The air creature moves with amazing speed! \ - It surrounds you in a mass of whirling winds, and you \ - find yourself spinning helplessly. The speed increases, \ - and you are soon torn apart!"; - } - if (i == 2) - Player_HP_CUR = Player_HP_CUR - 10; - if (i==3) - Player_HP_CUR = Player_HP_CUR - 5; - if (Player_HP_CUR <= 0) { - deadflag = 1; - "^The last blow from the air spirit was too much for \ - you, I'm afraid to say. You are picked up and \ - tossed against the wall in a lifeless heap by a \ - massive gust of wind."; - } - print "^The air spirit "; - if (i==2) - "picks you up in a powerful gust \ - of wind and sends you flying across the chamber! Ouch."; - if (i==3) - "surrounds you with flying dust and \ - debris, momentarily choking you! You break free \ - just in time."; - "charges, but you evade the moving tornado."; - ], - before [; - Cast: - if (the_spell_was == swanko_spell) { - remove self; - "As you speak the chant, the air spirit falls back \ - in fear! You finish the chant, and the air spirit \ - slowly dissipates and grows smaller, until the \ - creature vanishes completely."; - } - print "A sharp gust of wind practically \ - tears your chant out of your lungs.^"; - ], - life [ ; - Attack: - print "You "; - if (random(20) >= 8) - "strike the air creature, but your attack passes \ - harmlessly through it! Strange laughter seems to \ - echo from everywhere."; - "attack the air spirit, but miss!"; - default: "It's too busy trying to kill you."; - ], - has animate concealed; - - -! ************* -! scrolls/spells -! ************* - -Object flour_scroll "flour-coated scroll" - class scroll_class, - with name "flour-coated", -; - -Object gloth_spell "fold dough 83 times" flour_scroll - class spell_class, - with name "gloth", - magic [; - if (second has animate) - "Well, when you see a living creature made out of \ - dough around here, let me know."; - "The chant fails. I suppose you probably need actual dough \ - for it to work."; - ], -; - -Object marked_scroll "pen-marked scroll" GUE_Library - class scroll_class, - with name "pen-marked", - initial "There's a pen-marked scroll sitting amongst some books here.", -; - -Object taclor_spell "heal wounds" marked_scroll - class spell_class, - with name "taclor", - magic [; - if (second == 0) - "The chant searches for a body to heal, and fails."; - if (second == player) { - Player_HP_CUR = Player_HP_MAX; - "You speak the chant, and feel a warm glow surround you. \ - In moments, you feel physically renewed!"; - } - if (second hasnt animate) { - print "It's apparently beyond your powers to \ - heal "; DefArt(second); "."; - } - else { - CDefArt(second); - " is no doubt grateful for the gift of better health."; - } - ], -; - - -! ************* -! interesting objects -! ************* -Object white_rod_piece "white rod piece" TROPHY_SECRET - class rod_class, - with name "white", - initial "In the center of the room is a short white rod.", - description "It's a short section of a rod made of some \ -undeterminable hard substance, \ -colored cloud-white. A piece of the Rod of the Ancients, no doubt!", -; - -Object green_sphere "green sphere" - class sphere_class, - with name "green", - description "A tiny perfect green sphere, made of some strange \ - unknown metal.", -;