commit c446b240a968a00337d530ab5737bbc9117a5942 Author: historicalsource Date: Sat Apr 13 19:44:59 2019 -0400 Original Source 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) ) + + > + + +