mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-11-29 14:51:17 +00:00
874 lines
29 KiB
INI
874 lines
29 KiB
INI
! ----------------------------------------------------------------------------
|
|
! Adventureland 961111 One of the standard Inform 6 example games
|
|
!
|
|
! Designed by Scott Adams: c. 1979
|
|
! Ported to Inform: 16.10.94
|
|
! Slightly corrected: 11.5.96
|
|
! Modernised to Inform 6 and library 6/1 or later: 11.11.96
|
|
! ----------------------------------------------------------------------------
|
|
|
|
Constant Story "ADVENTURELAND";
|
|
Constant Headline
|
|
"^An Interactive Classic by Scott Adams (circa 1979/80)^";
|
|
|
|
Release 1;
|
|
Serial "961111";
|
|
|
|
Constant MAX_CARRIED = 6;
|
|
Constant MAX_SCORE = 100;
|
|
|
|
Replace BurnSub;
|
|
|
|
Include "Parser";
|
|
Include "VerbLib";
|
|
|
|
Global genie_gifts;
|
|
Global dark_warning;
|
|
|
|
Class Treasure
|
|
with depositpoints 7,
|
|
after
|
|
[; Take: if (location==Inside_Stump) "Taken!";
|
|
Drop: if (location==Inside_Stump) "Safely deposited.";
|
|
];
|
|
|
|
Class Sign
|
|
with name "sign",
|
|
short_name
|
|
[; print "sign reads- ", (object) self; rtrue;
|
|
],
|
|
has static;
|
|
|
|
Class ScottRoom
|
|
with initial
|
|
[; give self ~visited;
|
|
],
|
|
describe
|
|
[ i c d; print (string) self.description;
|
|
print "^^Obvious exits: ";
|
|
for (i=n_to: i<=d_to: i++)
|
|
if (self.i ~= 0) c++;
|
|
if (c==0) print "none!";
|
|
else
|
|
{ for (i=n_to: i<=d_to: i++)
|
|
if (self.i ~= 0)
|
|
{ if (d++>0) print ", ";
|
|
if (i==n_to) print "North";
|
|
if (i==s_to) print "South";
|
|
if (i==e_to) print "East";
|
|
if (i==w_to) print "West";
|
|
if (i==u_to) print "Up";
|
|
if (i==d_to) print "Down";
|
|
}
|
|
print ".";
|
|
}
|
|
new_line;
|
|
c=0; d=0;
|
|
objectloop (i in self)
|
|
if (i ~= player) { c++; give i concealed; }
|
|
if (c==0) rtrue;
|
|
print "^You can also see: ";
|
|
objectloop (i in self)
|
|
if (i ~= player)
|
|
{ if (d++>0) print " - "; PrintShortName(i);
|
|
}
|
|
new_line; rtrue;
|
|
];
|
|
|
|
[ GamePreRoutine i c d;
|
|
if (action~=##Inv) rfalse;
|
|
c=0; d=0;
|
|
objectloop (i in player) c++;
|
|
if (c==0) "You're carrying nothing.";
|
|
print "You're carrying:^";
|
|
objectloop (i in player)
|
|
{ if (d++>0) print " - "; PrintShortName(i);
|
|
}
|
|
new_line; rtrue;
|
|
];
|
|
|
|
[ GamePostRoutine i;
|
|
if (action==##Look)
|
|
objectloop (i in location)
|
|
if (i ~= player && i has concealed)
|
|
give i ~concealed;
|
|
rfalse;
|
|
];
|
|
|
|
! ----------------------------------------------------------------------------
|
|
! Into Adventureland...
|
|
! ----------------------------------------------------------------------------
|
|
|
|
ScottRoom Lake_Shore "Lakeside"
|
|
with description "You're on the shore of a lake.",
|
|
n_to Forest, s_to Lake_Shore, w_to Dismal_Swamp,
|
|
d_to Quicksand,
|
|
before
|
|
[; Swim: "Below you and before the lake is quicksand.";
|
|
],
|
|
has light;
|
|
Object -> water "water"
|
|
with name "water", article "some",
|
|
before
|
|
[; Drink: "Boy, that really hit the spot.";
|
|
Take: if (bottle notin player)
|
|
"You have nothing in which to carry the water.";
|
|
<<Fill bottle>>;
|
|
Insert: if (second == bottle) <<Fill bottle>>;
|
|
"You have nothing in which to carry the water.";
|
|
Receive: if (noun == bottle) <<Fill bottle>>;
|
|
remove noun; CDefArt(noun); " washes away into the lake.";
|
|
],
|
|
has scenery;
|
|
Treasure -> "*GOLDEN FISH*"
|
|
with name "gold" "golden" "fish",
|
|
each_turn
|
|
[; if (self notin player) rfalse;
|
|
if (net notin player && random(100) <= 75)
|
|
{ move self to Lake_Shore;
|
|
"^The fish escape back to the lake.";
|
|
}
|
|
if ((water_in_the_bottle notin bottle
|
|
|| bottle notin player) && random(100)<=50)
|
|
{ remove self; move dead_fish to player;
|
|
"^Too dry. Fish die.";
|
|
}
|
|
];
|
|
Object -> axe "rusty axe (magic word- BUNYON -on it)"
|
|
with name "rusty" "axe",
|
|
description "The magic word BUNYON is written on the haft.";
|
|
Sign -> "NO SWIMMING ALLOWED";
|
|
Object dead_fish "dead fish"
|
|
with name "dead" "fish"
|
|
has edible;
|
|
|
|
ScottRoom Quicksand "Bog"
|
|
with description "You're in a quick-sand bog.",
|
|
before
|
|
[; Swim: if (child(player)==nothing)
|
|
{ PlayerTo(Lake_Shore); rtrue; }
|
|
"Something's too heavy.";
|
|
],
|
|
has light;
|
|
Treasure -> ox "*SMALL STATUE OF A BLUE OX*"
|
|
with name "ox" "blue" "small" "statue";
|
|
|
|
ScottRoom Forest "Forest"
|
|
with description "You're in a forest.",
|
|
n_to Forest, s_to Forest, e_to Sunny_Meadow, w_to Forest,
|
|
u_to trees
|
|
has light;
|
|
Object -> trees "trees"
|
|
with name "tree" "trees",
|
|
before
|
|
[; Climb: <<Enter self>>;
|
|
],
|
|
door_to Up_Oak, door_dir u_to
|
|
has open door static;
|
|
|
|
ScottRoom Up_Oak "Branch"
|
|
with description "You're in a branch on the top of an old oak tree.^
|
|
To the east you see a meadow beyond a lake.",
|
|
d_to Forest,
|
|
has light;
|
|
|
|
ScottRoom Sunny_Meadow "Meadow"
|
|
with description "You're in a sunny meadow.",
|
|
n_to Lake_Shore, s_to Dismal_Swamp, e_to Lake_Shore,
|
|
w_to Forest,
|
|
has light;
|
|
Object -> dragon "sleeping Dragon"
|
|
with name "dragon" "sleeping" "sleepy",
|
|
before
|
|
[; WakeOther: deadflag=1; "The dragon wakes!";
|
|
],
|
|
life
|
|
[; Order, Answer, Ask: "Shh! You don't want to wake the dragon.";
|
|
Give: "The dragon is too drowsy to notice.";
|
|
ThrowAt: if (noun==axe)
|
|
{ move axe to location; "The dragon isn't bothered."; }
|
|
],
|
|
each_turn
|
|
[; if (mud in location && random(100)<=50)
|
|
{ deadflag=1;
|
|
"Dragon smells something - awakens - attacks you!";
|
|
}
|
|
],
|
|
has animate;
|
|
Sign -> "IN SOME CASES MUD IS GOOD, IN OTHERS...";
|
|
Treasure eggs "*DRAGON EGGS* (very rare)"
|
|
with name "dragon" "eggs" "very" "rare", depositpoints 12;
|
|
Object gore "smoking hole - pieces of dragon and gore"
|
|
with name "gore" "hole" "dragon" "smoking"
|
|
has static;
|
|
|
|
ScottRoom Hidden_Grove "Grove"
|
|
with description "You're in a hidden grove.",
|
|
n_to Forest, e_to Dismal_Swamp, w_to Forest,
|
|
has light;
|
|
Treasure -> "*JEWELLED FRUIT*"
|
|
with name "jewelled" "jewel" "fruit",
|
|
after
|
|
[; Eat: "Boy that really hit the spot!"; ],
|
|
has edible;
|
|
Sign -> "PAUL'S PLACE";
|
|
|
|
ScottRoom Dismal_Swamp "Dismal Swamp"
|
|
with description "You're in a dismal swamp.",
|
|
n_to Sunny_Meadow, s_to Dismal_Swamp, e_to Dismal_Swamp,
|
|
w_to Hidden_Grove, in_to 0, u_to cypress_tree
|
|
has light;
|
|
Object -> cypress_tree "cypress tree"
|
|
with name "cypress" "tree",
|
|
before
|
|
[; Climb: <<Enter self>>;
|
|
Cut: if (axe notin player) rfalse;
|
|
remove self; move tree_remains to Dismal_Swamp;
|
|
Dismal_Swamp.in_to = tree_remains;
|
|
Dismal_Swamp.u_to = 0;
|
|
print "TIMBER..";
|
|
if (keys in Tree_Top)
|
|
{ remove keys;
|
|
". Something fell from the treetop and vanished!";
|
|
}
|
|
".";
|
|
],
|
|
door_to Tree_Top, door_dir u_to
|
|
has open door static;
|
|
|
|
Object -> mud "evil smelling mud"
|
|
with name "evil" "smelling" "mud", article "some",
|
|
after
|
|
[ f; Take:
|
|
if (infected_bites in player) { remove infected_bites; f=1; }
|
|
if (chigger_bites in player) { remove chigger_bites; f=1; }
|
|
if (f==1) "Boy that really hit the spot!";
|
|
],
|
|
each_turn
|
|
[; if (self notin player) rtrue;
|
|
if (random(100)<=5 &&
|
|
(bottle notin player || water_in_the_bottle notin bottle))
|
|
{ move self to Dismal_Swamp;
|
|
"The mud dried up and fell off.";
|
|
}
|
|
];
|
|
|
|
Object -> gas "swamp gas"
|
|
with name "swamp" "gas", article "some",
|
|
before
|
|
[; Take:
|
|
if (distended_bladder in player) "Bladder full already.";
|
|
if (wine_bladder notin player) "You have nothing suitable.";
|
|
<<Insert self wine_bladder>>;
|
|
Insert:
|
|
if (second == distended_bladder) "The bladder's full.";
|
|
if (second ~= wine_bladder)
|
|
"That won't hold gas.";
|
|
move distended_bladder to player; remove wine_bladder;
|
|
itobj = distended_bladder;
|
|
"The bladder distends with swamp gas.";
|
|
],
|
|
has static;
|
|
Object -> slime "floating patch of oily slime"
|
|
with name "patch" "oil" "slime" "oily",
|
|
before
|
|
[; Take: brass_lantern.time_left=125; give brass_lantern general;
|
|
remove self; move brass_lantern to player;
|
|
"Magic oil attracts magic lamp. Lamp is now full.";
|
|
],
|
|
has static;
|
|
Object -> chiggers "chiggers"
|
|
with name "chiggers", article "a swarm of",
|
|
daemon
|
|
[; if (chigger_bites in player && mud notin player && random(100)<=10)
|
|
{ remove chigger_bites; move infected_bites to player;
|
|
"^Your chigger bites are now infected.";
|
|
}
|
|
if (infected_bites in player && random(100)<=8)
|
|
{ deadflag=1;
|
|
"^The bites have rotted your whole body.";
|
|
}
|
|
if (infected_bites notin player
|
|
&& chigger_bites notin player
|
|
&& slime in location && mud notin player
|
|
&& random(100)<=5)
|
|
{ move chigger_bites to player;
|
|
"^You're bitten by chiggers.";
|
|
}
|
|
if (infected_bites notin player
|
|
&& chigger_bites notin player
|
|
&& chiggers in player
|
|
&& random(100)<=30)
|
|
{ move chigger_bites to player;
|
|
"^You're bitten by chiggers.";
|
|
}
|
|
];
|
|
Object chigger_bites "chigger bites"
|
|
with name "chigger" "bites", article "some",
|
|
before [; "The bites are annoying. Perhaps medicine would help?"; ];
|
|
Object infected_bites "infected chigger bites"
|
|
with name "chigger" "bites" "infected", article "some",
|
|
before [; "The bites are frightening. Get medicine!"; ];
|
|
|
|
Object tree_remains "hollow stump and remains of a felled tree"
|
|
with name "tree" "stump" "hollow" "remains",
|
|
door_to Inside_Stump, door_dir in_to
|
|
has open door static;
|
|
|
|
ScottRoom Tree_Top "Tree Top"
|
|
with description "You're in the top of a tall cypress tree.",
|
|
d_to Dismal_Swamp,
|
|
has light;
|
|
|
|
Object -> "spider web with writing on it"
|
|
with name "spider" "web" "writing",
|
|
description "~CHOP IT DOWN!~",
|
|
before
|
|
[; Take: deadflag=1; "You're bitten by a spider.";
|
|
];
|
|
Object -> keys "ring of skeleton keys"
|
|
with name "keys" "ring" "skeleton" "keyring";
|
|
|
|
ScottRoom Inside_Stump "Inside Stump"
|
|
with description "You're in a large hollow damp stump in the swamp.",
|
|
n_to Dismal_Swamp, s_to Dismal_Swamp, e_to Dismal_Swamp,
|
|
w_to Dismal_Swamp, u_to Dismal_Swamp, d_to Root_Chamber,
|
|
has light;
|
|
Sign -> "LEAVE TREASURE HERE - (say 'SCORE')";
|
|
Object -> bottle "the bottle"
|
|
with name "bottle" "jar" "flask",
|
|
short_name
|
|
[; if (water_in_the_bottle in self) { print "bottle of water"; rtrue; }
|
|
if (bees in self) { print "bottle of bees"; rtrue; }
|
|
print "empty bottle"; rtrue;
|
|
],
|
|
before
|
|
[ x; LetGo:
|
|
if (noun in bottle)
|
|
"You're holding that already (in the bottle).";
|
|
Receive:
|
|
if (noun==water or bees) <<Fill self>>;
|
|
"That won't go in the bottle.";
|
|
Fill:
|
|
if (child(bottle)~=0)
|
|
"The bottle is full already.";
|
|
if (water in location)
|
|
{ move water_in_the_bottle to bottle;
|
|
"The bottle is now full of water.";
|
|
}
|
|
if (bees in location)
|
|
{ move bees to bottle;
|
|
"The bottle is now full of bees.";
|
|
}
|
|
"There is nothing here with which to fill the bottle.";
|
|
Empty: if (child(bottle)==0) "The bottle is already empty!";
|
|
x=child(bottle);
|
|
remove x;
|
|
if (x==bees)
|
|
{ move x to location; "You release the bees.";
|
|
}
|
|
"Your bottle is now empty and the ground is now wet.";
|
|
],
|
|
has container open;
|
|
|
|
Object -> brass_lantern "old fashioned lamp"
|
|
with name "lamp" "fashioned" "lamp", article "an",
|
|
power 125,
|
|
time_left 0,
|
|
daemon
|
|
[ t; if (self hasnt on) { StopDaemon(self); rtrue; }
|
|
t=--(self.power);
|
|
if (t==0) give self ~on ~light;
|
|
if (self in player or location)
|
|
{ if (t==0) "Your lamp has run out of power.";
|
|
if (t==30) "Your lamp is getting dim.";
|
|
}
|
|
],
|
|
before
|
|
[; Examine: print "It is a shiny brass lamp";
|
|
if (self hasnt on)
|
|
". It is not currently lit.";
|
|
if (self.power < 30)
|
|
", glowing dimly.";
|
|
", glowing brightly.";
|
|
Burn: <<SwitchOn self>>;
|
|
Rub: if (self has on) "No! It's too hot.";
|
|
if (self hasnt general) "Nothing happens.";
|
|
switch(++genie_gifts)
|
|
{ 1: move ring to location;
|
|
"A glowing genie appears -
|
|
drops something - then vanishes.";
|
|
2: move bracelet to location;
|
|
"A glowing genie appears -
|
|
drops something - then vanishes.";
|
|
3: if (ring in Inside_Stump)
|
|
score=score-ring.depositpoints;
|
|
remove ring; move player to Misty_Room;
|
|
"A genie appears - says ~boy you're selfish~ - takes
|
|
something - then vanishes!";
|
|
4: if (bracelet in Inside_Stump)
|
|
score=score-bracelet.depositpoints;
|
|
remove bracelet; move player to Misty_Room;
|
|
"A genie appears - says ~boy you're selfish~ - takes
|
|
something - then vanishes!";
|
|
default: "Nothing happens.";
|
|
}
|
|
SwitchOn: if (self.power <= 0) "It's run out.";
|
|
Receive, Open:
|
|
"You can't put things in the lamp.";
|
|
],
|
|
after
|
|
[; SwitchOn: give self light; StartDaemon(self);
|
|
"Flameless lamp now on.";
|
|
SwitchOff: give self ~light;
|
|
],
|
|
has switchable;
|
|
|
|
Treasure ring "*DIAMOND RING*"
|
|
with name "diamond" "ring";
|
|
Treasure bracelet "*DIAMOND BRACELET*"
|
|
with name "diamond" "bracelet";
|
|
|
|
Object water_in_the_bottle "bottled water" bottle
|
|
with name "bottled" "water" "h2o", article "some",
|
|
before
|
|
[; Drink: remove water_in_the_bottle; <<Drink water>>;
|
|
],
|
|
description "It looks like ordinary water to me.";
|
|
|
|
ScottRoom Root_Chamber "Root Chamber"
|
|
with description "You're in a root chamber under the stump.",
|
|
u_to Inside_Stump, d_to dark_hole,
|
|
has light;
|
|
Object -> dark_hole "dark hole"
|
|
with description "Leading below.",
|
|
door_dir d_to,
|
|
door_to Semidark_Hole
|
|
has open door static;
|
|
Treasure -> "*POT OF RUBIES*"
|
|
with name "pot" "of" "rubies";
|
|
|
|
ScottRoom Semidark_Hole "Hole"
|
|
with description "You're in a semi-dark hole by the root chamber.",
|
|
u_to Root_Chamber, d_to root_door
|
|
has light;
|
|
Object -> root_door "the door"
|
|
with name "door",
|
|
short_name
|
|
[; if (self has locked) { print "locked door"; rtrue; }
|
|
if (self has open)
|
|
{ print "open door with a hallway beyond"; rtrue; }
|
|
print "closed door"; rtrue;
|
|
],
|
|
before
|
|
[; ThrowAt:
|
|
if (second==axe)
|
|
{ give self ~locked ~lockable ~openable open;
|
|
"Lock shatters!";
|
|
}
|
|
],
|
|
door_to Long_Hall, door_dir d_to, with_key keys
|
|
has static door openable lockable locked;
|
|
|
|
ScottRoom Long_Hall "Hall"
|
|
with description "You're in a long down-sloping hall.",
|
|
u_to Semidark_Hole, d_to Large_Cavern;
|
|
|
|
ScottRoom Large_Cavern "Cavern"
|
|
with description "You're in a large cavern.",
|
|
n_to Hive, s_to Royal_Anteroom, w_to Memory_RAM,
|
|
u_to Long_Hall, d_to Maze1;
|
|
|
|
ScottRoom Hive "Octagonal Hive"
|
|
with description "You're in a large 8-sided room.",
|
|
s_to Large_Cavern;
|
|
Treasure -> "*ROYAL HONEY*"
|
|
with name "royal" "honey", article "some",
|
|
before
|
|
[; Take:
|
|
if (bees in location && mud notin player)
|
|
{ deadflag=1; "Bees sting you."; }
|
|
Drop:
|
|
if (bear in location)
|
|
{ remove self; give bear general;
|
|
"The bear eats the honey and falls asleep.";
|
|
}
|
|
],
|
|
has edible;
|
|
Object -> bees "large African bees"
|
|
with name "large" "african" "bees", article "a swarm of",
|
|
before
|
|
[; Take:
|
|
if (mud notin player)
|
|
{ deadflag=1; "Bees sting you."; }
|
|
if (bottle in player) <<Fill bottle>>;
|
|
"You have nothing to carry the bees in.";
|
|
Drop:
|
|
if (self in bottle
|
|
&& dragon in location)
|
|
{ move self to location;
|
|
move eggs to location; remove dragon;
|
|
"The bees attack the dragon which gets up and flies away...";
|
|
}
|
|
if (self in bottle
|
|
&& bear in location)
|
|
{ move self to location;
|
|
give bear ~general; deadflag=1;
|
|
"Bees madden the bear. Bear then attacks you!";
|
|
}
|
|
],
|
|
each_turn
|
|
[; #IFNDEF DEBUG;
|
|
! A completely unfair rule! And in the original the bees are lost.
|
|
if (self in bottle && random(100)<=8)
|
|
{ move self to Hive; "^The bees in the bottle all suffocated."; }
|
|
#ENDIF;
|
|
if (self in bottle) rfalse;
|
|
if (self in location && mud notin player && mud notin location &&
|
|
random(100)<=8)
|
|
{ deadflag=1; "Bees sting you."; }
|
|
];
|
|
|
|
ScottRoom Royal_Anteroom "Anteroom"
|
|
with description "You're in a royal anteroom.",
|
|
n_to Large_Cavern, u_to Royal_Chamber;
|
|
Object -> wine_bladder "empty wine bladder"
|
|
with name "empty" "wine" "bladder",
|
|
before
|
|
[; Fill: if (gas notin location)
|
|
"The bladder could only just hold a vapour nowadays.";
|
|
<<Insert gas self>>;
|
|
];
|
|
Object distended_bladder "distended gas bladder"
|
|
with name "distended" "gas" "bladder",
|
|
before
|
|
[; Open: move wine_bladder to parent(self); remove self;
|
|
"Gas dissipates!";
|
|
];
|
|
|
|
ScottRoom Maze1 "Maze"
|
|
with description "You're in a maze of pits.",
|
|
n_to Maze2, s_to Maze4, e_to Maze4, d_to Maze2;
|
|
|
|
ScottRoom Maze2 "Maze"
|
|
with description "You're in a maze of pits.",
|
|
w_to Maze3, u_to Maze1;
|
|
Object -> flint_and_steel "flint and steel"
|
|
with name "flint" "steel";
|
|
|
|
ScottRoom Maze3 "Maze"
|
|
with description "You're in a maze of pits.",
|
|
n_to Maze6, s_to Maze1, e_to Maze2, w_to Maze5,
|
|
u_to Maze5, d_to Maze6;
|
|
Object -> "scratchings"
|
|
with name "scratchings", article "strange",
|
|
short_name "strange scratchings on rock reveals- ALADDIN WAS HERE",
|
|
has static;
|
|
|
|
ScottRoom Maze4 "Maze"
|
|
with description "You're in a maze of pits.",
|
|
n_to Maze1, e_to Maze2, w_to Maze1, u_to Maze2;
|
|
|
|
ScottRoom Maze5 "Maze"
|
|
with description "You're in a maze of pits.",
|
|
s_to Maze6, u_to Maze3, d_to Maze6;
|
|
|
|
ScottRoom Maze6 "Maze"
|
|
with description "You're in a maze of pits.",
|
|
n_to Maze6, s_to Maze1, e_to Maze1, w_to Maze4,
|
|
u_to Maze3, d_to Chasm_Bottom;
|
|
Treasure -> rug "*THICK PERSIAN RUG*"
|
|
with name "thick" "persian" "rug" "carpet";
|
|
Object -> "arrow pointing down"
|
|
with name "arrow"
|
|
has static;
|
|
|
|
ScottRoom Chasm_Bottom "Chasm"
|
|
with description "You're in a bottom of a chasm. Above 2 ledges.
|
|
One has a bricked up window.",
|
|
u_to Maze6;
|
|
Treasure -> net "*GOLDEN NET*"
|
|
with name "gold" "golden" "net";
|
|
Sign -> "MAGIC WORD IS AWAY. X LA -(rest of sign is missing)";
|
|
Object -> lava "the lava"
|
|
with name "stream" "of" "lava",
|
|
short_name
|
|
[; print "stream of lava";
|
|
if (self has general) print " with a brick dam";
|
|
rtrue;
|
|
],
|
|
description
|
|
[; if (self hasnt general)
|
|
"There's something there all right! Maybe you should go there?";
|
|
"Just more dammed lava.";
|
|
],
|
|
before
|
|
[; Enter, Push, Pull, Take: "NO! It's too hot.";
|
|
],
|
|
has static;
|
|
Treasure firestone "*FIRESTONE* (cold now)"
|
|
with name "firestone", depositpoints 11;
|
|
|
|
ScottRoom Narrow_Ledge_1 "Ledge"
|
|
with description "You're on a narrow ledge by a chasm.
|
|
Across the chasm is a throne room.",
|
|
before
|
|
[; Jump: if (firebricks in player)
|
|
{ deadflag=1; "Oh no! Something was too heavy!"; }
|
|
print "You leap across the chasm...^";
|
|
PlayerTo(Narrow_Ledge_2); rtrue;
|
|
],
|
|
w_to Royal_Chamber;
|
|
|
|
ScottRoom Royal_Chamber "Royal Chamber"
|
|
with description "You're in the Royal Chamber.",
|
|
d_to Royal_Anteroom, e_to 0;
|
|
Object -> bricked_window "bricked-up window"
|
|
with name "window" "bricked" "brick" "bricks"
|
|
has static;
|
|
Object holed_window "bricked up window with a hole in it - beyond is a ledge"
|
|
with name "window" "bricked" "hole" "ledge",
|
|
door_dir e_to, door_to Narrow_Ledge_1
|
|
has static door open;
|
|
Object firebricks "loose fire bricks"
|
|
with name "loose" "fire" "bricks", article "some",
|
|
after
|
|
[; Take: "Taken. (Heavy!)";
|
|
Drop: if (location~=Chasm_Bottom) rfalse;
|
|
remove self; give lava general;
|
|
move firestone to location;
|
|
"The bricks dam the lava, revealing a *FIRESTONE*!";
|
|
];
|
|
|
|
ScottRoom Narrow_Ledge_2 "Ledge"
|
|
with description
|
|
"You're on a narrow ledge by the throne room-across chasm-ledge.",
|
|
before
|
|
[; Sing:
|
|
if (bear in location && bear hasnt general)
|
|
{ move dead_bear to Chasm_Bottom;
|
|
remove bear;
|
|
"The bear got startled and fell off the ledge!";
|
|
}
|
|
Jump: print "You leap across the chasm...^";
|
|
PlayerTo(Narrow_Ledge_1); rtrue;
|
|
],
|
|
e_to
|
|
[; if (bear in location && bear hasnt general)
|
|
"The bear won't let you!";
|
|
return Throne_Room;
|
|
];
|
|
Treasure -> mirror "*MAGIC MIRROR*"
|
|
with name "magic" "mirror",
|
|
side_up 0,
|
|
before
|
|
[; Take:
|
|
if (bear in location && bear hasnt general)
|
|
"The bear won't let you!";
|
|
],
|
|
after
|
|
[; Drop:
|
|
if (rug in location)
|
|
{ print "Mirror lands softly on the rug - lights up and says:^";
|
|
self.side_up++;
|
|
if (self.side_up % 2 == 1)
|
|
"*DRAGON STINGS* and fades. I don't get it - hope you do.";
|
|
"Don't waste *HONEY*. Get mad instead. Dam lava!";
|
|
}
|
|
remove self; move broken_glass to location;
|
|
"The mirror hits the floor and shatters into a million pieces!";
|
|
];
|
|
Object -> bear "the bear"
|
|
with name "thin" "black" "bear",
|
|
short_name
|
|
[; if (self has general) { print "sleeping bear"; rtrue; }
|
|
print "thin black bear"; rtrue;
|
|
],
|
|
before
|
|
[; WakeOther: give self ~general; "The bear rouses!^";
|
|
],
|
|
life
|
|
[; Ask, Order, Answer: <<Sing>>;
|
|
Attack, ThrowAt:
|
|
if (self has general) <WakeOther self>;
|
|
remove mirror; move broken_glass to location;
|
|
"Oh no...Bear dodges...CRASH!";
|
|
],
|
|
has animate;
|
|
Object broken_glass "broken glass"
|
|
with name "broken" "glass" "jagged" "fragments", article "some";
|
|
Object dead_bear "dead bear"
|
|
with name "dead" "bear" "black" "thin"
|
|
has static;
|
|
|
|
ScottRoom Throne_Room "Throne Room"
|
|
with description "You're in a throne room.",
|
|
w_to Narrow_Ledge_2;
|
|
Treasure -> "*GOLD CROWN*"
|
|
with name "gold" "golden" "crown";
|
|
|
|
ScottRoom Real_Trouble "Trouble!"
|
|
with description
|
|
"I think you're in real trouble. Here's a guy with a pitchfork!^^
|
|
You lost *ALL* treasures.",
|
|
initial
|
|
[; deadflag=3;
|
|
],
|
|
has light;
|
|
|
|
ScottRoom Memory_RAM "Ugly Place"
|
|
with description
|
|
"You're in the memory RAM of an IBM-PC. You took a wrong turn!",
|
|
e_to Large_Cavern,
|
|
has light;
|
|
Sign -> "To the Architects - TSURRIS";
|
|
|
|
ScottRoom Misty_Room "Misty Room"
|
|
with description "You're in a large misty room with strange letters
|
|
over the exits.",
|
|
s_to Real_Trouble, e_to Forest, w_to Real_Trouble,
|
|
u_to Up_Oak, d_to Real_Trouble,
|
|
has light;
|
|
Sign -> "LIMBO. FIND RIGHT EXIT AND LIVE AGAIN!";
|
|
|
|
! ----------------------------------------------------------------------------
|
|
! A soupcon of code
|
|
! ----------------------------------------------------------------------------
|
|
|
|
[ Initialise;
|
|
location=Forest; score = 0;
|
|
|
|
StartDaemon(chiggers);
|
|
|
|
"^^^^^A voice booms out ...^
|
|
Treasures have an * in their name. Say 'SCORE'^
|
|
If you need a hint on something, try 'HELP'.^";
|
|
];
|
|
|
|
[ TimePasses i;
|
|
if (location ~= Inside_Stump) rfalse;
|
|
|
|
score=0;
|
|
objectloop (i in Inside_Stump && i ofclass Treasure)
|
|
score = score + i.depositpoints;
|
|
|
|
if (score ~= 100) rfalse;
|
|
|
|
deadflag=2;
|
|
"Congratulations! By finding and depositing all 13 *TREASURES*, you
|
|
have solved Scott Adams's ~Adventureland~ and it remains only to say
|
|
that...";
|
|
];
|
|
|
|
[ AfterLife;
|
|
if (deadflag==3) { deadflag=1; rfalse; }
|
|
remove chigger_bites; remove infected_bites;
|
|
deadflag=0; PlayerTo(Misty_Room);
|
|
];
|
|
|
|
[ PrintRank; "."; ];
|
|
|
|
[ DarkToDark;
|
|
if (dark_warning==0)
|
|
{ dark_warning=1; "It is now pitch dark.
|
|
If you proceed you will likely fall into a pit.";
|
|
}
|
|
if (random(4) == 1)
|
|
{ deadflag=1;
|
|
"You fell into a pit and broke every bone in your body!";
|
|
}
|
|
rfalse;
|
|
];
|
|
|
|
[ BunyonSub;
|
|
if (axe notin player) "Nothing happens.";
|
|
if (ox in player or location)
|
|
{ move ox to Hidden_Grove;
|
|
move axe to Hidden_Grove;
|
|
"Something you're holding vibrated and...";
|
|
}
|
|
if (player notin Quicksand)
|
|
{ move axe to Hidden_Grove;
|
|
print "Something you're holding vibrated and...";
|
|
<<Inv>>;
|
|
}
|
|
"Nothing happens.";
|
|
];
|
|
|
|
[ TsurrisSub;
|
|
if (location ~= Memory_RAM) "Nothing happens.";
|
|
"A voice booms out...^
|
|
May all your teeth but one fall out, and may that one give you toothache.^
|
|
(You can't help feeling you have stumbled on a private quarrel which is
|
|
nothing to do with your game.)";
|
|
];
|
|
|
|
[ BurnSub;
|
|
if (flint_and_steel notin player)
|
|
"You have nothing to strike a light with.";
|
|
if (noun==gas) "Gas needs to be contained before it will burn.";
|
|
if (noun==distended_bladder)
|
|
{ if (noun in player)
|
|
{ remove noun; deadflag=1; "Gas bladder blew up in your hands!";
|
|
}
|
|
remove noun;
|
|
print "Gas bladder blew up!^";
|
|
if (dragon in location)
|
|
{ remove dragon; move gore to location;
|
|
"The dragon has been blown to bits!";
|
|
}
|
|
if (bricked_window in location)
|
|
{ remove bricked_window;
|
|
move holed_window to location; move firebricks to location;
|
|
Royal_Chamber.e_to = holed_window;
|
|
"The bricked window has been blown to bits!";
|
|
}
|
|
rtrue;
|
|
}
|
|
"That won't ignite.";
|
|
];
|
|
|
|
[ HelpSub;
|
|
print "A voice booms out...^";
|
|
print "Try: LOOK,JUMP,SWIM,CLIMB,THROW,FIND,GO,TAKE,INVENTORY,SCORE.^";
|
|
if (chigger_bites in player || infected_bites in player)
|
|
"Medicine is good for bites.";
|
|
if (location == Quicksand) "You may need magic words here.";
|
|
if (location == Sunny_Meadow)
|
|
"Only 3 things will wake the dragon. One of them is dangerous!";
|
|
if (location == Hive)
|
|
"Read the sign in the meadow!";
|
|
if (location == Maze1 or Maze2 or Maze3
|
|
|| location == Maze4 or Maze5 or Maze6)
|
|
"You may need magic words here.";
|
|
if (location == Royal_Chamber) "Blow it up. Try the swamp.";
|
|
];
|
|
|
|
[ AwaySub;
|
|
if (rug notin player || location~=Maze3) "Nothing happens.";
|
|
print "Something you're holding vibrates, and...^";
|
|
PlayerTo(Sunny_Meadow);
|
|
];
|
|
|
|
[ FindSub;
|
|
"A voice booms out...^Find it yourself.";
|
|
];
|
|
|
|
! ----------------------------------------------------------------------------
|
|
! Grammar: the usual grammar and some extensions
|
|
! ----------------------------------------------------------------------------
|
|
|
|
Include "Grammar";
|
|
|
|
Extend "cut"
|
|
* "up" noun -> Cut
|
|
* "down" noun -> Cut;
|
|
|
|
Verb "bunyon" * -> Bunyon;
|
|
Verb "away" * -> Away;
|
|
Verb "tsurris" * -> Tsurris;
|
|
Verb "help" * -> Help;
|
|
Verb "find" * special -> Find;
|
|
|
|
! ----------------------------------------------------------------------------
|