#!/usr/local/jacl-1.5/bin/jacl # ----------------------------------------------------------------------------- # THE DOWN DRAGON # Copyright (C) Stuart Allen 1998. All rights resevered. # email: stuart@jacl.animats.net web: http://jacl.animats.net variable GAME_VERSION 1 # ----------------------------------------------------------------------------- prefix DRAGON- location tavern: tavern big fat south square out square {movement if destination != nowhere write "
You squint as you step back out into the light.^^" break false endif write "
The only way out of here is south, through the front doors.^" break } {look write "
Seedy Bar^" if here hasnt VISITED write "You can barely make out the back wall of this seedy bar through a " write "thick haze of smoke. Your nausea has begun to subside now that you " write "have acclimatised to the stench of stale beer" if dragon hasnt DEAD write ", but the sorrowful wailing of a dragon sitting at the bar " write "continues to grate" endif write ". A barmaid, who is making no attempt to hide how much she hates " write "her job, is walking through the crowd.^^" endif set noun1 = bar execute "+contents" write "^" } {eachturn set bar(one) + 1 if bar(one) = 1 if dragon hasnt DEAD write "
^The dragon induges in a fit of pitiful crying then chugs " write "down another pint.^" endif endif if bar(one) = 2 write "
^A grubby-looking man sitting near the back of the room " write "grabs a bottle of red wine from the " write "barmaid's tray then slaps her on the arse as she turns to leave. " write "With practiced ease, he screws a bottle opener into the cork " write "then pushes down on the levers to open the bottle.^" endif if bar(one) = 3 write "
^~Hey! Check it out!~ the grubby-looking man yells to the " write "women at his table as he holds the bottle opener vertically " write "against his chest. With a sleazy grin, he presses the handle " write "for the screw up and down repeatedly causing the tips of the " write "levers to describe small arcs across the region of his nipples. " write "~Settle down sweet jugs,~ he shouts to a woman who wasn't even " write "paying him the slightest bit of attention. ~It's your turn " write "next.~^" endif if bar(one) = 4 write "
^The grubby-looking man takes a swig of wine from the bottle " write "then proceeds to pour everyone a glass, starting with himself.^" endif if bar(one) = 5 if dragon hasnt DEAD write "
^Dragon cries!^" endif endif if bar(one) = 6 write "
^The grubby-looking man ducks down beneath his table, tears a " write "small triangle out of a coaster, then wedges it onto his nose. " write "Sitting up straight again, he yells out at the top of his " write "voice, ~Okay! Who threw that?!~^" endif if bar(one) = 7 write "
^~I've got a joke for you,~ the grubby man says as he leans " write "forward across the table. ~These three guys walk into a bar: " write "an Inform programmer, a TADS programmer and a JACL programmer. " write "As they sit down at a table, the Inform programmer says, 'I bet you " write "a Midori and Lemonade that I can write a port of Rippled Flesh " write "faster than I either of you.'^^" write "'Your on!' the other two reply after a short pause.^^" write "Ready to do battle, they all sit down, pull out their " write "notebook PCs and switch them on.~^" endif if bar(one) = 8 write "
^~Well, who won?~ a man across the table asks.^^" write "
~No one,~ the grubby man replies. ~You see it turned out to be a " write "biker bar and all three of them got bashed for being geeks " write "before their PCs had even finished booting!~^" endif if bar(one) = 9 write "
^~Damned fools,~ the barmaid mumbles as she continues to clear " write "away a stack of empty glasses. ~Everyone knows bikers use Hugo.~^" endif if bar(one) = 10 if dragon hasnt DEAD write "
^Dragon cries!^" endif endif } object bowl: wooden bowl has CONTAINER short a "wooden bowl" long "There is a wooden bowl here." mass 5 quantity 5 parent bar {take if bowl(parent) != alcove break false endif if brass_rod(parent) = right_hole : brass_rod(parent) = left_hole if copper_rod(parent) = right_hole : copper_rod(parent) = left_hole write "
The rods prevent you from being able to take the bowl out of " write "the alcove.^" break endif endif if brass_rod(parent) = right_hole : brass_rod(parent) = left_hole write "
The brass cylindrical weight prevents you from being able " write "to take the bowl out of the alcove.^" break endif if copper_rod(parent) = right_hole : copper_rod(parent) = left_hole write "
The copper cylindrical weight prevents you from being able " write "to take the bowl out of the alcove.^" break endif break false } object grapes: bunch of grapes short a "bunch of grapes" long "There is a bunch of grapes here." mass 5 parent bowl grammar juice *present >break grammar squash *present >break grammar squeeze *present >break grammar mash *present >break {break write "
You mash the grapes until they are nothing more than juice.^" move juice to grapes(parent) move grapes to limbo } {eat if grapes has CUSTOM3 write "
Okay, that's it. You obviously aren't responsible enough to look " write "after the grapes. I'm afraid I'm going to have to confiscate " write "them until you are responsible enough to look after them in an " write "appropriate manner.^^" write "
~You want the grapes? Well you can't handle the grapes!~^" move grapes to limbo break endif if grapes has CUSTOM2 write "
What is your problem! LEAVE THE SMEGGING GRAPES ALONE!^" ensure grapes has CUSTOM3 break endif if grapes has CUSTOM1 write "
No! How much more obvious do I have to make it: IF YOU EAT THE " write "GRAPES YOU CAN'T WIN THE GAME. There, I said it.^" ensure grapes has CUSTOM2 break endif write "
But what if they are of some other use? If I let you eat them, you " write "might be getting your life into an unsolvable state, and then who " write "would you blame? Me. That's right, me. " write "I can see the newsgroup messages now: ~STUART BREAKS RULE #1 OF " write "PLAYER'S BILL OF RIGHTS~. Is that what you want? Is that what you " write "want me to become? Some sort of IF outcast? A lonner on the " write "outskirts of IF acceptance? Well no thanks. Go find something else " write "to do and stop trying to eat the grapes.^" ensure grapes has CUSTOM1 } object juice: grape juice has LIQUID mass 5 parent limbo {drink write "
No.^" } object drink: drink beer ale lager short a "drink" {order write "
You don't have a single yorkquid to your name.^" } object barmaid: busty barmaid maid short a "barmaid" has ANIMATE FEMALE {attack_with_sword if sword hasnt CUSTOM1 write "
You leap forward swinging the sword only to be hit fair and " write "square on the nose by a well-thrown beer mug. Once you can see " write "clearly again you notice the barmaid standing in front of you " write "waving her finger and telling you to settle down.^" ensure sword has CUSTOM1 break endif write "
Not after last time.^" } {examine write "
The barmaid looks about as bored as humanly possible.^" } {ask_for_drink write "
You don't have a single copper piece to your name.^" } {talk_to if barmaid has CUSTOM1 write "
I think you've had enough rejection for one day.^" break endif write "
Your brief attempt to chat up the barmaid comes to and end when " write "she asks you about your job. Fantasy IF actor with a job? Forget it.^" ensure barmaid has CUSTOM1 } object slease: grubby-looking man gubby has ANIMATE short a "grubby-looking man" long "A grubby-looking man sits in the corner of the room with a group of women." {examine write "
The grubby-looking man has an oily, red face, garnished with a thin " write "butt-fluff moustache. His grin, with its vaguely curled upper lip; " write "his eyes, rolling intermittently into the back of his lolling head; " write "and his rambling speech, punctuated with bursts of articulate " write "obsenities, all strike you as an omens of his imminent lapse into " write "unconsciousness.^" } {attack_with_sword write "
You attempt to walk over to the grubby-looking man but a repelled " write "by an invisible barrier. You dismiss any thoughts of the man having " write "Jedi powers when you realise that is it just his breath.^" } object bar: bar counter has SURFACE short a "bar" quantity 50 object vomit: small pool of dragon vomit has LIQUID short a "small pool of dragon vomit" mass 5 parent bar {examine write "
The less said the better, I feel.^" } {eat : drink : take : smell : taste if dragon has DEAD write "
ERROR 469: COMMAND TOO DISGUSTING - PLEASE DON'T CONTACT YOUR " write "SYSTEM ADMINISTRATOR^" break endif write "
You better not, I think the dragon is saving it for later.^" } object dragon: bleary-eyed dragon has ANIMATE short the "dragon" {examine if dragon has DEAD write "
The dragon lying belly-up on the floor, quite dead.^^" write "
~Lucky bastard,~ you think.^" break endif write "
The dragon looks very down -- almost suicidal.^" } {attack_with_sword_override write "
The dragon is far to drunk to defend himself.^^" write "
~Oh the pain! the pain!~ he moans as he keels over backwards, " write "falling off his bar stool.^" ensure dragon has DEAD points 15 set dragon(status) = 5 } {talk_to_override write "
~No job!~ the dragon blubbers, bursting into tears.^" } object sword: rusty old broad sword short a "sword" long long_sword mass 10 {long if sword hasnt TOUCHED write "
Hanging on the wall behind the bar is a rusty old broad sword.^" else write "
A rusty old broad sword rests on the ground.^" } {give_to_dragon write "
You would give a weapon to a dragon that is feeling suicidal? " write "For all you know he might kill himself before you get the chance. " write "Where's the fun in that?^" } {take_override if sword hasnt TOUCHED write "
A cloud of dust fills the air as you take the sword from its " write "rack.^" ensure sword has TOUCHED else write "
You take the sword.^" endif move sword to player } {examine write "
The sword is rusty and chipped.^" } location square: square north tavern in tavern west town {look if here has VISITED write "
You are back in the city square.^" break endif write "
The hustle and bustle of city life at its worst. People rush " write "everywhere around this square leaving trails of turbulence behind " write "themselves in the foul polluted air. Some rush north to the bar, " write "some west to the village. Others just circle the square getting " write "nowhere and not enjoying the journey.^" } location town: town east square south club west market north studio {look write "
The town centre is a bit on the quite side.^" } object sign: sign short a "sign" long "There is a sign before a building to the north." mass heavy {read : examine write ^
centre "I.F. Studios^^" write ^
centre "Now filming the cyber-psycho-techno-thiller^" centre "QUARKAZOID VII" } location club: club north town {look write "
You are in a very crowded and fashionable club.^" } {eachturn if outfit hasnt WORN write "
^~Sorry buddy -- no cloaks, no feathered hats and definitely no " write "codpieces,~ a burly bouncer yells as he pushes you back out " write "the door.^^" move player to town look break endif if sword(parent) = player write "
^As you walk through the door, the bouncer places a huge " write "palm against your chest to stop you.^^" write "~I'll take that, sunshine,~ he says as he takes the sword " write "from you.^" move sword to bouncer endif if club hasnt SCORED points 20 ensure club has SCORED endif } object thief : fat satiated man thief seae chiffon has ANIMATE short name "Seae Chiffon" long "Seae Chiffon is sitting in the corner of the room." mass heavy {examine write "
A fat, satiated gentleman, Seae Chiffon is dressed in a new " write "Armarni suit. " write "You first met him many years ago when he played a supporting role " write "as a thief in a game you starred in. " write "Three sci-fi thrillers and one comedy-romance later he " write "appears to have done quite well for himself.^" } {ask_about_studio : ask_about_script : ask_for_job : ask_aout_job if script(parent) = limbo write "
I think you might have already blown any chance of getting " write "a job out of Seae.^" break endif write "
~Oh, you want in? No Problem, baby,~ the fat " write "satiated gentleman says. " write "~I'll call the studio in the morning and tell Alfonzo he's out.~^" if script hasnt SCORED ensure script has SCORED points 14 endif } {talk_to write "
~Move with the times, baby,~ he advises cheerily.^^" write "
~Fat bastard,~ you think grumpily.^" } object job : support lead job role part in quarkazoid vii 7 seven short a "part in Quarkazoid VII" parent thief object bouncer : burly bouncer man guard heavy big has ANIMATE POSSESSIVE short the "bouncer" long "There is a burly bouncer standing by the door." mass heavy {examine write "
The bouncer is standing with his arms crossed and blank " write "expression on his face.^" } {talk write "
Silence.^" } {attack write "
It's been nice knowing you.^" execute "+game_over" } location studio : studio if studios south town west office {look write "
It has been a while since you've been inside I.F. Studios. The last " write "game you did, a racey little number where the hero (a dashing " write "knight in shining armour) descides to slay the maiden and pork the " write "dragon, was a bit of a box-office flop. Auditions are currently on, " write "however, for a more avant-garde endeavour. It is about butteryfly " write "that is born with only one wing, yet learns to live on, bolstered " write "by the love of a small orphan boy that keeps it in a jar. " write "There is a narrow doorway to the west.^" } {movement if destination = nowhere write "
The only exits are south, back onto the street, and west, " write "through the narrow doorway.^" break endif break false } object script: audition script short an "audition script" long "An audition script rests on the ground." mass 1 {read : examine write "
The script reads:" write "
" print "BOY GENTLY CARESS JAR WHILE GAZING LOVINGLY THROUGH THE^" print " GLASS^" print "BUTTERFLY WAIT^" print "BOY SAY TO BUTTERYFLY, ~OH, HOW YOUR WILL TO SURVIVE^" print " INSPIRES ME SO~^" print "BUTTERFLY WINK^" print "BOY LIFT THE JAR UP TOWARDS THE SUN, ALLOWING THE ^" print " GOLDEN RAYS OF LIGHT TO ILLUMINATE THE BUTTERFLY'S^" print " REMAINING WING^" print "BUTTERFLY PREEN^" print "BOY WIPE THE TEAR FROM MY EYE AND TOUCH THE GLASS^" print " GENTLY WITH MY MOISTENED FINGER^" print "BUTTERFLY STARE^" print "BOY GENTLY PLACE THE JAR UPON THE VELVET PILLOW,^" print " PRESSING AND TWISTING IT UNTIL IT IS SEATED^" print " SECURELY^^" write "write "
You feel you would have a good chance at getting the role of the " write "butterfly if you were able to wink.^" } {show_to_thief write "
^Oh, you want in? No Problem,^ the fat satiated gentleman says. " write "~I'll call the studio in the morning at tell Alfonzo he's out.~^" if script hasnt SCORED ensure script has SCORED points 14 endif } {break if here = club write "
You clearly express to the fat, satiated gentleman how you feel " write "about the new genre of IF.^" points 15 move script to limbo break endif break false } {insert_in_thief write "
You clearly express to the fat, satiated gentleman how you feel " write "about the new genre of IF.^" points 15 move script to limbo } location office: studio office east studio {look if here has VISITED write "
You are back in the office at I.F. Studios.^" break endif write "
Eccentric and oddly pompous -- this office is unmistakably Seae " write "Chiffon's, the boss here at IF Studios. " write "Fortunately for you, however, he is not around at the moment so you " write "are free to take a seat in his plush leather chair. The last time " write "you were in this office you were sitting on the small chair opposite, " write "sweating profusely. The takings from your last game hadn't been good " write "and you were being told why in no uncertain terms. " write "86% of all critics used the term ~has been~ somewhere in their " write "review; 13% called you a ~never was~. One final write-up had been " write "quite kind, but the fact that its author coincidentally shared your " write "surname was unforunate to say the least. " write "The only other piece of furniture is a large grandfather clock. Its " write "ominous tick giving Seae the psycological edge in any negotiations " write "he conducts here.^" } {listen if clock(status) = true write "
You can hear the sound of the grandfather clock ticking loudly.^" else write "
You can hear an ominous silence that tells you that you better " write "not be around when Mr Chiffon returns.^" endif } object big_chair : big leather chair short a "big leather chair" object small_chair : small rickety chair short a "small rickety chair" object clock : grandfather clock has CONTAINER CLOSABLE CLOSED short a "grandfather clock" status true quantity 40 {examine write "
The grandfather clock is made from finely-crafted wood and stands " write "about six feet tall. " if clock has CLOSED write "A tall door, which is currently closed, stretches from the " write "clock face down to the solid base.^" break endif write "Through the clock's open door you can see a " if clock(status) = true write "swinging" else write "still" endif write " pendulum, hanging from the mechanism behind the clock's face. " write "Behind top of this pendulum a fine chain loops over a cog. The " write "chain is made from flat, oval-shaped links and has a small hook " write "at each end. " execute "+weights" } object chain : fine chain short a "fine chain" parent clock mass 2 {examine write "
The chain loops over a cog that has a tight-fitting guard " write "surrounding its top half. It is made from flat, " write "oval-shaped links and has a small hook at each end. " execute "+weights" } {+weights if brass_rod(status) = true if copper_rod(status) = true write "
There is a brass weight hanging from one hook and copper " write "weight hanging from the other." endall if brass_rod(status) = true if copper_rod(status) = false write "
A brass weight attached to one of the hooks rests in the " write "bottom of the clock while the other hook dangles " write "high up near the cog." endall if brass_rod(status) = false if copper_rod(status) = true write "A copper weight attached to one of the hooks rests in the " write "bottom of the clock while the other hook dangles high up near " write "the cog." endall write ^ } {take write "
The chain loops over a cog that has a tight-fitting guard " write "surrounding its top half. " if brass_rod(parent) = chain if copper_rod(parent) = chain write "With a large weight attached to each end of the chain it is " write "impossible to remove it.^" set TIME = false break endall write "Although the hooks on each end of the chain small, they are " write "still too large to fit through the guard.^" set TIME = false } object brass_rod: brass cylinder rod weight loop short a "cylindrical brass weight" parent clock status 1 mass 4 {take_override if copper_rod(status) = true if brass_rod(status) = true write "
Supporting the copper weight, you carefully unhook the brass " write "one. Without anything to balance it, you slowly lower the " write "copper weight to rest in the bottom of the clock.^" move brass_rod to player set brass_rod(status) = false ensure brass_rod has TOUCHED break endall if brass_rod(status) = true write "
You take the brass weight, unhooking it from the chain.^" move brass_rod to player set brass_rod(status) = false ensure brass_rod has TOUCHED break endif break false } {examine write "
The weight is cylindrical in shape, about one inch in diameter and " write "about eight inches long. It is made from highly-polished brass and " write "has a very small loop at one end.^" } {insert_in_left_hole : insert_in_right_hole if copper_rod(parent) = noun2 if lever has CUSTOM1 write
noun2{The} " is already filled with the " write "cylindrical copper weight.^" else write
noun2{The} " already has the cylindrical copper weight " write "protruding out from it.^" endif else if lever has CUSTOM1 write "
You slide the " noun1{the} " almost entirely into " write noun2{the} " where clicks into place.^" else write "
You slide " noun1{the} " about an inch up into " noun2{the} write " where is clicks into place, its lower end dangling three inches " write "above the bottom of the alcove.^" endif set noun1(parent) = noun2 endif } object copper_rod: copper cylinder rod weight loop short a "cylindrical copper weight" parent clock status true mass 4 {take_override if copper_rod(status) = true if brass_rod(status) = true write "
Supporting the brass weight, you carefully unhook the copper " write "one. Without anything to balance it, you slowly lower the " write "brass weight to rest in the bottom of the clock.^" move copper_rod to player ensure copper_rod has TOUCHED set copper_rod(status) = false break endall if copper_rod(status) = true write "
You take the copper weight, unhooking it from the chain.^" move copper_rod to player ensure copper_rod has TOUCHED set copper_rod(status) = false break endif break false } {examine write "
The weight is cylindrical in shape, about one inch in diameter and " write "about eight inches long. It is made from a copper and has a very " write "small loop at one end.^" } {insert_in_left_hole : insert_in_right_hole if brass_rod(parent) = noun2 if lever has CUSTOM1 write
noun2{The} " is already filled with the " write "cylindrical brass weight.^" else write
noun2{The} " already has the cylindrical brass weight " write "protruding out from it.^" endif else if lever has CUSTOM1 write "
You slide the " noun1{the} " almost entirely into " write noun2{the} " where clicks into place.^" else write "
You slide " noun1{the} " about an inch up into " noun2{the} write " where is clicks into place, its lower end dangling three inches " write "above the bottom of the alcove.^" endif set noun1(parent) = noun2 endif } {clean write "
I don't mean to be impolite, but it really doesn't look much better.^" } location road: road east market out pasture {look write "
Long, rocky and tedious. It frightens you how much this road reminds " write "you of your career. To the east, at its start, lies the bussling " write "excitement of the town centre. To the west, at its end, lies a " write "desert.^" } object road_sign: road sign short a "crooked road sign" long "A crooked road sign stands near by." mass heavy {examine : read write "
The sign reads:^^"
write " EAST TO LIFE
^"
write " WEST TO DEATH
^"
write " OUT TO PASTURE
^"
}
location market: market
east town
west road
{look
write "
You are at a market just west of the town.^" } object baker: baker man short a "baker" long "Standing behind a trestle is a grumpy looking baker." mass heavy {attack_with_sword write "
The baker, seeing you begin to swing the sword, draws a silenced " write "automatic pistol from his jacket and shoots you three times through " write "the neck. You are sure that if you were still alive it would hurt - " write "alot.^" execute "+game_over" } {talk_to : greet write "
~Bugger off you has-been git!~ the baker yells in response to your " write "cheery greeting.^" } object trestle: trestle has SURFACE short a "trestle" quantity 50 {examine write "
There are several loaves of bread on the trestle.^" } object queue: queue short a "queue of people" long "There is a queue of people here, each pushing a wheelbarrow full of yorkquids." mass heavy {join : enter write "
There is no point as you don't have any money.^" } object yorkquids: wheelbarrow of yorkquids short a "wheelbarrow of yorkquids" {examine write "
Each wheelbarrow, although full, contains barely enough yorkquids to " write "buy a single loaf of bread.^" } object bread: loaf of bread short a "loaf of bread" {take : order write "
Due to the depreciation of the yorkquid, a loaf of bread now costs " write "56 grand. You, however, do not have a single one to your name.^" } location pasture: pasture in road north trail {look write "
A comfortable feeling of relief comes over you in this pasture, away " write "from the cut-throat pace of the town. You've always hated the way " write "people judge you there, but for some reason you always seem to " write "return. To the north, through a tick clump of bushes, a tail " write "becons.^" } {wait write "
It is with pleasure that you spend some quiet time in these " write "relaxing surroundings.^" } location trail : trail south pasture {look if here has VISITED write "
You have arrived back at the trail.^" break endif write "
The north end of this trail ends at a rocky cliff-face. " if stone_door has CLOSED write "There is a small alcove set into the cliff-face just beside a " write "large set of closed double doors. " else endif write "Beside the alcove, on the opposite side to the doors, is a long-" write "handled lever.^" } {movement if COMPASS = NORTH if destination = nowhere write "
The large double doors are closed.^" endif endif break false } object stone_door : large double stone door doors has CLOSED PLURAL short a "large double doors" {examine if stone_door has CLOSED write "
The large double doors are closed.^" else write "
The large double doors are open.^" endif } object alcove : small alcove has CONTAINER quantity 5 short an "alcove" {examine write "
The alcove is ten cubic centemeters in size. In the roof of the " write "alcove are two small holes. " execute "+contents" if lever has CUSTOM1 if brass_rod(parent) = right_hole if copper_rod(parent) = left_hole write "There is a brass cylindrical weight protruding about " write "an inch from the right hole and a " write "copper one from the left.^" break endif endif if brass_rod(parent) = left_hole if copper_rod(parent) = right_hole write "There is a copper cylindrical weight protruding about " write "an inch from the right hole and a " write "brass one from the left.^" break endif endif if copper_rod(parent) = right_hole if brass_rod(parent) != left_hole write "There is a copper cylindrical weight protruding about " write "an inch from the right hole.^" break endif endif if copper_rod(parent) = left_hole if brass_rod(parent) != right_hole write "There is a copper cylindrical weight protruding about " write "an inch from the left hole.^" break endif endif if brass_rod(parent) = right_hole if brass_rod(parent) != left_hole write "There is a brass cylindrical weight protruding about " write "an inch from the right hole.^" break endif endif if brass_rod(parent) = left_hole if brass_rod(parent) != right_hole write "There is a brass cylindrical weight protruding about " write "an inch from the left hole.^" break endif endif else if brass_rod(parent) = right_hole if copper_rod(parent) = left_hole write "There is a brass cylindrical weight protruding " write "from the right hole and a copper one from the left. " if bowl(parent) = alcove write "The weights reach down into the wooden bowl.^" else write "The weights reach down to about three inches from the " write "bottom of the alcove.^" endif break endif endif if brass_rod(parent) = left_hole if copper_rod(parent) = right_hole write "There is a copper cylindrical weight protruding " write "from the right hole and a brass one from the left. " if bowl(parent) = alcove write "The weights reach down into the wooden bowl.^" else write "The weights reach down to about three inches from the " write "bottom of the alcove.^" endif break endif endif if copper_rod(parent) = right_hole if brass_rod(parent) != left_hole write "There is a copper cylindrical weight protruding " write "the right hole. " if bowl(parent) = alcove write "The weight reaches down into the wooden bowl.^" else write "The weight reaches down to about three inches from the " write "bottom of the alcove.^" endif break endif endif if copper_rod(parent) = left_hole if brass_rod(parent) != right_hole write "There is a copper cylindrical weight protruding " write "from the left hole. " if bowl(parent) = alcove write "The weight reaches down into the wooden bowl.^" else write "The weight reaches down to about three inches from the " write "bottom of the alcove.^" endif break endif endif if brass_rod(parent) = right_hole if brass_rod(parent) != left_hole write "There is a brass cylindrical weight protruding " write "from the right hole. " if bowl(parent) = alcove write "The weight reaches down into the wooden bowl.^" else write "The weight reaches down to about three inches from the " write "bottom of the alcove.^" endif break endif endif if brass_rod(parent) = left_hole if brass_rod(parent) != right_hole write "There is a brass cylindrical weight protruding " write "from the left hole. " if bowl(parent) = alcove write "The weight reaches down into the wooden bowl.^" else write "The weight reaches down to about three inches from the " write "bottom of the alcove.^" endif break endif endif endif write ^ } object left_hole : left hole has CONTAINER long "There is a left hole here." short a "left hole" quantity 0 {examine if lever has CUSTOM1 # The rods is retracted. if brass_rod(parent) = left_hole : copper_rod(parent) = left_hole if brass_rod(parent) = left_hole write "
The brass rod is almost completely within the left hole, " write "only about an inch is left protruding.^" else write "
The copper rod is almost completely within the left hole, " write "only about an inch is left protruding.^" endif else write "
The left hole is about one inch in diameter" write " and about seven inches deep.^" endif break else # The rods are protruding. if brass_rod(parent) = left_hole : copper_rod(parent) = left_hole if brass_rod(parent) = left_hole write "
The brass rod is protruding from the left hole by " write "about seven inches, almost to the bottom of the alcove.^" else write "
The copper rod is protruding from the left hole by " write "about seven inches, almost to the bottom of the alcove.^" endif else write "
The left hole is about one inch in diameter" write " and about one inch deep.^" endif break endif } object right_hole : right hole has CONTAINER long "There is a right hole here." short the "right hole" quantity 0 {examine if lever has CUSTOM1 # The rods is retracted. if brass_rod(parent) = right_hole : copper_rod(parent) = right_hole if brass_rod(parent) = right_hole write "
The brass rod is almost completely within the right hole, " write "only about an inch is right protruding.^" else write "
The copper rod is almost completely within the right hole, " write "only about an inch is right protruding.^" endif else write "
The right hole is about one inch in diameter" write " and about seven inches deep.^" endif break else # The rods are protruding. if brass_rod(parent) = right_hole : copper_rod(parent) = right_hole if brass_rod(parent) = right_hole write "
The brass rod is protruding from the right hole by " write "about seven inches, almost to the bottom of the alcove.^" else write "
The copper rod is protruding from the right hole by " write "about seven inches, almost to the bottom of the alcove.^" endif else write "
The right hole is about one inch in diameter" write " and about one inch deep.^" endif break endif } object lever : long-handled lever has CUSTOM1 long "There is a lever here." short a "lever" {examine write "
The lever is current in the " if lever has CUSTOM1 write "up position.^" else write "down position.^" endif } {move if lever has CUSTOM1 write "
The lever is already in the up position.^" break endif ensure lever has CUSTOM1 if brass_rod(parent) = right_hole : brass_rod(parent) = left_hole if copper_rod(parent) = right_hole : copper_rod(parent) = left_hole write "
As you push the lever the two cylindrical weights retract " write "back into the holes in the roof of the alcove.^" break endif endif if brass_rod(parent) = right_hole write "
As you push the lever the cylindrical brass weight " write "retracts back up into the roof of the alcove.^" break endif if brass_rod(parent) = left_hole write "
As you push the lever the cylindrical brass weight " write "retracts back up into the roof of the alcove.^" break endif if copper_rod(parent) = right_hole write "
As you push the lever the cylindrical copper weight " write "retracts back up into the roof of the alcove.^" break endif if copper_rod(parent) = left_hole write "
As you push the lever the cylindrical copper weight " write "retracts back up into the roof of the alcove.^" break endif write "
You push the lever into the up position.^" } {pull if lever hasnt CUSTOM1 write "
The lever is already in the down position.^" break endif loop if noun3(parent) = alcove if noun3 != bowl if noun3(mass) > 4 break +rods endif endif endif endloop ensure lever hasnt CUSTOM1 if bowl(parent) = alcove if brass_rod(parent) = right_hole : brass_rod(parent) = left_hole if copper_rod(parent) = right_hole : copper_rod(parent) = left_hole write "
As you pull the lever the two cylindrical weights emerge " write "from the holes in the roof of the alcove and lower into " write "the bowl." if juice(parent) = bowl write " Moments later the ground begins to shake in a rather " write "cliched fashion and the large double doors open.^" points 25 ensure stone_door hasnt CLOSED set trail(north) = antechamber endif break endif endif if brass_rod(parent) = right_hole write "
As you pull the lever the cylindrical brass weight " write "emerges from the right hole in the roof of the alcove and lowers " write "into the bowl.^" break endif if brass_rod(parent) = left_hole write "
As you pull the lever the cylindrical brass weight " write "emerges from the left hole in the roof of the alcove and lowers " write "into the bowl.^" break endif if copper_rod(parent) = right_hole write "
As you pull the lever the cylindrical copper weight " write "emerges from the right hole in the roof of the alcove and lowers " write "into the bowl.^" break endif if copper_rod(parent) = left_hole write "
As you pull the lever the cylindrical copper weight " write "emerges from the left hole in the roof of the alcove and lowers " write "into the bowl.^" break endif write "
You pull the lever into the down position.^" else ; the bowl is not in the alcove if brass_rod(parent) = right_hole : brass_rod(parent) = left_hole if copper_rod(parent) = right_hole : copper_rod(parent) = left_hole write "
As you pull the lever the two cylindrical weights emerge " write "from the holes in the roof of the alcove and lower to " write "within three inches of the base of the alcove.^" break endif endif if brass_rod(parent) = right_hole write "
As you pull the lever the cylindrical brass weight " write "emerges from the right hole in the roof of the alcove and lowers " write "to within three inches of the base of the alcove.^" break endif if brass_rod(parent) = left_hole write "
As you pull the lever the cylindrical brass weight " write "emerges from the left hole in the roof of the alcove and lowers " write "to within three inches of the base of the alcove.^" break endif if copper_rod(parent) = right_hole write "
As you pull the lever the cylindrical copper weight " write "emerges from the right hole in the roof of the alcove and lowers " write "to within three inches of the base of the alcove.^" break endif if copper_rod(parent) = left_hole write "
As you pull the lever the cylindrical copper weight " write "emerges from the left hole in the roof of the alcove and lowers " write "to within three inches of the base of the alcove.^" break endif write "
You pull the lever into the down position.^" endif } location antechamber : antechamber long dark passage short the "long dark passage" south trail north show_room {look if here has VISITED write "
You are back in the long dark passage.^" break endif write "
Dark Passage
^"
write "You are in a long dark passage that runs north-south. At the "
write "northern end you can see a bright light.^"
}
{movement
if destination = false
write "
The passage runs north-south.^" break endif break false } location show_room : show_room south antechamber {look if here has VISITED write "
You have returned to the show room.^" break endif write "
There are many spotlights attached to the domed ceiling " write "of this room, all focused on a clothes rack in the very " write "centre of the floor. " set noun1 = rack execute "+details" write "^" } object outfit : sparkling sequin outfit has WEARABLE short a "sparkling sequin outfit" long "There is a sparkling sequin outfit here." mass 10 parent rack {wear_override if cloak has WORN write "
You can't put the outfit on over your cloak.^" break endif write "
You slip into the sparkling sequin outfit. Groovy.^" ensure outfit has WORN } {remove write "
The room goes completely silent. No, wait, somebody " write "has just broken the ice with a wolf whistle. What's left of the ice " write "has now been completely shattered by the ensuing " write "laughter. But wait! One fair maiden is not laughing. No, in fact she " write "stares with much admiration in her eyes.^^" write "
~I love a man who's not afraid to show his true colours,~ she " write "whispers into your ear. ~Take me you big butch fantasy-IF actor.~^^" write "
One year later...^^" write "
You are in the pasture just outside of town. A simple hut " write "stands in the centre, built with your own hands. Mary sits by the " write "hut playing with your new-born triplets, each one clad in a " write "codpiece nappy.^^" points 25 execute "+game_over" } object rack : rack has SURFACE short the "rack" capacity 20 object kryten: myself self me has ANIMATE short name "yourself" quantity 98 parent tavern player {attack if kryten has CUSTOM1 write "
I now pronounce you a genuine has-been.^" execute "+game_over" endif write "
Kill yourself, hey? Probably a good idea. After all, it's better to " write "burn out than to fade away...^" ensure kryten has CUSTOM1 } {examine execute "+inventory" } {take write "(seriously?)^" set TIME = false } object boots: leather boots has WEARABLE WORN PLURAL short "a pair of" "leather boots" mass 5 parent kryten object codpiece: leather codpiece has WEARABLE WORN short a "leather codpiece" mass 4 parent kryten {remove write "
Ever since your career as a fantasy adventurer has been on the slide " write "you have considered doing an I-F nasty, but you've always worried " write "that your mother would see a copy.^" } {examine write "
It looks a lot better since you stuffed those old rags in it.^" } object cloak: long cloak has WEARABLE WORN short a "long cloak" mass 8 parent kryten {examine write "
You ~borrowed~ it from wardrobe during your last job. At the time " write "you thought it would be good for your image, but now you're not so " write "sure. The large shiny sequins you can still tollerate, but the fluffy " write "pink edging is just a bit too much.^" } {wear if outfit has WORN write "
It would be such a shape to cover such a fine outfit with " write "the cloak.^" break endif break false } grammar xyzzy >xyzzy grammar say xyzzy >xyzzy {+xyzzy if player has CUSTOM5 write "
~Go away.~^" break endif write "
~That's the password, open the door.~^^" write "
~Are you sure? I don't recognise the voice.~^^" write "
~It's probably just the way this door muffles sound.~^^" write "
A previously invisible door swings open. Beyond the door you " write "see what you can only imagine to be God's workshop.^^" write "print ~Shit! I told you it wasn't him!~;^" write "set bouncer_1(panic) + 5;^" write "print ~Quick! Shut the door.~;^" write "set poo(parent) = bouncer_2s_trousers;^" write "ensure magic_door has CLOSED;^" write "
^The door shuts and disappears again. Something tells you it " write "is going to be one of those days.^" ensure player has CUSTOM5 } {+eachturn if dragon(status) <> 0 set dragon(status) - 1 if dragon(status) = 0 write "
^Oh, and in case you're wandering why " write "you got points for killing a poor " write "defenseless dragon for no established reason, don't be " write "so naive. You ALWAYS get points for killing the dragon. " write "And anyway, it's not like a dragon has any productive " write "role to play in modern IF.^" endall } grammar about >about {+about write "
THE DOWN DRAGON was written by Stuart Allen because he had nothing " write "better to do. He appologises for in advance to anyone who feels that " write "a signficant portion of their lifetime has been wasted playing it.^" write "Game version " GAME_VERSION .^ set TIME = false } {+intro clear centre "
This game contains coarse language, sexual references,
"
write "adult themes, low-level violence, extemely poor-taste 'humour'
"
write "and a dragon."
write "
" centre "
by Stuart Allen" write "
^^" write "As an fantasy adventurer, the only commands you've used in a while have " write "been WAIT, DOWN and OUT. But look on the bright side, at least " write "you're not the only one...^^" more set player = kryten set player(parent) = tavern look } {+rods if copper_rod(parent) = left_hole : copper_rod(parent) = right_hole if brass_rod(parent) = left_hole : brass_rod(parent) = right_hole write "
As you try to pull the lever, the rods being to protrude " write "only to hit " noun3{the} ", preventing you from pulling the " write "lever any futher.^" break endif endif if copper_rod(parent) = left_hole : copper_rod(parent) = right_hole write "
As you try to pull the lever, the copper rod begins to protrude " write "only to hit " noun3{the} ", preventing you from pulling the " write "lever any futher.^" break endif if brass_rod(parent) = left_hole : brass_rod(parent) = right_hole write "
As you try to pull the lever, the brass rod begins to protrude " write "only to hit " noun3{the} ", preventing you from pulling the " write "lever any futher.^" break endif break false } {+before_insert_in if noun2 = left_hole : noun2 = right_hole loop if noun3(parent) = alcove if noun3(mass) > 4 write "
With " noun3{the} " in the way, you are unable to put " write noun1{the} " in " noun2{the} .^ break endif endif endloop endif if noun2 = alcove if noun1(mass) > 4 if lever hasnt CUSTOM1 if copper_rod(parent) = left_hole : copper_rod(parent) = right_hole if brass_rod(parent) = left_hole : brass_rod(parent) = right_hole write "
The weights are in the way.^" break endif endif if copper_rod(parent) = left_hole : copper_rod(parent) = right_hole write "
The copper weight is in the way.^" break endif if brass_rod(parent) = left_hole : brass_rod(parent) = right_hole write "
The brass weight is in the way.^" break endif endif endif endif break false } {+game_over write "
^" centre "
The game is over. Type restart or restore." write "A restore command can optionally be followed by a filename.
^" } {+header write "Content-type: text/html" write "Expire: -1^^" write " write "noun4{The} execute +to_direction else write "
You hear the footsteps nearby.^" endif set noun4(parent) = DESTINATION if player(parent) = noun4(parent) if here hasnt DARK write
noun4{The} execute +from_direction else write "
You hear the footsteps nearby.^" endif endif } {+to_direction if DIRECTION = NORTH write " heads off to the north.
^" break endif if DIRECTION = NORTHEAST write " heads off to the northeast.^" break endif if DIRECTION = EAST write " heads off to the east.^" break endif if DIRECTION = SOUTHEAST write " heads off to the southeast.^" break endif if DIRECTION = SOUTH write " heads off to the south.^" break endif if DIRECTION = SOUTHWEST write " heads off to the southwest.^" break endif if DIRECTION = WEST write " heads off to the west.^" break endif if DIRECTION = NORTHWEST write " heads off to the northwest.^" break endif if DIRECTION = UP write " heads up from here.^" break endif if DIRECTION = DOWN write " heads down from here.^" } {+from_direction if DIRECTION = NORTH write " enters from the south.^" break endif if DIRECTION = NORTHEAST write " enters from the southwest.^" break endif if DIRECTION = EAST write " enters from the west.^" break endif if DIRECTION = SOUTHEAST write " enters from the northwest.^" break endif if DIRECTION = SOUTH write " enters from the north.^" break endif if DIRECTION = SOUTHWEST write " enters from the northeast.^" break endif if DIRECTION = WEST write " enters from the east.^" break endif if DIRECTION = NORTHWEST write " enters from the southeast.^" break endif if DIRECTION = UP write " enters from below.^" break endif if DIRECTION = DOWN write "enters from above.^" } {+exits set INDEX = false write "YOU CAN GO: " if here(north) != nowhere hyperlink NORTH "go+north" write " " set INDEX = true endif if here(south) != nowhere hyperlink SOUTH "go+south" write " " set INDEX = true endif if here(east) != nowhere hyperlink EAST "go+east" write " " set INDEX = true endif if here(west) != nowhere hyperlink WEST "go+west" write " " set INDEX = true endif if here(up) != nowhere hyperlink UP "go+up" write " " set INDEX = true endif if here(down) != nowhere hyperlink DOWN "go+down" write " " set INDEX = true endif if here(in) != nowhere hyperlink IN "go+in" write " " set INDEX = true endif if here(out) != nowhere hyperlink OUT "go+out" write " " set INDEX = true endif if here(northeast) != nowhere hyperlink NORTHEAST "go+northeast" write " " set INDEX = true endif if here(northwest) != nowhere hyperlink NORTHWEST "go+northwest" write " " set INDEX = true endif if here(southeast) != nowhere hyperlink SOUTHEAST "go+southeast" write " " set INDEX = true endif if here(southwest) != nowhere hyperlink SOUTHWEST "go+southwest" set INDEX = true endif if INDEX = false write "NOWHERE!" endif write "
^" } {+list_here write "" } {+list_held write "" } {+darkness if here has DARKNESS execute "+no_light" break endif break false } {+reach if noun4 has OUT_OF_REACH writenoun4{The} " " noun4{is} " out of reach.
^" set TIME = false break endif break false } {+worn if noun4 has WORN write "You must first remove " noun4{the} .
^ set TIME = false break endif break false } location limbo : limbo object north_wall: north north wall short the "north wall" object south_wall: south southern wall short the "south wall" object east_wall: east eastern wall short the "east wall" object west_wall: west western wall short the "west wall" object ground: ground floor has SURFACE short the "ground" grammar shake *held >shake grammar wave *held >shake {+shake write "Consider it done.
^" } grammar say xyzzy >xyzzy grammar xyzzy >xyzzy {+xyzzy write "Suddenly a magical white glove appears floating in the air before " write "you, slaps you several times across the face, then disappears.
^" } grammar verbose >verbose {+verbose if DISPLAY_MODE = 1 write "Display mode already set to verbose.
^" break endif write "Display mode set to verbose.
^" set DISPLAY_MODE = 1 look } grammar brief >brief {+brief if DISPLAY_MODE = 0 write "Display mode already set to brief.
^" break endif write "Display mode set to brief.
^" set DISPLAY_MODE = 0 } grammar help *present >help_other {+help_other write "How did you intend to help " noun1{the} ?
^ } grammar hint *present >hint {+hint write "There is no specific hint available for " noun1{the} .
^ set TIME = false } grammar hint >first_hint grammar hint one >first_hint {+first_hint write "There is no hint available specific to this location.
^" set TIME = false } grammar hint two >second_hint {+second_hint write "There is no second hint available for this location.
^" set TIME = false } grammar hint three >third_hint {+third_hint write "There is no third hint available for this location.
^" set TIME = false } grammar hint four >fourth_hint {+fourth_hint write "There is a maximum of three hints for each location.
^" set TIME = false } grammar help games >help_games {+help_games write "`GAMES' REFERS TO MODELS, SIMULATIONS AND GAMES WHICH HAVE TACTICAL " write "AND STRATEGIC APPLICATIONS.
^" } grammar hug *present >hug grammar comfort *present >hug grammar cuddle *present >hug grammar console *present >hug {+hug break +darkness break +reach noun1 override if noun1 hasnt ANIMATE write "Odd.
^" break endif write "I'm sure " noun1{the} " feel" noun1{s} " a whole lot better now.
^" } grammar kiss *present >kiss {+kiss break +darkness break +reach noun1 override write "Hmmmmmm...
^" } grammar pick *present with *held >pick_with {+pick_with break +darkness break +reach noun1 override write "You can't pick " noun1{the} " with " noun2{the} .
^ } grammar rub *present >rub grammar pat *present >rub {+rub break +darkness break +reach noun1 override write "I'm sure " noun1{the} " " noun1{is} " feeling a lot better now.
^" } grammar rub *held on *present >rub_on {+rub_on break +darkness override proxy "rub " noun2 " with " noun1 } grammar rub *present with *held >rub_with {+rub_with break +darkness break +reach noun1 override write "They both just get a little warmer.
^" } grammar lick *present >lick grammar taste *present >lick {+lick break +darkness break +reach noun1 override write "Yeuucck!
^" } grammar pull *present >pull grammar tug *present >pull {+pull break +darkness break +reach noun1 override write "You can't pull " noun1{the} .
^ } grammar cut *present >cut grammar chop *present >cut grammar stab *present >cut {+cut write "What did you want to cut " noun1{the} " with?
^" set TIME = false } grammar cut *present with *held >cut_with grammar chop *present with *held >cut_with grammar stab *present with *held >cut_with {+cut_with break +darkness break +reach noun1 override if noun1 has ANIMATE proxy "attack " noun1 " with " noun2 break endif write "Vandal!
^" set TIME = false } grammar break *present >break grammar kick *present >break grammar smash *present >break grammar crush *present >break grammar destroy *present >break grammar wreck *present >break grammar crack *present >break grammar tear *present >break grammar tear up *present >break grammar tear *present up >break {+break break +darkness break +reach noun1 override write "Don't be so destructive.
^" set TIME = false } grammar clean *present >clean grammar wash *present >clean grammar wipe *present >clean grammar scrub *present >clean grammar polish *present >clean {+clean break +darkness break +reach noun1 override if noun1 has LIQUID write "How do you clean a liquid?
^" set TIME = false break endif override write "That's very thoughtful of you.
^" } grammar clean *present with *held >clean_with grammar wipe *present with *held >clean_with grammar scrub *present with *held >clean_with grammar brush *present with *held >clean_with {+clean_with break +darkness break +reach noun1 override if noun1 has LIQUID write "How do you clean a liquid?
^" set TIME = false break endif override write "You can't clean " noun1{the} " with " noun2{the} .
^ set TIME = false } grammar yell at *present >yell_at grammar scream at *present >yell_at {+yell_at write "Oooo, scary...
^" } grammar pay *present >pay {+pay write "You can't pay " noun1{the} .
^ } grammar order *carried >order grammar buy *carried >order grammar order *anywhere >order grammar buy *anywhere >order {+order write "Your order appears to have fallen on deaf ears.
^" } grammar knock on *present >knock_on grammar tap on *present >knock_on grammar tap *present >knock_on {+knock_on break +darkness break +reach noun1 override if noun1 has LIQUID write "A wet hand is your only reward.
^" break endif write "Devastatingly productive...
^" } grammar play *present >play {+play break +darkness override write "You can't play " noun1{the} .
^ set TIME = false } grammar extract *here with *held >take_with grammar get *here with *held >take_with grammar take *here with *held >take_with grammar remove *present with *held >take_with grammar empty *present with *held >take_with {+take_with proxy "fill " noun2 " with " noun1 } grammar fill *held from *present >fill_from {+fill_from break +darkness execute +liquid noun2 if INDEX = false writenoun2{The} " " noun2{doesnt} "contain a liquid to fill " noun1{the} write " with.
^" set TIME = false break endif proxy "fill " noun1 " with " noun3 } grammar fill *held with *present >fill_with {+fill_with break +darkness break +reach noun2 if noun1 hasnt CONTAINER writenoun1{The} " " noun1{isnt} " a container and therefore can't be " write "filled.
^" break endif if noun1 has CLOSED write "You can't fill " noun1{the} " while " if noun1 has PLURAL write "they are" else write "it is" endif write " closed.
^" set TIME = false break endif if noun2 hasnt LIQUID write "You can only fill " noun1{the} " with a liquid.
^" break endif execute +liquidwrite noun1 if INDEX = true writenoun1{The} " already contains " noun3{the} ". If you were to also " write "add " noun2{the} " they would mix together.
^" set TIME = false break endif if noun1(quantity) < noun2(mass) writenoun1{The} " " noun1{isnt} " large enough to hold " write noun2{the} .
^ set TIME = false break endif override write "You fill " noun1{the} " with " noun2{the} .
^ move noun2 to noun1 } {+liquid? set INDEX = false loop if noun3(parent) = noun4 if noun3 has LIQUID set INDEX = true break endif endif endloop } grammar fill *present >fill {+fill break +darkness override write "What did you want to fill " noun1{the} " with?
^" set TIME = false } grammar stand >stand grammar stand up >stand grammar get up >stand {+stand if player has SITTING write "Using your arms to push yourself up, you stand.
^" ensure player hasnt SITTING break endif write "You are already standing.
^" } grammar sleep >sleep {+sleep write "There will be plenty of time for that later...
^" set TIME = false } grammar lie on *present >lie_on grammar lie down on *present >lie_on grammar sleep on *present >lie_on grammar sleep in *present >lie_on {+lie_on break +darkness break +reach noun1 override writenoun1{The} " " noun1{doesnt} " look like the ideal place to take a " write "nap.
^" } grammar sit >sit grammar sit down >sit {+sit set TIME = false if player has SITTING write "You are already sitting.
^" break endif if here has UNDER_WATER write "While underwater?
^" break endif if here has ON_WATER write "While in water?
^" break endif write "You plonk yourself down for a moment's rest.
^" ensure player has SITTING } grammar sit on *here >sit_on grammar sit in *here >sit_on {+sit_on break +darkness break +reach noun1 override writenoun1{The} " " noun1{doesnt} " look very comfortable.
^" } grammar drop everything >drop_all grammar put everything down >drop_all grammar put down everything >drop_all {+drop_all set TIME = false if here has MID_WATER : here has ON_WATER write "Dropping everything you own into the water probably isn't such " write "a great idea.
^" break endif set INDEX = 0 loop if noun3(parent) = player if noun3 hasnt WORN if noun3(mass) < heavy if TIME = true set TOTAL_MOVES + 1 execute +eachturn endif write "You drop " noun3{the} .
^ move noun3 to here set TIME = true set INDEX + 1 endif else write "You must first remove " noun3{the} .
^ set TIME = false set INDEX + 1 endif endif endloop if INDEX = 0 write "You are not carrying anything.
^" break } grammar drop *held >drop grammar throw *held >drop grammar put *held down >drop grammar put down *held >drop {+drop if noun1 has WEARABLE if noun1 has WORN write "You must first remove " noun1{the} .
^ set TIME = false break endif endif if noun1(mass) >= heavy : noun1 has LOCATION execute +move_scenery break endif override if here has MID_WATER : here has ON_WATER write "You drop " noun1{the} " which rapidly sink" noun1{s} " out of " write "view.
^" move noun1 to limbo break endif write "You drop " noun1{the} .^ move noun1 to here } grammar remove everything from *present >take_all_from grammar take everything from *present >take_all_from grammar get everything from *present >take_all_from grammar take everything out of *present >take_all_from grammar get everything out of *present >take_all_from grammar empty *present >take_all_from grammar take everything on *present >take_all_from grammar get everything on *present >take_all_from grammar take everything from on *present >take_all_from grammar get everything from on *present >take_all_from grammar take everything in *present >take_all_from grammar get everything in *present >take_all_from grammar take everything from in *present >take_all_from grammar get everything from in *present >take_all_from {+take_all_from set TIME = false break +darkness break +reach noun1 override if noun1 has ANIMATE write "
You will have to ask " noun1{the} " for anything that you write "want.
^" break endif if noun1 hasnt CONTAINER if noun1 hasnt SURFACE write "There isn't anything in " noun1{the} .
^ break endif endif if noun1 has CLOSED write "It's going to be a bit hard to take anything from " noun1{the} write " while " noun1{the} " " noun1{is} " closed."
^ break endif set INDEX = 0 loop if noun3(parent) = noun1 if noun3(mass) < heavy if noun3 hasnt LIQUID if noun3(mass) <= player(quantity) if TIME = true set TOTAL_MOVES + 1 execute +eachturn endif execute +take_routine set INDEX + 1 else write "You are carrying too much to take " noun3{the} .
^ set INDEX + 1 endif else write "" noun3{The} " run" noun3{s} " through your fingers.
^" set INDEX + 1 endif endif endif endloop if INDEX = 0 write "I don't see what you are referring to.
^" } grammar take everything >take_all grammar get everything >take_all {+take_all break +darkness set TIME = false set INDEX = 0 loop if noun3(parent) = here if noun3(mass) < heavy if noun3 hasnt LIQUID if TIME = true set TOTAL_MOVES + 1 execute +eachturn endif execute +take_routine set INDEX + 1 else write "" noun3{The} " run" noun3{s} " through your fingers.
^" set INDEX + 1 endif endif endif endloop if INDEX = 0 write "I don't see what you are referring to.
^" } {+take_routine break +reach noun3 if noun3(mass) > player(quantity) write "You are carrying too much to take " noun3{the} .
^ set TIME = false break endif break noun3.take override write "You take " noun3{the} .
^ set TIME = true move noun3 to player ensure noun3 has TOUCHED } grammar take *here >take grammar get *here >take {+take break +darkness break +reach noun1 if player has SITTING write "You will have to stand up first.
^" set TIME = false break endif if noun1(mass) >= heavy : noun1 has LOCATION execute +move_scenery break endif if noun1(mass) > player(quantity) write "You are carrying too much to take " noun1{the} .
^ set TIME = false break endif if noun1 has LIQUID writenoun1{The} " run" noun1{s} " through your fingers.
^" break endif override write "You take " noun1{the} .
^ move noun1 to player ensure noun1 has TOUCHED } {+move_scenery set TIME = false if noun1 has LOCATION write "That would be an impressive feat of strength.
^" break endif set noun3 = noun1(parent) set INDEX = noun3 if noun3 has LOCATION writenoun1{The} " " noun1{isnt} " something that you can pick up.
^" break endif writenoun1{The} " " noun1{is} " attached to " noun3{the} .
^ } grammar insert *held on *present >insert_on grammar put *held on *present >insert_on {+insert_on break +darkness break +reach noun2 if noun2 = noun1 write "Put " noun1{the} " on " if noun1 has PLURAL write "themselves?" else write "itself?" endif write "I don't think so.
^" set TIME = false break endif if noun2(parent) = noun1 write "I'm afraid that's just not possible.
^" set TIME = false break endif if noun1(mass) >= heavy : noun1 has LOCATION execute +move_scenery break endif break +worn noun1 if noun2 hasnt SURFACE write "There isn't a flat surface on " noun2{the} .
^ set TIME = false break endif if noun2(quantity) < noun1(mass) write "There is not enough room on " noun2{the} " for " noun1{the} .
^ set TIME = false break endif override write "You put " noun1{the} " on " noun2{the} .
^ move noun1 to noun2 } grammar insert *held in *present >insert_in grammar put *held in *present >insert_in {+insert_in break +darkness break +reach noun2 if noun1(mass) >= heavy : noun1 has LOCATION execute +move_scenery break endif if noun2 = noun1 write "Put " noun1{the} " in " if noun1 has PLURAL write "themselves?" else write "itself?" endif write "I don't think so.
^" set TIME = false break endif if noun2(parent) = noun1 write "I'm afraid that's just not possible.
^" set TIME = false break endif break +worn noun1 if noun2 = player write "I would ask how you intend to do that, but something tells me I " write "don't want to know.
^" set TIME = false break endif if noun2 hasnt CONTAINER writenoun2{The} " " noun2{isnt} " designed to receive " noun1{the} .
^ set TIME = false break endif if noun2 has CLOSED writenoun2{The} " " noun2{is} " closed.
^" set TIME = false break endif if noun2(quantity) < noun1(mass) write "There is not enough room in " noun2{the} " for " noun1{the} .
^ set TIME = false break endif override write "You put " noun1{the} " in " noun2{the} .
^ move noun1 to noun2 } grammar insert everything in *present >insert_all_in grammar put everything in *present >insert_all_in {+insert_all_in break +darkness if noun1 hasnt CONTAINER writenoun1{The} " " noun1{isnt} " designed to hold things.
^" set TIME = false break endif break +reach noun1 if noun1 has CLOSED writenoun1{The} " " noun1{is} " closed.
^" set TIME = false break endif set INDEX = 0 loop if noun3(parent) <> player : noun3(mass) >= heavy : noun3 = noun1 endloop execute +encumbered break endif if noun1 has WORN write "You must first remove " noun3{the} .
^ set INDEX + 1 endloop break endif set OB1 = noun1 set OB2 = noun3 proxy "insert" noun3 " in " noun1 set noun1 = OB1 set noun3 = OB2 set INDEX + 1 endloop } grammar insert everything on *present >insert_all_on grammar put everything on *present >insert_all_on {+insert_all_on break +darkness if noun1 hasnt SURFACE write "There is no flat surface on " noun1{the} " to put things.
^" set TIME = false break endif break +reach noun1 set INDEX = 0 loop if noun3(parent) <> player : noun3(mass) >= heavy : noun3 = noun1 endloop execute +encumbered break endif if noun1 has WORN write "You must first remove " noun3{the} .
^ set INDEX + 1 endloop break endif set OB1 = noun1 set OB2 = noun3 proxy "insert" noun3 " on " noun1 set noun1 = OB1 set noun3 = OB2 set INDEX + 1 endloop } {+encumbered if INDEX = 0 write "You are not carrying anything.
^" } grammar ask *present for *carried >ask_for grammar tell *present to give me *carried >ask_for {+ask_for if here has UNDER_WATER write "Talking under water isn't very easy.
^" set TIME = false break endif if noun1 hasnt ANIMATE writenoun1{The} " seem" noun1{s} " to be ignoring your request.
^" break endif if noun1 has DEAD writenoun1{The} " " noun1{is} " a bit too dead to respond.
^" set TIME = false break endif if noun1 = player write "I think it might be time to take a break and get a cup of tea.
^" set TIME = false break endif if noun1 !grandof noun2 writenoun1{The} " " noun1{doesnt} " seem to have " noun2{the} .
^ set TIME = false break endif if noun2(mass) > player(quantity) write "With your current load you would be unable to accept" write noun2{the} .
^ set TIME = false break endif override if noun1 has POSSESSIVE writenoun1{The} " refuses to give you " noun2{the} .
^ break endif move noun2 to player if noun2 has WORN writenoun1{The} " remove" noun1{s} " " noun2{the} " then hand" noun1{s} if noun2 has PLURAL write " them" else write " it" endif write " to you.
^" ensure noun2 hasnt WORN break endif writenoun1{The} " hands you " noun2{the} .
^ } grammar tell *present about *carried >tell_about grammar talk to *present about *carried >tell_about grammar tell *present about *anywhere >tell_about grammar talk to *present about *anywhere >tell_about {+tell_about if here has UNDER_WATER write "Talking under water isn't very easy.
^" set TIME = false break endif if noun1 hasnt ANIMATE write "I don't think talking to " noun1{the} " is going to help somehow.
^" set TIME = false break endif if noun1 has DEAD writenoun1{The} " " noun1{is} " a bit too dead to even pretend to be " write "interested.
^" set TIME = false break endif if noun1 = noun2 write "I think " noun1{the} " already know" noun1{s} " more than you do.
^" set TIME = false break endif if noun1 = player write "It's the first sign of madness you know...
^" break endif override writenoun1{The} " seem" noun1{s} " fascinated by your story about " write noun2{the} .
^ } grammar ask *present about *carried >ask_about grammar ask *present about *anywhere >ask_about {+ask_about if here has UNDER_WATER write "Talking under water isn't very easy.
^" set TIME = false break endif if noun1 hasnt ANIMATE write "I don't think talking to " noun1{the} " is going to help somehow.
^" set TIME = false break endif if noun1 has DEAD writenoun1{The} " " noun1{is} " a bit too dead to tell you anything write "useful.
^" set TIME = false break endif if noun1 = player write "It's the first sign of madness you know...
^" break endif override if noun2 = noun1 write noun1(The} if noun1 has PLURAL write " are too shy to say much.^" else write " is too shy to say much.^" endif break endif writenoun1{The} " reluctantly admit" noun1{s} " to knowing little about " write noun2{the} .
^ } grammar offer *held to *present >give_to grammar give *held to *present >give_to {+give_to if noun2 hasnt ANIMATE write "You can't give " noun1{the} " to " noun2 .
^ set TIME = false break endif if noun2 = player write "I think it might be time to take a break and get a cup of tea.
^" break endif break +reach noun2 if noun1(mass) >= heavy : noun1 has LOCATION execute +move_scenery break endif break +worn noun1 override move noun1 to noun2 write "You give " noun1{the} " to " noun2{the} .
^ } grammar move *present >move grammar push *present >move {+move break +darkness break +reach noun1 if player has SITTING write "You will have to stand up first.
^" set TIME = false break endif if noun1(mass) >= heavy : noun1 has LOCATION execute +move_scenery break endif if noun1 has LIQUID writenoun1{The} " run" noun1{s} " through your fingers.
^" break endif break +worn noun1 if noun1(parent) = player override write "You juggle " noun1{the} " in your hands.
^" break endif override write "You move " noun1{the} " a short distance to one side.
^" ensure noun1 has TOUCHED } grammar read *present >read {+read break +darkness write "There is nothing on " noun1{the} " to read.
^" } grammar look down >look_down {+look_down break +darkness if here has TIGHT_ROPE : here has MID_AIR write "You see the ground far below.
^" break endif if here has ON_WATER write "You can't see beyond the surface of the water.
^" break endif write "You take a moment to admire your investigating feet.
^" } grammar look up *anywhere in *present >look_up_in grammar look for *anywhere in *present >look_up_in {+look_up_in break +darkness write "You don't find any reference to " noun1{the} " in " noun2{the} .
^ } grammar consult *present about *anywhere >consult grammar consult *present re *anywhere >consult grammar consult *present on *anywhere >consult {+consult break +darkness proxy "look up " noun2 " in " noun1 } grammar feel *present >feel grammar touch *present >feel {+feel break +reach noun1 if noun1 has ANIMATE write "I'm not so sure that would be polite.
^" break endif write "Feels just like " noun1{list} .
^ } grammar smell >smell grammar sniff >smell {+smell write "Nothing strikes you as out of the ordinary.
^" } grammar smell *present >sniff grammar sniff *present >sniff {+sniff if noun1 has ANIMATE write "I'm not so sure that would be polite.
^" break endif write "Smells an awful lot like " noun1{list} .
^ } grammar taste *present >taste grammar lick *present >taste {+taste break +reach noun1 if noun1 has ANIMATE write "You are one sick puppy.
^" break endif write "Tastes just like you would expect " noun1{list} " to taste.
^" } grammar look in *present >look_in {+look_in break +darkness if noun1 hasnt CONTAINER write "There is nothing in " noun1{the} .
^ break endif if noun1 has CLOSED writenoun1{The} " " noun1{is} " currently closed.
^" break endif set INDEX = 0 loop if noun3(parent) = noun1 set INDEX + 1 endif endloop if INDEX = 0 write "There is nothing in " noun1{the} .
^ break endif execute +details write "^" } grammar look *present >examine grammar look at *present >examine grammar look on *present >examine grammar examine *present >examine grammar x *present >examine grammar search *present >examine grammar watch *present >examine {+examine break +darkness override if noun1 hasnt CLOSABLE if noun1 hasnt CONTAINER if noun1 hasnt SURFACE write "There is nothing special about " noun1{the} .
^ break endall if noun1 has CLOSABLE execute +details write "^" break endif set INDEX = 0 loop if noun3(parent) = noun1 set INDEX + 1 endif endloop if INDEX = 0 write "There is nothing special about " noun1{the} .
^ break endif execute +details write "^" } {+details if noun1 has CLOSABLE if noun1 hasnt CLOSED writenoun1{The} " " noun1{is} " open" else write
noun1{The} " " noun1{is} " closed.
" break endif endif if noun1 has CONTAINER : noun1 has SURFACE execute +contents break endif write . } {+contents set INDEX = 0 loop if noun3(parent) = noun1 if noun3(mass) != scenery set INDEX + 1 endif endif endloop if INDEX = 0 if noun1 has CLOSABLE if noun1 has CONTAINER write . break endall if INDEX = 0 : noun1 has CONCEALING break endif if noun1 has ANIMATE writenoun1{The} " " noun1{is} " carrying " endif if noun1 has SURFACE write "
On " noun1{the} " is " endif if noun1 has CONTAINER if noun1 has CLOSABLE write " and contains " else write
noun1{The} " contains " endif endif loop if noun3(parent) = noun1 if noun3(mass) != scenery set INDEX - 1 write noun3{list} execute +object_info execute +list_structure if INDEX = 0 write .
break endif endif endif endloop } {+first_child set INDEX = false loop if noun3(parent) = noun4 set INDEX = true break endall endloop } {+children? set INDEX = false loop if noun3(parent) = noun4 set INDEX = true break endif endloop } grammar inv >list_inventory grammar list >list_inventory {+list_inventory set INDEX = 0 loop if noun3(parent) = player if noun3(mass) != scenery set INDEX + 1 endif endif endloop if INDEX = 0 write "You are empty-handed.
^" break endif write "You are carrying:
^"
loop
if noun3(parent) = player
if noun3(mass) != scenery
write " " noun3{list}
execute +object_info
write "
^"
if noun3 has CONTAINER
if noun3 hasnt CLOSED
execute +object_children noun3
endif
endif
endif
endif
endloop
write "
You are empty handed.
^" break endif write "You are carrying " loop if noun3(parent) = player if noun3(mass) != scenery set INDEX - 1 write noun3{list} execute +object_info execute +list_structure if INDEX = 0 write .
^ break endif endif endif endloop } {+list_structure if INDEX > 1 write ", " endif if INDEX = 1 write " and " } {+object_info if noun3 has WORN write " (being worn)" endif if noun3 has LUMINOUS write " (providing light)" endif if noun3 has ON write " (on)" endif if noun3 has CLOSABLE if noun3 hasnt CLOSED write " (open)" } grammar sorry >sorry {+sorry write "That's quite all right.
^" } grammar thanks >thankyou grammar thank you >thankyou {+thankyou write "You're welcome.
^" } grammar score >score grammar points >score {+score set TIME = false if TOTAL_MOVES = 1 write "Your score is " SCORE "% in 1 move.
^" else write "Your score is " SCORE "% in " TOTAL_MOVES " moves.
^" } grammar open *present >open {+open break +darkness break +reach noun1 if noun1 has LOCKED writenoun1{The} " " noun1{is} " locked.
^" set TIME = false break endif if noun1 hasnt CLOSABLE write "You can't open " noun1{the} .
^ set TIME = false break endif if noun1 hasnt CLOSED writenoun1{The} " " noun1{is} " already open.
^" set TIME = false break endif override ensure noun1 hasnt CLOSED if noun1 has CONTAINER execute +revealing break endif write "You open " noun1{the} .
^ } {+revealing set INDEX = 0 loop if noun3(parent) = noun1 set INDEX + 1 endif endloop write "You open " noun1{the} if INDEX = 0 write ", which" noun1{is} " empty.
^" break endif write " revealing " loop if noun3(parent) = noun1 set INDEX - 1 write noun3{list} execute +object_info execute +list_structure if INDEX = 0 write .^ break endif endif endloop } grammar close *present >close grammar shut *present >close {+close break +darkness break +reach noun1 if noun1 hasnt CLOSABLE write "You can't close " noun1{the} .
^ set TIME = false break endif break +reach noun1 if noun1 has CLOSED writenoun1{The} " " noun1{is} " already closed.
^" set TIME = false break endif override write "You close " noun1{the} .
^ ensure noun1 has CLOSED } grammar lock *present >lock {+lock break +darkness break +reach noun1 if noun1 has LOCKABLE if noun1 has LOCKED writenoun1{The} " " noun1{is} " already locked.
^" break endif endif if noun1 has CLOSABLE if noun1 hasnt CLOSED write "You can't lock " noun1{the} " while " if noun1 has PLURAL write "they are" else write "it is" endif write " open.
^" set TIME = false break endif endif if noun1 hasnt LOCKABLE write "You can't lock " noun1{the} .
^ break endif override write "What did you want to lock " noun1{the} " with?
^" } grammar lock *present with *held >lock_with {+lock_with break +darkness if noun1 hasnt LOCKABLE write "You can't lock " noun1{the} .
^ set TIME = false break endif break +reach noun1 if noun1 has LOCKED writenoun1{The} " " noun1{is} " already locked.
^" break endif if noun1 has CLOSABLE if noun1 hasnt CLOSED write "You can't lock " noun1{the} " while " if noun1 has PLURAL write "they are" else write "it is" endif write " open.
^" set TIME = false break endif override write "You can't lock " noun1{the} " with " noun2{the} .
^ set TIME = false } grammar unlock *present >unlock {+unlock break +darkness if noun1 hasnt LOCKABLE write "You can't unlock " noun1{the} .
^ set TIME = false break endif break +reach noun1 if noun1 hasnt LOCKED writenoun1{The} " " noun1{is} " already unlocked.
^" set TIME = false break endif override write "What did you want to unlock " noun1{the} " with?
^" } grammar unlock *present with *held >unlock_with grammar open *present with *held >unlock_with {+unlock_with if noun1 hasnt LOCKABLE write "You can't unlock " noun1{the} .
^ set TIME = false break endif break +reach noun1 if noun1 hasnt LOCKED writenoun1{The} " " noun1{is} " already unlocked.
^" break endif override write "You can't unlock " noun1{the} " with " noun2{the} .
^ set TIME = false } grammar show *held to *present >show_to {+show_to break +darkness if noun1 = noun2 write "You can't show " noun1{the} " to " if noun1 has PLURAL write "themselves." else write "itself.
^" endif set TIME = false break endif override writenoun2{The} " " noun2{doesnt} " seem overly impressed by " noun1{the} .
^ } grammar untie *present >untie grammar free *present >untie grammar undo *present >untie {+untie break +darkness writenoun1{The} " " noun1{is} " not tied to anything.
^" set TIME = false } grammar tie *held >tie grammar attach *held >tie {+tie break +darkness write "What do you want to tie " noun1{the} " to?
^" set TIME to false } grammar tie *held to *present >tie_to grammar fix *held to *present >tie_to grammar attach *held to *present >tie_to {+tie_to break +darkness break +reach noun2 override write "You can't tie " noun1{the} " to " noun2{the} .
^ set TIME = false } grammar attack *present >attack grammar hit *present >attack grammar fight *present >attack grammar kill *present >attack grammar murder *present >attack grammar punch *present >attack {+attack break +darkness break +reach noun1 if noun1 has ANIMATE if noun1 has DEAD writenoun1{The} " " noun1{is} " already dead.
^" set TIME = false break endif endif override write "Attacking " noun1{the} " with your hands would have little effect.
^" set TIME = false } grammar attack *present with *held >attack_with grammar hit *present with *held >attack_with grammar fight *present with *held >attack_with grammar kill *present with *held >attack_with grammar murder *present with *held >attack_with grammar punch *present with *held >attack_with grammar stab *present with *held >attack_with grammar poke *present with *held >attack_with {+attack_with break +darkness break +reach noun1 if noun2 has LIQUID writenoun2{The} " run" noun2{s} " through your fingers.
^" break endif break +worn noun1 if noun1 has ANIMATE if noun1 has DEAD writenoun1{The} " " noun1{is} " already dead.
^" set TIME = false break endif endif override write "Attacking " noun1{the} " with " noun2{the} " would have little " write "effect.
^" set TIME = false } grammar wave >wave {+wave write "You wave your arms around a bit.
^" } grammar wave to *present >wave_to {+wave_to break +darkness if noun1 hasnt ANIMATE write "Not surpisingly, you get no response.
^" break endif writenoun1{The} " barely raises an eye brow.
^" } grammar jump on to *here >jump_on grammar jump on *here >jump_on grammar hop on *here >jump_on grammar stand on *here >jump_on {+jump_on break +darkness set TIME = false if noun1 hasnt SURFACE write "You can't jump on " noun1{the} .
^ break endif write "This would achieve little.
^" } grammar jump over *here >jump_over {+jump_over break +darkness write "You can't jump over " noun1{the} .
^ set TIME = false } grammar jump >jump {+jump if here has MID_AIR write "Not likely." break endif if here has TIGHT_ROPE write "
Something tells me that might be a bit too dangerous, not to " write "mention totally unnecessary.
^" break endif if here has UNDER_WATER : here has ON_WATER write "While underwater?
^" break endif if player has SITTING write "You would have to get up first.
^" break endif write "Consider it done.
^" } grammar yes >yes grammar okay >yes grammar yeah >yes {+yes write "That was a rhetorical question.
^" set TIME = false } grammar no >no {+no write "That was a rhetorical question.
^" set TIME = false } grammar why >why grammar why? >why {+why write "Because.
^" set TIME = false } grammar blow *held at *here >blow_at grammar blow *held to *here >blow_at {+blow_at break +darkness write "You can't blow " noun1{the} " at " noun2{the} .
^ set TIME = false } grammar throw *held at *here >throw_at grammar throw *held to *here >throw_at {+throw_at break +darkness if noun2 has ANIMATE write "I don't think " noun2{the} " would really appreciate you throwing " write noun1{the} " at " if noun2 has FEMALE write "her.
^" else write "him.^" endif set TIME = false break endif break +worn noun1 if noun2(parent) hasnt LOCATION write "You can't throw " noun1{the} " at " noun2{the} " while " if noun2 has PLURAL write "they are" else write "it is" write " in something else.
^" set TIME = false break endif if noun1(mass) >= heavy : noun1 has LOCATION execute +move_scenery break endif override if noun1(mass) => 20 writenoun1{The} if noun1 has PLURAL write " are " else write " is " endif write "a bit too heavy to go throwing around.
^" set TIME = false break endif if here has UNDER_WATER write "Throwing things underwater is never as easy as you might think.
^" set TIME = false break endif if here has ON_WATER write "You throw " noun1{the} " at " noun2{the} " which " if noun1 has PLURAL write "they bounce" else write "it bounces" endif write " off, landing in the water where " if noun1 has PLURAL write "they" else write "it" endif write " rapidly sink" noun1{s} ", disappearing from sight.
^" move noun1 to limbo break endif writenoun1{The} " bounce" noun1{s} " off " noun2{the} " and land" noun1{s} write " on the ground.
^" move noun1 to here } grammar remove *present from *present >remove_from grammar take *present from *present >remove_from grammar get *present from *present >remove_from grammar take *present out of *present >remove_from grammar get *present out of *present >remove_from grammar take *present on *present >remove_from grammar get *present on *present >remove_from {+remove_from break +darkness if noun1(parent) <> noun2 writenoun1{The} " " noun1{is} " not in " noun2{the} .
^ set TIME = false break endif proxy "take" noun1 } grammar remove *present >remove grammar take off *present >remove grammar doff *present >remove {+remove if noun1 hasnt WORN if noun1(parent) = player write "You are not wearing " noun1{the} .
^ set TIME = false break endif endif if noun1 hasnt WORN proxy "take" noun1 break endif if noun1(mass) > player(quantity) write "You are carrying too much to remove " noun1{the} .
^ set TIME = false break endif override set player(quantity) - noun1(mass) ensure noun1 hasnt WORN write "You remove " noun1{the} .
^ } grammar wear *held >wear grammar put on *held >wear grammar put *held on >wear grammar don *held >wear {+wear if noun1 hasnt WEARABLE write "You can't wear " noun1{the} .
^ set TIME = false break endif if noun1 has WORN write "You are already wearing " noun1{the} .
^ set TIME = false break endif override set player(quantity) + noun1(mass) ensure noun1 has WORN write "You put " noun1{the} " on.
^" } grammar talk to *present >talk_to {+talk_to if here has UNDER_WATER write "Talking under water isn't very easy.
^" set TIME = false break endif if noun1 hasnt ANIMATE write "I don't think talking to " noun1{the} " is going to help somehow.
^" set TIME = false break endif if noun1 has DEAD writenoun1{The} " " noun1{is} " a bit too dead to respond.
^" set TIME = false break endif if noun1 = player write "It's the first sign of madness you know...
^" break endif override writenoun1{The} " " noun1{doesnt} " appear very interested in a " write "conversation.
^" } grammar eat *present >eat {+eat break +darkness write "You can't eat " noun1{the} .
^ set TIME = false } grammar drink from *present >drink_from grammar sip from *present >drink_from {+drink_from break +darkness execute +liquidwrite noun1 if INDEX = true proxy "drink " noun3 set TIME = false break endif write "There is nothing to drink in " noun1{the} .
^ set TIME = false } grammar drink *present >drink grammar sip *present >drink {+drink break +darkness break +reach noun1 if noun1 hasnt LIQUID write "You can't drink " noun1{the} .
^ set TIME = false break endif override write "You drink " noun1{the} .
^ move noun1 to limbo } grammar flick *present >flick {+flick break +darkness break +reach noun1 if noun1 has LIQUID write "A wet hand is your only reward.
^" break endif override write "Flicking " noun1{the} " achieves nothing more than causing a sharp " write "pain in your index finger.
^" } grammar press *present >press grammar poke *present >press {+press break +darkness break +reach noun1 if noun1 has LIQUID write "A wet hand is your only reward.
^" break endif override write "Pressing " noun1{the} " has no discernible effect.
^" } grammar light *present with *held >light_with grammar burn *present with *held >light_with grammar ignite *present with *held >light_with grammar set fire to *present with *held >light_with {+light_with if here has UNDER_WATER write "I don't think you are going to be lighting anything under water.
^" set TIME = false break endif break +reach noun1 if noun1 hasnt FLAMMABLE writenoun1{The} " " noun1{is} " not at all flammable.
^" set TIME = false break endif if noun2 hasnt IGNITABLE write "I don't see how you can light " noun1{the} " using " noun2 .
^ set TIME = false break endif if noun1(quantity) = 0 writenoun1{The} " has run out.
^" break endif if noun1 has BURNING writenoun1{The} " " noun1{is} " already lit.
^" set TIME = false break endif override write "You light " noun1{the} " using " noun2 .
^ ensure noun1 has BURNING ensure noun1 has LUMINOUS } grammar burn *present >light grammar light *present >light grammar ignite *present >light grammar set fire to *present >light {+light if here has UNDER_WATER write "I don't think you are going to be lighting anything under water.
^" set TIME = false break endif break +reach noun1 if noun1 has IGNITABLE override write "You produce a brief flame.
^" break endif if noun1 hasnt FLAMMABLE writenoun1{The} " " noun1{is} " not at all flammable.
^" set TIME = false break endif if noun1 has BURNING writenoun1{The} " " noun1{is} " already alight.
^" set TIME = false break endif write "What did you intent to light " noun1{the} " with?
^" set TIME = false } grammar extinguish *present >extinguish grammar put out *present >extinguish grammar put *present out >extinguish {+extinguish if noun1 hasnt BURNING writenoun1{The} " " noun1{is} " not lit.
^" set TIME = false break endif break +reach noun1 override write "You put out " noun1{the} .
^ ensure noun1 hasnt BURNING ensure noun1 hasnt LUMINOUS } grammar swim west >swim_west {+swim_west if here has UNDER_WATER set WAY = WEST travel west break endif if here has ON_WATER set WAY = WEST travel west break endif write "I don't see how you can swim when you are not in water.
^" set TIME = false } grammar west >west grammar go west >west grammar walk west >west {+west set WAY = WEST travel west } grammar swim east >swim_east {+swim_east if here has UNDER_WATER set WAY = EAST travel east break endif if here has ON_WATER set WAY = EAST travel east break endif write "I don't see how you can swim when you are not in water.
^" set TIME = false } grammar east >east grammar go east >east grammar walk east >east {+east set WAY = EAST travel east } grammar swim south >swim_south {+swim_south if here has UNDER_WATER set WAY = SOUTH travel south break endif if here has ON_WATER set WAY = SOUTH travel south break endif write "I don't see how you can swim when you are not in water.
^" set TIME = false } grammar south >south grammar go south >south grammar walk south >south {+south set WAY = SOUTH travel south } grammar swim southeast >swim_southeast {+swim_southeast if here has UNDER_WATER set WAY = SOUTHEAST travel southeast break endif if here has ON_WATER set WAY = SOUTHEAST travel southeast break endif write "I don't see how you can swim when you are not in water.
^" set TIME = false } grammar southeast >southeast grammar go southeast >southeast grammar walk southeast >southeast {+southeast set WAY = SOUTHEAST travel southeast } grammar swim southwest >swim_southwest {+swim_southwest if here has UNDER_WATER set WAY = SOUTHWEST travel southwest break endif if here has ON_WATER set WAY = SOUTHWEST travel southwest break endif write "I don't see how you can swim when you are not in water.
^" set TIME = false } grammar southwest >southwest grammar go southwest >southwest grammar walk southwest >southwest {+southwest set WAY = SOUTHWEST travel southwest } grammar swim north >swim_north {+swim_north if here has UNDER_WATER set WAY = NORTH travel north break endif if here has ON_WATER set WAY = NORTH travel north break endif write "I don't see how you can swim when you are not in water.
^" set TIME = false } grammar north >north grammar go north >north grammar walk north >north {+north set WAY = NORTH travel north } grammar swim northeast >swim_northeast {+swim_northeast if here has UNDER_WATER set WAY = NORTHEAST travel northeast break endif if here has ON_WATER set WAY = NORTHEAST travel northeast break endif write "I don't see how you can swim when you are not in water.
^" set TIME = false } grammar northeast >northeast grammar go northeast >northeast grammar walk northeast >northeast {+northeast set WAY = NORTHEAST travel northeast } grammar swim northwest >swim_northwest {+swim_northwest if here has UNDER_WATER set WAY = NORTHWEST travel northwest break endif if here has ON_WATER set WAY = NORTHWEST travel northwest break endif write "I don't see how you can swim when you are not in water.
^" set TIME = false } grammar northwest >northwest grammar go northwest >northwest grammar walk northwest >northwest {+northwest set WAY = NORTHWEST travel northwest } grammar climb up *here >climb_up grammar walk up *here >climb_up grammar go up *here >climb_up {+climb_up write "You can not climb up " noun1{the} .
^ set TIME = false } grammar climb down *here >climb_down grammar walk down *here >climb_down grammar go down *here >climb_down {+climb_down write "You can not climb down " noun1{the} .
^ set TIME = false } grammar enter *here >enter grammar go *here >enter grammar go through *here >enter grammar go in *here >enter grammar climb on *here >enter grammar climb in *here >enter grammar get in *here >enter grammar get on *here >enter grammar jump in *here >enter {+enter break +reach noun1 write "You can not enter " noun1{the} .
^ set TIME = false } grammar enter *anywhere >enter_location grammar go *anywhere >enter_location grammar go through *anywhere >enter_location grammar go to *anywhere >enter_location grammar go in *anywhere >enter_location grammar climb on *anywhere >enter_location grammar climb in *anywhere >enter_location grammar get in *anywhere >enter_location grammar jump in *anywhere >enter_location grammar get on *anywhere >enter_location {+enter_location break +reach noun1 set INDEX = 0 repeat if here(INDEX) = noun1 execute "+go_direction" INDEX break endif set INDEX + 1 until INDEX = 12 write "You can not go to " noun1{the} .
^ set TIME = false } {+go_direction if noun4 = NORTH proxy "go north" break endif if noun4 = NORTHEAST proxy "go northeast" break endif if noun4 = EAST proxy "go east" break endif if noun4 = SOUTHEAST proxy "go southeast" break endif if noun4 = SOUTH proxy "go south" break endif if noun4 = SOUTHWEST proxy "go southwest" break endif if noun4 = WEST proxy "go west" break endif if noun4 = NORTHWEST proxy "go northwest" break endif if noun4 = UP proxy "go up" break endif if noun4 = DOWN proxy "go down" } grammar climb *here >climb grammar scale *here >climb {+climb write "You can not climb up " noun1{the} .
^ set TIME = false } grammar swim in >swim_in {+swim_in if here has UNDER_WATER set WAY = IN travel in break endif if here has ON_WATER set WAY = IN travel in break endif write "I don't see how you can swim when you are not in water.
^" set TIME = false } grammar get in >in grammar climb in >in grammar in >in grammar enter >in grammar walk in >in {+in set WAY = IN travel in } grammar swim out >swim_out {+swim_out if here has UNDER_WATER set WAY = OUT travel out break endif if here has ON_WATER set WAY = OUT travel out break endif write "I don't see how you can swim when you are not in water.
^" set TIME = false } grammar get out >out grammar out >out grammar exit >out grammar leave >out grammar climb out >out grammar walk out >out grammar go out >out {+out set WAY = OUT travel out } grammar surface >swim_up grammar swim up >swim_up {+swim_up if here has UNDER_WATER set WAY = UP travel up break endif if here has ON_WATER set WAY = UP travel up break endif write "I don't see how you can swim when you are not in water.
^" set TIME = false } grammar up >up grammar climb >up grammar climb up >up grammar jump up >up grammar go up >up grammar walk up >up {+up set WAY = UP travel up } grammar swim down >swim_down grammar dive down >swim_down grammar dive >swim_down {+swim_down if here has UNDER_WATER set WAY = DOWN travel down break endif if here has ON_WATER set WAY = DOWN travel down break endif write "I don't see how you can swim when you are not in water.
^" set TIME = false } grammar down >down grammar climb down >down grammar jump down >down grammar go down >down grammar walk down >down {+down set WAY = DOWN travel down } grammar look >look_around grammar watch >look_around {+look_around break +darkness look } grammar look under *present >look_under {+look_under break +darkness if noun1(mass) >= heavy : noun1 has LOCATION write "You can't see under " noun1{the} .
^ set TIME = false break endif write "There is nothing unusual under " noun1{the} .
^ } grammar look behind *present >look_behind {+look_behind break +darkness if noun1(mass) >= heavy : noun1 has LOCATION write "You can't see behind " noun1{the} .
^ set TIME = false break endif write "There is nothing unusual behind " noun1{the} .
^ } grammar look through *present >look_through grammar look out *present >look_through {+look_through break +darkness write "You can't look through " noun1{the} .
^ set TIME = false } grammar look through *held at *present >look_through_at {+look_through_at break +darkness proxy "look at " noun2 " through " noun1 } grammar look at *present through *held >look_at_through grammar look at *present with *held >look_at_through {+look_at_through break +darkness if noun1 = noun2 write "You can't look at " noun1{the} " through " if noun1 has PLURAL write "themselves.
^" else write "itself.^" set TIME = false break endif override write "You can't look at " noun1{the} " through " noun2{the} .
^ set TIME = false } grammar wait >wait grammar z >wait {+wait write "Time passes...
^" } grammar listen >listen {+listen write "You don't hear anything out of the ordinary.
^" } grammar listen to *present >listen_to grammar listen at *present >listen_to {+listen_to write "You don't hear anything out of the ordinary.
^" } grammar use *present >use grammar work *present >use grammar operate *present >use {+use break +darkness if noun1 has ANIMATE write "I acknoweledge that I probably don't want to know the answer to " write "this question, but in what way did you want to use " noun1{the} .
^ set TIME = false break endif write "I'm afraid you are going to have to be a bit more specific.
^" } grammar rotate *present >turn grammar turn *present >turn grammar twist *present >turn grammar spin *present >turn {+turn break +darkness break +reach noun1 write "You can't turn " noun1{the} .
^ set TIME = false } grammar turn on *present >turn_on grammar turn *present on >turn_on grammar switch on *present >turn_on grammar switch *present on >turn_on {+turn_on if noun1 hasnt SWITCHABLE write "You can't turn " noun1{the} " on.
^" set TIME = false break endif break +reach noun1 if noun1 has ON writenoun1{The} " " noun1{is} " already on.
^" set TIME = false break endif override write "You switch on " noun1{the} .
^ ensure noun1 has ON } grammar turn off *present >turn_off grammar turn *present off >turn_off grammar switch off *present >turn_off grammar switch *present off >turn_off {+turn_off if noun1 hasnt SWITCHABLE write "You can't turn " noun1{the} " off.
^" set TIME = false break endif break +reach noun1 if noun1 hasnt ON writenoun1{The} " " noun1{is} " already off.
^" set TIME = false break endif override write "You switch off " noun1{the} .
^ ensure noun1 hasnt ON } grammar pour *present >pour {+pour break +darkness if noun1 hasnt LIQUID write "You can't pour " noun1{the} .
^ set TIME = false break endif set noun3 = noun1(parent) if noun3 = false : noun3(parent) <> player write "You don't have " noun1{the} .
^ set TIME = false break endif if noun3 has CLOSED write "I don't see " noun1{the} " here.
^" set TIME = false break endif break +reach noun1 override write "You pour " noun1{the} " all over the ground.
^" move noun1 to limbo } grammar list objects >list_objs {+list_objs select noun3(mass) > 0 write noun3{The} noun1{The} ":
^"
write "MASS: " noun1(mass)
^
write "NUMBER: " INDEX
^
write "QUANTITY: " noun1(quantity)
^
set noun4 = noun1(parent)
write "PARENT: " noun4{The}
^
write "HAS DARK?: "
if noun1 has DARK
write YES
^
else
write NO
^
endif
write "HAS DARKNESS?: "
if noun1 has DARKNESS
write YES
^
else
write NO
^
endif
}
grammar tip *present on *present >pour_on
grammar tip *present down *present >pour_on
grammar tip *present in *present >pour_on
grammar tip *present over *present >pour_on
grammar pour *present down *present >pour_on
grammar pour *present on *present >pour_on
grammar pour *present in *present >pour_on
grammar pour *present over *present >pour_on
{+pour_on
break +darkness
if noun1 hasnt LIQUID
write "
You can't pour " noun1{the} .
^ set TIME = false break endif break +reach noun1 set noun3 = noun1(parent) if noun3 = false : noun3(parent) <> player write "You do not have " noun1{the} .
^ set TIME = false break endif if noun3 has CLOSED write "I can't see " noun1{the} " here.
^" set TIME = false break endif break +reach noun2 override execute +liquidwrite noun2 if INDEX = true writenoun2{The} " already contain" noun2{s} " " noun3{the} ". If you " write "were to also add " noun1{the} " they would mix together.
^" set TIME = false break endif if noun2 has CONTAINER if noun2 hasnt CLOSED override write "You pour " noun1{the} " into " noun2{the} .
^ move noun1 to noun2 break endif endif if noun2(parent) > max_objects set noun3 = noun2(parent) if noun3 has CONTAINER if noun3 hasnt CLOSED writenoun1{the} " run" noun1{s} " off " noun2{the} " and goes into " write noun3 .
^ move noun1 to noun3 break endif endif endif writenoun1{The} " runs off " noun2{the} " and goes all over the ground.
^" move noun1 to limbo } grammar blankjacl >blankjacl {+blankjacl write "A fiendishly clever move.
^" } grammar instructions >instructions grammar help >instructions {+instructions write "Interactive fiction involves the reader in a way that static stories " write "do not. Rather than reading sequentially from beginning to end, you " write "control the actions of the main character by typing commands in the " write "form of simple English sentences. Before setting out on your adventure " write "there are a few concepts that must be explained in order for you to " write "interact successfully with the virtual world created by the author." write "
The physical space that you will be exploring is divided up into " write "discrete units called locations. Locations may be travelled between " write "using the "You can go:" hyperlinks or the following commands...
^" write "Command | To travel | Command | To travel | write "
---|---|---|---|
N | North | S | South | " write "
E | East | W | West | " write "
NE | Northeast | NW | Northwest | " write "
SE | Southeast | SW | Southwest | " write "
U | Up | D | Down | " write "
IN | In | OUT | Out | " write "
The description of each location will tell you which way you can " write "travel from it. Be aware however that some exits may only be " write "available under certain circumstances such as while a door is open " write "or a bridge lowered.
^" write "Within these locations you will find many objects that you may " write "manipulate. These objects may be referred to by as few " write "or as many of their names as is required to uniquely identify it." write "For example, if the story informs you that ~There is a silver key " write "resting here.~ Then it may be referred to as either ~silver~, ~key~ or " write "~silver key~. If your reference is ambiguous, such as using ~key~ " write "when there is both a silver and a gold key in the current location " write "then you will be prompted to be more specific.
^" write "The next major concept of interactive fiction to understand is the " write "way in which you interact with these objects within " write "the locations. The main aspect of the command interface " write "to come to grips with is the scale, in other words, how much can be " write "achieved with a single command. As you have seen earlier, moving from " write "one location to another requires a single command. Commands such as " write "~find dave~ or ~go to the library~ are not valid. You must manually " write "move around the available world to achieve these tasks yourself. For " write "this reason, making a map as you go is highly recommended.
^" write "The basic sentence structures understood by the game are...
^" write "action | eg. scream | " write "
action object | eg. take book | " write "
action object preposition object | eg. unlock door with key | " write "
An action does not necessarily have to be a single word. For instance, " write "~examine rock through magnifying glass~, an example of the last " write "syntax, may also be expressed as ~look at rock through magnifying " write "glass~.
^" write "To further illustrate how much can be achieved in a single turn, " write "consider the following list (being just some of the valid actions)...
^" write "turn | read | pull | push | eat | cut | " write "
lock | unlock | rub | attack | taste | drink | " write "
break | smell | listen | pour | move | light | " write "
attack | blow | throw | wear | open | close | " write "
take | drop | insert | remove | " write "
The words ~it,~ ~them,~ ~him~ and ~her~ may be used to indicate the " write "last appropriate object referred to in one of your commands. " write "The words ~itself,~ ~themselves,~ ~himself~ and ~herself~ may be used " write "to refer to the subject of the current command such as, ~ask dan about " write "himself~.
^" write "The word ~all~ or ~everything~ may be used in place of an object " write "when using one of the verbs in the bottom row of the table above.
^" write "However, a task such as defusing a bomb would generally not be achieved by " write "typing ~defuse bomb~. The following is a sample transcript to give " write "you a better idea of how this task such as this might be achieved.
^" write ">examine bomb
"
write "The bomb is about a foot square and has a small panel in its upper "
write "surface. The panel is currently closed.
>listen to bomb
"
write "The bomb is making an ominous ticking sound.
>open panel
"
write "You open the panel to reveal a red wire, a green wire, a blue wire, "
write "a clock and some dynamite.
>i
"
write "You are carrying a bomb manual, an insurance policy and some wire "
write "cutters.
>read manual
"
write "Leafing through the book you come to the page on diffusing. Seems "
write "straight forward enough, just cut the blue wire then the red one.
>cut blue wire with cutters
"
write "Reaching carefully in to the bomb's casing you cut the blue wire. So "
write "far so good.
>cut red wire with cutters"
write "Holding you breath you snip the red wire."
>listen to bomb"
write "The bomb, thankfully, is now silent."
As you can see, each task you wish to achieve must be broken down " write "into its component actions.
^" write "During the course of the story you may encounter other computer " write "controlled characters. These characters may be interacted with using " write "the following commands...
^" write "TALK TO <character>"
write "GIVE <object> TO <character>"
write "SHOW <object> TO <character>"
write "ASK <character> FOR <object>"
write "ASK <character> ABOUT <object>"
write "TELL <character> ABOUT <object>"
There are also some special commands for interacting with the " write "program rather than the world it simulates...
^" write "Command | Action | " write "
---|---|
VERBOSE | always describe locations | " write "
BRIEF | only describe new locations | " write "
RESTART | start from the beginning | " write "
SCORE | display your score and rank | " write "
LOOK | describe the current location | " write "
SAVE | save the current position | " write "
RESTORE | restore a saved position | " write "
I | horizontal list of possessions | " write "
INV | vertical list of possessions | " write "
UNDO | take back last command | " write "
AGAIN | repeat the last command | " write "
INFO | display version information | " write "
ABOUT | display game information | " write "
NOTE: If you are looking for a clue relevant to a specific location, " write "type ~hint~, ~first hint~ or ~hint one~ in that location. The first " write "hint will be a subtle clue with ~hint two~ being more blatant and " write "~hint three~ being exact commands to type.
^" write "You are now ready to embark on your first adventure into the " write "world of interactive fiction." write " Remember to make a map as you go and read each " write "part carefully as vital clues may be hidden in the descriptions of the " write "locations and objects you come across. Examining every object you can " write "refer to is a good idea, as is saving your position often. Well, good " write "luck, and above all have fun!
^" set TIME = false } ; SPEAKING TO OTHER OBJECTS ; ---------------------------------------------------------------------------- ; Grammar statements beginning with an object must be defined last in the game ; to avoid confusion with verbs that may also be objects such as "drink drink" grammar *present give myself *carried >ask_for grammar *present give *carried to myself >ask_for grammar *present give *carried to me >ask_for grammar *present give myself *anywhere >ask_for grammar *present give *anywhere to myself >ask_for grammar *present give *anywhere to me >ask_for grammar *present tell myself about *carried >ask_about grammar *present tell myself all about *carried >ask_about grammar *present what do you know about *carried >ask_about grammar *present tell myself about *anywhere >ask_about grammar *present tell myself all about *anywhere >ask_about grammar *present what do you know about *anwhere >ask_about grammar *present who are you >who? grammar *present what is your name >who? grammar *present what is your name? >who? {+who? proxy "ask " noun1 " about " noun1 } grammar *present sorry >apologise grammar *present im sorry >apologise grammar *present i am sorry >apologise grammar apologise to *present >apologise {+apologise if noun1 hasnt ANIMATE write "Kooky.
^" break endall writenoun1{the} " assure" noun1{s} " you that no apology is necessary.
^" } grammar *present thanks >thank grammar *present thank you >thank grammar thank *present >thank {+thank if noun1 hasnt ANIMATE write "Kooky.
^" break endall write "~Don't mention it,~ " noun1{the} " replies.
^" } grammar greet *present >greet grammar *present hello >greet grammar *present hi there >greet grammar *present dr >greet grammar *present doctor >greet grammar *present hi >greet {+greet if here has UNDER_WATER write "Talking under water isn't very easy.
^" set TIME = false break endall if noun1 hasnt ANIMATE write "I don't think talking to " noun1{the} " is going to help somehow.
^" set TIME = false break endall if noun1 has DEAD writenoun1{The} " " noun1{is} " a bit too dead to respond.
^" set TIME = false break endall if noun1 = player write "It's the first sign of madness you know...
^" break endall override writenoun1{The} if noun1 has PLURAL write " nod.
^" else write " nods.^" } grammar *present yes >say_yes grammar *present okay >say_yes grammar *present yeah >say_yes {+say_yes writenoun1{The} " appear" noun1{s} " to pay no attention.
^" } grammar *present no >say_no {+say_no writenoun1{The} " appears to pay no attention.
^" } grammar *present *carried >say_object grammar *present *anywhere >say_object {+say_object proxy "say " noun2 " to " noun1 } grammar *anywhere >noun_only {+noun_only if noun1 isnt *present write "You don't see any such thing.
^" set TIME = false break endif write "There is no verb in that sentence.^" set TIME = false }