! BeerQuest : a CIS Party Crowd Adventure ! by Eric Reasons and Bryan Jager ! All Rights Reversed ! v 0.1 Constant Story "BeerQuest : Hartwick Pines State Park Drink-a-thon"; Constant Headline "^by Eric Reasons and Bryan Jager^^Sponsored by www.danferrell.com^^"; Constant DEBUG; Include "parser"; Include "verblib"; Include "grammar"; [ Initialise; location = Staceys; print "^^^^^You've had a long week at the office. You're ready for a little R&R with the CIS crowd. You arrive at Stacey's apartment ready for a weekend of fun.^^"; move Grounds to player; move Ten_Spot to player; move Eggs to player; move Jagermeister to player; move Firestarter to player; move Cooler to player; ]; ! Redefine directions Object staceyd_obj "stacey" compass with name "Apartment", door_dir n_to has scenery; Object oasisd_obj "oasis" compass with name "oasis" "truck" "truck stop", door_dir e_to has scenery; Object canoed_obj "ray^s" compass with name "rays" "ray" "rays" "rays canoe", door_dir s_to has scenery; Object campd_obj "camp" compass with name "campground" "Hartwick" "Hartwick Pines" "camp", door_dir w_to has scenery; ! Done redefining directions ! Define Treasure Class Class Treasure with goodies 10, after [; Insert: if (second==cooler) score = score + self.goodies; "Safely packed away in your trusty cooler."; ], before [; Take, Remove: if (self in cooler) "You can leave that in the cooler, you won't need it."; ]; Object Staceys "Stacey s Apartment" with name "Staceys" "Apartment", description "Stacey's apartment complex is beautiful, and near the campus. ^From here you can get in Dan's Ford Explorer.", in_to Dans_Truck, has light; ! Dan is here at Staceys Object -> Dan "Dan Ferrell" with name "Dan" "Dan Ferrell" "Ferrell", description "Dan is wearing a grey T-Shirt that says Hartwick Pines State Park Drink-A-Thon in the pocket. He is also wearing a funny hat.", initial "Dan Ferrell is wandering around his Explorer, making sure his Kayak is secured.", life [; Ask: switch(second) { 'T-Shirt', 'Shirt': if (Dan has general) "~I already gave it to you. We should be going."; "Dan says ~Hey, I've got your T-Shirt. Do you have my ten bucks?"; } "~I wouldn;t know anything about *that*.~"; Tell: "We should get going. Everyone else has left. I wish I had a CB to talk Ali and Eric on the road."; Attack, Kiss: remove self; "Dan simply says, ~Cut it out!~"; Show, Give: if (noun==Ten_Spot) { move T_Shirt to player; remove Ten_Spot; give Dan general; Score = score + 10; "Dan Takes your ten dollars and gives you a T-Shirt just like his."; } "Dan doesn't need any of your gear, he's got plenty of his own."; ], has animate; Object Dans_Truck "Dan s Explorer" with name "Dans" "Truck" "Dan^s Truck" "Explorer", description "Dan's Explorer is a beautiful machine, yet you can't help but think that you catch the faintest smell of banannas. Is it from the truck or from Dan? You cannot tell. ^From here you can go to Stacey's Apartment, to the campground, to the Oasis Truck Stop, or to Ray's Canoe Rental.", n_to Staceys, w_to Camp_1, e_to Oasis, s_to Rays_Canoe, has light; !------------------At the Truck Stop--------------------------------------- Object Oasis "The Oasis Truck Stop" with name "oasis" "truck" "truck stop", initial "You are at the Oasis Truck Stop. Jim hops out of the truck for a quick smoke. ^From here you can get in Dan's truck.", description "You see a couple of CB radios, an expensive and and an inexpensive one. You need to look at these closer.", in_to Dans_Truck, has light; ! ---------------In the Campground------------------------------------------ Object Camp_1 "Hartwick Pines Camp Site #1" with name "Camp" "Hartwick" "Hartwick Pines" "Campground", description " You are at your campsite. ^From here you can get into Dan's Truck or go north to Dave and May's campsite.", in_to Dans_Truck, n_to Camp_2, has light; ! Ali and Jager are here at the campsite Object -> Ali "Ali" with name "Ali" "Ali Eid", description "Ali is tall, dark, handsome, and slightly drunk.", initial "Ali is here, laughing with Jager. He may be laughing at you.", life [; Ask: switch(second) { 'hookah', 'smoke': "Ali says ~The tobacco is really good. You should try it.^He gives you a hit off of his hookah"; } "~Dude, I don't know.~"; Tell: if (Pit has light) { "This tobacco is great! It's much better than that mass-produced garbage you smoke for $5 a pack!"; } "Get a fire going, and I'll get out my hookah! I've got Arabic tobacco that's really good!"; Kiss: remove self; "Ali smiles awkwardly at you, and heads away to the showers, trying to get rid of the unclean feeling."; Show, Give: "I'm sure Ali doesn't want that."; ], has animate; Object -> Jager "Bryan Jager" with name "Jager" "Bryan" "Jager", description "It's 32 degrees out and Jager is wearing shorts.", initial "Jager is here, pacing around", life [; Ask: switch(second) { 'fire': if (Pit has light) "~I told you I could get you a fire going!~"; "If I had a little kindling and some wood to work with, I could get a fire going for you. I was an Eagle Scout, you know."; } "~Hmmm. Maybe you should ask Mikey about that.~"; Tell: switch(second) { 'fire': if (Pit has light) "~I told you I could get you a fire going!~"; "If I had a little kindling and some wood to work with, I could get a fire going for you. I was an Eagle Scout, you know."; } Attack, Kiss: "Eww, dude! What's wrong with you!"; Show, Give: if (noun==Firestarter) { if (Wood notin Pit) "This doesn't do me any good without some wood to burn!"; give Pit light; give Pit on; move Firestarter to Pit; give Pit ~open; score = score + 10; "Now that Jager has the Firestarter and the wood, he quickly starts a roaring blaze."; } "Jager doesn't need any of your gear, he's an Eagle Scout for Pete's sake!."; ], has animate; Object -> Pit "Fire Pit" has container open supporter, with name "pit" "fire-pit" "fire pit", description "This is where people make a campfire, duh!", when_on "Thanks to Jager, this pit has a roaring fire in it!", when_off "The fire pit is cold and lifeless. You should really get a fire going in it. Jager could help." has switchable static; !----------------------Campsite #2-------------------------------------------- Object Camp_2 "Hartwick Pines Camp Site #2" with name "Camp2" "Hartwick 2" "Hartwick Pines 2" "Campground 2", description " You are at your Dave and May's campsite. Dave and May have already set up camp, and have a glass of Zinfandel waiting for you. ^From here you can go south to your campsite.", s_to Camp_1, has light; Object -> Wood "Fire Wood" with name "wood" "fire wood" "firewood", description "(sung) It's Log, It's Log, It's Big, It's heavy, It's Wood!"; Object -> Dan2 "Dan Ferrell" with name "Dan" "Dan Ferrell" "Ferrell", description "Dan is wearing a grey T-Shirt that says Hartwick Pines State Park Drink-A-Thon in the pocket. He is also wearing a funny hat. He is already very very drunk.", initial "Dan Ferrell is talking politics with Mikey and Jasama.", life [; Answer: if (noun=='yes') "~Then my beef's not with you~"; "~Blah blah blah...~ Dan drones on for at least 20 minutes in a drunken rant."; Ask, Tell: if (Jasama has general) { move Kettle to player; score = score + 5; "Oh yeah, Mikey said you wanted a kettle for coffee. Here you go."; } "~Are you registered to vote?~ is all dan will say to you."; Attack, Kiss: remove self; "Dan simply says, ~Cut it out!~"; Show, Give: "Dan doesn't need any of your gear, he's got plenty of his own."; ], has animate; Object -> Mikey "Mikey Baker" with name "Mike" "Mikey" "Baker", description "Baker is visibly bored by Dan's conversation with Jasama", initial "Baker is sitting around the campfire. He's glad you made it, and gives you a hug. He may have already been drinking.", life [; Ask: switch(second) { 'dan', 'ferrel': if (Jasama has general) "You can talk to Dan now that Jasama is passed out."; "Jasama's a quiet drunk. Anyone got something to drink?"; } "~I wouldn't know anything about *that*.~"; Tell: "Dan's got a Kettle you can use to make coffee. If you can get Jasama away from him."; Attack, Kiss: score = score + 5; "Mikey says ~Oh Big Guy! I didn't know you were that way!~ as he climbs in your lap."; Show, Give: "Mikey says ~I've got everything I need, except maybe a woman...~"; ], has animate; Object -> Jasama "Jasama" with name "Jas" "Jasama" "Jazz", description "Jasama is happy to be up here in the woods with you all.", initial "Jasama is in the midst of a stiff argument with Dan about voting.", life [; Ask: if (Jasama has general) "Jasama is sleeping peacefully on the ground. You decide not to wake her."; "Jasama won't talk to you. She's busy arguing with Dan."; Tell: if (Jasama has general) "Jasama is sleeping peacefully on the ground. You decide not to wake her."; "Jasama won't talk to you. She's busy arguing with Dan."; Attack, Kiss: "Jasama says ~Eww! What did you do that for?!~, and promptly slaps you."; Show, Give: if (noun==Jagermeister) { score = score + 5; move Jagermeister to Jasama; give Jasama general; "Jasama says ~Oh thanks!~, and quickly downs half the bottle! In no time she's curled up next to the fire, pleasantly sleeping."; } "I don't want that, but I could use a strong drink."; ], has animate; Object Kettle "Kettle" Dan2 has container open, with name "kettle" "pot" "coffee pot", description "The coffee kettle is old and tin, but It's just what you need to make a few cups of coffee.", after [; Receive: if (noun==Grounds) { move Coffee_Cup to player; remove kettle; remove grounds; score = score + 5; print "You put the coffee grounds into the kettle, and, Voila!, you have a cup of coffee. "; } ]; Object Coffee_Cup "Cup of Coffee" Camp_2 has concealed, with name "coffee" "cup" "cup of coffee", description "The cup of coffee smells great, now who was asking for one earlier?"; Object -> David "David Russell" with name "Dave" "Russell" "David" "David Russell", description "David is pleasantly chatting with May, sipping some Zinfandel.", life [; Ask, Tell: if (David has general) "David thanks you again for the cup of coffee"; "David says, ~I sure could go for a cup of coffee. Dan has a kettle, but who has coffee?"; Attack, Kiss: "David says, ~Stop it, you're making May jealous!"; Show, Give: if (noun==coffee_cup) { score = score + 10; move coffee_cup to David; give David general; "David says ~Oh thanks!~. You feel happy just to do something nice for Dave"; } "I don't want that, but I could use a cup of coffee."; ], has animate; !------------------At Ray's Canoe Rental------------------------------------ Object Rays_Canoe "Ray's Canoe Rental and Fly Factory" with name "Rays" "Ray" "rental", description " You are at Ray's Canoe Rental and Fly factory. You see the Au Sable river running below you. It smells nothing like the Rouge. ^From here you can get in Dan's Truck or go down to the river.", in_to Dans_Truck, d_to River, has light; Object -> Todd "Todd" has transparent, with name "Todd", description "Todd is nearby, looking nervously at a sign.", initial "Todd is nearby, looking nervously at a sign.", life [; Ask, Tell: if (Todd has general) "Todd thanks you for holding onto his beer."; "I've got too much beer. Where can I put the second six-pack?"; Attack, Kiss: "Dude, cut it out."; Show, Give: "I don't need that. What I need is someone to hold onto my beer."; ], has animate; Treasure -> Beer "*Six-Pack of Beer*" has concealed, with name "six-pack" "six pack" "Todd beer", description "This is Todd's sixpack of beer."; Object -> sign "Sign" has scenery static, with name "sign", description "The sign reads ~Only one Six-pack per canoe.~"; !-------------------On the Au Sable River------------------------------------- Object River "On the Au Sable River" with name "River" "Au Sable", description " You are in your canoe on the Au Sable River. Looking around you realize that putting this many crazy drunks into canoes is a *bad* idea. ^From here you can go up to Ray's Canoe Rental, or east to the landing site", u_to Rays_Canoe, e_to Bus, has light; Object -> HnJ_Canoe "Canoe of Holmes and Jager" with name "canoe" "Holmes" "Jager", description "Holmes and Jager look pretty cold standing waist deep in te Au Sable.", initial "Holmes and Jager have capsized their canoe. Flotsam is floating down the river toward you.", life [; Ask, Tell: if (Todd has general) "Holmes and Jager thank you for saving their beer."; "Hey man! Grab our beer!"; Attack, Kiss: "You are *not* going into that freezing water just to kiss the likes of Dave Holmes."; Show, Give: "I don't need that. Save our beer!"; ], has animate; Treasure -> HnJ_beer "*Beer of Holmes and Jager*" with name "beer" "Holmes beer" "Jager beer", description "This beer looks much like Todd's, except that it isn't."; !------------------At the landing site-------------------------------------- Object Bus "Au Sable Landing Site" with name "Landing" "Beach" "Site", description " After 14 miles, 5 hours, at at least 30 fly-fishermen, you feel tired and suburned. You have finally arrived at the landing. Jager pulls your canoe to the landing, and you can get out. There is a bus here to take you back to Ray's Canoe Rental. ^From here you can get into the Bus or go west back into the Au Sable.", in_to Finish, w_to River, has light; Object -> Carrier "Canoe Carrier" has container open, with name "carrier" "trailer", description "You see a Canoe carrier attached to the bus. It is assumed that canoes should go here.", after [; Receive: if (noun==canoe) { give carrier general; score = score + 5; print "You help the driver from Ray's put your canoe onto the trailer. He seems to be very thankful."; } ]; Object -> Driver "Driver from Ray's" with name "driver", description "The driver is here to load up your canoes and get you back to Ray's", initial "There is a driver here to take you back to Ray's", life [; Ask: switch(second) { 'Kayak', 'dan': if (carrier has general) { move kayak to carrier; score = score + 10; "You ask the driver if he can take Dan's cone back to Ray's with you. ^After helping him load the canoes, he's happy to oblige."; } "You ask the driver if he can take Dan's Kayak back to Ray's with you. ^He responds, ~I don't know. You should have arranged that with Ray ahead of time. I've had a long day.~"; } "~I wouldn't know anything about *that*.~"; Tell: "The driver shouts, ~Everyone in the bus, it's time to go! Get your stuff.~"; Attack, Kiss: "I don't think you know him well enough for that."; Show, Give: "No thanks, man. I'm trying to quit."; ], has animate; Object -> Canoe "Canoe" with name "canoe", description "You canoe looks pretty beat up. It's been a long afternoon."; Object -> Kayak "Dans Kayak" with name "kayak" "dan", description "This is Dan's Kayak. It should fit nicely in with the canoes on the carrier."; !--------------------The end!!------------------------------------- Object Finish "Back Home" with name "home" "finish", description "The bus returns you to Ray's. You pile into Dan's Explorer and make your way back to camp. ^After a long weekend of partying, you pack up your things and head home. ^^Congratulations! You survived!", has light; Object -> Eric "Eric Reasons" with name "Eric" "Reasons", description "Eric is hanging out here. He'd love to hear what you thought of this weekend.", initial "Eric is here, milling about.", life [; Ask, Tell: !PrintRank; print "After hearing about your weekend, Eric rates how much fun you had: "; switch(score) { 0 to 20: "^Pathetic! What fun could you have possibly had?!?"; 21 to 40: "^Not bad. You might be invitied to the next trip!"; 41 to 60: "^Very respectable. Tony will not ask you to hand in your Y Chromosome."; 61 to 80: "^Wow! You can party with the big dogs! Ali is going to buy you a shot of 151 on GNO."; 81 to 100:"^Full-fledged Caligula Weekend! You can teach Me and Ali how to party!"; }; "Eric finishes by saying ~Hope you enjoyed your weekend of fun!~"; Attack, Kiss: "You have no doubt that Eric would enjoy it, but maybe you shouldn't do that right now."; Show, Give: "Eric says, ~No thanks. I've already got everything I could ask for.~"; ], has animate; !-----------Special objects------------------------------------------- Object Expensive_CB "Expensive CB Radio" Oasis has supporter with name "expensive" "CB that costs more" "outragously priced", initial "You see a very expensive CB radio in the glass case.", description "You think this CB radio looks just great. You are very excited to learn that it has CHROME KNOBS!! Also, the price seems reasonable, $169, WHAT A DEAL! It is in the BIG box, so you think it must be better.", installed [; if (self in Dans_Truck) return 1; else return 0; ], before [; Buy, Take: if (self hasnt general) { !we only allow the user to carry either CB, not both give self general; move Expensive_CB to player; "You whip out that fancy Gold Card and you pay the nice woman that helped you buy this CB. You feel really happy about your choice. Especially because it has CHROME KNOBS!!."; } Drop: if (player in Dans_Truck) { if(self has general && Inexpensive_CB notin Dans_Truck) { move Expensive_CB to Dans_Truck; "You give the very expensive CB for Jager to install. You start hearing the Sandman and the Reverend on the CB. They start calling you Kayak. Jager says something stupid and you get the 'braniac' handle."; } else { "You cannot have 2 CB's in Dan's Explorer."; } } else { !this function gives a funny message then drops the object from your inventory if (self has general && player in Oasis) { !remove Expensive_CB from general; print "Jager uninstalls the very expensive CB from Dan's Explorer and you return it. Your Gold Card is better off.^"; } } ]; Object Inexpensive_CB "Inexpensive CB Radio" Oasis has supporter with name "Inexpensive CB" "cheap" "least expensive CB.", initial "You see the least expensive CB radio in the glass case.", description "You see a CB radio that is economically priced at $69. This radio looks kind of funny and you know you will be made fun of if you get it. However, you think about your Gold Card limit, can it take any more than 70 bucks?", installed [; if (self in Dans_Truck) return 1; else return 0; ], before [; Buy, Take: !we only allow the user to carry either CB, not both if (self hasnt general) { give self general; move Inexpensive_CB to player; "You whip out that fancy Gold Card and you pay the nice woman that helped you buy this CB. You feel that this may not have been the right choice."; } Drop: !this function gives a funny message then drops the object from your inventory if (player in Dans_Truck) { if(self has general && Expensive_CB notin Dans_Truck) { move Inexpensive_CB to Dans_Truck; "You give the very expensive CB for Jager to install. All you hear is static. Maybe getting the cheap CB wasnt a good idea."; } else { !move Inexpensive_CB to player; "You cannot have 2 CB's in Dan's Explorer."; } } else { !remove Inexpensive_CB from general; !this function gives a funny message then drops the object from your inventory if (self has general && player in Oasis) { !remove Expensive_CB from general; print "Jager uninstall the cheap CB from Dan's Explorer and you return it. You do not know why you did this, you could afford such a cheap CB.^"; } } ]; Object Grounds "Full Jar of Coffee Grounds" Staceys with name "grounds" "coffee grounds", description "This is a small jar of coffee grounds. Looks like there's enough here for 2 cups of coffee."; Object Ten_Spot "$10 Bill" Staceys with name "bill" "10" "$10" "ten", description "It is an ordinary $10 Bill. Alexander Hamilton smiles at you."; Object Eggs "dozen eggs" Staceys with name "eggs" "dozen", description "Sunny Farms Grade A Large Eggs. You think aboue omelettes just looking at the carton."; Object Jagermeister "bottle of Jagermeister" Staceys with name "Jagermeister" "bottle", description "This is a full fifth of Jagermeister. Looks like it's going to be a rowdy weekend."; Object Firestarter "Firestarter" Staceys with name "stick" "fire" "firestarter", description "This is strange looking soft stick of a pleasant smelling substance. It's called a firestarter. I wonder what it's for?"; Treasure T_Shirt "*Hartwick Pines State Park Drink-A-Thon T-Shirt*" Dan with name "T" "Shirt" "T-Shirt", description "This is the official Hartwick Pines State Park Drink-A-Thon T-Shirt. You are proud to own it. And even more proud to dress just like *the* Dan Ferrell."; Object Cooler "Cooler" Staceys has container open, with name "cooler", description "This is your handy igloo cooler. You brought it along to store stuff for the canoe trip.", after [; Receive: if (noun==beer) { give beer ~concealed; score = score + 10; print "You put the beer into your cooler for safe keeping. "; } ];