From c446b240a968a00337d530ab5737bbc9117a5942 Mon Sep 17 00:00:00 2001 From: historicalsource Date: Sat, 13 Apr 2019 19:44:59 -0400 Subject: [PATCH] Original Source --- README.md | 2 + act1.mud | 2040 ++++++++++++++++ act2.mud | 793 +++++++ act3.mud | 1538 ++++++++++++ act4.mud | 1151 +++++++++ b.mud | 924 ++++++++ defs.mud | 650 ++++++ disp1.mud | 105 + dung.mud | 6562 ++++++++++++++++++++++++++++++++++++++++++++++++++++ impl.mud | 977 ++++++++ makstr.mud | 344 +++ melee.mud | 324 +++ parser.mud | 1021 ++++++++ prim.mud | 102 + rooms.mud | 1990 ++++++++++++++++ sr.mud | 445 ++++ syntax.mud | Bin 0 -> 2876 bytes tell.mud | 1263 ++++++++++ typhak.mud | 128 + util.mud | 257 ++ 20 files changed, 20616 insertions(+) create mode 100644 README.md create mode 100644 act1.mud create mode 100644 act2.mud create mode 100644 act3.mud create mode 100644 act4.mud create mode 100644 b.mud create mode 100644 defs.mud create mode 100644 disp1.mud create mode 100644 dung.mud create mode 100644 impl.mud create mode 100644 makstr.mud create mode 100644 melee.mud create mode 100644 parser.mud create mode 100644 prim.mud create mode 100644 rooms.mud create mode 100644 sr.mud create mode 100644 syntax.mud create mode 100644 tell.mud create mode 100644 typhak.mud create mode 100644 util.mud diff --git a/README.md b/README.md new file mode 100644 index 0000000..6a731e0 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# zork +# zork diff --git a/act1.mud b/act1.mud new file mode 100644 index 0000000..9571452 --- /dev/null +++ b/act1.mud @@ -0,0 +1,2040 @@ +; "SUBTITLE TAKING THE BACK OFF..." + + + FIX> !\>> + + + 6 <7 >> + + )>> + + + + " .BODY> + >> + + >> + >)>)> + > + +\ +; "SUBTITLE THE WHITE HOUSE" + + + ,OPENBIT> + "open.") + ("slightly ajar.")>>)>> + + +"With great effort, you open the window far enough to allow entry." +"The window closes (more easily than it opened).">> + + + + >) + ( + )>) + ( + + + + T) + (>)>)>> + + + + ,OPENBIT> + ) + ()>) + ( ,BRFLAG1!-FLAG > + )>> + + + )>> + +> + +)) + #DECL ((RUG?) (TC DOOR) OBJECT) + + ) + ()> + + > + ) + (.RUG? + ) + ( + ) + ()> + T) + (> + + + <==? .TC>>>> + >>> + )>> + + (VALUE) FIX) + + > 0) + (>)>>> + .L>> + + + <==? .RM >> + +"The door reluctantly opens to reveal a rickety staircase descending +into darkness." +"The door swings shut and closes.">) + (<==? .RM > + + ) + (>)>)>> + +)) + #DECL ((DOOR) OBJECT) + + ) + ( + + >> + + + )>> + +)) + #DECL ((WINNER) ADV (AOBJS) (DOOR) OBJECT) + 2> + .AOBJS>> + + ;"Door will slam shut next time, too, since this way up don't count." + > ,OPENBIT>> + )> + <>) + ( + + T) + (T + >)>> + + + + + ) + ( + ) + ( + ,OVISON> + )>) + ( + ) + ( + + ,OPENBIT>>> + )>> + +\ +; "SUBTITLE TROLL" + + + + T)>> + +) (A )) + #DECL ((WIN) ADV (HERE) ROOM (T A) OBJECT) + + .T> <>) + (> > + + > + > + T) + (<==? .HERE > + + T)>) + ( ) + ( + + + ) + ( + + .HERE> + )> + + >) + ( ) + ( >>> + > + 0> + >> + >)> + + + >>) + ()> + > + + ) + ( + >)>) + ( + ) + ( + )>) + (> + )>> + +\ +; "SUBTITLE GRATING/MAZE" + +> +> +> + +)) + #DECL ((GRATE) OBJECT) + > + > + + + )> + <>> + + + + > + + >) + (T + > + )>) + + ( + T) + ()>) + ( + > + )>> + +>> "HOUS"> + + > + ) + ()>) + ()>) + ( + ) + ( + ) + ( + > + ,OPENBIT> + > + >) + ()>) + ()>) + ( + )>> + +) (LEAVES )) + #DECL ((LEAVES GRATE) OBJECT) + + + + ) + (,GRATE-REVEALED!-FLAG + )>)>> + + + + ,OPENBIT> + ) + (,GRUNLOCK!-FLAG + ) + ()>)>> + + + > + > + "The grating opens.") + ("The grating opens to reveal trees above you.")> + "The grating is closed."> + > + + ) + (ELSE )>) + ()>)>> + + + > + > + <>) + ( >> + > + + <==? .R> + >>>> + + )>> + +) (LLD ) L) + #DECL ((RM LLD) ROOM (L) ) + + > + > + + > + .L> + > + 1>> > + )> + T> + +\ +; "SUBTITLE THE GLACIER" + +> + +) T) + #DECL ((T ICE) OBJECT) + + >> + + + + > + + > + ) + ( + <>)>) + ( + <==? .ICE>> + > + + .T> + > + ) + (> ".">)>)>> + + + + ) + ( + >)>)>> + + ,ONBIT>> + )>> + + + + >> + +\ +; "SUBTITLE MIRROR, MIRROR, ON THE WALL" + + + + )>)>> + +> + +) + + > + + >> + ) + (.RM2)>> + > + > + + > + > + > + > + + ) + ( + ) + ()>) + ( + ) + ( + ) + ( + > + )>)>> + +\ +; "SUBTITLE AROUND AND AROUND IT GOES..." + + ,CAROUSEL-ZOOM!-FLAG> + ) + ( + + + )>)>> + +) + ( + )>> + +) + <* 2 <+ 1 8>>>>> CEXIT> + >> + +\ +; "SUBTITLE THE DOME" + + + + )>)>> + + + + )>) + ( + )>> + + > + >) + (ELSE )> + <>> + +\ +; "SUBTITLE LAND OF THE DEAD" + + +) + (CAND ) (BELL ) + (FLAG ) (HERE ,HERE)) + #DECL ((WIN) ADV (WOBJ) (CAND BELL) OBJECT + (FLAG) (HERE) ROOM) + + + )>) + ( <==? .BELL>> + + + > .HERE> + + + + + + > + > + >) + ( > + + + + >) + ( <==? >> + + > + + ) + ( + + .WOBJ> + > + ) + ()>) + ()>)>> + +> + +> + +> + >> + >> + +> + > + +)) + #DECL ((LLD) ROOM) + > + .LLD> + + >> + +)) + #DECL ((PRSI) ) + + ) + ( .PRSI> + ,BURNBIT> + > " burns and is consumed."> + >) + (<==? > + ) + ()>) + ( + > + + + ) + ( + )>> + + > + ) + (<==? > > + > "from burning.">) + (> + > + > + ) + (> " is extinguished.">)>) + (> + " and to the floor where it evaporates."> + >)>) + ()>> + + + >)>> + +)) + #DECL ((G) OBJECT) + .G> + + <>) + (<==? .G> + )>> + +"SUBTITLE FLOOD CONTROL DAM #3" + +> + + + + ) + ()> + + )>)>> + +) + ( ,VILLAIN> + > " does not understand this.">) + ()>> + + > + ) + ()>) + ()>> + +) (TRUNK )) + #DECL ((TRUNK) OBJECT (RESER) ROOM) + + > + > + + + + > + > + T) + ( + + ,SACREDBIT> + + > + )>) + ()>) + (> ".">)>) + ( + )>> + +> + + + + + + > + + ,OVISON> + ,RGWATER> FIX>> + + + + T) + ()>) + (<==? > + + + ) + ()>) + (<==? > + > + ) + (<==? > + + )>)>> + + + ) + ( + )>> + +) (HERE? <==? ,HERE .MNT>) LEV) + #DECL ((HERE?) (MNT) ROOM (LEV) FIX) + + >> + >>>>)> + + + + >)>)>> + + > + + > + > + + + ) + (>)>)>)>> + +)) + #DECL ((PUTTY) OBJECT) + + <==? >> + ) + ( + ,OPENBIT> + <==? >> + .PUTTY> + + ) + ( ,OPENBIT> + ) + ()>)>> + + "?">> + + + + ) + ()> + )>> + + + ) + ()>)>> + + + + ) + ()> + )>> + +\ + +; "SUBTITLE WATER, WATER EVERYWHERE..." + + + + >) + ( + > + ) + ( + ,OPENBIT> + <==? > >> + + + T)>)>> + +> + + >) + ( + + + > + > + .FILL>)>)> + ) + ( > + >)>> + +) + (PRSVEC ,PRSVEC) (AV ) W + (GW ) (RW ) + PI?) + #DECL ((ME) ADV (GW RW B) OBJECT (WATER-FN) ACTIVATION + (PRSVEC) VECTOR (AV) (W) OBJECT (PI?) ) + + > + ) + ( + > + > + > + + >) + ( .GW> + <==? .RW>> + > + >) + (> + )> ; "Turn FILL into PUT" + + + + )>)> + ) + (T )> + + > + > + > + .AV>>>> + + "."> + > + > .AV>) + (>)>) + (>> .B>> + > + " and evaporates immediately."> + ) + (> + > + ) + (>>) + (T + + + )>) + (> .B> + + >> + + + ) + ()>) + (.PI? + ) + ( + + + "."> + ) + ( + )>) + ( + + )>> + +\ +; "SUBTITLE CYCLOPS" + + + +) + (FOOD ) (DRINK ) + (COUNT ,CYCLOWRATH!-FLAG)) + #DECL ((RM) ROOM (FOOD DRINK CYC) OBJECT (COUNT) FIX) + + + > + + + >)>) + ( + .FOOD> + + + + >>)> + ) + (<==? .DRINK> + + + + + + ) + ( + <>)>) + (<==? > + ) + ()>) + ( + + + ) + ()>) + ( + ) + ( + ) + ( + > + 5> + + ) + (>)>) + ()>)>> + + + + ) + ( ,SLEEPBIT>> + ) + (<0? .WRATH> ) + ( ) + ( + )>) + ( + >)>> + +> + + >) + (>)> + >>)> + .FOO> + +\ +; "SUBTITLE ECHO ECHO ECHO" + +> + +) (OUTCHAN ,OUTCHAN) + (WALK ) (PRSVEC ,PRSVEC) V + (BUG ) (FEATURE )) + #DECL ((OUTCHAN) CHANNEL (WALK) VERB (PRSVEC) + (B) STRING (L) FIX (RM) ROOM (V) + (BUG FEATURE) VERB) + ) + () + >> + > + >> + + <==? .WALK> + >> + >> + >> + + ) + (<==? .BUG> + ) + (<==? .FEATURE> + ) + ( + + + > .B> + + ,SACREDBIT> + + )>)>>> + > + >>>)>> + +> + +\ +; "SUBTITLE A SEEDY LOOKING GENTLEMAN..." + +) ROBJ + (SEEN? ) (WIN ,PLAYER) (WROOM ,HERE) + (HOBJ ) (STILL ) + HERE? (HH ) (TREAS ) + EGG LIT? (DEAD? ,DEAD!-FLAG)) + #DECL ((HACK) HACK (RM WROOM) ROOM (ROBJ HH) + (DEAD? SEEN? LIT?) (WIN) ADV (EGG HOBJ) OBJECT + (ROBBER) ACTIVATION + (HERE?) (STILL) OBJECT (TREAS) ROOM) + ) OBJT) + #DECL ((ONCE) (OBJT) ) + > + )> + > + + + > + .TREAS> + )> + + + > + > + >)> + > + + 0> + >> + + + + )>)>> + .HH>) + ( + >> ;"Adventurer is in room: CHOMP, CHOMP" + > ; "We want to see if we left the loser in the dark." + <==? .RM .TREAS>>) ; "Don't move, Gertrude" + (> + > + .HOBJ> + + + + )>) + ( + > + + + + + ) + ()>>) + (> + + + + ) + ( ) + ( + > + >> + + )> + >> + >> + + > + ) + (.HERE? + + + ) + ()> + + >) + (T + )>)>) + (T + + >> + >> + .HH> + >)> + + ) + (T + )> + + > + ) + ()>)>)> + > + .LIT? + <==? .RM>> + )>) + (> ;"Leave if victim left" + + + >>) + ( .RM> + + <>>) + (.SEEN? ;"Hack the adventurer's belongings" + >> + ,MAZEDESC> <==? ,MAZEDESC>> + + > + " is doing here.\""> + + + + + >)> + )>> + >) + ( + > + + + > + + + > + + + " vanished.">)> + )>> + > + .HH> + >)>)>)> + > ;"Move to next room, and hack." + )) + #DECL ((ROOMS) ) + > + >> + )> + + + >> ;"Can I work here?" + )> + + > + + >> + )>> ;"Drop worthless cruft, sometimes" + + + > > + >> + + + >)>> + .HH>>> + +) (HERE ,HERE) (FLG <>) + ST (T ) (CHALI )) + #DECL ((DEM) HACK (T HOBJ ST CHALI) OBJECT (HERE) ROOM (FLG) ) + + >> .T> <>) + (<==? .HERE> + + + T)>) + ( + >> + + > + > + )> + > + + + > + + + + )> + > + >> + > + + >)>)>)>> + >)> + >) + ( ) + ( + > + ,OVISON> + ) + ( + <==? ,ROBBER-U-DESC>> + ) + ( + .HERE> + )> + ) + ()> + + ,OVISON>) + ( > + + >> + + > + ".") + (T + > > + + ", but the contents of his bag fall on the floor.")>> + ) + (T + + )>) + ( + >> + >> + 0> + >> + ,ROBBER) + (ROBBER)>> + ,OVISON> + + )> + > + ; "I.e., he's trying to give us the brick with a lighted fuse." + ) + (> + !)> + > 0> + + > " and stops to admire its beauty.">) + (> " in his bag and thanks +you politely.">)>)>) + ( + )>> + +) + >> + <==? >> .BRICK> + > + >>>>> + + + >> + <==? > >> + <==? >> .TR> + + + ,ROBBER-U-DESC>> + )>)>> + +) + (FLG <>) TL (HERE ,HERE) (ROOMS ,ROOMS)) + #DECL ((HACK) HACK (HOBJ) OBJECT (FLG) + (TL ROOMS) (HERE) ROOM) + + > + .HERE>> + + + )> + + + >>> + .ROOMS) + (.TL)>> + ) + (T + )> + )>> + +) (HERE ,HERE)) + #DECL ((CHALI) OBJECT (HERE) ROOM) + 2>> + )> + + + > + )>> + >> + + + <==? .HERE >> + > + ) + ( + <==? .HERE >> + > + ) + (T )>> + +\ + +; "SUBTITLE RANDOM VERBS" + +)) + #DECL ((C) OBJECT) + > + >> + + + + + ) + ()>> + + + > + <==? .HERE >> + ) + ()>) + ()>> + +> + + > + > + >> + ) + (> + ) + (> "?">)>) + ()>> + +> + > + > + +> + +) + (<==? > + ) + ()>> + +) (DRINK? <>) + (NOBJ <>) (AOBJS )) + #DECL ((NOBJ) (AOBJS) + (EAT? DRINK?) ) + ) + ( ,FOODBIT>> .AOBJS>> + + ) + ( + >)>) + ( ,DRINKBIT>> + >>> + >> + + >> + + >)>) + ()>) + (> + > " would agree with you.">) + ()>> + +> + +>> + +> + +> + >> + ) + ()>> + +) M) + #DECL ((RM) ROOM (EXITS) EXIT (M) ) + >> + > + ,VILLAIN> + > " is too big to jump over.">) + (>)>) + ()>) + ( .EXITS>> + NEXIT> + CEXIT> + >>>> + >)>) + (>)>> + +>> + + + + +>> + > + >> + > + ) + (<0? > + ) + ()>) + (<==? > + ) + () + ( ,VILLAIN> + > " bows his head to you in greeting.">) + (> ".">)>) + (>)>> + +> + +> + ) + (>> ,TRANSBIT>>> + > "?">) + () + ( ,READBIT>> + > "?">) + (> ,LONG-TELL1>)>> + +>)) + #DECL ((OD) STRING) + ) + ( ,DOORBIT> + ,OPENBIT> + ) + ()>) + ( ,CONTBIT> + > + >>> + + + + ,INDENTSTR>) + ()>) + ()>) + ()>> + +) + ()>> + +> + +> + ) + (<==? > > + ) + ( ,BURNBIT> + > + > " catches fire."> + > + ) + ( ,HERE> + > " catches fire and is consumed."> + >) + ()>>) + (> ".">)>) + (> "??!?">)>> + + ,TURNBIT> + ,TOOLBIT> + ) + (> ".">)>) + ()>> + +> + + + ) + ( + ) + ( + >)>> + +)) + + >> + > + > + ) + ()>> + + ) + ()>> + +) + ()>> + +) + ( > + <==? ,HERE >> + > + + ) + ()>> + + + ) + + <==? >> + + )>> + >> + +)) + #DECL ((R) ROOM) + ) + ( > + <==? ,HERE >> + > + + + ) + (> "?">)>) + ()>> + +) + (> + ) + ( ,VILLAIN>> + ,VICBIT>) + (> "?">)>) + (> + + > " with your bare hands is suicidal.">) + ( ,WEAPONBIT>> + + > " with a "> + > 1 " is suicidal.">) + (ELSE + > T <>>)>> + +> + + >> + +)) + #DECL ((OBJ) OBJECT (STR) STRING (OBJ2) ) + ) + (.OBJ2 + " with a "> + >) + (ELSE + >)>> + +> + + ,VILLAIN> + >> + ) + ( ,WEAPONBIT> + > T <>>) + (T + > " with a "> + > 1 " is quite self-destructive.">)>) + (T + > " with your bare hands is suicidal.">)>) + ( "Trying to destroy a ">)>> + + "Kicking a ">> + + "Waving a ">> + + "Playing in this way with a ">> + + "Fiddling with a ">> + +) (T)>> + +) + ()>> + +) + ( ,TIEBIT> + ) + ()>> + +) + ( "Pushing the ">)>> + + ,TIEBIT> + ) + (<==? > + ) + (> " to that.">)>) + ()>> + + ,TIEBIT> + ,VILLAIN> + > + " struggles and you cannot tie him up.">) + (> "?">)>) + ()>> + +) + (> " can be melted.">)>> + +> + + ,SLEEPBIT> + ) + (> " isn't sleeping.">)>> + +> + +> + +\ +; "SUBTITLE RANDOM FUNCTIONS" + +> + + + ) + ( + + >)> + )>> + + + ) + ( + ) + ( + > + )>> + + + 0> + ,ODESC2 "worthless piece of canvas"> + "There is a worthless piece of canvas here."> + )>> + +\ + +; "SUBTITLE LET THERE BE LIGHT SOURCES" + + + + + + + +) FOO) + #DECL ((HERE) ROOM (RLAMP) OBJECT (FOO) ) + + + >>> + > + .HERE>) + ( + ) + ( + >>> + <>) + ( + >>> + <>)>> + + + + + + + +) (MC )) + #DECL ((MATCH) OBJECT (MC) FIX) + <==? .MATCH>> + >> + > + ) + (> + + )>) + ( > + + > + + T) + ( + + >)>> + +) MATCH FOO) + #DECL ((PRSA) VERB (MATCH C) OBJECT (W) + (FOO) ) + > <>) + (ELSE + > + + > + > + <>) + ( + > + ) + (> + + + .C + > + > + T) + ( >> + > + + ) + ( + + >)>) + (<==? > + + ) + ( + )>) + ()>) + ( + > + + + ) + ()>) + ( + )>)>> + +)) + #DECL ((OBJ) OBJECT (FCN) APPLICABLE (TICK) (CEV) CEVENT + (TELL) (TIM CNT) FIX (FOO) ) + 1>>> + >> + + > <==? ,HERE>> + ".">)> + >) + (> + <==? ,HERE>> + >)>> + + (BAR) CEVENT (C) OBJECT) + + > > + + > + >>>> + + + > + )>)>)>> + +\ + +; "SUBTITLE ASSORTED WEAPONS" + +) (G ) (HERE ,HERE) (NG 0)) + #DECL ((DEM) HACK (SW) OBJECT (NG G) FIX (HERE) ROOM) + > > + >> + ) + ( + ) + + >) + ( + > >) + ( + > + >)>> + > + )> + ) + (<==? .NG 2> ) + (<1? .NG> ) + (<0? .NG> )> + ) + (>)>> + + + <==? ,WINNER ,PLAYER>> + + ,SWORD-GLOW) + (SWORD-GLOW)>> + <>)>> + +)) + #DECL ((R) ROOM (VILLAINS) (DEM) HACK) + > + > + > + + > )>> + .VILLAINS>>> + + + + + diff --git a/act2.mud b/act2.mud new file mode 100644 index 0000000..8019088 --- /dev/null +++ b/act2.mud @@ -0,0 +1,793 @@ + +; "SUBTITLE COAL MINE" + +) (WIN ,WINNER) O (AOBJS )) + #DECL ((DUMMY?) (WIN) ADV (O) OBJECT) + + + >> + > .AOBJS> + > + > .AOBJS> + > + > .AOBJS> + >> + " in a room which reeks of coal gas. +Fortunately, there is justice in the world.">) + ( "in here.">)> + + > + >)>)>> + + + >>> + ) + ( + + > + >)>> + +) + + + >>> + >>> + > + + T> + +>> > + + >> + >> + +> + + + +) + (TOP ) (BOT ) + (FB ) (CT ,CAGE-TOP!-FLAG) + (DUMMY ,DUMMY) (LIT? )) + #DECL ((FB TB) OBJECT (TOP BOT) ROOM (LIT? CT) + (DUMMY) ) + + >) + ( + + + + + )>) + ( + + >) + ( + + + + + > + >> + )> + T)>) + ( .FB> + <==? .FB>> + ) + ( + )>> + + + ,OPENBIT> + "open.") + ("closed.")>>)>> + +)) + #DECL ((MACH) OBJECT (DUMMY) ) + > + + + >) + ( + )>) + ( + + + + T) + (>)>)>)>> + +) D (MACH ) + (SCREW )) + #DECL ((MACH SCREW C D) OBJECT) + + .SCREW> + + ) + ( + .MACH> + + > + !)> + ) + (>> + )>) + (T)>)>) + (> " won't do.">)>)>> + +) (M )) + #DECL ((G) OBJECT (M) ) + >> + > + )>> + +>> + +> + ) + (ELSE >)> + > + > + + )>> + + + +\ + +;"SUBTITLE OLD MAN RIVER, THAT OLD MAN RIVER..." + + > + >) + ()>> + + + > + <==? .HERE >> + + ,OVISON> + + ) + ( + >)>) + (<==? .HERE > + > + ) + ()>)>> + + + + ) + ()>)>> + +)) + #DECL ((ARG) ) + + ) + ( + ) + ( ) + ( + )>>> + +)) + #DECL ((DBOAT) OBJECT (HERE) ROOM) + + ) + ( + > + + > + + >) + (> + .HERE>)>) + (>)>)>> + +) + "AUX" (RBOAT ) + (IBOAT ) (HERE ,HERE)) + #DECL ((ARG) (IBOAT RBOAT) OBJECT (HERE) ROOM) + ) + ( + > + + + .HERE> + T)>) + ( + ) + ( + .RBOAT> + ) + (>> + ) + ( + + + )>)>> + + >> + +) (RBOAT ) + (HERE ,HERE)) + #DECL ((IBOAT RBOAT) OBJECT (HERE) ROOM) + + >> + ) + (<==? > + + > + + ) + (<==? > + ) + (> "? Surely you jest!">)>)>> + + T) + ()>> + + + +) + ( ,VILLAIN> + ) + ( ,TAKEBIT>> + ) + ( ,OPENBIT>> + >>> + > ".">>) + ( ,OPENBIT> + >>>> + + > + > + >> + ,OCONTENTS ()> + )>> + + > + ,BUOY-FLAG!-FLAG + + >>> + + + + + + + + > + ) + ( ,TOOLBIT> + > " is slow and tedious.">) + (> " is silly.">)>> + +> + ) + ( + )>> + +) (HERE ,HERE) CNT) + #DECL ((S) OBJECT (HERE) ROOM (CNT) FIX) + + >> + + + > + > + ) + (<==? .CNT 4> + > + + )>) + () + (>)>)>> + + + >> + + ) + (>)>)>> + +> + + > + ) + ()>> + +> + +) + + ) + (>)>> + +\ + +;"SUBTITLE LURKING GRUES" + + + ) + ( + )>> + +\ + +;"THE VOLCANO" + +> +> + +> + +) + "AUX" (BALL ) (CONT ) + M (BINF ,BINF!-FLAG) R) + #DECL ((ARG) (BALL CONT) OBJECT + (BINF) (M) + (BALLACT) ACTIVATION (R) ) + + + + " burning in the receptacle.">) + ()> + )>)> + .BALLACT>)> + + + >> + + ) + (ELSE + > ROOM> + > + > + + .BALLACT>)>) + ( + )>) + ( + <==? ,BINF!-FLAG >> + > + "."> + ) + ( + <==? .CONT> + >>> + + ) + ( .BALLACT>)>)> + + ,BINF!-FLAG> + >>> + ) + ()>)>> + +> + + + +) M + (IN? <==? .BALL>) (BL ,BLOC)) + #DECL ((BALL) OBJECT (BL) ROOM (M) (S) STRING + (IN?) ) + + >>> + "4"> + + + + > + ) + (<==? ,HERE > + ) + ()> + >) + (> 0 4 .S> + FIX> 1> CHARACTER>> + >> + + ) + ()>)>) + (>>> + + > + >> + + ) + ( + )>) + (.IN? + >> + + ) + ()>> + +)) + #DECL ((BALL BLABE) OBJECT) + > + " burns inside the receptacle."> + > 20>>> + <+ ,FLAMEBIT ,LIGHTBIT ,ONBIT>> + <+ ,TAKEBIT ,READBIT>> + + + > + !)> + )> + + > + )>> + +>> + <==? .HERE >> + )> + + >>> + + + +) M (BL ,BLOC) + (IN? <==? .BALL>) FOO) + #DECL ((BALL) OBJECT (BL) ROOM (M) (S) STRING + (IN?) (FOO) CEVENT) + + >>> + "1"> + >> + + + ) + (T + + ,BLOC> + > + >> + )>) + ()>) + (> 0 4 .S> + FIX> 1> CHARACTER>> + >> + + ) + ()>)>)>> + + + > " is an integral part of the basket and cannot +be removed."> + > + ) + ()>) + ( + > " is part of the basket. It may be manipulated +within the basket but cannot be removed.">)>> + + + ) + ( + > + > + <==? >>> + > + + "The basket is anchored to a small hook by the braided wire."> + + )>) + ( + <==? >> + >> + + > + ) + ()>)>> + +) (OBJ <1 >)) + #DECL ((R OBJ) OBJECT) + + " has burned out, and that +the cloth bag starts to deflate.">)> + >> + > + T> + +> + + + + " +Imbedded in the far wall, there is a rusty old box. It appears that +the box is somewhat damaged, since an oblong hole has been chipped +out of the front of it.") + (" +On the far wall is a rusty box, whose door has been blown off.")>>)>> + + + ) + ( + ) + ()>) + ( + ) + ()>)>> + + + > + )>> + +) + (BRICK ) BRICK-ROOM OC) + #DECL ((FUSE BRICK) OBJECT (BRICK-ROOM) + (OC) ) + + + >) + ( + .BRICK> + > + >) + (>)> + > + + + ) + (<==? .BRICK-ROOM > + + > + + >> + ,OVISON> + ,OPENBIT> + )>) + ( + + + + + )>> + > + > + + >> + >> + ,OCONTENTS ()>)>)> + ) + (> <==? ,HERE >> + )> + )>> + + + +"The house shakes, and the ceiling of the room you're in collapses, +turning you into a pancake.") +("The room trembles and 50,000 pounds of rock fall on you, turning you +into a pancake.")>>) + ( + > + >)> + > + +)) + #DECL ((RM) ROOM) + + + > + + > + .RM> + > + > + + + ) + ()>) + (T + )>) + ()> + > + + + ,RMUNGBIT> + " The way to the south is blocked by rubble.") + (" There is a small door to the south.")>>)>> + +>) + ()>> + +>> + + ,HERE>) + ()>> + +>> + +) BRICK) + #DECL ((GNOME) OBJECT (BRICK) OBJECT) + + > 0> + > ". I don't believe +I've ever seen one as beautiful. 'Follow me', he says, and a door +appears on the west end of the ledge. Through the door, you can see +a narrow chimney sloping steeply downward. The gnome moves quickly, +and he disappears from sight."> + > + + ) + (> + >> + > + + + + ) + (> " in his rock-hard hands."> + >)>>) + ( + > + )> + ) + ( + > + )>> \ No newline at end of file diff --git a/act3.mud b/act3.mud new file mode 100644 index 0000000..0d67f70 --- /dev/null +++ b/act3.mud @@ -0,0 +1,1538 @@ +; "SUBTITLE TOMB OF THE UNKNOWN IMPLEMENTER" + + + + > + > + > + " managed to disappear as well.">)> + >)>> + +)) + #DECL ((NL) (LCASE) OBJECT) + + ) + ( + + > + > + > + >> + !.NL)>)> + + T)>> + + + +\ + +;"SUBTITLE A DROP IN THE BUCKET" + +> + +) + "AUX" (W ) (BUCK )) + #DECL ((ARG) (W BUCK) OBJECT) + <>) + ( + > + + <>) + (T)>>) + ( + <==? .BUCK>> + ) + ( + + T) + (<==? .ARG READ-OUT> + .BUCK> > + + + .BUCK> + + <>) + ( .BUCK>> + + > + .BUCK>)>)>> + +) (PRSVEC ,PRSVEC)) + #DECL ((R) ROOM (B) OBJECT (PRSVEC) VECTOR (PRSO) OBJECT) + > + + + .B> + + )> + > + +\ + +;"SUBTITLE CHOMPERS IN WONDERLAND" + + + <==? >> + <==? .HERE >> + + + > + ,OVISON> + > + + >> + > + > + )>> + +) (OICE ) + (BICE ) (HERE ,HERE) R) + #DECL ((RICE OICE BICE) OBJECT (HERE R) ROOM) + + >> + > + ) + (<==? > + .RICE> "Evaporate") + (<==? .OICE> "Explode") + ("Enlarge")> + "'.">) + ()>) + ()>) + ( >>> + .OICE> + > + ) + (<==? .BICE> + > + + > + > + ,OVISON> + > + ,OVISON> + + + 64>>> + > + ) + ()>)>) + ( + <==? .OICE> + >>> + > + ) + ( + <==? .RICE> + <==? >> + > + + ,OVISON>)>> + + + + ) + ( + + ,OVISON> + )>> + + + >) + ( + )>> + + + > + + + ) + ( ,CAROUSEL-FLIP!-FLAG> + ,SPINDIZZY) + (ELSE ,SPINROBOT)>>) + ( + <>)>)>> + +)) + #DECL ((DIR) DIRECTION (PV) ) + + + ) + ()>) + (<==? .DIR > + ) + (> + <==? .DIR >> + )>> + + + )>> + +> + +> + + + + ) + (<==? > + ) + ( + )>) + (<==? > + > + ) + ()>) + (<==? > + > + >> + > + + + + ,RSEENBIT>)> + T) + ()>)>)>> + +> + +) C FL RACT) + #DECL ((C) ROOM (R) OBJECT (FL) (RACT) ADV) + >> + > + + ,HERE> + >> + + + > ,AROOM .C> + + > + T) + (ELSE + ,OVISON> + + "You are stopped by a cloud of poisonous gas."> + )>) + (.FL + ,OVISON> + + + ,OVISON> + ,HERE> + T) + ( + + "You are stopped by a cloud of poisonous gas."> + ) + ( + )>> + +>)>> + +> + +) RACT) + #DECL ((C) ROOM (CAGE) OBJECT (R) OBJECT (RACT) ADV) + <==? >> + + + + >> + > .C> + + + + ,TAKEBIT> + + + > ,AROOM .C> + + ) + ( + ) + ( + ) + ( ,ROBOT-ACTIONS> <>) + ()>> + + ,NO-CHECK-BIT>>> + > + !)> + ) + ( + ) + ( + )>> + + + >> + > + !)> + > + " +and nods his head-like appendage in thanks.">) + ( + >> + <==? .RR>>> + + ) ()>>)>> + +\ + +;"SUBTITLE MORE RANDOM VERBS" + +) + ( >> + ) + (> "?">)>> + +> + +> + +> + +> + +\ + +;"SUBTITLE BANK OF ZORK" + + + (SCOL-ROOMS) + + (SCOL-WALLS) + > + +> + + + + + <>) + ( + )>> + +)) + #DECL ((RM) ROOM) + > + >> + <>) + (.RM)>> + +>> + +) + + >>>)>> + + + > + "west") + ("east")> + " side of room, above an open door, is a sign reading + + BANK PERSONNEL ONLY +">)>> + +)) + #DECL ((OBJ) ) + + ) + ( + > " goes through it.">) + ( + > + <==? .OBJ >>> + >)>> + +) + .RM> + ) + (>)>>> + +) + + <==? <2 >>>> + >)>> + +> + > + > + +) + "AUX" (HERE ,HERE) (BOX ) (SCRM ,SCOL-ROOM) + M (PRSVEC ,PRSVEC)) + #DECL ((HERE BOX) ROOM (SCRM) + (M) (OBJ) ) + + >) + ( + ,VEHBIT>> + >) + ( >> .SCRM> + <==? > .SCRM>> + + > + ) ()>) + ( + <==? <2 >>>> + > + >> DIRECTION>> + ) ()>) + ( ,TAKEBIT>>> + > + ) + () + (> + " as you attempt this feat.">)>) + (.OBJ ) + (>> + ) + (>)>> + + + + + > + " passes through the wall and vanishes.">) + ( + " passes through."> + > + T)>> + + + + + > + + + +> + > + ) + (<==? .HERE > + + )>)>> + +> + + + > + + + ,HERE>)>)>> + +) BRICK) + #DECL ((GNOME BRICK) OBJECT) + + > 0> + > " in the +deposit box. 'Let me show you the way out,' he says, making it clear +he will be pleased to see the last of you. Then, you are momentarily +disoriented, and when you recover you are back at the Bank Entrance."> + + > + + >) + (> + + >> + > + + + ) + ( + >)>) + ( + > + )> + ) + ( + + + ) + ()>> + +)) + #DECL ((OBJ) OBJECT (CAN) ) + > + >>> + +\ + +;"SUBTITLE TOITY POIPLE BOIDS A CHOIPIN' AN' A BOIPIN' ... " + +) (OUTCHAN ,OUTCHAN)) + #DECL ((HERE) ROOM (ROBJS) (TTREE NEST EGG) OBJECT + (OUTCHAN) CHANNEL) + + + > 1> + + > + + ) + + >> + 2> ) + (<==? 2> + )>> + > + + .FORE3>)>) + ( >) + (>>> > + > + > + > + > + + + + > + + 1> + + ) + ( <==? .X .NEST>>) + ( + + + " falls to the ground.">)>> + .ROBJS>)>> + +) (EGG )) + #DECL ((BEGG) OBJECT) + + <==? .EGG>> + ,OPENBIT> ) + (> + ) + (<==? > + ) + ( <+ ,WEAPONBIT ,TOOLBIT>> + + ) + ( ,FIGHTBIT> + > + " isn't original too...">) + (> + " is certainly original."> + ,FIGHTBIT>)>) + ( + + )>> + +)) + #DECL ((EGG BEGG) OBJECT (CAN) ) + > .EGG> + >> + 1>) + (>)> + + ) + (> ) + ()> + + T> + +) + (> ".">)>> + +> + +)) + #DECL ((HERE TREE) ROOM) + + > + + >> + <==? .HERE .TREE>>> + + + + + ) + (.HERE)>>) + ()>) + ()>)>> + + + >> + <==? .HERE >>> + ) + ( + )>) + ( >)>> + + + ) + ( + )>> + + T>> + +) (NOOBJ <>) + "AUX" (FLG ,CLIMBBIT>>) + (PV ,PRSVEC) (HERE ,HERE)) + #DECL ((PV) VECTOR (DIR) DIRECTION (HERE) ROOM (NOOBJ FLG) ) + ) + (>> + + > + ) + (.FLG ) + ( >> + ) + ()>> + +>> + + + )>> + +\ +; "SUBTITLE CHINESE PUZZLE SECTION (COURTESY OF WILL WENG)" + + + (CPUVEC) + + (CPWALLS) + + (CPEXITS) + > + +) (RM ,CPHERE) (UVEC ,CPUVEC) FX M) + #DECL ((DIR) DIRECTION (M) (FX RM) FIX + (UVEC) ) + > + + -2> + + >) + ()>) + ()>) + ( + <==? .DIR > + ,CPOUT!-FLAG> + > + ,RSEENBIT> + ) + ( + <==? .DIR >> + ) + (> > <>>) + ( '![1 8!]> + ; "SW AND SE" + >> + <0? >>>>> + + >> + <0? >>>>> + >>> ) + ()>) + ()>> + + + <>) + ( + > + )>> + + + + + 0> + )>> + +> + +> + +) (HERE ,CPHERE)) + #DECL ((FLG) (HERE) FIX) + > -2> > + <==? > -3>> + + > + + >) + ()>) + ()>) + ()>> + +) + + >> + > + + ) + ( + >> + >>>>> + ) + ( + > + + + + > + )>)>> + +; "Flag for blocking of main entrance" + +> + + + > + + > + >> + +) + > <+ .RM <2 .M>>>> + + + > 10) + (52)>>) + ( + ) + ( ,TOUCHBIT> + " It +appears the thief was correct.") + ("")>>)>)>> + +>) + (S >) (E >) + (W >)) + #DECL ((HERE N S E W) FIX (UVEC) ) + ;"Top Row" + .N .W> + + + + .N .E> + + ;"Middle Row" + + + + ;"Bottom Row" + .S .W> + + + + .S .E> + + + ) + (<==? .HERE 37> + ) + (<==? .HERE 52> + " at its center. On one +side of the door is a small slit.">)> + + )> + + )>> + +;"Show where the eight nearest neighbors are located" + + " ") (<1? .CONTENTS> "MM") (ELSE "SS")> + ,NO-CRLF>> + +;"Show an orthogonal neighbor" + + > "??") + (<0? >> " ") + (<1? .COL> "MM") + (ELSE "SS")> + ,NO-CRLF>> + +> + + + > + > + + ) + ( <+ ,VICBIT ,VILLAIN>> + >) + (> + " (now atomized) through the slot.">)>)>> + + + + " to the east.">)>> + +; "RANDOM" + +> ".">> + +; "PALANTIRS, ETC." + +) + + + >)>> + + .RES> + +> +> + +) + + + >) + ( + )>> + + .RES> + +) (MAT ) (OBJS ,PALOBJS)) + #DECL ((LID MAT) OBJECT (OBJS) ) + > + > + + .OBJS> + > + + ) + ()>)> + + >> + >>> + ) + ()>> + .OBJS> + > + > + >)> + + + ) + ()>>> + +) + > .PACT>> + + > + )> + + >> + >> + " is in place within the keyhole.">)> + + ".">)>)>> + +) (OBJ2 )) + #DECL ((OBJ1 OBJ2) OBJECT) + > + .OBJ1) + (.OBJ2)>> + +) "AUX" OBJ) + #DECL ((KEYHOLE OBJ) OBJECT (THIS) ) + >> > + .THIS>> + ) + (.OBJ)>> + + + ,OPENBIT> + ,OPENBIT> + >> + >> + >> + ) + (.RM)>>> + ) + ()>) + ( + ,OPENBIT> + T>>>> + ) + ( ,PALOBJS> + >>>>> + + >>> + > + <>)>) + (> " doesn't fit.">)>) + ()>)>> + + + + ,OPENBIT>) + ( + > + ) + ()>>>> + ) + ( + ,OPENBIT>)>)>> + +> + +> + +> + +> + +> + + + (MATOBJ) (PALOBJS SMALL-PAPERS) > + + (THIEF) HACK) + + >> + ) + (<==? > + ) + (.OBJ)>> + >) + () + (.HERE)>> + + > + >>> + >>>> + ) + ( + + > + > + + > + + > + + >> + )>)>> + + + > + >> + + + + ,OPENBIT> + ) + (<==? ,HERE > + >) + (>)>) + ( + )>> + +) RM) + #DECL ((PKEY) OBJECT (RM) ROOM) + ,MUD!-FLAG> + ) + ( + .PKEY> + + >>>> + ) + ( + )>) + (<==? > + ) + ()>) + ( + .PKEY> + + > + T) + ()>) + ( ,SMALL-PAPERS>> + + > + + >> + ) + (.RM)>>) + ( + + "The door is now open." + "The door is now closed.">) + ()>)>> + + + >) + ( >)>)>> + +) + ( >> + ) + ()>> + +) + + <==? >> + + > + ,HERE> + ) + ( .OBJ> + > + + + + " falls from it and onto the floor."> + <>)>> + +>)) + #DECL ((W) FIX) + + 2>>> + ) + ()>> + +> + >>>>) + ( + >)>> + +> +> + +) (SROOM ) + (HERE ,HERE) (ROPE ) (TTIE ,TIMBER-TIE!-FLAG) + (COFFIN ) (TIMBER )) + #DECL ((ROPE TIMBER COFFIN) OBJECT (DROOM SROOM HERE) ROOM (TTIE) ) + + >> + .TIMBER> + .COFFIN>> + >> + > + > + + + + )>) + ( <==? .HERE >> + " was not well braced and falls through the +hole after you, nearly cracking your skull."> + + > + >> + .SROOM>) + ()> + <>) + ( + > + ) + ( + + + T)>) + ( .TIMBER> <==? .COFFIN>> + ) + (> + > "."> + + > + .COFFIN> + ) + ()> + + ) + (<==? .HERE > + )> + + ,NDESCBIT>)> + T) + ()>)>) + ( + + + + ) + ()>)> + > + > + > + ) + ()>) + ( + <==? .HERE .DROOM> + > + + > + ) + ( + ) + (.TTIE + ".">)>)>> + + > + >> + <==? ,TIMBER-TIE!-FLAG>>> + > ,BTIE!-FLAG>> + >) + ()>> + +> + > + + )>> + + + ) + ( + + >) + ( + <>) + ()>> + + + ,TIMBER-TIE!-FLAG> + > "."> + > + <>)>)>> + +) + + + " is lying on the ground here. Tied to it is a piece +of rope, which is dangling down the slide.">)>)>> + + + <==? >>> + + >) + ( + ,TIMBER-TIE!-FLAG> + >)> + >)>> + +)) + #DECL ((RM) ROOM (SEEN?) ) + + > + >> + + + > + <==? .OBJ >> + ) + ( + " falls through the slide and is gone."> + + > + >>)>) + (>)>> + + ,SLIDER >> + + + + )>> + + + ) + ( ,BURNBIT>> + >)>> + +> + +; "MORE RANDOMNESS" + +> + +)) + #DECL ((STR) STRING) + + ) + (> + > + ) + ()>> + + > + ,WEAPONBIT> + + 0>) + ()>) + ( ,VILLAIN> + > "that +you kill yourself, just as he would have done!">)>> + +)) + #DECL ((HERE) ROOM (COINS) OBJECT) + > + > + > + > >>> + + ) + ()>)>> + + ,TAKEBIT> > + > " is now sitting at the bottom of the well."> + > + >)>> + + >> + +; "Oh, is this ever gross!" + +> + +> + +) + ( ,VILLAIN> + > "?">) + ()>> + +)) + #DECL ((STAMP) OBJECT) + .STAMP> + + ,CONTBIT> + <>)>) + ( + <==? >> + + + >) + ( ,BR1!-FLAG> + ) + ( + ) + (,BRFLAG1!-FLAG ) + ( + )>) + ( + + > + ) + (<==? > + )>> + +>) + + >> + <==? <2 .M> ,DARK-ROOM>> + )>) + ( <>) + ( + ) + ( + ) + ( + ) + ( + ) + ( + ) + ( + ) + ( + ) + ( + ) + ( + > + ".") + (" and objects appear indistinct.")>> + + > + <>) + ( + ) + ( + ) + ( + > + ,OVISON> + > + > + > + > + > + > + ) + ()>) + ()>> + +) CNT) + #DECL ((OBJS) (CNT) FIX) + > + ) + (<==? > + ) + (<==? > + ) + (<==? > + ) + (T + + > + > 1>> + + > "es.") (".")>>) + (<==? > + >> 1) + (0)>> + .OBJS>> + "valuable"> + > + + >> "treasure">>) + (<==? > + > "possession">) + ()>)>> + + ) + ()> + + > + > diff --git a/act4.mud b/act4.mud new file mode 100644 index 0000000..16ac668 --- /dev/null +++ b/act4.mud @@ -0,0 +1,1151 @@ + +; "SUBTITLE THE ENDGAME" + + > + +"============ ZORK END-GAME FUNCTIONS =============" + + + +;"enable endgame" + +> + +;"endgame has begun?" + +> + +> + + "open.")("closed.")>> + +;"SUBTITLE Is There Life after Death?" + + + > + ,TOMB-DESC2>)>> + +) + > + >>)>> + +)) + #DECL ((EG?) (C) OBJECT) + >) + (> + > + + ) + (ELSE + )> + T) + (> + + + ) + (ELSE )> + > + )>)>> + +> + +> + + ) + (ELSE + + + )>)>> + +) (SWORD ) + C (W ,WINNER)) + #DECL ((LAMP SWORD) OBJECT (C) (W) ADV) + + + + > 1 0> + ,CTICK 350> + ,CFLAG <>> + ,SWORD-GLOW) + (SWORD-GLOW)>> + > + + >) + > >)>> + > + + + > ,OCAN <>> + > ,OCAN <>> + + + > + > + > + +\ + +;"SUBTITLE It's All Done with Mirrors" + + + + + +> + +> + +> + +) (NRM >) (CEX <2 .NRM>) + (TORM ) (MDIR ,MDIR)) + #DECL ((DIR) DIRECTION (NRM) + (CEX) CEXIT (TORM) ROOM (MDIR) FIX) + ]> + + + ) + ()> + <>) + (.TORM)>) + (<==? ,MLOC .TORM> + ) + ( <>)>) + (.TORM)>> + +> + 360>>)> + > + >> + ) + (ELSE + )>> + +>) (STR ,MRESTR)) + #DECL ((RM) ROOM (DIR) DIRECTION (SPR STR) STRING) + >> + >>> + )> + >> + + + + + +>> + +
>> + +>> !\E>) M1? MWIN) + #DECL ((RM) ROOM (EAST? MWIN M1?) ) + >>> + ,MR1!-FLAG) + (,MR2!-FLAG)>> + + " wall is a large "> + > + >> + > + + + + )>> + + + + )>> + + + + )>> + +;"LOOK-TO -- takes room to north, room to south (if any), and instructions +for describing what is north and south. These are interpreted as: +STRING -- print it, T -- guardians are there, otherwise, nothing interesting. +If the mirror is found to north or south, the corresponding instruction is +set to T, and later innocuous messages are printed for the directions with +nothing interesting in them." + +) (NTELL <>) (STELL <>) (HTELL T) + "AUX" (NRM <>) (SRM <>) NORTH? (MDIR ,MDIR) MIR? (M1? <>) DIR) + #DECL ((DIR) STRING (NSTR SSTR) + (NTELL STELL) + (HTELL NORTH? MIR? M1?) (RM) ROOM + (NRM SRM) (MDIR) FIX) + >> + >> + > + + ) + ( )> + + ) + ( )> + + > ) + (<==? ,MLOC .SRM> + > )>> + > + >> + + ,MR1!-FLAG) + (,MR2!-FLAG)>> + + + + ) + (ELSE + + 1 + .DIR + " side of the hallway."> + ,LONG-TELL1>> + >)>)> + > + ) + ( ) + ( )>> + T> + + + T>)>> + + + )>> + + + )>> + + + <> "A passage enters from the south.">)>> + +"Infestation function for Sword-glow demon, tailored for end game" + +)) + #DECL ((R M) ROOM) + + <==? .R >> + <==? .R > + <==? .R >>> + + + + ) + ( + + ) + ( + )>> + +>) + >> + <==? ,MLOC >> + > + + > + > + + >> + 1) + (2)>>> + +)) + #DECL ((HERE) ROOM (NORTH?) ) + + .HERE>> + .HERE>>> + + )>) + ( + )>> + +>) (MDIR ,MDIR)) + #DECL ((RM) ROOM (SP) STRING (MDIR) FIX) + 4> + !\E> 0) (180)>>> 1) + (2)>) + ( <>) + ( .RM>) + ( .RM>)>> + +) + >> + ) + ( + ) + ( + ,MR1!-FLAG> ,MR2!-FLAG> + ) + ()>) + ( + + > + ) + ()>) + (,MR2!-FLAG + > + ) + ()>) + ( > > + ) + ( + + +"The mirror is mounted on a wooden panel which moves slightly inward +as you push, and back out when you let go. The mirror feels fragile.") + (T +"The mirror is unyielding, but seems rather fragile.")> ,LONG-TELL1>)>> + +) + >> + ) + ( + ) + ( + + ) + ()>) + (,MR2!-FLAG + ) + ()>) + ( + +"The wooden panel moves slightly inward as you push, and back out +when you let go.") + (T +"The panel is unyielding.")>>)>> + +> + + (MDIR) FIX (RM) ) + > ) + (ELSE ,DIRVEC>>>)> + > <==? 360> .DIR>> + + ) + ( T>)>) + (<>)>) + (,WOOD-OPEN!-FLAG + > <==? 360> .DIR>> + > T>> + + > + .RM) + (<>)>) + (<>)>) + (<>)>> + +"MIRNS -- returns room in a given direction from the mirror (north or +south as indicated by first argument). If second arg is T, then we +are exiting, not moving the mirror, so don't worry about ends." + +) (EXIT? <>) + "AUX" (MLOC ,MLOC) (REX ) M EXIT) + #DECL ((MLOC) ROOM (REX) EXIT (M) > + (EXIT?) (EXIT) + (NORTH?) ) + + > + <==? .MLOC ,SOUTHEND>>>> + <>) + () ()> + .REX>> + > + ) + ( .EXIT)>)>> + + + +> + 0 + 3 + ,MRWSTR) + (,MRESTR)>>>> + + 1> + ) + ( <>)>) + ( T)>> + +) + + + > + " lying on the floor.">) + ()> + <> <> <>>)>> + +)) + #DECL ((BEAM) OBJECT) + + )>> + >>> + +; "This function cannot have its .PRSI and .PRSO's changed to etc!!" + +) (PRSI ) + (HERE ,HERE) (BEAM )) + #DECL ((PRSO PRSI) OBJECT (HERE) ROOM (BEAM) OBJECT) + + + + >)> + > <>) + ( + + " lying on the floor.">) + (> + " already breaks the beam.">) + ( ".">)>) + ( <==? .BEAM>> + )>> + + + ) + ( + + > + + ) + ()>)>) + ( + > + > + 1> + <==? .HERE >> + ) + (<==? .HERE > + )>)>> + + + + +;"mirror points... 0 = north" + + + + +;"pole raised?: 0 -- in hole or channel, 1 -- foor level, 2 -- in air" + +)) + #DECL ((MDIR) FIX (MLOC) ROOM (STARTER) ) + + > + + > + > + ) + (ELSE + )>) + ( <==? .MDIR 180>> + > + ) + (ELSE + )>) + (ELSE + )> + 1>> + ".">)>> + +> + +;"MOVEMENT" + + + > + > + + > + > + <==? >> + 360>> + ) + ( 360>> + )> + >> + "."> + > + )> + ) + ( + ) + ()>)>> + + + +) (MLOC ,MLOC)) + #DECL ((MDIR) FIX + (RM) (MRG MLOC) ROOM) + + > + ) + (<==? > + > .RM>) + ()>) + ( + + > + <==? .MDIR 0>> + > + <==? .MDIR 180>>> + + > + + >)>) + ( + > + )> + T)>> + +) (PU? >)) + #DECL ((NORTH?) (RM MRG) ROOM (PU?) ) + + 1 + + " and stops over another compass rose."> + + + <==? ,HERE > + ) + ( > + ) + ( + )> + > + T> + + + + ) + ( + )>) + ( + ) + ( + + + T) + ( <==? ,MLOC >> + + ) + (<1? .PU> + ) + ( + )>)>> + +\ + +; "SUBTITLE The Spanish Inquisition" + +> 15>> + +>> + +]>> + + + +;"tries recorded for this question" + + + + + (NQATT) FIX + (INQOBJS) + (NUMOBJS) > + +) (OBJECT-OBL ,OBJECT-POBL)) + #DECL ((ANS) (CORRECT) VECTOR + (1CORR) + (WORDS ACTIONS OBJECT-OBL) POBLIST) + ) + (>>> + > + > + >) + (ELSE )>> + .CORRECT>) + () VAL) + #DECL ((LV) (STR) STRING + (VAL ATM) ANY + (ADJ) + (OBJ) ) + >> >> + > + >) + (> + ADJECTIVE> + )>) + (> + + ,INQOBJS .ADJ>> + >)>)> + >>)>> + +) + "AUX" (NQV ,NQVEC) (QUES <1 .NQV>) (NQATT ,NQATT)) + #DECL ((ANS) > + (NQV) (QUES) QUESTION (NQATT) FIX) + + "'"> + ) + (> + > + + >> + + > + ) + ( + + > + "'"> + )>) + (>> + + + + ) + (> + " more chance"> + + ".'") + ("s.'")>>)>)>) + ()>> + +> + +;"if D.M. has stated the rules." + +>)) + #DECL ((QV NQV) ) + + > + + +