X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=src%2FANTHAR.INF;fp=src%2FANTHAR.INF;h=0000000000000000000000000000000000000000;hb=8cf6c360a875867b3cb9b78b9e73a0e72d527d17;hp=564deca1a68aed6ead281fbb717df8e68fd5b204;hpb=eabbe6652d6c382ba6fe25cba07074f73020b4d0;p=spiritwrak.git diff --git a/src/ANTHAR.INF b/src/ANTHAR.INF deleted file mode 100644 index 564deca..0000000 --- a/src/ANTHAR.INF +++ /dev/null @@ -1,2034 +0,0 @@ - -! **************************************************************** -! ANTHAR.INF -! -- Add-on for SPIRITWRAK -! (Do not use alone!) -! **************************************************************** - -Object ANTHAR_GUSStop "Entrance to Greater Anthar" - with description "You're just west of Greater Anthar on the \ -island nation of Antharia. The bright sunlight \ -seems to make the city streets east of here glitter. \ -A stairway leads down.", - name "sunlight" "streets" "glitter" "stairway", - d_to ANTHAR_GUSStation, - e_to ANTHAR_West, - has light; - -Object ANTHAR_West "Anthar West" - with description "You are standing in a busy section of \ -West Greater Anthar City. The city seems to thin \ -out to the west. A roadway heads east, \ -the ever-popular Flathead \ -Stadium lies to the northeast, and a pub lies to the \ -south.", - name "roadway" "stadium" "pub", - w_to ANTHAR_GUSStop, - e_to ANTHAR_East, - s_to Delbins, - in_to Delbins, - ne_to Stadium_entrance, - cant_go "You walk around the area, take in the local scene, and \ - find yourself back here.", - before [; - Smell: "You can smell scents of local cooking coming \ - from the south."; - ], - has light; - -Object ANTHAR_East "Anthar East" - with description "You are standing in a busy section of \ -East Greater Anthar City. The city continues to \ -the west. There is a large odd structure to the \ -east, made mostly of glass. The ever-popular Flathead \ -Stadium lies to the northwest. A short walk down \ -to a waterfront area is to the south.", - name "structure" "glass" "stadium" "waterfront", - w_to ANTHAR_West, - e_to Conservatory_entrance, - s_to ANTHAR_Waterfront, - nw_to Stadium_entrance, - cant_go "You walk around the area, take in the local scene, and \ - find yourself back here.", - before [; - Smell: "You smell rather nice floral scents coming \ - from the east."; - ], - has light; - - -Object ANTHAR_Waterfront "Swank Waterfront" - with description "A pleasant waterfront walk is your current \ -location. You can see the Great Sea stretching out \ -before you to the south, a breath-taking sight. \ -A rail runs along the south end, preventing \ -an untimely fall into the rock shore below. The \ -city is back to the north.", - name "waterfront" "sea" "great" "railing" "rail" "rock" "shore", - n_to ANTHAR_East, - has light; - -Object telescope "viewing telescope" ANTHAR_Waterfront - with name "telescope" "viewing" "scope", - capacity 1, - when_closed "There's a viewing telescope here, attached to the railing.", - when_open [ x ; - print "There's a viewing telescope here, attached to the \ -railing. One of the lenses seems loose"; - if (children(self) == 0) "."; - else { - print ". Inside you see:^"; - x = FULLINV_BIT + INDENT_BIT + NEWLINE_BIT + RECURSE_BIT; - WriteListFrom (child(telescope), x, 1); rtrue; - } - ], - description "A nice tourist toy. Perfect for getting a good view.", - before [; - Open: print "You pry loose a lens. "; - Close: print "You push the lens back in place. "; - Search: - if (self hasnt open) { - print "You take a peak through the telescope"; - if (children(self) ~= 0) - " but oddly, there's something blocking your \ - view."; - else { - if (random(40)==1) - " and see a ship in the distance! Wait, perhaps not. \ -It's gone."; - " and see a nice expanse of the Great Sea."; - } - } - ], - size 10, - has static container openable; - -! (Conservatory gardens) - -Object Conservatory_entrance "Conservatory Entrance" - with description "You stand before the entrance to a large public \ -conservatory. You can enter the greenhouses to the northeast \ -and southeast, or walk back to Anthar to the \ -west.", - name "greenhouse" "greenhouses", - w_to ANTHAR_East, - ne_to Con_Desert_garden, - se_to Con_Flower_garden, - before [; - Smell: "You can smell floral scents from the southeast."; - ], - has light; - -Object Con_Desert_garden "Desert Garden" - with description "A nicely arranged collection of desert plants \ -is here in the ~Desert Garden~. Bright sunlight \ -and a sandy ground enhance the overall effect. \ -The conservatory entrance is to the southwest, or \ -more gardens lie to the south and east.", - name "sunlight" "plants" "sand" "gardens", - sw_to Conservatory_entrance, - e_to Con_Forest_garden, - s_to Con_Decor_garden, - has light; - - -Object Con_Flower_garden "Flower Garden" - with description "A rather lovely flower garden lies before you. \ -The multi-colored flowers are turning the air into \ -perfume. The conservatory entrance is northwest, \ -or more greenhouse gardens lie to the north and \ -east. A tiny trail leads south past the flower \ -beds.", - name "perfume" "entrance" "trail" "greenhouse", - nw_to Conservatory_entrance, - e_to Con_Jungle_garden, - n_to Con_Decor_garden, - s_to Con_storehouse, - before [; - Smell: "The bouquet of flowers is quite intoxicating."; - ], - has light; - -Nearby flowers "flowers" - with name "flowers" "flower" "garden", - description "A lovely assortment of flowers.", - before [; - Take: "Don't pick the flowers."; - Cast: - if (the_spell_was == throck_spell) - "Suddenly, a few more flowers spring out of the \ - ground!"; - ], - has scenery; - -Object Con_storehouse "Gardener's Storehouse" - with description "This must be a storehouse for the conservatory \ -gardeners. There are soil stains and plant debris all over. \ -The only exit is north.", - name "soil" "stains" "debris" "plant", - n_to Con_Flower_garden, - has light; - -Nearby toolshed "toolshed" - with name "toolshed" "shed", - description "A plain toolshed.", - with_key shed_key, - capacity 10, - size 20, - when_closed "A toolshed stands closed against the wall.", - when_open [ x; - print "The toolshed is open. "; - x = children(self); - if (x == 0) "It is 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; - -! (contents of shed) -Object gardeners_cap "cap" toolshed - with name "cap", - description "A cap with an odd green emblem stitched on \ -the front that looks like a clover.", - size 10, - has clothing; -Object hedge_clipper "hedge clipper" toolshed - with name "clipper" "clippers", - description "Basically a long pair of scissors.", - size 15, -; -Object rubber_gloves "rubber gloves" toolshed - with name "gloves" "pair" "rubber", - article "a pair of", - description "A pair of yellow rubber gloves, slightly \ -worn. Good for gardening, or washing dishes, I suppose.", - size 10, -has clothing; - -! (cracked -- magic has questionable source, doesn't always work) -Object p3 "cracked parchment" toolshed - class parchment_class, - with name "cracked", -description "~...is true that those who go by the title of \ -'Enchanters' need not wear any holy symbol through which \ -to draw magical power. Indeed, it seems as though the very \ -amulets we must wear are our only link to magical powers \ -at all. Worse yet, the powers are indeed granted from \ -powers above, but the Ancient Ones? I think not. For indeed, \ -I have found places where magic powers will not work, with or \ -without the amulet. Likewise, I have found places where \ -magic works, but praying to the Ancient Ones goes unanswered! \ -What this all...~"; - -Object Con_Decor_garden "Decorative Plants Garden" - with description "\ -You are standing in a small well-kept garden. The plots surrounding the \ -paths are filled with a variety of general ground-cover plants, all \ -appropriate for most discerning homeowners. Exits lie north and south.", - name "ground-cover" "plots" "flamingo" "tinsel" "ornament", - n_to Con_Desert_garden, - s_to Con_Flower_Garden, - has light; - -Object Con_Forest_garden "Forest Garden" - with description "A garden path winds through this narrow \ -greenhouse, which is stocked with various forest plants. \ -The path winds back to the west and south.", - name "path", - w_to Con_Desert_garden, - s_to Con_Fountain, - has light; - -Nearby plants1 "plants" - with name "plants" "plant" "tree" "forest", - description "You are reminded of a hiking trip you took once.", - before [; - Cast: - if (the_spell_was == throck_spell) - "The forest seems a bit livelier now."; - ], - has scenery; - -Object Con_Jungle_garden "Jungle Garden" - with description "A garden path winds through this \ -long greenhouse, which is filled with plants native to \ -jungle settings. The environment is somewhat \ -humid. The path heads west and north from here.", - name "path" "humid", - w_to Con_Flower_garden, - n_to Con_Fountain, - e_to [; - if (waterfall hasnt general) - "You can't go that way."; - else return Con_Nursery; - ], - before [; - Smell: "You smell flowers to the west."; - ], - has light; - -Nearby plants2 "plants" - with name "plants" "plant" "tree" "jungle", - description "Reminds you of a picture you once saw of \ -the Miznia jungles.", - before [; - Cast: - if (the_spell_was == throck_spell) - "The jungle seems a bit livelier now."; - ], - has scenery; - -Object waterfall "small waterfall" Con_Jungle_garden - with name "waterfall" "fall" "falls", - initial [; - if (self hasnt general) - print "A nice little waterfall enhances the jungle \ -setting"; - else - print "A fake waterfall hides a passage"; - " to the east."; - ], - description [; - print "A small"; - if (self has general) print " fake"; - " waterfall drops out of a mock-stucco \ -wall to the east."; - ], - before [; - Pull, Push, Touch, Search, Rub: - give self general; - "You reach out, expecting to get your hands wet, but \ - to your surprise, you feel a cloth-like substance. \ - On closer examination, you realize that the waterfall \ - is a clever realistic-looking fake, made of cloth \ - and wood. Stepping around some low plants, you also \ - notice the waterfall covers a passage east!"; - ThrownAt: - move noun to Con_Jungle_garden; - CDefArt(noun); ", to your surprise, literally \ - bounces off the waterfall, and lands with a thump \ - nearby."; - ], - has static; - -Object Con_Nursery "Nursery" - with description "This small back room is apparently the \ -conservatory nursery. Bits of soil and plant \ -debris are everywhere, along with immature \ -seedling plants. A exit lies west, partially \ -covered by some cloth.", - name "soil" "plant" "debris" "seedling" "cloth", - w_to Con_Jungle_garden, - has light; - -Object smallpot "small flower pot" Con_Nursery - with name "pot", - description "A small red-ceramic flower pot, \ -ideal for small plants, I suppose.", - before [; - Push, Take: - if ((location == Con_Nursery) && (self hasnt general)) { - give self general; - move shed_key to Con_Nursery; - print "Moving the pot uncovers a small key hidden \ -underneath it.^"; - if (action==##Push) rtrue; else rfalse; - } - LookUnder: - if ((location == Con_Nursery) && (self hasnt general)) { - "The pot does appear to be sitting crooked. But \ - you can't see whatever is under it."; - } - Cast: - if ((the_spell_was == huncho_spell or luncho_spell) && - (self hasnt general)) { - give self general; - move shed_key to Con_Nursery; - rfalse; - } - ], - size 15, - has container open transparent; - - -Object Con_Fountain "Fountain" - with description "A tasteful fountain intercepts a north-south \ -garden trail here.", - name "trail", - n_to Con_Forest_garden, - s_to Con_Jungle_garden, - each_turn [; - if (random(20) == 1) - "^You hear someone whistling nearby, but there doesn't \ -seem to be anyone around."; - ], - has light; - -Nearby fountain "fountain" - with name "fountain", - description "A stone basin with a central fountain spout \ -shaped like a fish. There's no water running currently.", - before - [ x; - Search: - if (self hasnt general) { - give self general; - move c3 to self; - "You fish in the fountain for a bit and find a coin!"; - } - else { - print "Mostly wet plant debris"; - x = children(self); - if (x == 0) - ", nothing interesting."; - print ". You also notice:^"; - x = FULLINV_BIT + INDENT_BIT + NEWLINE_BIT + RECURSE_BIT; - WriteListFrom (child(self), x, 1); rtrue; - } - Receive: - if (noun has is_coin) - print "Hoping for a little luck, I presume?"; - ], - capacity 10, - size 25, - has scenery container open; - -Object glasses "pair of glasses" Con_Fountain - with name "glasses", - initial "It looks like someone left their glasses here.", - description "Thick lenses and a heavy frame.", - before [; - Wear: "You put the glasses on for a moment, and it's like \ - looking through a fishtank. Deciding \ - against continuing your quest without adequate \ - vision, you take them off."; - ], - size 5, - has clothing; - -Object c3 "coin" class coin_class; - -Object shed_key "small key" - with name "key" "small", - description "A small metal key.", - size 4, -; - - -! (Delbin's Pub) - -Object Delbins "Delbin's Pub" - with description [; - print "Delbin's Pub has been a popular food and drink spot in \ - South Anthar for quite a while. "; - if (self hasnt general) - print "Usually, you need to \ - fight off barbarians to find a place to sit. At the moment, \ - however, the place is unusually quiet. A group of \ - barbarians seem paralyzed with fear near the back wall, \ - glancing nervously at the front of the bar."; - else print "A group of barbarians \ - are making a lot of noise nearby."; - " The exit is to the north."; - ], - name "back" "front", - number 0, - before [; - Listen: - if (self has general) - "The barbarians are a rather noisy bunch."; - Go: - if ((noun == n_obj) || (noun==out_obj)) -print "Delbin calls out ~Visit us again!~ as you leave.^"; - ], - n_to ANTHAR_West, - out_to ANTHAR_West, - each_turn [ i ; - if (Morgan in Delbins) { - i = random(3); - if ((i==1) && (Delbins.number == 0)) { - Delbins.number = 1; - "^The man in black makes a lightning fast move for the \ -glass of ale, but is countered by an equally fast move by the warrior. \ -~Lose something, thief?~ the woman says. ~No need to get violent, Morgan,~ \ -the thief says."; - } - if ((i==1) && (Delbins.number == 1)) { - Delbins.number = 2; - "^The wizard looks at his companions. ~Say, did I ever \ -show any of you my famous disappearing glass trick?~ He starts to take \ -off his wizard's hat, but the gentleman and ranger stop him. ~Don't \ -even try it, Frobar.~ the woman warrior says."; - } - if ((i==1) && (Delbins.number == 2)) { - Delbins.number = 3; - "^The female ranger fixates on the glass of ale. \ -~Look you two, some of us have better things to do, like fight wars.~ \ -The wizard scowls. ~Oh save it, Morgan.~ he says."; - } - } - ], - has light; - -Nearby barbarians "barbarians" - with name "barbarians" "group", - description "A group of dirty barbarians. One of them \ - sees you staring at them, and gives you a dirty look.", - life [; - default: - if (Morgan in Delbins) - "The barbarians are somewhat paralyzed with fear at the moment."; - else - "The barbarians are far too busy telling rude jokes \ -at the moment."; - ], - has animate concealed; - -Object headdress "headdress" Delbins - with name "headdress", - initial "A gaudy headdress of some kind is \ -hanging on a nearby wall.", - description "A large headdress made of animal fur and colorful \ -bird feathers.", - size 15, - has clothing; - -Object bar "bar" Delbins - with name "bar", - description "A long flat wood bar that could probably use a \ -washing.", - before [; - Cast: - if (the_spell_was == egdelp_spell) { - print "The bar is covered with a waxy film. \ -Delbin notices this and shrugs."; - } - LetGo: - if (noun==ale_glass) { - ; rtrue; } - ], - has scenery supporter; - -Object ale_glass "glass of ale" bar - with name "glass" "ale", - description "A small glass filled with an amber liquid.", - before [; - Take: - "You receive cold stares from the three individuals \ - at the bar. ~Get your own,~ the Ranger says and \ - pushes you back."; - Drink: - "You receive cold stares from the three individuals \ - at the bar. ~Get your own,~ the Thief says and \ - takes the glass from you before you can bring it \ - to your lips."; - Turn, Push, Pull, Shake: - "You receive cold stares from the three individuals \ - at the bar. ~Get your own,~ the Wizard says and \ - prevents you."; - ThrownAt: - deadflag = 1; - CDefArt(noun); " hits the glass and nearly topples it! \ - A voice from the back of the room says ~Garn! He \ - nearly ruined a perfectly good glass of ale, he did.~ \ - The three individuals at the bar turn to you with \ - angry stares, but before you can respond, some \ - barbarians pummel you to death for poor bar manners."; - Cast: - if (the_spell_was == zemdor_spell) { - give Delbins general; - remove self; - Achieved(8); - ! set up three NPCs - ! -- Morgan, fairly easy - move Morgan to Ravine_pass; - ! -- Frobar, a little tougher - move Frobar to FROBAR_Study; - if (Ench_mag in Frobar_mailbox) - move Ench_mag to Frobar; - StartDaemon(Frobar); - ! -- Thief, trickiest - remove Thief; ! he'll be back - if ((Painting_REAL in Museum_north) && - (glass_wall notin Museum_north)) - move Painting_REAL to THIEF_Storeroom; - ! Thief steals painting (no door left behind!) - "You quickly make the zemdor chant and watch the glass \ -of ale start to shimmer! In short time, there are three glasses filled \ -with ale on the bar!^^\ -Morgan the Ranger looks suspiciously at Frobar the Enchanter. \ -~Is this your doing, wizard?~ Frobar shakes his head. ~Surely not, \ -you know I can't do magic anymore.~ He glances briefly in your \ -direction. ~No matter,~ the thief says, and raises a glass. \ -~To the spirit of adventure!~ The three down their glasses quickly. \ -Morgan smiles. ~Now, that's good ale.~ She adjusts her broadsword. \ -~I'm off to the Egreth front. Want to help end a war, Frobar?~ \ -Frobar chuckles. ~Thank you, no. I've got, err, something to do \ -at home,~ he says and quickly leaves. ~Well, then, what about you, \ -thief?~ Morgan asks, and notices that the thief has already slipped \ -away. She shrugs and leaves the bar as well. ~Good hunting!~ Delbin \ -calls after her."; - } - if (the_spell_was == huncho_spell or luncho_spell) -"You begin the chant, but something about it gets the \ -Enchanter's attention. ~If you have something to say, \ -why don't you share it?~ With a subtle gesture, the Enchanter \ -dispels the chant."; - ], -; - -Object rag "dirty rag" bar - with name "rag" "dirty", - description "A slightly dirty cleaning rag.", - !weight 5, -; - - -! (Flathead stadium) - -Object Stadium_entrance "Entrance to Flathead Stadium" - with description "Here stands the entrance into the still \ - popular Flathead Stadium, home to esoteric \ - sports activities you never fully understood. \ - Walkways lie southeast and southwest from here, or \ - you can enter the stadium to the north.", - name "stadium" "walkways" "entrance", - sw_to ANTHAR_West, - se_to ANTHAR_East, - n_to Stadium_top, - in_to Stadium_top, - before [; - Listen: - "You can hear the roars of a good crowd from \ - inside the stadium. Must be playoff season."; - Go: - if ((noun==n_obj) || (noun==in_obj)) - print "You walk right into the stadium. The ticket-takers \ - must be on strike or something.^"; - ], - has light; - -! (fake stadium entrance, for "past") - -Object Stadium_entrance2 "Entrance to Flathead Stadium" - with description "You appear to be in front of Flathead Stadium once \ -again, however something seems different. Even the stadium itself seems \ -dissimilar, newer. Walkways lie southeast and southwest from here, or \ -you can enter the stadium to the north.", - name "stadium" "walkways" "entrance", - sw_to "A strange feeling compels you to stay.", - se_to "A strange feeling compels you to stay.", - n_to [; - deadflag = 1; - "As you head towards the entrance, a mob of crazed fans \ -rushes out of the stadium (~Isn't that Babe Flathead?~ you hear someone \ -scream) and tramples you to death."; - ], - before [; - Listen: - "The place is surprisingly quiet."; - ], - has light; - - -Object stadium_sign "stadium sign" Stadium_entrance - with name "sign", - initial "A stadium event sign is pasted to one of the stadium walls here.", - description - "~Today's event:^\ - GOLEM FIGHTS!!!^^\ - ALL CHALLENGERS WELCOME!!!^\ - THREE ROUNDS, THREE BOUTS!^\ - BIG CASH FOR THE WINNER!^^\ - (All Golems have undefeated records, so^\ - only trained golem-wrestlers need apply!)~", - has static; - -Object stadium_statue "stadium statue" Stadium_entrance - with name "statue", - initial "A statue depicting the legendary Babe \ -Flathead greets all visitors in front of the stadium.", - description - "According to the inscription, this statue honors the legendary Babe Flathead.", - before [; - LookUnder: - if (self has general) - "Oddly, the statue seems to sit slightly tilted."; - Push: - if (self has general) { - remove self; - move statue_base to Stadium_entrance; - Achieved(9); - "You give the statue a shove, and it wobbles and falls, \ -breaking into useless dust! A passing sportsfan notices your act \ -of vandalism, and says to a friend, ~Look at that. The guy wins one \ -bout of Golem wrestling, and he thinks he's better than Babe \ -Flathead.~"; - } - else "The statue seems to be firmly fixed in place."; - ], - has static; - -Object statue_base "square hole" Stadium_entrance2 - with name "hole" "square", - describe "In front of the stadium is a square hole.", - description "There's a large square hole in the ground near \ -the front of the stadium.", - time_left 0, - time_out [; -! move stadium_sign to Stadium_entrance; -! move stadium_statue to Stadium_entrance; - print "^You hear voices behind you, and suddenly, a \ -small crowd of people pass by, pushing a statue.^^\ -~Right there,~ someone shouts, and a few people position the \ -statue into the square hole."; - if (children(self) == 0) { - print " It fits neatly in place."; - remove red_rod_piece; - } - else { - give stadium_statue general; - print " It fits, but seems just slightly \ -tilted."; - } -! remove statue_base; -! give Stadium_entrance ~general; - Mystical_Cave.number = Mystical_Cave.number + 1; - print "^^~That's perfect,~ you hear a voice say, and \ -the crowd murmurs in agreement. Why, it's Babe Flathead himself! \ -He saunters up towards the statue, which is indeed a good \ -likeness, and starts handing out cigars. ~We'll get to \ -autographs later,~ he says while lighting your cigar as you \ -try to protest. Seconds later, the cigar explodes! You see \ -sparkling stars, which seem to change to purple flashes. You \ -blink.^"; - PlayerTo(Mystical_Cave); - ], - capacity 1, - size 15, -has static container open; - -Object Stadium_top "In Flathead Stadium, upper seats" - with description "\ -You are near the top cheap seats of Flathead Stadium. \ -The crowd is busy cheering whatever is going on down on the \ -field. Looking at the field, you see two small dots. The Stadium exit \ -is back south, or you can walk down to the front seats to \ -the north.", - name "seats" "crowd" "field" "dots" "fans", - s_to Stadium_entrance, - n_to Stadium_bottom, - d_to Stadium_bottom, - e_to "You try to push your way through the fans, but fail.", - w_to "You climb over a few seats, but the crowd blocks any \ - further progress west.", - before [; - Listen: "The crowd is deafening."; - ], -has light; - - -Object Stadium_bottom "In Flathead Stadium, lower seats" - with description "\ -You are near the good seats in Flathead Stadium. \ -The crowd is busy cheering for the current event on the \ -field. Looking at the field, you see two large dots. The \ -seats continue up and south, or you can walk down to the \ -field below.", - name "seats" "crowd" "field" "dots" "fans", - s_to Stadium_top, - u_to Stadium_top, - d_to [; - if (burly_man hasnt general) -"The burly man jumps out of his seat as you try to pass. \ -~Hey buddy, I'm saving those seats.~ He points to an entire \ -row of seats below you. ~I've been waiting all season, and \ -I don't want an obstructed view, so look for somewhere else to \ -sit.~ He sits back in his seat."; - else return Near_locker_room; - ], - n_to [; - if (burly_man hasnt general) -"The burly man jumps out of his seat as you try to pass. \ -~Hey buddy, I'm saving those seats.~ He points to an entire \ -row of seats below you. ~I've been waiting all season, and \ -I don't want an obstructed view, so look for somewhere else to \ -sit.~ He sits back in his seat."; - else return Near_locker_room; - ], - w_to "You try to push past a couple fans, but the angry looks make you stop.", - e_to "You try to push past a couple fans, but the rude looks make you stop.", - before [; - Listen: "The crowd is deafening."; - ], -has light; - -Object Near_locker_room "Near Locker Room" - with description "\ -You are near a locker room under Flathead field. \ -You can enter the locker room to the north, or start the climb back into \ -the roaring crowd to the south.", - name "crowd" "field" "fans", - s_to Stadium_bottom, - u_to Stadium_bottom, - n_to Locker_room, - each_turn [; - if (self hasnt general) { - give self general; - move pale_scroll to Near_locker_room; - "^A couple front row fans are getting a bit boisterous. \ -Several of them throw garbage and paper debris towards the field. \ -You notice something flutter down by your feet."; - } - ], - before [; - Listen: "The crowd is deafening."; - ], - has light; - -Object Locker_room "Locker Room" - with description "\ -You are inside a locker room under Flathead field. You can hear the \ -crowds outside. The room is empty. There is an exit \ -to the south, and the entrance to the field is to the north.", - name "field" "locker" "lockers", - n_to Flathead_field, - s_to Near_locker_room, - before [; - Listen: "You can hear the crowd outside."; - ], - has light; - -Object Flathead_field "Flathead Field" - with description "You're on Flathead field, in front of millions of zany \ -fans, a lifetime dream. Or not. Well, anyway, \ -there's a locker room to the south.", - name "field" "fans", - s_to [; - if (self has general) -"You head for the showers, but the coach springs out and blocks \ -your way. ~Come on kid, keep your head in the game.~"; - else return Locker_room; - ], - each_turn [ i; - if (self has general) { - i = random(20); - if (i == 1) - "^Someone in the crowd yells out, ~Get him a body bag!~ \ - We assume he was referring to the golem, not you."; - if (i == 5) - "^The crowd does 'the wave'."; - if (i == 7) - "^The crowd waves some strange colorful objects. \ -Rather distracting."; - if (i == 10) - "^Someone in the crowd screams ~Flathead that golem!~"; - } - ], - before [; - Listen: "The crowd is deafening."; - ], - has light; - - - - -! **************** -! People/creatures -! **************** - -Object Christmas_tree_monster "Christmas tree monster" Con_Decor_garden - with name "tree" "monster" "Christmas", - initial "A Christmas Tree stands in one plot, swaying back and forth.", - description "\ -The Christmas Tree monster has obviously seen some good years. It towers \ -above you, wrapped with tinsel that sparkles marvelously. The \ -plastic flamingo ornaments are a rather gaudy touch. Surprisingly, it seems to \ -have taken root in the soil.", - each_turn [ i ; - i = random(10); - if (i==1) -"^The Christmas Tree Monster belts out a few bars of 'I'm dreaming \ -of a Black Cavern' arranged by Bing Frozby."; - if (i==2) -"^The Christmas Tree Monster sings a few measures from Berknip's own \ -rendition of 'Silent Night', a rather morbid version."; - if (i==3) -"^The Christmas Tree Monster hums a few notes from 'Dornbeasts \ -Roasting on an Open Pyre'."; - if (i==4) -"^The Christmas Tree Monster whistles a part of 'Frosty the Snow Wight'."; - if (i==6) -"^The Christmas Tree Monster sways in time to 'Let it snow, let it snow, \ -let it snow'."; - if (i==8) -"^The Christmas Tree Monster treats you to an abridged version of \ -Handel's 'Messiah'."; - "^The Christmas Tree Monster hums to itself."; - ], - before [; - Cut: - if (hedge_clipper notin player) - "You'll need a gardening implement to do that."; - if (self has general) - "The gardener said he'd make you dig for slugs, and \ - that doesn't sound too exciting, so let's leave the tree \ - alone."; - if (self hasnt general) { -print "You being to clip a few of the lower branches of the Christmas Tree \ -Monster, who bellows in pain!^^\ -Out of nowhere, a short old man appears, wearing full gardener \ -regalia. He drags your hand away from the tree.^^\ -~What are ya trying to do there, kill the thing?~ he says. "; - if ((glasses hasnt moved) || (glasses in Con_Fountain)) { - remove glasses; - remove hedge_clipper; -"He pulls \ -out a pair of glasses and puts it on. ~Say, I don't know you,~ \ -he says. ~If you want to practice introductory horticulture, do \ -it in someone else's garden!~ He grabs the clippers from your hands \ -and stalks off."; - } - else { -print "He seems \ -to be squinting at you. ~Who are you sonny?~ he asks. He starts -searching his pockets. ~Confound it, lost my glasses again.~ "; - if (gardeners_cap hasnt worn) { - remove hedge_clipper; -"He squints again, and says, ~Well, whoever you are, the gardens are \ -for looking at, not practicing landscape design!~ He grabs the \ -clippers out of your hands and stalks off."; - } - if (gardeners_cap has worn) { - give self general; - Achieved(10); -"He looks at you again, and notices your cap. ~You must be one of the \ -new boys. Here, look, I'm not going to show you twice.~ He takes \ -the clippers and delicately clips away several lower branches, all \ -the while singing ~It's beginning to look a lot like Christmas~. \ -He finishes trimming the tree, leaving a nice opening exposing the \ -shrub next to it, and stops singing. ~I'm starting to hate \ -that tune,~ he says under his breath. He hands the clippers back \ -to you and says, ~Now if I catch you doing this wrong again, I'm \ -going to make you dig for slugs, understand?~ He disappears as \ -quickly as he appeared."; - } - } - } - Cast: - "You start chanting, but the tree starts singing \ - ~Plover the river and frotz the woods~ and you \ - can't help joining in, ruining your chant."; - ], - react_before [; - Sing: - "You song is drowned out by a boisterous chorus \ - by the tree."; - ], - life [; - Show: - if (noun==toy_volcano) - "The tree abruptly stops singing, and seems \ -a trifle flustered for some reason. Moments later, it \ -resumes its chorus."; - default: "The tree just keeps on singing."; - ], - has animate; - -! (ok, the bush isn't defined as alive. But it is...) -Object dornberry_bush "Dornberry bush" Con_Decor_garden - with name "shrub" "bush", - initial [; - print "A small shrub sits near and under the Christmas Tree"; - if (Christmas_tree_monster hasnt general) - ", almost covered by it."; - else - "."; - ], - description [; - if (self hasnt general) -"The small shrub looks rather poorly tended. Just a few green leaves \ -distinguish it from the surrounding soil."; - else -"The small shrub looks quite healthy. A cluster of green leaves and \ -branches make a nice plant. It's still smaller than the tree, though."; - ], - capacity 1, - before [; - Cast: - if (the_spell_was == throck_spell) { - if (Christmas_tree_monster hasnt general) -"The shrub seems to shake suddenly! A new leaf grows, searchs for the \ -sunlight, fails, and withers."; - if ((Christmas_tree_monster has general) && - (self hasnt general)) { - give self general; - move dornberries to self; -"The shrub seems to shake suddenly! A new leaf grows, searchs for the \ -sunlight, and finds it! Another leaf follows, and soon the shrub is \ -sprouting new branches. In the sunlight, flowers appear, and a cycle \ -of missed-out seasons is made-up for in minutes! The shrub is now \ -quite a thriving plant, covered with tiny red fruit."; - } - if (self has general) - "The shrub shakes a bit, but the plant remains the \ - same. For a Dornberry bush, it's already probably \ - the healthiest one you've ever seen."; - } - Receive: - if (noun ~= dornberries) - "I don't think the shrub can support that."; - ], - has static supporter; - -Object dornberries "bunch of dornberries" - with name "dornberries" "berries", - description "A bunch of tasty-looking red berries.", - !weight 5, - size 5, - has edible scored; - -! (moved here so that it shows up 'last' in room descr) -Object plaque "plaque" Con_Decor_garden - with name "plaque", - initial "A small plaque sticks out of the soil near the two plants.", - description [; - print "The plaque reads:^^"; - font off; -print "~CHRISTMAS TREE MONSTER DORNBERRY BUSH^"; -print " ~^"; - font on; - ], -! ~CHRISTMAS TREE MONSTER DORNBERRY BUSH^\ -! ~", - has static; - - -! (Characters in Flathead Stadium) - - -Object burly_man "burly man" Stadium_bottom - with name "man" "burly", - description "A big man who's apparently into sports.", - before [; - Cast: - if ((the_spell_was == foblub_spell) && (self hasnt general)) { - give self general; - Achieved(11); -"You begin your sermon. The man starts to tell you to knock \ -it off, but starts to listen with awe. As you finish, the man \ -tries to get up to shake your hand, but realizes he is stuck \ -fast. ~They gotta start cleaning these seats,~ he says."; - } - if (the_spell_was == espnis_spell) - "You begin a description of the 1700 different kinds of \ - holy water, but the man seems so enthralled with the \ - game below, he just isn't paying attention."; - ], - life [; - Show: - if (noun==trophy) - "~You were amazing pal. Ever think of going pro?~"; - Ask: - if (second=='fight' or 'game' or 'fights') - "~It's the three-golem special. One contestant \ - versus three golems, one after the other. Great \ - stuff.~"; - default: - "~Give it a rest pal, I'm watching the game.~"; - ], - has animate; - -Object coach "tough-looking coach" Locker_room - with name "coach", - description [; -print "An old fellow with bushy eyebrows and \ -a gruff demeanor. He's dressed like a sports coach"; -if (trophy in self) -". You also notice he's holding some sort of trophy."; -else "."; - ], - number 1, - each_turn [; - if (self hasnt general) { - if (Flathead_field hasnt general) { - give Flathead_field general; -print "^The coach looks up and notices you. ~Oh, you must be the \ -replacement,~ he says. He drags you over to the field entrance. \ -~Well, I hoped you're warmed up, cuz you're up.~ He shoves you \ -north. ~Remember, these guys are tough, so give 'em your \ -best stuff.~^"; - PlayerTo(Flathead_field); - } - else { - print "^The coach looks up and notices you. \ -~Where have you been? The ref was about to default \ -it to the golems!~ He shoves you north. ~Now get in there and \ -make me proud.~^"; - PlayerTo(Flathead_field); - } - } - if ((self has general) && (coach.number == 1)) { - move win_bag to player; - coach.number = 2; - "^The coach gives you a slap on the back that \ -knocks the wind out of you. ~You did it! I didn't think \ -you had it in you!~ He hands you a small bag. ~Here's the \ -winnings. I went ahead and took out my cut, of course.~^"; - } - ], - life [; - ! essentially, the only chances to do 'life' things - ! will occur when the coach is lingering around - ! the lockerroom after the match. - Attack: - "~You want a couple rounds with the old man \ -too? Well, I'm ready.~ For an old coach, he still looks \ -like he's in pretty good shape. You decide against violent \ -action."; - Answer: - "The coach merely nods."; - Ask: - if (second == 'trophy') - "~It's a beauty all right.~"; - if (second == 'winnings' or 'cut') - "~It's all there, count it if you want.~"; - if (second == 'life' or 'game' or 'sport') - "The coach looks momentarily reflective. \ -~Life is all about getting into the game,~ he says. \ -~Remember that, it's not about winning or losing, but \ -giving it your best shot.~"; - Show: - if (noun == cereal1 || - noun == cereal2 || - noun == cereal3 || - noun == cerealbox1 || - noun == cerealbox2 || - noun == cerealbox3) - "~A bowlful of that each morning is bound to make a \ -champion out of you.~"; - Order: -! *** note2: this seems to contradict documentation, -! i.e. 'ask coach for trophy' results in noun==trophy and -! second==(?)coach or player, not the other way -! around. - if ((action==##Give) && (noun==trophy) && - (trophy in self)) { - move trophy to player; - remove self; -"The coach looks lovingly at the trophy, and then at you. \ -~Fair enough kid, you earned it.~ he says, and gives it \ -to you. ~I've seen a lot of golem-wrestlers in my time, \ -but I gotta say, you're the best golem-wrestler I've ever \ -seen.~ He leaves the locker room to greet his fans."; - } - default: "At the moment, it looks like the coach is too busy \ - writing a Hall of Fame acceptance speech to \ - pay you much attention."; - ], - react_before [; - Cast: - "~What's that you're saying? Speak up, I'm your \ -coach, I'm hear to listen.~"; - ], - has animate transparent; - -Object referee "referee" Flathead_field - with name "referee" "ref", - description "A stout looking man in a funny striped shirt.", - each_turn [; - if (self hasnt general) { - give self general; -"^The ref blows his whistle and says ~Round 1~. The golem, not \ -needing any encouragement, jumps into the fray."; - } - ], - life [; - Attack: - "Your opponent is the golem, not the referee."; - Ask: - if (second == 'time' or 'timeout') - "~Sorry, no timeouts!~ the ref says."; - if (second == 'foul') - "~It looked good to me.~"; - if (second == 'round') { - if (wood_golem in Flathead_field) - "~You're in round 1.~"; - if (stone_golem in Flathead_field) - "~You're in round 2.~"; - if (iron_golem in Flathead_field) - "~You're in round 3, the final round.~"; - } - default: "The ref makes some completely \ -bewildering hand signal, that could be an insult, for \ -all you know about wrestling. In any event, nothing happens."; - ], - before [; - Cast: -if (the_spell_was == espnis_spell) { - deadflag = 1; - "You start to relate the advantages of Bingo over Double \ -Fanucci to the ref, and sooner that you can say ~Zounds~, the \ -ref is fast asleep! Unfortunately, the golem takes advantage of \ -this opportunity and breathes poison gas at you! You reflect \ -on this display of poor sportsmanship as you slowly lose \ -consciousness."; -} - ], - has animate; - -! -- the golems... -! In general: To be fair, the golems only have a 1 in 30 chance -! of actually hitting. When they do hit, however, it's pretty -! painful. They also tend to have high HP, although I guess -! theoretically, they could be beaten without spells. -! (note: I've tried this with the iron golem and never -! succeeded. The odds are definitely not in the players favor) -Object wood_golem "dangerous-looking wood golem" Flathead_field - with name "golem" "wood", - number 20, - description "\ -The wood golem stands at about twice your height, an animated statue \ -made completely of wood. He may move like an old cabinet, but \ -watch those hands!", - each_turn [ i ; - i = random(13); - if (i == 13) - Player_HP_CUR = Player_HP_CUR - 15; - if (Player_HP_CUR <= 0) { - deadflag = 1; - "^The wood golem jumps forward and flattens you, \ - which feels similar to getting hit by a falling \ - redwood tree."; - } - if (i == 13) - "^The golem staggers you with a punch that sends you \ - reeling!"; - if (i == 20) -"^The wood golem tries to move in for a clinch, and you dance \ -away."; - if (i == 10) -"^The wood golem makes a lumbering swing at your head, and misses!"; -"^The wood golem makes a swipe for you, and misses."; - ], - before [; - Cast: - if (the_spell_was == egdelp_spell) { - remove self; - move stone_golem to Flathead_field; -"The wood golem is suddenly covered with a waxy buildup! \ -Greatly embarrassed, he turns to call foul, and slips! \ -With a great thud, the golem hits the turf, and knocks \ -himself out cold!^^\ -The ref says ~Knockout!~. The crowd cheers in approval.^^\ -Several dwarves appear and cart the wood golem off. \ -Unfortunately, a stone golem soon walks into view!^^\ -The coach yells from the doorway ~You're doing great kid, \ -just hang in there.~^^\ -The ref says ~Round 2!~"; - } - ], - life [ i ; - Attack: - i = random(20); - if (i > 10) { - wood_golem.number = wood_golem.number - 1; - if (wood_golem.number <= 0) { - remove self; - move stone_golem to Flathead_field; -"With a thundering blow, you smash the golem into \ -kindling!^^\ -The ref says ~Knockout!~. The crowd cheers in approval.^^\ -Several dwarves appear and cart the wood golem off. \ -Unfortunately, a stone golem soon walks into view!^^\ -The coach yells from the doorway ~You're doing great kid, \ -just hang in there.~^^\ -The ref says ~Round 2!~"; - } - else { - print "Good shot! You whack the golem, and splinters fly"; - if (wood_golem.number > 10) - ". It didn't seem to slow him down, though."; - else "."; - } - } - "You swing, but miss."; - ], - has animate; - -Object stone_golem "fierce-looking stone golem" - with name "golem" "stone", - number 40, - description "\ -The stone golem is quite a towering piece of work. He looks like a crude \ -statue made of animated granite. He probably has all the \ -finesse of a giant boulder, so don't let him pin ya!", - each_turn [ i ; - i = random(13); - if (i == 13) - Player_HP_CUR = Player_HP_CUR - 20; - if (Player_HP_CUR <= 0) { - deadflag = 1; - "^The stone golem jumps forward and flattens you, \ - which feels similar to getting crushed by a giant \ - boulder."; - } - if (i == 13) - "^The golem hits you with a punch that sends you \ - reeling!"; - if (i == 20) - "^The golem jabs with his left, and misses!"; - "^The golem tries to close, and misses."; - ], - before [; - Cast: - if (the_spell_was == tossio_spell) { - remove self; - move iron_golem to Flathead_field; -"The golem is suddenly replaced with a pile of steaming \ -linguini alfredo!^^\ -The ref yells ~Takeout!~ The crowd goes wild! \ -Several dwarves appear and serve the pasta to the crowd \ -on platters. Unfortunately, an iron golem soon \ -walks into view! ^^\ -The coach yells out from the safety of the locker room ~Okay kid, drop \ -this golem, and we can celebrate.~^^\ -The ref yells ~Round 3!~"; - } - ], - life [ i ; - Attack: - i = random(20); - if (i > 10) { - stone_golem.number = stone_golem.number - 1; - if (stone_golem.number <= 0) { - remove self; - move iron_golem to Flathead_field; -"With a thundering blow, you smash the golem into \ -gravel!^^\ -The ref says ~Knockout!~. The crowd cheers in approval.^^\ -Several dwarves appear and cart the stone golem off. \ -Unfortunately, an iron golem soon walks into view!^^\ -The coach yells out from the safety of the locker room ~Okay kid, drop \ -this golem, and we can celebrate.~^^\ -The ref yells ~Round 3!~"; - } - else { - print "Solid blow! Stone chips fly."; - if (stone_golem.number > 10) - ". It didn't seem to slow him down, though."; - else "."; - } - } - "You swing, but miss."; - ], - has animate; - -Object iron_golem "deadly-looking iron golem" - with name "golem" "iron", - number 50, - description "\ -The iron golem resembles a huge nightmare made out of iron. \ -Towering at least 30 feet high, this animated iron statue isn't \ -something you'd want to meet in a dark alley, much less \ -in an arena filled with screaming fans.", - each_turn [ i ; - i = random(13); - if (i == 13) - Player_HP_CUR = Player_HP_CUR - 30; - if (Player_HP_CUR <= 0) { - deadflag = 1; - "^The iron golem jumps forward and flattens you, \ - which feels similar to getting mashed by a giant \ - block of iron. Oww."; - } - if (i == 13) - "^The golem staggers you with a punch that sends you \ - reeling! That felt quite painful."; - if (i == 20) - "^The golem tries to flatten you, and you evade just in time!"; - "^The golem tries to step on you, and you dodge."; - ], - before [; - Cast: - if (the_spell_was == bekdab_spell) { - remove self; - remove referee; - give Flathead_field ~general; - give coach general; - move trophy to coach; - Achieved(12); -"The golem suddenly develops many unsightly patches of rust. \ -Mortified, the golem calls for his oil trainer, but to no \ -avail! It soon falls apart into several rusty metal pieces!^^\ -The ref calls out ~The winner!~ and holds your hand aloft. \ -The crowd is on its feet! They'd probably be chanting your \ -name, if they knew it.^^\ -Several dwarves appear and drag off the rusty metal plates. \ -The ref explains that the prize money and a championship \ -trophy will be awarded in the \ -locker room, and exits."; - } - ], - life [ i ; - Attack: - i = random(20); - if (i > 10) { - iron_golem.number = iron_golem.number - 1; - if (iron_golem.number <= 0) { - remove self; - remove referee; - give Flathead_field ~general; - give coach general; - move trophy to coach; - Achieved(12); -"With a thundering blow, you smash the golem into \ -ball-bearings.^^\ -The ref calls out ~The winner!~ and holds your hand aloft. \ -The crowd is on its feet! They'd probably be chanting your \ -name, if they knew it.^^\ -Several dwarves appear and collect the ball-bearings. \ -The ref explains that the trophy will be awarded in the \ -locker room, and exits."; - } - else { - print "Solid blow! You make a small dent."; - if (iron_golem.number > 10) - ". It didn't seem to slow him down, though."; - else "."; - } - } - "You swing, but miss."; - ], - has animate; - -! (Three important NPCs) - -Object Morgan "Morgan the Ranger" Delbins - with name "ranger" "warrior" "Morgan" "captain" "maiden", - number 1, - initial [; - if (self in Delbins) - "There's a warrior-maiden sitting at the bar, her \ -eyes riveted to the glass of ale."; - else - "Morgan the Ranger is here."; - ], - description "She's nearly twice your height, and \ -probably twice your strength too. She's armed and armored in \ -typical military Ranger gear. She gives you the impression of \ -being the type who'd hunt dragons as a hobby -- assuming there were \ -any dragons left to hunt, of course.", - each_turn [; - if ((self in Ravine_pass) && (Morgan.number == 1)) { - Morgan.number = 2; - "^The Ranger sees you approach and recognizes you. \ - ~Well met again, Priest. I have need of your \ - assistance to end the kobold border war that has been going \ - on far too long.~ She pauses. ~To the \ - west and east are two of my lieutenants and their \ - soldiers, cut off from the rest of us by previous kobold \ - raids. I have the power to end this war and call a truce, \ - but to do so, I need \ - to inform both of my lieutenants to \ - stop fighting via \ - windcat message carriers.~ She points to the two windcats \ - in the wicker cage and the pile of colored flags. \ - ~The 'red' flags indicate 'attack', the \ - 'blue', truce. When my lieutenants receive the instructions, \ - they will verify my commands by sending additional messengers \ - with 'attack' or 'truce' instructions to each other. \ - Based on the two \ - received messages, each lieutenant will act accordingly.~ \ - She slaps you on the back, jolting you to attention. \ - ~Herein lies my problem, Priest. I know for a fact, that \ - one of my lieutenants is a traitor, who will \ - disobey my orders. Any instruction I send to the traitor, \ - the opposite will be sent by the traitor to my remaining \ - good lieutenant. The traitor will also take the two orders \ - he receives and do the opposite, if there is a majority, or \ - attack outright, if there are messages of 'truce' and 'attack'. \ - Thankfully, my good lieutenant will faithfully copy my \ - instructions to the other lieutenant, and will follow orders \ - received, if there is a majority, or follow a 'truce' if \ - there are mixed messages. My greatest problem, Priest, is that \ - I do not know which lieutenant is the traitor! If you \ - can bring peace once and for all to Southern Egreth, many \ - will remember your good deeds.~"; - } - ], - life [; - Answer: - if (special_word == 'hello') { - print "~Hello"; - if (Morgan.number == 2) - print " again"; - ", priest.~"; - } - Attack, ThrowAt: - "She's well-armed and probably dangerous."; - Give, Show: - "A gracious gesture, perhaps, but she isn't \ -interested."; - Kiss: - "She nearly splits your skull with the flat of \ -a huge broadsword before you even get close. ~For a man of \ -the cloth, you've got a lot of nerve,~ she says."; - Ask: - if (((second == 'cat') || (second=='cats') || - (second == 'windcat') || (second=='windcats')) && - (Morgan.number == 2)) - "~Right, the windcats. \ - The speckled cat will find the lieutenant to the east. \ - The spotted cat will find the lieutenant to the west."; - if (second == 'frobar' or 'wizard' or 'enchanter') { - print "She laughs. ~You've never heard of \ -Frobar, the dullest Enchanter? The Enchanter who was so dull \ -that his fellow wizards forgot to invite him to the last \ -great meeting? This saved him from becoming an amphibian, so \ -perhaps dullness has its virtues"; - if (self in Delbins) - ".~ The wizard looks rather insulted. \ -~Oh hush up, Morgan.~ the wizard says."; - else ".~"; - } - if (second == 'thief' or 'gentleman') { - print "She smiles. ~I can't say as I know \ -much about "; - if (self in Delbins) - "this fellow over here,~ she says and \ -gives the gentleman a whack on the back that nearly knocks his \ -teeth out. ~But I hear he's something of a thief.~ ~Nothing \ -of the sort!~ the gentleman protests."; - else - "that thief fellow. I've been told \ -he has a hideout somewhere, nearly impossible to find.~"; - } - if (second=='kobold' or 'war') -"~The war wages on, priest, even though the battle was lost \ -long ago, and there were no winners, kobold or man.~"; - if (second=='dragon' or 'dragons') -"Morgan becomes momentarily thoughtful. ~Some of the best \ -dragon-hunting I ever did was up in Frostham long ago. \ -Those white frost dragons are quite a vicious lot. Best not \ -to wake a sleeping white dragon unless you have a weapon handy \ -and know how to use it!~"; - else "~Sorry, I'm not sure about that.~"; - default: "Morgan the Ranger appears to be \ -thinking important thoughts at the moment."; - ], - before [; - Cast: - "~What's that you're mumbling there priest?~"; - ], - has animate female proper; - -Object Frobar "Frobar" Delbins - with name "Frobar" "wizard" "sorcerer" "enchanter", - initial [; - if (self in Delbins) - "There's an old wizard sitting at the bar, his \ -eyes riveted to the glass of ale."; - else "Frobar the Enchanter is here."; - ], - description "A wizardly old figure of a man.", - life [; - Attack, ThrowAt: - "You make a threatening move. The wizard practically yawns! \ -~Just what the world needs, another violent Priest.~ You stop, \ -somewhat embarrassed."; - Answer: - if (special_word=='hello') - "The wizard nods. ~Hello, hello, and all that rubbish.~"; - Ask: - if (self in Delbins) - "The wizard is somewhat occupied at the moment."; - else { - if (second=='magic' or 'mystic') { - print "Frobar scowls. ~Magic? We've seen the last \ -of magic, let me tell you. Does anyone remember what it did \ -for us? Does anyone mention the Enchanters that saved Quendor \ -from certain ruin many a time? Of course not. A bunch of \ -ingrates"; -if (term_paper notin self) -". I just hope they're teaching the kids at Tech what magic \ -was all about, before we got all this 'new science' stuff everyone's \ -blabbering about.~"; -else ".~"; - } - if (second=='golem' or 'golems') -"Frobar sighs. ~Golems used to be useful, you know. But now, \ -without magic to control them, they go off and get into all \ -sorts of mischief.~"; - if (second == 'thief' or 'gentleman') - "~Some fellow I've had some dealings with \ -in the past. Not a bad chap, but he does like to \ -supplement his income, if you know what I mean. Far \ -too risky a profession for my taste.~"; - if (second == 'morgan' or 'ranger' or 'warrior') - "~Morgan Grueslayer, top military Ranger \ -in her graduating class, I hear. If she asks you to join \ -her on one of her campaigns, just walk away. All that \ -fighting -- too stressful if you ask me.~"; - if (second == 'barsap' or 'snaboz') -!"~I don't even want to talk about it.~"; -"~Don't even get me started.~"; - } - Show: - if (self in Delbins) - "The wizard is somewhat occupied at the moment."; - if (noun == Ench_mag) { - move Ench_mag to Frobar; - "Frobar snatches the magazine out of your hands. \ - ~What are you doing with my mail?~ he says, irritated."; - } - if (noun has is_scroll) - "~A magic scroll, eh? Doesn't do me a lot of good \ -these days.~"; - if ((noun has is_rod) || (noun has is_sphere)) { - print "Frobar looks at ", (the) noun; - " for a moment. ~Something \ -more than meets the eye here. Couldn't tell you what, though.~"; - } - if (noun==wood_book) - "~So, you're a carpenter too?~ Frobar says, somewhat \ - sarcasticly."; - if ((noun==term_paper) && (glossy_scroll in self)) - { - FrobarGetsPaper(); - } - "~Hmm. Not very interesting.~"; - - Give: - if ((noun==term_paper) && (glossy_scroll in self)) - { - if (self notin Delbins) - FrobarGetsPaper(); - else "The wizard pushes your offering aside. \ -~I'm somewhat busy at the moment,~ he says, his eyes glued to \ -the glass of ale."; - } - if (noun == Ench_mag) { - move Ench_mag to Frobar; - "Frobar grabs the magazine. \ - ~What are you doing with my mail?~ he says, irritated."; - } - "~No, thank you.~"; - - default: "~I'm rather busy at the moment.~"; - ], - each_turn [ i ; - ! Handle Frobar's actions here...ALWAYS CHECK PARENT AND LOCATION - - if ((self in location) && (player in FROBAR_Bed)) { - print "Frobar seems annoyed. ~Get out of my bed!~ he says, \ - and drags you to your feet. "; - <>; - } - - ! Misc housekeeping actions... - if (random(3) < 3) { - if ((frobar_plant in parent(self)) && (self in location)) - print "^Frobar tends to the plant.^"; - if (FROBAR_Bed in parent(self) && self in location) - print "^Frobar arranges some quilts on the bed.^"; - if (FROBAR_shelves in parent(self) && self in location) - print "^Frobar pulls a book off the shelves, glances through it, and puts it back.^"; - if (parent(self) == FROBAR_Lounge && self in location) - print "^Frobar dusts the furniture a bit.^"; - } - - ! Random self mutterings... - i = random(5); - if (self in location && self notin Delbins) { - switch(i) { - 1 : "^Frobar mutters to himself, ~They didn't even invite \ - me to the Last Enchanter's Guild Meeting.~"; - 2 : "^Frobar mutters to himself, ~Good old dependable Frobar. Bah!~"; - 3 : if (Ench_mag in self) - "^Frobar leafs through a magazine he holds. ~What happened to \ - Barsap? Hah! Did they ask me? No, of course not.~"; - else - "^Frobar checks his pockets. ~What did I do with this \ - month's 'Enchanter Monthly'?~ he muses outloud."; - default: rtrue; - } - } - ], - daemon [ i j k Mdest Mdir; - ! This daemon will only deal with NPC movement... - ! (no doors either) - if (random(3) ~= 1) rfalse; ! doesn't always immed. move - - ! Count the available exits quickly - objectloop(i in Compass) - if (ZRegion(parent(self).(i.door_dir)) == 1) - k ++; - if (k == 0) rtrue; ! no exits... - - ! Pick a place to move to. - ! In Frobar's case, most of the time he only has one exit. - ! Also, we can block the sw exit of home here. - if (parent(self) == FROBAR_Foyer) { - Mdir = n_obj; - Mdest = FROBAR_Parlor; - MovePrintNPC(Frobar,Mdest,Mdir); - rtrue; - } - - ! Pick an exit at random and attempt to travel that way - j = random(k); k = 0; - objectloop(i in Compass) { - if (ZRegion(parent(self).(i.door_dir)) == 1) { - k ++; - if (k == j) { - Mdir = i; - Mdest = parent(self).(i.door_dir); - MovePrintNPC(Frobar,Mdest,Mdir); - rtrue; - } - } - } - ], - has animate proper; - -[ FrobarGetsPaper ; - Achieved(24); - move term_paper to self; - move glossy_scroll to player; - "Frobar glances over the term paper and his eyes widen. \ -~Wilbur -- why, that's my great nephew!~ He takes the paper and \ -reads. ~So true, so true,~ he mumbles and smiles. ~A fine boy, \ -perhaps he'll become a great man someday, if he stops skipping class. \ -He reminds me of my days at Tech -- all filled with dreams and hopes.~ \ -He pauses, and searches his pockets. ~I even perfected a spell, did \ -you know? Good old loyal, boring Frobar perfected a spell, and, \ -if it hadn't been for that Snaboz show-off who had to go and perfect the \ -izyuk spell, I might have even tried to publish mine.~ He finds a \ -scroll amongst his robes and hands it to you. ~You don't believe me? Here, \ -see for yourself.~"; -]; - -Object Thief "thief" Delbins - with name "thief" "character" "gentleman", - number 1, - initial [; - if (self in Delbins) - "There's a gentleman dressed in black sitting at the \ -bar, his eyes riveted to the glass of ale."; - ], - description "A lean crafty-looking individual, dressed mostly \ -in black. He seems a bit too scruffy to be a nobleman, but also \ -a bit too distinguished to be a common thug. Probably a thief, I'd \ -guess.", - life [; - Attack, ThrowAt: - "You make a threatening move, but the thief seems to \ -move twice as fast! You find yourself looking at the sharp end \ -of a stiletto. ~I'm too much of a gentleman to harm a Priest,~ \ -the thief says, ~so don't force me to make an exception.~"; - Answer: - if (special_word == 'hello') - "The gentleman gives a sharp nod in your direction."; - Ask: - if (second == 'magistrate') -"The thief gives you a knowing nod. ~The Aragain magistrate? \ -A honorless cur, if I ever saw one.~"; - if (second == 'painting') -"The thief shrugs. ~I hear there's a nice new painting on \ -exhibit at the royal museum. You might want to check it out.~"; - if (second == 'lock' or 'locks') -"The thief shrugs. ~Do I look like a locksmith?~"; - - Give: - if (noun has is_coin || noun==trophy) { - move noun to Thief; - "Confused, the thief pockets your offering. \ -~Quite generous of you, sir.~ he says."; - } - - default: "The gentleman glances at you with \ -dark suspicious eyes."; - ], - before [; - Cast: - "You speak the chant perfectly, but nothing \ -seems to happen! The gentleman smiles and pats his dark cloak, \ -which seems to glow briefly with mystic energy, then fade!"; - ], - has animate; - -Object thief_cloak "dark cloak" Thief - with name "dark" "cloak", - description "A coal-black cloak, which blends into \ -the surrounding shadows.", -before [; - Cast: - "You speak the chant perfectly, but nothing \ -seems to happen! The gentleman smiles and pats his dark cloak, \ -which seems to glow briefly with mystic energy, then fade!"; - ], -has clothing; - -Object Delbin "Delbin" Delbins - with name "Delbin" "bartender" "owner", - number 1, - initial "Delbin himself is standing behind the bar.", - description "Delbin is a stout bald fellow with laughing eyes and \ -a heavy beard. He somehow seems both young and old at the same \ -time.", - each_turn [ ; - if (random(20) == 1) - "^Delbin cleans some glasses behind the bar."; - ], - react_after [; - Take: - if (noun == headdress) - "~You're welcome to that unsightly thing, sir. \ -Been trying to get rid of it for sometime.~"; - if (noun == rag) - "Delbin give you a curious look, \ -but says nothing."; - ], - life - [ i ; - Attack, Kiss, ThrowAt: "Leave good old Delbin alone."; - Answer: - if (special_word == 'hello') - "~Welcome to Delbin's, good sir.~"; - Give: - if (noun has is_coin) { - print "Delbin refuses your offering. \ -~Keep your change, sir. If you're looking for a good tip, \ -I can tell you what I hear.~^^"; - <>; - } - if (noun == rag) { -move rag to bar; -"Delbin takes the rag and cleans a spot on the bar, leaving \ -it in a familiar place."; - } - "Delbin politely refuses."; - Show: - if (noun == headdress) -"~There's a good story behind that ugly thing. Maybe if you \ -keep reminding me, I'll remember it.~"; - print "~A nice ", (name) noun; - " you've got yourself there.~"; - Ask: - if (second == 'ale' or 'situation') { - if (Morgan in Delbins) - "~Quite a situation we've got sir. Those three at \ -the front of the bar all ordered a glass of Special Borphee Ale. Well, \ -with the shutdown of the Brewers Guild in Borphee since the Great \ -Change, I can't keep that particular beverage in stock, but I've got \ -that one left there. Seems none of them's leaving until they decide \ -who gets the ale -- and let me tell you, those three are folks who \ -don't like to be disappointed!~"; - "Delbin smiles. ~All out of ale sir. But I suppose \ -ye already knew that?~"; - } - if (second == 'rod') - "Delbin shrugs. ~Sounds vaguely familiar sir, \ -maybe I heard a rumor about it once. Can't really say, though.~"; - if (second == 'headdress') -"~There's a good story behind that ugly thing. Maybe if you \ -keep reminding me, I'll remember it.~"; - if (second == 'rag') -"~Not much more than a rag, sir.~"; - if (second == 'minirva') - "~I think that's the name of some old \ -Antharian Sea Goddess. Like a patron saint to sailors, in \ -the old days.~"; - if (second == 'morgan' or 'warrior' or 'ranger') - "~Morgan Grueslayer's a skilled ranger.~"; - if (second == 'frobar' or 'wizard' or 'enchanter') - "~Frobar's probably one of the last \ -enchanters around. He's a regular here.~"; - if (second == 'thief' or 'gentleman') - "~Don't really know that fellow's name. \ -He tips well, though.~"; - if (second == 'rumor' or 'rumors' or 'story') { - i = random(7); - print "Delbin scratches his ear and says, \ -~Yes, now, what did I hear...~^^"; - if (i==1) - "~People tell me this new Flathead king is \ -a fake, plain and simple. Hasn't stopped people from trying to \ -get on his good side, though. Now, I haven't seen the fellow \ -myself, but if you ask me, somebody somewhere is up to no good.~"; - if (i==2) - "~They say the kobold war up north is gonna \ -end real soon. I'll believe that when it happens.~"; - if (i==3) { - print "~Oh, this one's a good one."; - if (headdress in Delbins) - print " You see that headdress over there? \ -Well, this explorer fellow left it here, along with quite a story. \ -He"; -else print " Some explorer fellow"; -" claimed he found some lost ancient city in the Miznia \ -jungles. Said he made a map to the place, but lost it when bargaining \ -for his life with some jungle natives. I just nodded and let \ -the poor man talk.~"; - } - if (i==4) - "~This crazy-looking old fellow stops in \ -the other day. Said that he was a professor, at GUE Tech, but \ -that he was giving that all up! Something about his \ -research going bad, on something he called 'an ethereal gate'. \ -What all of that means, I can't say.~"; - if (i==5) - "~Say, you sorta remind me of this other Priest \ -fellow who stopped by here a long long time ago. Delbin \ -never forgets, you know? This fellow, who didn't give a name, \ -told me he was on an important \ -quest for something called -- now what was it -- 'The \ -Rod of the Ancients', or something like that. That \ -mean anything to you?~"; - if (i==6) { - print "~An artist friend of mine tells me that \ -this new Leonardo Flathead painting they've recently discovered \ -on display at the Royal Museum has a special secret. They \ -say that Leonardo painted over something else under the canvas, but no one's \ -saying what. They're keeping a watchful eye on it too, just \ -in case curiosity gets the better of some folk. In fact, \ -I hear they've already had a few people trying to steal the \ -thing"; - if (Thief in Delbins) - "!~ The thief suddenly starts to cough, and controls himself."; - else "!~"; - } - ! Add further rumors here... - "Delbin shrugs. ~Guess I'm getting old, \ -nothing comes to mind at the moment. Maybe if you \ -give me a moment, I'll think of something.~"; - } - ], - before [; - Cast: -if (the_spell_was == foblub_spell) - "You relate a fine sermon to Delbin about spirits -- \ -both the liquid kind and the not-so-liquid kind. Were \ -Delbin sitting rather than standing behind the bar, \ -he might even be glued to his seat by now. ~A fine \ -speech there, reverend.~"; -if (the_spell_was == espnis_spell) - "You relate a dull sermon to Delbin about the various \ -types of wood casks used in brewing Mithicus beer. \ -Delbin, being a bartender, is a good listener, and \ -manages to stay awake."; - ], - has animate proper; - -! **************** -! spells/scrolls -! **************** - -Object musty_scroll "musty scroll" telescope - class scroll_class, - with name "musty", -; - -Object fiznav_spell "make boat sea-worthy" musty_scroll - class spell_class, - with name "fiznav", - magic [; - if (second has animate) - "Your chant goes unanswered. It's not intended for \ - living creatures."; - else - "Your chant goes unanswered. It's intended for boats apparently."; - ], -; - -Object pale_scroll "pale scroll" - class scroll_class, - with name "pale", -; - -Object shazok_spell "call lightning from storm" pale_scroll - class spell_class, - with name "shazok", - magic [; - if (second==0 && location==GURTH_Forest) { - <>; - } - "Your chant goes unanswered. You need a genuine \ -natural storm, I suppose."; - ], -; - -Object glossy_scroll "glossy scroll" Frobar - class scroll_class, - with name "glossy" -; - -Object feeyuk_spell "allow creature to resist gravity" glossy_scroll - class spell_class - with name "feeyuk", - magic [; - if ((second == 0) || (second hasnt animate)) - "The chant backfires, and your feet feel numb!"; - if (second == player) { - has_resist_gravity = 1; - StartTimer(self,75); - "You speak the chant in clear tones. Initially, you \ -feel no different. And then, strangely, your back feels better \ -than it has in years, and your step seems lighter!"; - } - CDefArt(second); - " is no doubt thankful for the power to resist gravity."; - ], - time_left 0, - time_out [; - has_resist_gravity = 0; - "You feet feel heavy again."; - ], -; - -! ********** -! Misc objects -! ********** - -Object trophy "trophy" - with name "trophy", - description "A lovely gold and platinum grail-like trophy that looks \ - very antique. The letter ~D~ is inscribed on the side. \ - You notice three odd bumps on the bottom of the circular base.", - !weight 20, - size 8, -! capacity 1, -! before [; -! Receive: -! if (noun hasnt is_sphere) -! "That doesn't seem to fit."; -! ! else fancy light tricks -! ], - has scored; -! container open transparent; - -Object win_bag "bag" - with name "bag", - description "A small cloth bag.", - capacity 50, - !weight 10, - size 15, - has container open; - -Object c20 "coin" win_bag class coin_class; -Object c21 "coin" win_bag class coin_class; -Object c22 "coin" win_bag class coin_class; -Object c23 "coin" win_bag class coin_class; -Object c24 "coin" win_bag class coin_class; -Object c25 "coin" win_bag class coin_class; -Object c26 "coin" win_bag class coin_class; -Object c27 "coin" win_bag class coin_class; -Object c28 "coin" win_bag class coin_class; -Object c29 "coin" win_bag class coin_class; -!Object c30 "coin" win_bag class coin_class; - -