Attribute male; ! no male or female for an animale will make "undefined"
Attribute is_crayon;
Attribute popper;
Property counter; ! an extra number
Global change_sta = 0;
Global the_word = 0;
Object LibraryMessages "lm"
with before [;
Think: "Don't hurt yourself trying.";
Dig: "Digging here won't get you anywhere.";
Jump: "Enjoying yourself?";
Sorry: "Oh, don't apologize.";
Mild: "Not quite.";
Strong: "[Your intelligence just went down.]";
Attack: "Suppress your primal urges for a later time.";
Sleep: "You haven't slept in years. You let Leo do all the sleeping for
for you.";
];
[ ResetVagueWords i;
if (i has animate && i~=player)
{ if (i has male) himobj=i;
if (i has female) herobj=i;
if ((i hasnt male) && (i hasnt female)) { ! undefined gender
himobj=i;
herobj=i;
itobj=i;
}
}
else itobj=i;
];
! change_sta is set whenever the player moves somewhere, so
! the status line will erase and the new location name will be written.
[ PlayerTo newplace flag;
change_sta = 1;
move player to newplace;
while (parent(newplace)~=0) newplace=parent(newplace);
location=newplace;
real_location=location;
AdjustLight(1);
if (flag==0) <Look>;
if (flag==1) { NoteArrival(); ScoreArrival(); }
if (flag==2) LookSub(1);
];
[ GoSub i j k df movewith thedir;
movewith=0;
i=parent(player);
if ((location~=thedark && i~=location)
|| (location==thedark && i~=real_location))
{ j=location;
if (location==thedark) location=real_location;
k=RunRoutines(i,before); if (k~=3) location=j;
if (k==1)
{ movewith=i; i=parent(i); jump gotroom; }
if (k==0) L__M(##Go,1,i); rtrue;
}
.gotroom;
thedir=noun.door_dir;
if (ZRegion(thedir)==2) thedir=RunRoutines(noun,door_dir);
j=i.thedir; k=ZRegion(j);
if (k==3) { print (string) j; new_line; rfalse; }
if (k==2) { j=RunRoutines(i,thedir);
if (j==1) rtrue;
}
if (k==0 || j==0)
{ if (i.cant_go ~= 0) PrintOrRun(i, cant_go);
rfalse;
}
if (j has door)
{ if (j has concealed) return L__M(##Go,2);
if (j hasnt open)
{ if (noun==u_obj) return L__M(##Go,3,j);
if (noun==d_obj) return L__M(##Go,4,j);
return L__M(##Go,5,j);
}
if (ZRegion(j.door_to)==2) j=RunRoutines(j,door_to);
else j=j.door_to;
if (j==0) return L__M(##Go,6,j);
if (j==1) rtrue;
}
if (movewith==0) move player to j; else move movewith to j;
df=OffersLight(j);
if (df~=0) { location=j; lightflag=1; }
else
{ if (location==thedark) DarkToDark();
real_location=j;
location=thedark; lightflag=0;
}
if (AfterRoutines()==1) rtrue;
if (keep_silent==1) rtrue;
change_sta = 1;
LookSub(1);
];
Include "Grammar";
! ----------------------------------------------------------------------------
! The revenge of the verbs
! ----------------------------------------------------------------------------
[ GazeSub;
"You gaze for a while. Nothing happens.";
];
[ ShakeSub;
"Nothing happens."; ];
[ ShakeHandsSub;
if (noun hasnt animate) "No hands to shake.";
"Your attempt at friendliness is ignored."; ];
[ InfoSub;
"This is a ludicrous game. It is impossible to make mistakes that will
prevent you from winning. Common sense should be avoided whenever possible.^^
My apologies (somewhat) to Graham Nelson, Andrew Plotkin, and anyone who
loves disco music. (Play to find out why.)^^
Special thanks to Admiral Jota and Bernd Schmidt for beta testing.
Also thanks to Dave Gatewood and Mark Tilford for finding post-beta
bugs, and all the people who pointed out the idiotic bug in release 2
that kept the player from winning.^^
Help is available through the HINT command, but if you want to avoid
temptation type HINTS OFF. The hints cannot be turned on again if you
turn them off.";
];
[ JumpOffSub;
"That isn't something you can jump off."; ];
[ XyzzySub;
print "Your senses are assaulted by a vision...^^";
style bold;
print "You are in a misty little haze of massages, all alike.^^";
style roman;
"The vision passes.";
];
Fake_action Torch;
[ TorchSub;
"That isn't something you need to burn.";
];
[ FireSub;
if (noun==cannon) {
if (second==flamethrower) <<Fire Flamethrower Cannon>>;
if (second==0) "The cannon is supposed to be fired by lighting
up the fuse.";
}
if (noun~=Flamethrower) "That's not something you can fire.";
if (((Flamethrower hasnt general)&&(second==0))||(second==cart)) {
move Flamethrower to Market;
give Flamethrower general;
remove cart;
"You push the trigger (colored green), and a large part of the
cart catches on fire. The cart decides to not go through the the
~burning away slowly~ bit and skips right to disappearing in a
puff of smoke. The flamethrower (slightly charred) falls to the
ground. It plays a charming tune indicating it has annihilated
a target.";
}
if (noun notin player) {
print "[first taking ", (the) noun, "]^";
<Take noun>;
if (noun notin player)
"Unless you are torching whatever it is pointing at, you need to
be holding the flamethrower to fire it.";
<<Fire noun second>>;
}
if (second==0) "You amuse yourself by briefly firing the flamethrower
in a random direction.";
<<Torch second>>;
];
[ FireRevSub;
<<Fire second noun>>;
];
[ BurnSub;
if ((second==Powder) || (second==mpowder))
"That's not something you can start fires with. Not all by itself,
at least.";
if (second~=Flamethrower) "That's not something you can start fires with.";
<<Fire second noun>>;
];
[ BlobSub; ! the secret word
"Phlegm Copyright 1996 Jason Dyer";
];
[ FindSub;
"That isn't going to be too productive.";
];
[ FneedSub;
"That isn't going to be too productive.";
];
[ MvoiceSub;
"Leo's the one talented at throwing his voice.";
];
[ OvoiceSub;
"I don't understand what you mean.";
];
[ GvoiceSub;
"Leo's the one talented at throwing his voice.";
];
[ LickSub;
if (noun has animate) "This is the wrong game for that sort of thing.";
"There's no point in licking that.";
];
[ PlaySub;
"That won't play.";
];
[ FillTSub;
"That isn't going to work.";
];
[ PlayWithSub;
if (noun has animate) "That would be somewhat rude.";
"You fiddle with ", (the) noun, " for a while.";
];
[ TalkSub;
"The proper way of talking to someone is like this: ~Leo, Hello.~";
];
[ HelpInfo i zz kp;
! if (menu_item==1)
zz=zobj.counter;
print "(Press ENTER to return to menu, or H for another hint.)^^";
for (i=1:i<=zz:i++) {
print "(",i,"/",zz,") ", (string) (zobj.&the_hints)--> (i-1);
if (i==zz) print_ret "^";
new_line; new_line;
@read_char 1 0 0 kp;
if ((kp~='H') && (kp~='h')) return 2;
}
];
global hoff = 0;
[ HelpSub;
if (hoff==1) "The hints have been turned off.";
change_sta = 1;
DoMenu("There is information provided on the following:^\
^ How do I get at the chest?
^ What do I do with the cannon?
^ What should I do at the End of the World?
^ How do I get the maroon crayon?
^ Is the lunatic useful for anything?
^ How do I get the record?
^ Where do I find the Magic Crayons of Destiny?
^ What am I supposed to do at the Moose Headquarters?
^ How do I get rid of the crowd listening to the speaker?
^ How do I get the flamethrower out of the cart?
^ What can I do with the haystack?^",
HelpMenu, HelpInfo);
];
[ HswiSub;
hoff=1;
"The hints are now off.";
];
[ PopSub;
if (second hasnt popper) "That's not the proper tool for the job.";
"That wouldn't be too useful.";
];
[ PopRSub;
<<pop second noun>>;
];
[ DanceSub;
"Your last attempt resulted in having five stitches. Don't push your luck.";
];
! ----------------------------------------------------------------------------
! The real star of the show
! ----------------------------------------------------------------------------
Class cray
has is_crayon
with
before [;
Take, Remove:
if ((parent(self)==d1)||(parent(self)==d2)||
(parent(self)==d3)||(parent(self)==d4))
"The crayon is fixed into place.";
],
after [;
Insert:
if ((second~=d1)&&(second~=d2)&&(second~=d2)&&(second~=d4))
rfalse;
writing.number=writing.number+1;
if (writing.number<4) print_ret
(The) noun, " clicks neatly into place.";
move compartment to Ruins; give compartment general;
if (leo.number==0) Leo.number=30;
print_ret (The) noun, " clicks neatly into place. A deep throbbing resonates as
a secret compartment opens in the wall.";
];
Object limbo "limbo"
with name "limbo";
Object Leo "Leo"
has proper animate,
with name "leo" "lemming",
number 1,
counter 0,
! 0 indicates normal
! 1 indicates dozing
! 2-5 indicates script starting at disco
! 6-7 indicates moose script
! 30 indicates quip
invent [ i;
if (inventory_stage==2)
{ i=self.number;
if (i==1) print " (dozing away)";
}
],
before [; Eat, Torch: "This game will admittedly let you sink to some
pretty low moral values. This is not one of them.";
],
life [; ! tell, give, order, show, throwat
Ask: if (self.number==1) "Leo needs to be awake for you to do that.";
switch (second) {
'Leo': "~I'm not very good at talking about myself.~";
'player': "~You're my partner in crime, what else can I say?~";
'brother': "~He was a good brother. He died when he got pushed
off a cliff by some film people trying to make a film about
lemmings jumping off cliffs. Horrible.~ Leo shudders at
the memory.";
'flamethrower': "~Very nice. Useful for making bread products.~";
'lunatic': "~He seems to be a fine chap to me. Probably had too
much sugar in his cereal one day and snapped.~";
'chest', 'treasure', 'phlegm': "~It's a chest, it's high
up, and we can't reach it. Have I covered everything?~";
'disco', 'music': "~Disco music is the basic building block of all
matter. Scientists just haven't looked deep enough yet.~";
'coat', 'pocket': "~Very cozy. Certainly better than that hotel
we stayed at on our last trip. It had ants the size of gorillas.~
Leo is exaggerating, of course, but only slightly.";
'wibble': "~Speaking in tongues, maybe?~";
'lemming', 'lemmings': "~Lemmings? What? Where? Who are you
talking about?~";
'rubble': "~I like rubble. It invigorates me.~";
'moose': "~I never liked moose. I used to have nightmares of
them chasing me.~";
'edge', 'end', 'world': "~Great place. This town should advertise
it more. There could be an entire theme park based around it.~";
default:
switch (random(3)) {
1: "~Can't help you there, sorry.~";
2: "~I can't think of anything meaningful to say about that.~";
3: "~Nothing witty comes to mind about that, sorry.~";
}
}
Answer: if (self.number==1) "Leo needs to be awake for you to do that.";
switch(noun)
{ 'hello', 'hallo', 'hi': "~Hello. I'd ask about the weather or
something, but I hardly pay attention to that sort of thing.~";
default:
"~Can't help you there, sorry.~";
}
Order: if (self.number==1) "Leo needs to be awake for you to do that.";
switch (random(3)) {
1: "~That isn't in my job description.~";
2: "~Sorry, I have this bad back, you see.~";
3: "~I think that's in your department.~";
}
Kiss: if (self.number==1) { self.number=0; self.counter=0;
if ((location==Disco)&&(Disco hasnt general)) {
give Disco general; self.number = 2; } ! if at disco start script
"Leo wakes suddenly, barely missing your face with his paw. ~What's
the big idea, huh? Trying to make some sort of sentimental movie?~"; }
"Leo avoids you, watching suspiciously.";
Attack: "This game will admittedly let you sink to some pretty low
moral values. This is not one of them.";
WakeOther: if (self.number==1) "You prod Leo for awhile, and he responds
by turning his body a little.";
rfalse;
],
orders
[;
Yes, No: if (self.number==1) "Leo needs to be awake for you to do that.";
'yes', 'no': "~It wasn't that kind of question.~";
Ovoice, Gvoice: if (self.number==1) "Leo needs to be awake for you to do that.";
if (noun~=Giant_Head) "~I don't quite follow what
you're getting at there.~";
if (HQ has general) "~I don't need to mess with that anymore.~";
give HQ general; Leo.number=6; move Leo to limbo;
"Leo pauses for a moment, then his eyes light up. He pops out of your
pocket and disappears between the rows.";
Mvoice: if (self.number==1) "Leo needs to be awake for you to do that.";
"Leo looks just a bit confused.";
Sing: if (self.number==1) "Leo needs to be awake for you to do that.";
"Leo briefly sings part of an aria from a Mozart opera. ~Sorry,
that's all the words I know.~ Leo knows many songs, but only the
first few phrases of each.";
],
daemon [;
if (self.number==1) { ! if dozing
if (self.counter < 10) self.counter++; else
{
self.counter = 0; self.number = 0; ! wake up
if ((location==Disco)&&(Disco hasnt general)) {
give Disco general; self.number = 2; } ! if at disco start script
if (HQ hasnt general)
print "^You feel something twisting in your pocket as Leo ~the Lemming~
pokes his head out of your pocket and sniffs around. ~So, what
trouble have you got us into now?~ Leo is using his British
accent at the moment.^";
if (HQ has general)
print "^You feel Leo suddenly wake up and poke his head partway out of
your pocket, yawning. ~There, much better. Nothing like a quick
nap to get rid of. . .ow!~ Leo scratches his back painfully.^";
}
if (self.number~=2) rfalse;
}
if (self.number==2) { ! if disco script
move self to End_Of_World; self.number=3;
if (pole hasnt general) {
give pole general;
move mcrayon to End_Of_World; }
"^Leo squeals with delight. ~Look, disco!~ He leaps onto the dance floor
and starts spinning around.^^
The scene of a furry animal dancing on a grid of multicolored lights
is not a scene seen by many; you now understand what horror story
writers mean by ~forbidden knowledge.~^^
Your thoughts are diverted by three sounds, in quick succession: ~plop~,
~aaah!~, and ~dong!~. It seems that one of the dancers has sent
Leo airborne.";
}
if (self.number==3) { ! disco script part 2
if (location~=End_Of_World) rfalse;
self.number=4;
"^Leo is staggering around here, the pole still vibrating (which was
apprently Leo's landing spot.)";
}
if (self.number==4) { ! disco script part 3
if (location~=End_Of_World) rfalse;
move self to limbo; self.number=5;
"^Leo walks crookedly back and forth a bit more before plummeting off
the end of the world.^^
~AAAaaaaahhh....!~";
}
if (self.number==5) { ! disco script part 4
if (location~=Normalcy) rfalse;
self.number=0; move self to Coat;
print "^!....hhhaaaaaAAA~ "; style bold;
print "<Plop>"; style roman;
"^^Leo lands upside down in your pocket, then rights himself. ~That was
great! I haven't ridden a roller coaster like that in years!~";
}
if (self.number==6) { ! Moose script part 1
self.number=7; rfalse;
}
if (self.number==7) {
if (location~=HQ) rfalse;
remove Lady; remove Crowd;
give HQ general; move Leo to Coat;
self.number=1; self.counter=6;
style bold; print "^~Fools! You invoke the great curse of Nuag'gatoa!~";
style roman; print "^^All heads turn to the booming voice coming from
the giant moose head.^^";
style bold; print "~One of you has dared to attempt to destroy me, the
mighty moose god of ages, but I am here, and ready for vengeance!~^^";
style roman; print "With that last word a stampede suddenly sends you
sprawling against the wall as the members of the Secret Society of
the Moose run for their lives.^^
Leo rolls on the floor laughing uncontrollably, noticeably battered
from being steamrollered by a crowd of moose fanatics. ~Well,~ he says,
~painful but great fun,~ immediately before jumping into your pocket
and falling asleep instantly.^";
rfalse;
}
if (self.number==30) {
self.number=0;
"^Leo says, ~That's it? I excepted something more impressive, with
fireworks and loud music or something.~";
}
! if awake, and normal
if (random(4)==1) {
if ((Flamethrower in player) && (limbo hasnt general)) {
give limbo general;
"^Leo peers at the flamethrower, saying, ~I used to have one of
those when I was a kid. My brother and I would make cinnamon toast
with it.~";
}
print "^Leo ";
switch(random(5))
{ 1: "peers around with curiosity.";
2: print "practices his ventriloquist skills, throwing his voice
to a distant spot: ~";
switch(random(6))
{ 1: "Rosebud. . .~";
2: "The first meeting of Onion Lovers
Anonymous will begin at midnight.~";
3: "I haven't seen giblets like that in years.~";
4: "Why, when I was your age we had to walk twenty miles in
the snow for one stalk of celery!~";
5: "One milkshake, hold the cup.~";
6: "I knew he was trouble. People wearing bells on their hats
always were.~";
}
3: "does a few back flips, popping in and out of your pocket.";
4: "hums the first few bars of a composition by someone obscure
whose name you can't pronounce.";
5: "wiggles both his ears at the same time.";
}
}
],
description [;
print "You first met Leo ~the Lemming~ hitchhiking near Interstate 10. He
has been a semiconstant companion ever since, being on the whole an
agreeable sort of lemming.";
if (self.number==1) " Presently, Leo is dozing away in your pocket.";
new_line; rfalse;
];
Object Map "treasure map"
with name "treasure" "map" "scrap" "of" "paper",
description "This scrap of paper contains many lines and scribblings
from your travels, the most prominent being large X next to the words
~Treasure located here!~";
! An object that was omitted from the game. I leave in the
! code for the curious types.
! Object Guide "tourist guide"
! with name "tourist" "guide" "yellow",
! !parse name everything..etc
! description "Grabbed from a rack of the tourist center you found just
! upon arriving here, ~Everything You Ever Wanted to Know About Phlegm
! and a Few Things You Didn't~ features a yellow cover, strong binding, nice
! fonts, and articles arranged in reverse alphabetical order. [To look
! something up, type, for example, CONSULT GUIDE ABOUT FISH.]",
! before [ w1 w2 w3;
! Consult:
! if (consult_words == 0) "Zen philosophy isn't covered in the guide.";
! wn = consult_from;
! w1 = NextWord(); w2 = NextWord(); w3 = NextWord();
! if (consult_words == 1 && w1 == 'fish')
! "That topic isn't covered in the guide. (It's not a very good
! example, is it?)";
! if (consult_words == 2 && w1 == 'town' && w2 == 'square')
! "Rumor has it that the landscape decorator was
! set upon by wild dogs shortly after doing this section.";
! if ((consult_words == 3 && w1 == 'treasure' && w2 == 'of'
! && w3 == 'phlegm')||(consult_words == 1 && w1 == 'treasure'))
! "Hmm. This page has been ripped out. Mysterious.";
! "That topic isn't covered in the guide.";
! ];
Object Coat "blue overcoat"
has container worn transparent open,
with name "blue" "overcoat" "coat" "pocket",
capacity 300,
before [;
Disrobe:
print "Let me get this straight: you're wearing a coat passed
down from generation to generation since 1829, and you want to ";
style bold; print "take it off?"; style roman;
" Very-Great-Grampa Darby must be rolling in his grave.";
],
description [;
"Aye, this brings back memories. Dates back all the way
to the winter of 1829 when Very-Great-Grampa Darby was hunting moose.
It's been passed down from generation to generation ever since, hardly
washed, and now has the general appearance of something a private eye
might wear after being roughed up by a few IRS agents. Especially
useful is the pocket that looks like it could hold enough to feed
an entire army. (The edible parts, that is, although Leo has developed
a theory that anything is edible as long as you swallow hard enough.)";
];
Object Square "Town Square"
with description
"Tasteful pastels and neons form a concrete square around
an anomalous growth in the form of a large tree. The odd walls and
spires surrounding give the impression of exits in many directions.",
name "pastels" "neons" "tasteful" "square" "concrete" "ambient" "light"
"walls" "spires" "exits",
sw_to End_Of_World,
ne_to Market,
n_to Market,
se_to Normalcy,
u_to [; <<Climb Tree>>; ],
e_to "After proceeding a short while, you are stopped at a road block
that reads: ~Closed for Construction, Use South Route.~",
s_to "After proceeding a short while, you are stopped at a road block
that reads: ~Closed for Construction, Use East Route.~";
Nearby Tree "tree"
has scenery static,
with description [;
print "It's the sort of thing you would normally find in a park,
but this tree seems to have found itself among tasteful concrete pastels.";
if (chest hasnt general)
" A chest has somehow managed to lodge itself in the tree's upper branches.";
new_line; rtrue;
],
name "tree" "large" "anomalous" "growth" "branches",
before [;
Attack: "The tree gives you a somber look. How a tree can look somber
is left to the imagination of the reader.";
Climb: "The tree refuses to cooperate; none of its branches have
grown into a position convenient to climbing.";
Shake:
"You grip the tree firmly with both arms, shake vigorously, wail
loudly, and gain nothing but the respect and admiration of a crowd
of spectators who just passed by.";
];
Nearby Chest "chest"
has static openable,
with initial "A chest has somehow managed to lodge itself in the tree's upper
branches.", name "chest" "solid" "wooden" "treasure" "of" "phlegm",
description [;
print "A solid wooden chest, with the words ~";
style bold;
print "The Treasure of Phlegm";
style roman;
print "~ printed on the side.";
if (self hasnt general) " It's currently lodged in the upper branches of
the tree in a particularly embarrassing position.";
new_line; rtrue;
],
before [;
if (self hasnt general) {
if (action==##Examine) rfalse;
if (action==##Gaze) "After drying your eyeballs for quite some time,
you glimpse the chest shift close to half a millimeter, but
nothing else happens.";
"The chest is too high up to do anything but gaze longingly at it.";
}
Push, PushDir, Take, LookUnder:
"The chest is far too heavy to lift.";
];
Nearby Cannon "cannon"
has static container open,
with name "cannon" "loose" "old-style" "fuse",
initial "A cannon sits nearby.", capacity 2,
before [ i;
Receive: if (noun==Grail) "And deface a important artifact? Shame
on you.";
Torch:
print "You light the fuse, and it starts burning. . .^^";
if (parent(mpowder)~=Cannon) "The fuse burns out with no gunpowder
to light. A cannon fairy magically appears and puts on a new
fuse before disappearing in a puff of smoke.";
if (children(Cannon)==1) { remove mpowder;
"The cannon makes a loud pop but has
no projectile to launch. A cannon fairy magically appears and puts on a new
fuse before disappearing in a puff of smoke."; }
objectloop (i in Cannon) {
if (i~=mpowder) {
if (i==water_balloon) {
move i to limbo; remove mpowder;
print_ret (The) i, " launches at the tree, exploding in a burst of water.
A cannon fairy magically appears and puts on a new fuse before disappearing
in a puff of smoke.";
}
if (i~=elephant) {
move i to Square; remove mpowder;
print_ret (The) i, " launches at the tree, but bounces off it and to the
ground, hardly making any impression on the tree at all. A cannon fairy
magically appears and puts on a new fuse before disappearing in a puff
of smoke.";
}
if (i==elephant) { ! WIN Game
deadflag=2;
print "After a brief dramatic pause and drumroll sounding somewhere in the
distance, the pink elephant launches directly at the tree, making an
indistinct ~plong~ sound before vaporizing into dust.^^
The chest falls to the ground and pops open.^^";
if (Leo.number==0) print "Leo leaps at the chest with his usual squeal of
delight, fainting in mid-air when he sees the contents of the chest and
bouncing off the tree with a rather more distinct ~plong~ sound than
the elephant made.^^";
print "You peer fearfully into the chest. It contains...it contains...a...^^
~Yes, You Too Can Find Hidden Treasure With This Handy Treasure Kit,
Guaranteed to Work or Your Money Back.~^^
You faint, landing on top of Leo.^^";
style bold; print "[Press any key to continue]"; style roman;
@read_char 1 0 0 i;
@erase_window $ffff;
style bold;
print "^^^~yyyyeeeoooWWWWW!!!~";
style roman; " Leo flees to the southwest, where in the distance you
can hear the ~clang~ of something hitting a metal pole.";
}
}
}
],
description "One of those old-style cannons, aimed directly at
the tree; it has apparently been made after hours of painstaking
research. For those unfamiliar with late 4th century Zilodaxian
technology: a projectile and gunpowder go in the cannon, and the
fuse is lit.";
Object water_balloon "water balloon"
with name "water" "balloon" "green",
description "It's a green water balloon.",
before [;
Eat: move self to limbo; give self ~general;
"You gulp down the water balloon. A few moments later you spit
out a huge gush of water onto the ground.";
];
Object End_Of_World "The End of the World"
with
description [;
print "Stars, galaxies, and fruits of various flavors tumble through
the void. Quite romantic, really, and it seems someone else had the same idea;
some restaurant-style tables are scattered near the edge so customers can take
in the view. A sign leans heavily on a nearby pole. Roads lead off to the
northeast, east, and southeast.";
if (lunatic has general) " There's also a large hole you can enter to the
south.";
new_line; rtrue;
],
number 0,
name "roads" "pole" "stars" "galaxies" "fruits" "various" "flavors"
"void",
before [;
Jump: <<JumpOff Edge>>;
],
se_to [;
if (self.number==0) {
self.number=self.number+1;
"The most horrific mind-numbing terror ever created in the history
of man is in that direction. I urge you to reconsider.";
}
if (self.number==1) {
self.number=self.number+1;
"Please, think carefully about the value you put on your sanity
before continuing.";
}
if (self.number==2) {
print "You win, but I am exempted from responsibility for any damage this might cause...^";
self.number=self.number+1;
return Disco;
}
if (self.number==3) return Disco;
],
s_to [;
if (lunatic has general) return Wall;
"Paths lead in easterly directions.";
],
cant_go [;
if (lunatic has general) "Paths lead in easterly directions. There's
also a hole in the wall to the south you can enter.";
"Paths lead in easterly directions.";
],
w_to "That's the edge. You can jump off it if you feel reckless today.",
e_to Square,
ne_to Square;
Nearby tables "tables"
has static scenery,
with article "some",
description "All the tables are the same style, circular with
four legs and a smooth finish.";
Nearby Edge "edge"
has static scenery,
with name "edge" "end" "of" "world",
before [ temp;
JumpOff: print "You leap into the void. . .^^
A supernova spins by followed by a flock of cows. An astronaut
lands on a watermelon somewhere in the distance, plants some
sort of flag, and is promptly flattened by a large, juicy
tomato. You sail through a hail of water balloons, past
a bunch of electric sparks that look like bad special
effects, and...^^";
style bold; print "[Press any key to continue]"; style roman;
@read_char 1 0 0 temp;
@erase_window $ffff;
print "^^...find yourself falling far higher above the earth than you would
like. After about five seconds of waiting the distance becomes a bit
more comfortable as you embed yourself into the ground, somehow still
intact.";
if (Water_balloon hasnt general) {
move water_balloon to player;
give water_balloon general;
print " Mysteriously, you sense
you've gathered a new object along the way.";
}
if ((Leo.number==0) && (Edge hasnt general))
{ give Edge general;
print "^^Leo says, ~Nice landing.~"; }
new_line;
PlayerTo(Normalcy);
rtrue;
],
description "It ends abruptly, as most edges are apt to do.";
Nearby Sign_1 "sign" ! One of many signs. It must be an omen.
has static scenery,
with name "sign" "heavy",
before [;
Take, Push, PushDir: "It's too heavy.";
],
description "~The End of the World Grill - Closed.~ Also underneath, in
bold print: ~No jumping off the edge! It may be hazardous
to your health.~";
Nearby Pole "pole"
has static scenery,
with name "tall" "metal" "pole",
number 0,
initial 0,
before [;
Attack, Shake: print "The pole shakes and rings loudly.";
if ((self has general)&&(mcrayon hasnt general))
{ give mcrayon general;
" The crayon falls off the pole to the ground."; }
if (self hasnt general)
{ move mcrayon to End_Of_World; give self general; give mcrayon general;
" A crayon falls off the pole to the ground."; }
new_line; rtrue;
Lick: "Disappointingly, your tongue does not stick to the pole.";
],
description [;
print "It's a tall, metal pole.";
if ((self has general)&&(mcrayon hasnt general)) " You notice a crayon
situated on the top of the pole.";
new_line; rtrue;
];
Nearby Lunatic "lunatic"
has animate,
with name "lunatic",
number 0,
! 0 indicates gurgling
! 1 indicates wibbling
! 2 indicates plucking strings
initial [i; i==random(3);
print "A nondescript lunatic holding a guitar is on the ground here, ";
if (i==0) "gurgling.";
if (i==1) "wibbling.";
if (i==2) "plucking strings.";
],
before [;
Eat: "Really not all that tasty looking.";
],
each_turn [i;
i=random(14);
if (i==5) "^The lunatic plucks a few chords.";
if (i==6) "^The lunatic rolls along the floor for a few seconds.";
if (i==7) "^The lunatic says, ~Wibble.~";
if (i==8) "^The lunatic gurgles.";
],
description "The lunatic shows the classic symptoms: wild eyes, foamy
mouth, and a tendency to say ~wibble~ every once in a while. The guitar
under the arm doesn't seem standard, but hey, whatever works.";
Nearby Guitar "guitar"
has static scenery,
with name "guitar",
before [; Examine: rfalse;
default: "The lunatic turns away protectively.";
],
description [;
if (self has general)
"It could be the one Jimi Hendrix played at Woodstock, or it
could be your imagination.";
give self general;
"It could be the one Jimi Hendrix played at Woodstock, or it
could be your imagination. Large bananas float gaily by."; ];
Cray mcrayon "maroon crayon"
with description [; if (writing hasnt general) "It is a maroon crayon.";
"It is a maroon crayon, one of the Magic Crayons of Destiny."; ],
initial [;
if (self hasnt general) "You see a maroon crayon situated on top of
the pole.";
"You can see a maroon crayon here.";
],
name "maroon" "crayon" "magic" "destiny" "of",
before [;
if (action==##Examine) rfalse;
if ((pole has general) && (self hasnt general) && (action==##ThrowAt)) {
if (noun==Water_balloon) {
give water_balloon ~general;
move water_balloon to limbo;
"Your aim is off, and the water balloon explodes on the ground,
lightly splashing your face.";
}
if (noun==Grail) {
"The Holy Grail isn't something you want to throw around, even if
it was made in Taiwan.";
}
if (noun==mpowder) { "That won't work too well."; }
move noun to End_Of_World;
print_ret "Your aim is off, and ", (the) noun, " lands back
on the ground.";
}
if (self hasnt general) "You can't reach it from here.";
if (action==##Eat) { print "Recalling your childhood years, you gulp down
the crayon, only to have it spit itself out again.";
if (writing has general) print "Magic Crayons apparently don't
like being eaten.";
new_line; rtrue; }
];
Cray gcrayon "green crayon"
with description [; if (writing hasnt general) "It is a green crayon.";
"It is a green crayon, one of the Magic Crayons of Destiny."; ],
name "green" "crayon" "magic" "destiny" "of",
before [;
Eat: print "Recalling your childhood years, you gulp down
the crayon, only to have it spit itself out again.";
if (writing has general) print "Magic Crayons apparently don't
like being eaten.";
new_line; rtrue;
];
Object Disco "Outdoor Disco Club"
with name "outdoor" "disco" "club" "crowd" "twisting" "undulating" "raised"
"floor",
description "A raised floor with an undulating and twisting crowd makes
the whole scene defy further description.",
nw_to End_Of_World,
before [;
Listen: "The music is quite hearable as it is.";
],
initial [; if ((self hasnt general)&&(Leo.number==0))
{ give self general; Leo.number=2; }
],
cant_go "You can only go out the way you came in.",
each_turn [ i;
i=random(8);
if (i==3) "^Loud throbbing in the bass strains and stretches your ears.";
if (i==4) "^The music kicks up to a faster tempo.";
if (i==5) "^The music slows down a notch.";
];
Nearby Chair "tall chair"
has static,
with name "tall" "chair" "legs",
describe [; "^A chair with very tall legs looms before you."; ],
description "It's a chair with very tall legs. How grandpa got up there
is one of those mysteries shelved next to the aerosol deodorant.";
Nearby Old_Man "old man"
has animate male,
with name "old" "man" "grandfather" "grandpa" "elbow",
describe [; "^An old man is perched on top of the chair."; ],
counter 0,
before [;
Push, PushDir: "You're really not in a good position to do that.";
Torch: "That's not very sporting, annihilating an unarmed man like that.";
],
life [;
ThrowAt:
if (noun==water_balloon) {
give water_balloon ~general; move water_balloon to limbo;
self.counter=2;
"Your weapon strikes true, splattering the old man's face with
water. He seemed to enjoy the experience, but immediately begins
wiping his face dry.";
}
if (noun==Grail) {
"The Holy Grail isn't something you want to throw around, even if
it was made in Taiwan.";
}
if (noun==mpowder) { "That won't work too well."; }
print_ret (The) noun, " just bounces off the man's head, who hardly
notices.";
],
each_turn [;
if (self.counter>0) {
self.counter=self.counter-1;
if (self.counter==0)
print "^The old man has finished drying his face and resumes his
normal position.^";
}
if (random(5)==1) {
print "^The old man ";
switch (random(3)) {
1: "fiddles with something out of your view.";
2: "sighs and shifts his position in the chair.";
3: "briefly does a ~Thinker~ sort of pose before relaxing again.";
}
}
],
description [;
print "He looks like he could be someone's grandfather, albiet
a very energetic one. Every once in a while he twiddles
some device too far away for you to see.";
if (record hasnt general) "His hand is resting on a record that is just
within reach.";
new_line; rfalse; ];
Nearby Record "record"
has scenery,
with name "record",
description "Looks like a disco record.",
before [;
Take: if (self hasnt general) {
if (Old_Man.counter>0) { ! man distracted with water balloon
move record to player; give record general;
"You manage to grab the record while the old man is distracted.";
} else "The old man's elbow is leaning on the record, holding
it down.";
}
Push, PushDir: "I don't quite follow.";
Play: if (second==0) "Your fingernail doesn't play the music on the record
very well.";
if (second==needle) {
print "You move the needle along the record, and a few seconds of
disco music erupt and die away.^";
if ((location==End_Of_World) && (lunatic hasnt general)) {
give lunatic general; move lunatic to limbo; move hole to End_Of_World;
"^The lunatic's eyes widen with fear, his hands tremble in fear, and
his body is running with fear -- straight through the wall to
the south, leaving an unusually large hole.";
}
rtrue;
}
"That isn't an effective tool for playing the record.";
];
Object hole "hole"
has scenery static,
with name "hole",
description "It's a hole in the south wall.",
before [;
Enter: PlayerTo(Wall);
];
Object Needle "needle"
has popper,
with name "needle";
Object Market "A Market, of Sorts"
with name "market" "pastel" "motif" "corner" "roads",
description [;
print "One man's market is another man's somewhat dilapidated looking
corner with the word ~Market~ on a sign hanging above. ";
if (Flamethrower hasnt general) print "Other than that, the only indicator
of such is a cart that probably held items once but looks pretty barren at the
moment. ";
"The pastel motif does do a bit to lighten things up, though. Roads
wind their way west and southeast."; ],
cant_go "The exits are west and southeast.",
w_to Square,
se_to Normalcy;
Nearby Sign_126 "sign"
has static scenery,
with name "sign" "hanging" "above",
before [;
Take, Push, PushDir: "It's too high up for you to reach, even if
you jumped.";
],
description "~Market.~ Very profound stuff. You mark a note to do
a literary analysis sometime.";
Nearby Flamethrower "L'il Terrorist Flamethrower"
with name "l^il" "terrorist" "flamethrower" "weapon" "trigger" "slightly"
"flame" "thrower" "little" "charred",
initial [;
if (self hasnt general) "Jammed into the frame of the cart is an official
~L'il Terrorist Flamethrower.~";
"There is a flamethrower (slightly charred) here.";
],
description [; print "Every kid's favorite toy, for ages 3 and up.";
if (self has general) { new_line; return 0; }
" The only reason it hasn't been taken already seems to be that it is
jammed solid into the frame of the cart."; ],
before [;
Take, Push, PushDir: if (self hasnt general) "The flamethrower is stuck
in the frame of the cart.";
SwitchOn, SwitchOff: "The flamethrower works by saying something like
~Fire flamethrower at haystack.~";
];
Nearby Haystack "haystack"
has static,
with name "haystack" "hay" "stack",
before [ ;
Fneed:
if (needle has general) "Only one is enough.";
move needle to player; give needle general;
"Never being one to take things literally, you actually do find
a needle.";
Search: "You find nothing of interest. Perhaps a more specific
search would help.";
Torch: "A glowing force field briefly appears around the
haystack with a distant voice saying, ~This haystack protected by
the Acme Anti-Arson System. Please call 1-800-ACME-FUN for more
information. Thank you.~";
],
description "Haystacks are stacks composed of primarily hay. People also find
needles in them (metaphorically, or course.)";
Nearby c_bag "bag of llama feed"
has openable,
with name "bag" "of" "llama" "feed",
before [;
Take, Push, PushDir: "It's too heavy.";
Open: move o_bag to Market; remove self;
itobj=o_bag;
"The bag bursts open, revealing some giraffe food. It seems the
bag was mislabeled.";
Search: "Kind of tricky with the bag closed.";
],
description "It is a bag of Uncle Joe's World-Class Llama Feed, Guaranteed
to Make Your Llama Grow Faster. Also Included in Every Bag Absolutely Free
is a Green Crayon. The bag is closed.";
Nearby Cart "cart"
has static scenery container open,
with name "cart" "frame",
description "It has ~Each item $1~ scrawled on the front. This has
been crossed off and replaced with ~Each item 50 cents~ followed
by ~Each item 25 cents~ and finally ~Everything free.~ This last
one seems to have brought the customers, because the cart looks
pretty barren.";
Object o_bag "bag of giraffe feed"
has openable open container transparent,
with name "bag" "of" "giraffe" "feed" "llama",
capacity 1,
before [;
Take, Push, PushDir: "It's too heavy.";
Open: "The bag is already open.";
Close: "The bag is ripped open. It isn't going to close.";
Search:
if (gcrayon has general) "You don't find any more
prizes hidden in the bag.";
if (feed has general) { move gcrayon to Market;
give gcrayon general;
"Another search reveals prize at the bottom: the green crayon!"; }
give feed general;
"You dig through the food but find nothing.";
],
description "It is a bag of Uncle Joe's World-Class Llama Feed, Guaranteed
to Make Your Llama Grow Faster. Also Included in Every Bag Absolutely Free
is a Green Crayon. The bag is open, revealing some giraffe food.";
Object feed "giraffe food"
with name "giraffe" "food",
article "some",
before [;
Take, Push, PushDir: "There's too much to carry, and it really isn't
needed later.";
Eat: style bold; print "<Crunch> <Crunch> <Crunch>"; style roman;
"^^Actually tastes kind of good.";
Search: if (self has general) { move gcrayon to Market;
"Another search reveals prize at the bottom: the green crayon!"; }
give self general;
"You dig through the food but find nothing.";
],
description "Loads of giraffe food.";
Object Normalcy "Relatively Normal Street"
with name "relatively" "normal" "street" "browns" "yellows" "pastel"
"door" "doors",
w_to Square,
e_to Market,
n_to HQ,
s_to Ruins,
cant_go "Paths lead east and west, and doors are to the north and
south.",
description "You've come across a relatively normal-looking section of town;
the pastel motif and been traded in favor of dull browns and yellows. A
building to the north has a sign and a door. A building to the south has
a sign and a place that used to have a door. Paths to the east and west have
neither signs nor doors.";
Nearby Sign_49i "south sign"
has static scenery,
with name "south" "sign",
description "~Come see the authentic Mayan ruins! Satisfaction guaranteed!~
Between the words ~the~ and ~authentic~ you can see in fine print
~slightly.~";
Nearby Sign_12345 "north sign"
has static scenery,
with name "north" "sign",
description "~Official Headquarters of the Secret Society of the Moose.~";
Object HQ "The Secret Society of the Moose"
with name "secret" "society" "dimmed" "light",
s_to Normalcy,
cant_go "The only exit is south.",
before [;
Listen: if (self hasnt general) "You are somewhat baffled by the
speech, but it seems to have something to do with the inherent
connections between moose, iguanas and electric light bulbs.";
],
description [;
if (self hasnt general)
"The dimmed light and assorted decorations here
were probably done to set a mysterious atmosphere, but you can
never tell with people wearing costumes depicting famous moose
throughout history sitting cross-legged on the ground engrossed
in a speech being given by a fierce-looking lady who occasionally
beats on the large bowl in front of her for emphasis. There is
an exit to the south.";
"The dimmed light and assorted decorations in here were probably
done to set a mysterious atmosphere. The rest of the room is
now abandoned, making the large bowl in the front of the room
even more prominent.";
];
Nearby decorations "decorations"
has scenery
with name "decorations" "assorted" "pictures" "certificates" "other" "objects",
description "Pictures, certificates, and other objects of mysterious
import. One picture in particular stands particularly prominent.";
Nearby picture "picture"
has scenery
with name "picture" "painting" "figure" "ship" "ancient",
description [;
print "The scene is on an ancient ship, where a strange figure totally
in black except for a moose hat on its head is fending off a horde
of Vikings with ";
if (vcrayon hasnt concealed) "a blank space that used to have a weapon.";
"a mauve crayon as a weapon. The crayon seems to stand out
three-dimensionally from the rest of the picture."; ],
before [;
if (action==##Examine) {
if (vcrayon in limbo) move vcrayon to HQ;
rfalse;
}
];
Nearby Giant_Head "giant moose head"
has static
with name "giant" "moose" "head",
before [;
if (action==##Examine) rfalse;
if (HQ hasnt general) "There's a huge crowd and a speaker blocking
your access.";
Take, Push, PushDir: "This is a really big moose head. You can't
budge it.";
],
describe [; if (HQ has general) "^A huge moose head is hung on the wall.";
"^A huge moose head is hung on the wall behind the speaker."; ],
description "Fierce, embalmed, and very dead.";
Nearby Lady "lady"
has animate scenery female,
with name "fierce" "fierce-looking" "lady" "outfit" "speaker" "orator",
before [;
Listen: "You are somewhat baffled by the
speech, but it seems to have something to do with the inherent
connections between moose, iguanas and electric light bulbs.";
Torch: "Tempting, but not tempting enough.";
],
each_turn [ i;
i=random(15);
if ((i<5) && (self hasnt general)) { give self general;
"^The speaker takes some powder out of the bowl and sets it on the
ground while taking out a lighted match. She puts the match to the
powder, and it explodes. Apparently this illustrates some point
in the lecture, but you can't fathom what."; }
if (i>10) {
switch (random(4)) {
1: "^The speaker beats on the bowl for emphasis.";
2: "^The speaker makes what seems to be an important point about
the inherent connections between moose and electric light bulbs.";
3: "^The speaker makes what seems to be an important point about
the inherent connections between iguanas and electric light bulbs.";
4: "^The speaker makes what seems to be an important point about
the inherent connections between moose and iguanas.";
}
}
],
description "Black hair, tanned body, outrageous outfit, and eyes with a
color so odd they can't really be described.";
Nearby Crowd "crowd"
has animate scenery,
with name "crowd" "people" "costumes" "famous" "history" "sitting"
"cross-legged" "engrossed",
article "the",
before [;
Torch: "That's not very sporting, annihilating an unarmed crowd like that.";
],
description "The people are paying painfully close attention to the
lady who is speaking. They are also paying equal attention to the huge
moose head on the wall, as if they are expecting that to start
giving a speech, too.";
Nearby Bowl "bowl"
has static scenery container open,
with name "bowl" "carved" "marble", capacity 1,
before [;
if (action==##Examine) rfalse;
if (HQ hasnt general) "There's a huge crowd and a speaker blocking
your access.";
if ((action==##Take)||(action==##Push)||(action==##PushDir))
"The bowl is much larger and heavier than you are.";
],
description "Nicely carved out of marble, containing some sort of powder.";
Object powder "dark powder"
with name "powder" "dark",
description "It's a dark, mysterious powder.",
before [;
if (action==##Examine) rfalse;
if (HQ hasnt general) "There's a huge crowd and a speaker blocking
your access.";
if (action==##Take) "The powder streams between the gaps in your
fingers. You need some sort of container.";
if ((action==##Push) || (action==##PushDir) || (action==##LookUnder))
"It's only powder.";
if (action==##Insert) {
if (second==Coat) "The powder immediately slips through the seams
at the bottom of your pocket and vanishes.";
if (second~=Grail) "That won't work as a container.";
move mpowder to Grail;
"You fill the Grail with a quantity of powder.";
}
];
Object mpowder "quantity of powder"
with name "quantity" "of" "powder",
before [;
Insert: if (noun==Coat) "The powder immediately slips through the seams
at the bottom of your pocket and vanishes in the air.";
if (second==bowl) { remove mpowder; "You pour the powder back into the
large bowl."; }
if (second~=cannon) "That won't hold the powder too well.";
move mpowder to cannon;
"You put the powder into the cannon.";
],
description "It's a dark, mysterious powder.";
Cray vcrayon "mauve crayon"
has concealed
with description [; if (writing hasnt general) "It is a mauve crayon.";
"It is a mauve crayon, one of the Magic Crayons of Destiny."; ],
name "mauve" "crayon" "magic" "destiny" "of",
before [;
Take: give self ~concealed; rfalse;
Eat: print "Recalling your childhood years, you gulp down
the crayon, only to have it spit itself out again.";
if (writing has general) print "Magic Crayons apparently don't
like being eaten.";
new_line; rtrue;
];
Object Ruins "Ancient Mayan Ruins"
with name "ancient" "mayan" "ruins" "walls" "rubble" "statues" "statue"
"old" "tire" "tires",
n_to Normalcy,
cant_go "The only exit is north.",
description "This place does have an antique flavor to it, although you
never knew the Mayans made statues made entirely of old tires. The
electric light also seems to detract somewhat from the atmosphere.
Still, if you like piles of rubble this tourist spot is quite a
photo opportunity. The only exit is north.";
Nearby rubble "rubble"
has scenery,
with name "rubble",
before [;
Search, LookUnder:
if (bcrayon in limbo) {
move bcrayon to Ruins; give bcrayon general;
"You notice a black crayon under the rubble.";
}
],
description "It's rubble. Not too exciting, is it?";
Nearby elight "electric light"
has scenery,
with name "electric" "light" "bulb",
description "A regular light bulb, currently on, and too high up to reach.",
before [;
if (action==##Examine) rfalse;
"The light bulb is too high to reach.";
];
Nearby rock "bulky rock"
has static,
with name "bulky" "rock",
before [;
Take, Push, PushDir: "It's a lot bigger than you are.";
],
each_turn [;
if (child(d1)~=0 && child(d2)~=0 && child(d3)~=0 &&
child(d4)~=0 && d1 hasnt general) {
give d1 general; move compartment to Ruins;
"A secret compartment opens in the wall.";
}
],
initial [;
"A bulky rock with writing scrawled on it is near one of the walls."; ],
description "Big and rocklike. Also of note is the writing and the
four depressions nearby.";
Nearby writing "writing"
has scenery static,
with name "writing",
number 0,
before [;
if (action==##Examine) { give self general; rfalse; }
],
description [;
print "On second glance, it isn't blood but merely red crayon. It
reads: ~Insert the Magic Crayons of Destiny into the depressions to
open the vault.~";
if (bcrayon hasnt general) { move bcrayon to Ruins; give bcrayon general;
"^^You notice a black crayon under the
rubble that you hadn't seen before."; }
new_line; rtrue;
];
Class depression
has scenery static container open transparent,
with
capacity 1,
before [;
Receive: if (noun hasnt is_crayon) "That won't fit.";
],
description [; if (child(self)==0) "Depressing.";
print_ret "Depressing. It contains ", (a) (child(self)), ".";
];
depression d1 "first depression"
with name "depression" "first";
depression d2 "second depression"
with name "depression" "second";
depression d3 "third depression"
with name "depression" "third";
depression d4 "fourth depression"
with name "depression" "fourth";
Cray bcrayon "black crayon"
with description [; if (writing hasnt general) "It is a black crayon.";
"It is a black crayon, one of the Magic Crayons of Destiny."; ],
name "black" "crayon" "magic" "destiny" "of",
before [;
Eat: print "Recalling your childhood years, you gulp down
the crayon, only to have it spit itself out again.";
if (writing has general) print "Magic Crayons apparently don't
like being eaten.";
new_line; rtrue;
];
Object compartment "compartment"
has container open static transparent,
with capacity 1,
name "compartment" "secret",
initial [;
if (child(self)==0) "A secret compartment is open.";
print_ret "A secret compartment is open, containing ", (a) (child(self)), ".";
],
before [;
Take, Push, PushDir, LookUnder: "The compartment is part of the wall.";
],
description [;
if (child(self)==0) "It's a compartment in the wall.";
print_ret "It's a compartment in the wall, containing ",
(a) (child(self)), "."; ];
Object Grail "Holy Grail"
has container open transparent,
with capacity 1,
name "holy" "grail" "stamp",
before [; Receive: if ((noun~=powder) || (noun~=mpowder))
"You don't need to use the Grail for that.";
Empty, EmptyT: if (child(self)==0) "There's nothing in the Grail.";
if (second==0) "You pour the powder out of the Grail, and it
slowly vanishes into the air.";
<<Insert mpowder second>>;
Fill, FillT: if (child(self)~=0) "The Grail is already full with powder.";
if ((second==0) && (location==HQ)) second=powder;
if ((second==0) && (location==Square) && (mpowder in Cannon))
second=powder;
if (second==0) "There's nothing you can fill from here.";
<<Insert second grail>>;
Drink: if (child(self)==0) "The grail is empty.";
if (child(self)==mpowder) "Powder is a solid, not a liquid.";
"You don't need to do that, since you plan to live forever anyway.";
],
description "The Holy Grail is supposed to grant anyone who drinks from
it immortality, or at least that's what the movies say. You
notice a ~Made in Taiwan~ stamp on the bottom.";
Object Wall "In the Wall"
with
name "wall" "shadows" "shadow" "exit",
description "Odor permeates this place, which seems to be the inside
of a large wall. Shadows are positioned to look like they are ready to
jump at you. The only exit is north.",
n_to End_Of_World,
cant_go "The only exit is north.",
before [;
Smell: "Death. Decay. Stench. Bubblegum.";
];
Nearby skeleton "skeleton"
with name "skeleton" "bones" "skeleton^s" "arms",
initial [;
"A skeleton is leaning against the wall here.";
],
before [;
Take, Push, PushDir: "Have some respect for the dead.";
],
description [;
if (self hasnt general) "Poor fellow. He has a package cradled
lovingly in its arms.";
"The skeleton actually looks quite peaceful, now that it has been
relieved of its package.";
];
Nearby package "brown package"
has openable,
with name "brown" "package",
initial [; "A package is cradled in the skeleton's arms."; ],
description [;
if (skeleton hasnt general) "It's a brown package, cradled
in the skeleton's arms.";
"It's a brown package. There is a label on it marked
~To: Balances.~ Looks like the delivery boy got sent
to the wrong address.";
],
before [;
Take: give skeleton general; rfalse;
Open: remove package; move elephant to player;
"You open the package and the wrapping disappears in a puff of smoke.
You now have the pink cuddly toy elephant that was inside.";
];
Object elephant "prize elephant"
with name "prize" "elephant" "cuddly" "toy",
description "Pink, cuddly, toy, elephant. Says it all, really.
Strange that it got sent here. Must be all the pastel motifs.";
[ Initialise; ! The British are coming
give player light; ! Darkness? We don't need no steenkin' darkness.
! These lines are to avoid some of the odder things that can
! happen in debugging Inform code.
move Map to player;
! move Guide to player;
move Coat to player; move Leo to Coat;
move vcrayon to limbo; move Grail to compartment;
move bcrayon to limbo; move feed to o_bag;
move d1 to Ruins; move powder to Bowl;
move d2 to Ruins; move d3 to Ruins; move d4 to Ruins;
StartDaemon(Leo);
location = Square; change_sta = 1;
"^^Life.
Death.
Aerosol deodorant.
^^For many years, philosophers have pondered these great mysteries.
Now, you are about to ponder the greatest mystery of all. . .^";
];