mirror of
https://github.com/historicalsource/zorkzero
synced 2024-04-26 22:29:29 +03:00
2196 lines
62 KiB
Plaintext
2196 lines
62 KiB
Plaintext
"HIGHWAY for
|
|
|
|
ZORK ZERO
|
|
(c) Copyright 1988 Infocom, Inc. All Rights Reserved."
|
|
|
|
<BEGIN-SEGMENT LOWER>
|
|
|
|
<ROOM G-U-HIGHWAY
|
|
(LOC ROOMS)
|
|
(REGION "Flatheadia")
|
|
(DESC "Great Underground Highway")
|
|
(LDESC
|
|
"This is the northern terminus of one of the branches of the Great Underground
|
|
Highway system, one of the ambitious construction projects conceived by King
|
|
Duncanthrax and executed by the Frobozz Magic Cave Company. A tunnel leads
|
|
northeast.")
|
|
(NE TO LOWER-HALL)
|
|
(SOUTH TO EXIT)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-5>)
|
|
(ICON G-U-HIGHWAY-ICON)>
|
|
|
|
<ROOM EXIT
|
|
(LOC ROOMS)
|
|
(REGION "Flatheadia")
|
|
(DESC "Exit")
|
|
(LDESC
|
|
"A wide underground road runs north and south. There's an eye-catching sign
|
|
next to a tunnel leading west.")
|
|
(WEST TO FIELD-OFFICE)
|
|
(NORTH TO G-U-HIGHWAY)
|
|
(SOUTH TO CROSSROADS)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(GLOBAL SIGN)
|
|
(MAP-LOC <PTABLE LOWER-LEVEL-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-5>)
|
|
(ICON EXIT-ICON)>
|
|
|
|
<END-SEGMENT>
|
|
|
|
<BEGIN-SEGMENT FOOZLE>
|
|
|
|
<ROOM CROSSROADS
|
|
(LOC ROOMS)
|
|
(REGION "Somewhere Along the GUH")
|
|
(DESC "Crossroads")
|
|
(LDESC
|
|
"You stand at the junction of two underground highways, one north-south
|
|
and the other east-west. A sign hangs in the center of the junction.")
|
|
(NORTH TO EXIT)
|
|
(SOUTH TO TOLL-PLAZA)
|
|
(EAST TO CAVE-IN)
|
|
(WEST TO POTHOLES)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(GLOBAL SIGN)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-7>)
|
|
(ICON CROSSROADS-ICON)>
|
|
|
|
<ROOM CAVE-IN
|
|
(LOC ROOMS)
|
|
(DESC "Cave-In")
|
|
(REGION "Somewhere Along the GUH")
|
|
(LDESC
|
|
"Just ahead, the roof of the highway tunnel has collapsed, creating a dead
|
|
end. (Decades of non-maintenance of the Empire's infrastructure are taking
|
|
their toll.) Your only choice is to return to the west.")
|
|
(WEST TO CROSSROADS)
|
|
(OUT TO CROSSROADS)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-8>)
|
|
(ACTION CAVE-IN-F)>
|
|
|
|
<ROUTINE CAVE-IN-F ("OPT" (RARG <>))
|
|
<COND (<AND <EQUAL? .RARG ,M-END>
|
|
<IN? ,PIT-BOMB ,LOCAL-GLOBALS>
|
|
,LIT>
|
|
<SETUP-ORPHAN "answer">
|
|
<COND (<AND <NOT <IN? ,JESTER ,HERE>>
|
|
<G? <- ,MOVES ,J-DISPOSED> 3>>
|
|
<MOVE ,JESTER ,HERE>
|
|
<THIS-IS-IT ,JESTER>
|
|
<DEQUEUE I-JESTER>
|
|
<RETURN-FROM-MAP>
|
|
<TELL
|
|
" The jester is here. \"I'm glad you decided to drop in! As you see, the
|
|
ceiling decided to drop in some time ago.\" He sits cross-legged on a piece
|
|
of rubble. \"Time for a guessing contest. If you can guess my middle name,
|
|
I'll give you a prize for winning this game!\"" CR>)>)>>
|
|
|
|
<BEGIN-SEGMENT 0>
|
|
|
|
<OBJECT PIT-BOMB
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "anti-pit bomb")
|
|
(FDESC "Sitting on a piece of rubble is an anti-pit bomb.")
|
|
(SYNONYM BOMB LABEL)
|
|
(ADJECTIVE BOTTOMLESS ANTI-PIT)
|
|
(FLAGS TAKEBIT READBIT VOWELBIT)
|
|
(TEXT
|
|
"\"Is your cavern infested with bottomless pits? If so, this anti-pit bomb is
|
|
the answer to your prayers! Instructions: simply enter the pitted room and
|
|
throw the bomb. All pit-filling agents are harmless; no protective gear is
|
|
required!|
|
|
Another fine product of the Frobozz Magic Bottomless Pit Bomb Company.\"")
|
|
(ACTION PIT-BOMB-F)>
|
|
|
|
<ROUTINE PIT-BOMB-F ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL "The grenade-sized bomb bears a large label." CR>)
|
|
(<VERB? THROW>
|
|
<REMOVE ,PIT-BOMB>
|
|
<SETG PIT-BOMB-LOC ,HERE>
|
|
<COND (,LIT
|
|
<TELL
|
|
"The bomb silently explodes into a growing cloud of
|
|
bottomless-pit-filling agents. ">)
|
|
(T
|
|
<TELL
|
|
"You feel a brief puff of air from the direction in which
|
|
you threw the bomb. ">)>
|
|
<COND (<EQUAL? ,HERE ,PITS>
|
|
<COND (<NOT ,LIT>
|
|
<JIGS-UP
|
|
"You hear the pits filling in, accompanied by the sound of a legion of
|
|
slavering creatures lurking forth. Unhindered by the darkness, they
|
|
converge on you, with sharp fangs and ravenous appetites.">)
|
|
(T
|
|
<FCLEAR ,LANTERN ,TRYTAKEBIT>
|
|
<FSET ,PITS ,REDESCBIT>
|
|
<SETG COMPASS-CHANGED T>
|
|
<TELL
|
|
"As the pits fill in, from the bottom up, dark and sinister forms well up and
|
|
lurk quickly into the shadows. Uncountable hordes of the creatures emerge, and
|
|
your light glints momentarily off slavering fangs. Gurgling noises come from
|
|
every dark corner as the last of the pits becomes filled in." CR>
|
|
<INC-SCORE 12>
|
|
<CRLF>
|
|
<V-LOOK>)>)
|
|
(T
|
|
<TELL
|
|
"The agents, finding no bottomless pits here, disperse." CR>)>)>>
|
|
|
|
<GLOBAL PIT-BOMB-LOC <>>
|
|
|
|
<END-SEGMENT>
|
|
|
|
<BEGIN-SEGMENT FOOZLE>
|
|
|
|
<ROOM TOLL-PLAZA
|
|
(LOC ROOMS)
|
|
(DESC "Toll Plaza")
|
|
(REGION "Somewhere Along the GUH")
|
|
(NORTH TO CROSSROADS)
|
|
(SOUTH TO FISSURE-EDGE IF TOLL-GATE IS OPEN)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(SYNONYM PLAZA)
|
|
(ADJECTIVE TOLL)
|
|
(GLOBAL SIGN)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-7>)
|
|
(ICON TOLL-PLAZA-ICON)
|
|
(ACTION TOLL-PLAZA-F)>
|
|
|
|
<ROUTINE TOLL-PLAZA-F ("OPT" (RARG <>))
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"You have reached one of numerous Great Underground Highway system tolls. ">
|
|
<COND (<FSET? ,TOLL-GATE ,OPENBIT>
|
|
<TELL "The gate lies open to the south">)
|
|
(T
|
|
<TELL "A closed toll gate spans the road">)>
|
|
<TELL
|
|
". The toll booth is unoccupied, but a sign next to the gate indicates
|
|
an \"exact change\" option.">)>>
|
|
|
|
<OBJECT TOLL-BOOTH
|
|
(LOC TOLL-PLAZA)
|
|
(DESC "toll booth")
|
|
(SYNONYM BOOTH)
|
|
(ADJECTIVE TOLL)
|
|
(FLAGS NDESCBIT)
|
|
(ACTION TOLL-BOOTH-F)>
|
|
|
|
<ROUTINE TOLL-BOOTH-F ()
|
|
<COND (<VERB? ENTER>
|
|
<TELL "An invisible force stops you." CR>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"The booth is unmanned, but there is an \"exact change\" basket on
|
|
the side of the booth." CR>)>>
|
|
|
|
<OBJECT TOLL-GATE
|
|
(LOC TOLL-PLAZA)
|
|
(DESC "toll gate")
|
|
(SYNONYM GATE)
|
|
(ADJECTIVE TOLL)
|
|
(FLAGS NDESCBIT DOORBIT)
|
|
(ACTION TOLL-GATE-F)>
|
|
|
|
<ROUTINE TOLL-GATE-F ()
|
|
<COND (<OR <AND <VERB? OPEN>
|
|
<NOT <FSET? ,TOLL-GATE ,OPENBIT>>>
|
|
<AND <VERB? CLOSE>
|
|
<FSET? ,TOLL-GATE ,OPENBIT>>>
|
|
<TELL ,WONT-BUDGE>)>>
|
|
|
|
<OBJECT BASKET
|
|
(LOC TOLL-PLAZA)
|
|
(DESC "exact change basket")
|
|
(SYNONYM BASKET)
|
|
(ADJECTIVE EXACT CHANGE)
|
|
(FLAGS VOWELBIT NDESCBIT CONTBIT OPENBIT SEARCHBIT)
|
|
(ACTION BASKET-F)>
|
|
|
|
<ROUTINE BASKET-F ()
|
|
<COND (<VERB? CLOSE>
|
|
<TELL ,HUH>)
|
|
(<AND <VERB? PUT>
|
|
<PRSO? ,ZORKMID-COIN>>
|
|
<REMOVE ,ZORKMID-COIN>
|
|
<FSET ,TOLL-GATE ,OPENBIT>
|
|
<TELL
|
|
"\"Bink!\" The toll gate opens, and a poorly maintained sign lights up
|
|
momentarily, saying \"T ANK Y U!\"" CR>
|
|
<INC-SCORE 14>)>>
|
|
|
|
<ROOM FISSURE-EDGE
|
|
(LOC ROOMS)
|
|
(DESC "Fissure's Edge")
|
|
(REGION "Somewhere Along the GUH")
|
|
(LDESC
|
|
"To the south, the road is rent by a wide fissure, the reminder of a recent
|
|
quake. Judging by the footprints in the dust, many travellers have reached
|
|
this point, only to turn around and head back to the north. The quake has
|
|
also opened a narrow crack in the eastern wall of the tunnel; you might be
|
|
able to squeeze into it.")
|
|
(NORTH TO TOLL-PLAZA)
|
|
(EAST TO TIGHT-SQUEEZE)
|
|
(SOUTH SORRY "The fissure is uncrossable.")
|
|
(DOWN SORRY "A plunge into the fissure would be fatal.")
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-7>)
|
|
(ICON FISSURES-EDGE-ICON)
|
|
(THINGS NARROW CRACK FISSURE-CRACK-PS
|
|
WIDE FISSURE FISSURE-PS)>
|
|
|
|
<ROUTINE FISSURE-PS ()
|
|
<COND (<VERB? ENTER>
|
|
<DO-WALK ,P?DOWN>)
|
|
(<VERB? CROSS>
|
|
<DO-WALK ,P?SOUTH>)>>
|
|
|
|
<ROUTINE FISSURE-CRACK-PS ()
|
|
<COND (<VERB? EXAMINE>
|
|
<TELL "You could probably squeeze into it." CR>)
|
|
(<VERB? LOOK-INSIDE>
|
|
<COND (<LIT? ,TIGHT-SQUEEZE>
|
|
<TELL ,SOME-LIGHT>)
|
|
(T
|
|
<TELL ,ONLY-BLACKNESS>)>)
|
|
(<VERB? ENTER>
|
|
<DO-WALK ,P?EAST>)>>
|
|
|
|
<ROOM TIGHT-SQUEEZE
|
|
(LOC ROOMS)
|
|
(DESC "Tight Squeeze")
|
|
(REGION "Region: Unknown")
|
|
(LDESC
|
|
"You are in a narrow fissure which widens to the west. A cool breeze seems
|
|
to blow upon you from below.")
|
|
(WEST TO FISSURE-EDGE)
|
|
(DOWN TO ORB-ROOM)
|
|
(SYNONYM FISSURE)
|
|
(ADJECTIVE NARROW)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-8>)>
|
|
|
|
<ROOM ORB-ROOM
|
|
(LOC ROOMS)
|
|
(DESC "Orb Room")
|
|
(REGION "Region: Unknown")
|
|
(LDESC
|
|
"The air is chilly, the walls are covered with ice, and the floor is piled
|
|
high with crystal spheres of varying sizes and colors; most are chipped or
|
|
shattered. Your light reveals no visible exits, although a trickle of warm,
|
|
dry air caresses you from above.")
|
|
(UP TO TIGHT-SQUEEZE)
|
|
(OUT TO TIGHT-SQUEEZE)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-9>)
|
|
(ICON ORB-ROOM-ICON)
|
|
(THINGS <> ICE ICE-PS)>
|
|
|
|
<ROUTINE ICE-PS ()
|
|
<TELL
|
|
"[This is just one of those things that's there to enhance your
|
|
mental imagery.]" CR>>
|
|
|
|
<BEGIN-SEGMENT 0>
|
|
|
|
<OBJECT MILKY-ORB
|
|
(LOC ORB-ROOM)
|
|
(DESC "milky orb")
|
|
(FDESC
|
|
"The only intact orbs seem to be a milky orb, a fiery orb, a glittery orb,
|
|
and a smoky orb.")
|
|
(SYNONYM ORB)
|
|
(ADJECTIVE MILKY WHITE)
|
|
(FLAGS TAKEBIT TRYTAKEBIT)
|
|
(ACTION ORB-F)>
|
|
|
|
<OBJECT FIERY-ORB
|
|
(LOC ORB-ROOM)
|
|
(DESC "fiery orb")
|
|
(SYNONYM ORB)
|
|
(ADJECTIVE FIERY ORANGE)
|
|
(FLAGS TAKEBIT TRYTAKEBIT NDESCBIT)
|
|
(ACTION ORB-F)>
|
|
|
|
<OBJECT SMOKY-ORB
|
|
(LOC ORB-ROOM)
|
|
(DESC "smoky orb")
|
|
(SYNONYM ORB)
|
|
(ADJECTIVE SMOKY GRAY)
|
|
(FLAGS TAKEBIT TRYTAKEBIT NDESCBIT)
|
|
(ACTION ORB-F)>
|
|
|
|
<OBJECT GLITTERY-ORB
|
|
(LOC ORB-ROOM)
|
|
(DESC "glittery orb")
|
|
(SYNONYM ORB)
|
|
(ADJECTIVE GLITTERY GOLD GOLDEN)
|
|
(FLAGS TAKEBIT TRYTAKEBIT NDESCBIT)
|
|
(ACTION ORB-F)>
|
|
|
|
<ROUTINE ORB-F ()
|
|
<COND (<AND <VERB? TAKE>
|
|
<FSET ,PRSO ,TRYTAKEBIT>>
|
|
<FCLEAR ,GLITTERY-ORB ,NDESCBIT>
|
|
<FCLEAR ,FIERY-ORB ,NDESCBIT>
|
|
<FCLEAR ,SMOKY-ORB ,NDESCBIT>
|
|
<FCLEAR ,MILKY-ORB ,TRYTAKEBIT>
|
|
<FCLEAR ,GLITTERY-ORB ,TRYTAKEBIT>
|
|
<FCLEAR ,FIERY-ORB ,TRYTAKEBIT>
|
|
<FCLEAR ,SMOKY-ORB ,TRYTAKEBIT>
|
|
<FSET ,MILKY-ORB ,TOUCHBIT>
|
|
<FSET ,GLITTERY-ORB ,TOUCHBIT>
|
|
<FSET ,FIERY-ORB ,TOUCHBIT>
|
|
<FSET ,SMOKY-ORB ,TOUCHBIT>
|
|
<RFALSE>)
|
|
(<VERB? EXAMINE>
|
|
<TELL
|
|
"The orb is a sphere of lustrous crystal without imperfection.">
|
|
<COND (<NOT ,TIME-STOPPED>
|
|
<TELL " ">
|
|
<PERFORM ,V?LOOK-INSIDE ,PRSO>
|
|
<RTRUE>)
|
|
(T
|
|
<CRLF>)>)
|
|
(<VERB? LOOK-INSIDE>
|
|
<COND (,TIME-STOPPED
|
|
<TELL "The sphere has">)
|
|
(T
|
|
<TELL
|
|
"Deep within the cool, smooth surface of the orb
|
|
lies an ever-shifting dance of ">
|
|
<COND (<PRSO? ,GLITTERY-ORB>
|
|
<TELL "sparkling stars">)
|
|
(<PRSO? ,FIERY-ORB>
|
|
<TELL "flickering flames">)
|
|
(<PRSO? ,SMOKY-ORB>
|
|
<TELL "swirling smoke">)
|
|
(T
|
|
<TELL "milky mists">)>
|
|
<TELL ", giving the sphere">)>
|
|
<TELL " a generally ">
|
|
<COND (<PRSO? ,GLITTERY-ORB>
|
|
<TELL "golden">)
|
|
(<PRSO? ,FIERY-ORB>
|
|
<TELL "orange">)
|
|
(<PRSO? ,SMOKY-ORB>
|
|
<TELL "gray">)
|
|
(T
|
|
<TELL "white">)>
|
|
<TELL " complexion." CR>)
|
|
(<AND <VERB? MUNG>
|
|
<PRSO? ,MILKY-ORB ,FIERY-ORB ,SMOKY-ORB ,GLITTERY-ORB>>
|
|
<REMOVE ,PRSO>
|
|
<TELL "You ">
|
|
<COND (<PRSO? ,MILKY-ORB>
|
|
<TELL "feel a puff of cool, caressing air">)
|
|
(<PRSO? ,FIERY-ORB>
|
|
<TELL "feel a hot dry blast of air">)
|
|
(<PRSO? ,SMOKY-ORB>
|
|
<TELL "smell a dry burnt odor">)
|
|
(T
|
|
<TELL "see a burst of twinkling lights">)>
|
|
<TELL " as the orb is shattered to dust." CR>)>>
|
|
|
|
;<ROUTINE G-ORB-F (TBL LEN)
|
|
<COND (<AND <INTBL? ,PILE-OF-ORBS <REST .TBL 2> .LEN>
|
|
<EQUAL? ,HERE ,ORB-ROOM>>
|
|
,PILE-OF-ORBS ;"you must have used noun ORBS")
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<END-SEGMENT>
|
|
|
|
<BEGIN-SEGMENT FOOZLE>
|
|
|
|
<ROOM POTHOLES
|
|
(LOC ROOMS)
|
|
(DESC "Potholes")
|
|
(REGION "Somewhere Along the GUH")
|
|
(LDESC
|
|
"The road, which runs east to west, is in bad shape here, pitted with
|
|
holes and ruts.")
|
|
(EAST TO CROSSROADS)
|
|
(WEST TO REST-STOP)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-6>)>
|
|
|
|
<ROOM REST-STOP
|
|
(LOC ROOMS)
|
|
(DESC "Rest Stop")
|
|
(REGION "Somewhere Along the GUH")
|
|
(LDESC
|
|
"By the north side of the road is a rest stop, closed and boarded up. The road
|
|
continues east and southwest.")
|
|
(EAST TO POTHOLES)
|
|
(SW TO FORK)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-5>)
|
|
(ICON REST-STOP-ICON)
|
|
(THINGS REST STOP REST-STOP-PS
|
|
<> BOARD SHUTTER-PS
|
|
<> SHUTTER SHUTTER-PS)>
|
|
|
|
<ROUTINE REST-STOP-PS ()
|
|
<COND (<VERB? EXAMINE ENTER>
|
|
<TELL "The rest stop is all shuttered up." CR>)
|
|
(<VERB? OPEN>
|
|
<TELL ,CARPENTERS>)
|
|
(<VERB? SEARCH>
|
|
<TELL "You're outside it!" CR>)>>
|
|
|
|
<ROUTINE SHUTTER-PS ()
|
|
<COND (<VERB? TAKE REMOVE>
|
|
<TELL ,CARPENTERS>)
|
|
(<VERB? CLOSE>
|
|
<TELL "They are!" CR>)>>
|
|
|
|
<ROOM FORK
|
|
(LOC ROOMS)
|
|
(DESC "Fork")
|
|
(REGION "Somewhere Along the GUH")
|
|
(LDESC
|
|
"The tunnel forks here, with roads leading northeast, west, and southwest.")
|
|
(NE TO REST-STOP)
|
|
(WEST TO FISHY-ODOR)
|
|
(SW TO SALTY-SMELL)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-4>)
|
|
(ICON FORK-ICON)>
|
|
|
|
<ROOM FISHY-ODOR
|
|
(LOC ROOMS)
|
|
(DESC "Fishy Odor")
|
|
(REGION "Port Foozle")
|
|
(LDESC
|
|
"The tunnel narrows toward a spot of light to the west. The stench of dead,
|
|
rotting fish hangs in the air.")
|
|
(EAST TO FORK)
|
|
(WEST TO FISHING-VILLAGE)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-3>)
|
|
(ICON FISHY-ODOR-ICON)>
|
|
|
|
<ROOM SALTY-SMELL
|
|
(LOC ROOMS)
|
|
(DESC "Salty Smell")
|
|
(REGION "Port Foozle")
|
|
(LDESC
|
|
"The tunnel from the northeast is narrower here, and pervaded with the scent
|
|
of the sea. You can hear breakers to the southwest.")
|
|
(NE TO FORK)
|
|
(SW TO QUILBOZZA-BEACH)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-3>)>
|
|
|
|
<ROOM FISHING-VILLAGE
|
|
(LOC ROOMS)
|
|
(DESC "Fishing Village")
|
|
(REGION "Port Foozle")
|
|
(LDESC
|
|
"This once-busy port, on the shore of the Great Sea, lies deserted. A tunnel
|
|
opens to the east, the shoreline can be followed south along the ocean's edge,
|
|
and a wharf juts into the harbor to the west. A newly constructed stone
|
|
building lies to the north; an eye-catching sign has been erected next to its
|
|
entrance.")
|
|
(EAST TO FISHY-ODOR)
|
|
(WEST TO WHARF)
|
|
(SOUTH TO SANDBAR)
|
|
(NORTH TO INQUISITION)
|
|
(IN TO INQUISITION)
|
|
(FLAGS RLANDBIT ONBIT OUTSIDEBIT)
|
|
(GLOBAL VILLAGE SIGN FLATHEAD-OCEAN WHARF GLOBAL-BLDG)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-2>)
|
|
(ICON FISHING-VILLAGE-ICON)
|
|
(ACTION FISHING-VILLAGE-F)>
|
|
|
|
<ROUTINE FISHING-VILLAGE-F ("OPT" (RARG <>))
|
|
<COND (<EQUAL? .RARG ,M-ENTER>
|
|
<COND (<NOT <FSET? ,FISHING-VILLAGE ,TOUCHBIT>>
|
|
<SETG INQ-NUMBER <RANDOM 100>>
|
|
<SETG NUMBER-ON-LINE <+ <RANDOM 3> 2>>)>
|
|
<QUEUE I-INQ -1>)>>
|
|
|
|
<ROUTINE I-INQ ("AUX" (NEW-PERSONS 0) (DOABLE <>))
|
|
<COND (<NOT <EQUAL? ,HERE ,INQUISITION ,FISHING-VILLAGE>>
|
|
<DEQUEUE I-INQ>
|
|
<RFALSE>)
|
|
(<OR <L? ,NUMBER-ON-LINE 3>
|
|
<AND <PROB 75>
|
|
<EQUAL? ,NUMBER-ON-LINE 3>>
|
|
<AND <PROB 50>
|
|
<EQUAL? ,NUMBER-ON-LINE 4>>
|
|
<AND <PROB 25>
|
|
<EQUAL? ,NUMBER-ON-LINE 5>>>
|
|
<SET NEW-PERSONS <COND (<PROB 50> 1)
|
|
(<PROB 80> 2)
|
|
(T 3)>>
|
|
<SETG NUMBER-ON-LINE <+ ,NUMBER-ON-LINE .NEW-PERSONS>>)>
|
|
<SETG INQ-NUMBER <+ ,INQ-NUMBER 1>>
|
|
<COND (<AND <EQUAL? ,HERE ,FISHING-VILLAGE>
|
|
<G? .NEW-PERSONS 0>>
|
|
<RETURN-FROM-MAP>
|
|
<TELL " A trollish guard drags ">
|
|
<COND (<EQUAL? .NEW-PERSONS 1>
|
|
<TELL "someone">)
|
|
(<EQUAL? .NEW-PERSONS 2>
|
|
<TELL "two people">)
|
|
(T
|
|
<TELL "three people">)>
|
|
<TELL ", kicking and screaming, into the stone building." CR>
|
|
<RTRUE>)
|
|
(<AND <EQUAL? ,HERE ,INQUISITION>
|
|
<G? .NEW-PERSONS 0>>
|
|
<RETURN-FROM-MAP>
|
|
<TELL " A trollish guard drags in ">
|
|
<COND (<EQUAL? .NEW-PERSONS 1>
|
|
<TELL "someone">)
|
|
(<EQUAL? .NEW-PERSONS 2>
|
|
<TELL "two people">)
|
|
(T
|
|
<TELL "three people">)>
|
|
<TELL ", who obediently take">
|
|
<COND (<EQUAL? .NEW-PERSONS 1>
|
|
<TELL "s a number">)
|
|
(T
|
|
<TELL " numbers">)>
|
|
<TELL " from the number dispenser." CR>)>
|
|
<COND (<EQUAL? ,HERE ,INQUISITION>
|
|
<RETURN-FROM-MAP>
|
|
<COND (<AND <G? ,NUMBER-TAKEN 0>
|
|
<G? ,INQ-NUMBER ,NUMBER-TAKEN>>
|
|
<JIGS-UP
|
|
" The executioner says, \"Well, we can't wait around forever; we've got
|
|
thousands to execute! Hang 'em!\" You swing.">)>
|
|
<TELL
|
|
" The executioner calls out, \"Number " N ,INQ-NUMBER "!\" and ">
|
|
<COND (<EQUAL? ,INQ-NUMBER ,NUMBER-TAKEN>
|
|
<TELL "looks at you with an ugly grin">)
|
|
(<AND <PROB 20>
|
|
<NOT ,J-INQ-SCENE>
|
|
<FSET? ,JESTER ,TOUCHBIT>>
|
|
<SETG J-INQ-SCENE T>
|
|
<TELL
|
|
"you suddenly realize that the next person on line is the jester! He is
|
|
acting like a first-class sinner: smoking and drinking, using foul language,
|
|
with a curvaceous woman in each arm and a pocketful of gambling receipts.
|
|
He strides forward and makes a particularly salacious request -- something
|
|
involving Vaseline and barnyard animals. His request denied, he is led to
|
|
the block, but just as the axe is swinging down, the jester turns into a
|
|
wisp of smoke and vanishes! The executioner spits angrily">)
|
|
(T
|
|
<SETG NUMBER-ON-LINE <- ,NUMBER-ON-LINE 1>>
|
|
<TELL
|
|
"a bedraggled man steps forward. \"Executioner, ">
|
|
<COND (<PROB 50>
|
|
<SET DOABLE T>
|
|
<TELL <PICK-ONE ,DOABLE-REQUESTS>>)
|
|
(T
|
|
<TELL <PICK-ONE ,UNDOABLE-REQUESTS>>)>
|
|
<TELL ",\" he croaks. The executioner says, \"">
|
|
<COND (.DOABLE
|
|
<TELL
|
|
"Done!\" and the man is led to the gallows and hung from the neck until dead">)
|
|
(T
|
|
<TELL
|
|
"Sorry, can't do that.\" The man is placed on the block, and a moment
|
|
later his head is rolling away">)>)>
|
|
<TELL ,PERIOD-CR>)>>
|
|
|
|
<CONSTANT DOABLE-REQUESTS
|
|
<LTABLE
|
|
0
|
|
"sing a song"
|
|
"kick me"
|
|
"kiss me">>
|
|
|
|
<CONSTANT UNDOABLE-REQUESTS
|
|
<LTABLE
|
|
0
|
|
"give me a thousand zorkmids"
|
|
"give me Ursula Flathead"
|
|
"send me to Antharia">>
|
|
|
|
<GLOBAL INQ-NUMBER 0> ;"next!"
|
|
|
|
<GLOBAL NUMBER-ON-LINE 0>
|
|
|
|
<GLOBAL NUMBER-TAKEN 0>
|
|
|
|
<GLOBAL INQ-SCORE 25>
|
|
|
|
<ROOM INQUISITION
|
|
(LOC ROOMS)
|
|
(DESC "Inquisition")
|
|
(REGION "Port Foozle")
|
|
(SOUTH SORRY "A trollish guard blocks the exit. \"No one leave!\"")
|
|
(OUT SORRY "A trollish guard blocks the exit. \"No one leave!\"")
|
|
(FLAGS RLANDBIT ONBIT)
|
|
(GLOBAL SIGN GLOBAL-BLDG)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-2>)
|
|
(ACTION INQUISITION-F)>
|
|
|
|
<ROUTINE INQUISITION-F ("OPT" (RARG <>) "AUX" OWINNER TAKER)
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<COND (<NOT <FSET? ,INQUISITION ,TOUCHBIT>>
|
|
<TELL
|
|
"Extremist religions spring up whenever an empire collapses. The Inquisitors
|
|
believe the impending doom was caused by widespread sinning, but that the gods
|
|
can be placated if every person in the kingdom is executed." CR " ">)>
|
|
<TELL
|
|
"This is one of the Inquisitors' execution sites. A hooded executioner,
|
|
dripping with sweat and blood, stands between a gallows and a block. "
|
|
N ,NUMBER-ON-LINE " people are queued up in front of the executioner. ">
|
|
<COND (<G? ,NUMBER-TAKEN 0>
|
|
<TELL "You are ">
|
|
<COND (<EQUAL? <- ,NUMBER-TAKEN ,INQ-NUMBER> 7>
|
|
<TELL "seventh">)
|
|
(<EQUAL? <- ,NUMBER-TAKEN ,INQ-NUMBER> 6>
|
|
<TELL "sixth">)
|
|
(<EQUAL? <- ,NUMBER-TAKEN ,INQ-NUMBER> 5>
|
|
<TELL "fifth">)
|
|
(<EQUAL? <- ,NUMBER-TAKEN ,INQ-NUMBER> 4>
|
|
<TELL "fourth">)
|
|
(<EQUAL? <- ,NUMBER-TAKEN ,INQ-NUMBER> 3>
|
|
<TELL "third">)
|
|
(<EQUAL? <- ,NUMBER-TAKEN ,INQ-NUMBER> 2>
|
|
<TELL "second">)
|
|
(T
|
|
<TELL "first">)>
|
|
<TELL " on line. ">)>
|
|
<TELL
|
|
"Near the end of the line is a number dispenser. A large sign fills one wall.
|
|
The only exit is south.">)
|
|
(<EQUAL? .RARG ,M-END>
|
|
<RETURN-FROM-MAP>
|
|
<COND (<EQUAL? ,INQ-SCORE 0> ;"already solved it"
|
|
<TELL
|
|
" The executioner spots you. \"Get that joker outta here!\" Guards fling
|
|
you back onto the street." CR CR>
|
|
<GOTO ,FISHING-VILLAGE>
|
|
<RTRUE>)>
|
|
<SET OWINNER ,WINNER>
|
|
<SETG WINNER ,EXECUTIONER> ;"see SEE-INSIDE?"
|
|
<COND (<VISIBLE? ,PIGEON>
|
|
<TELL
|
|
" One of the guards says, \"Sorry, you'll have to leave your pigeon
|
|
outside.\" He grabs it and ">
|
|
<COND (<EQUAL? <META-LOC ,PERCH> ,HERE>
|
|
<TELL "tosses it outside">
|
|
<COND (<OR
|
|
<SET TAKER
|
|
<FIND-IN ,FISHING-VILLAGE ,WHITEBIT>>
|
|
<SET TAKER
|
|
<FIND-IN ,FISHING-VILLAGE ,BLACKBIT>>>
|
|
<MOVE ,PIGEON .TAKER>
|
|
<TELL
|
|
". A moment later," T .TAKER " materializes in the Inquisition building,
|
|
holding the perch! The executioner bellows, \"Hey! We don't want any of
|
|
your kind in here, buster!\" A guard gives" T .TAKER " the boot." CR>)
|
|
(T
|
|
<MOVE ,PIGEON ,FISHING-VILLAGE>)>)
|
|
(T
|
|
<MOVE ,PIGEON <META-LOC ,PERCH>>
|
|
<TELL
|
|
"looks stunned as he recedes and vanishes, along with the pigeon">)>
|
|
<TELL ,PERIOD-CR>)>
|
|
<COND (<VISIBLE? ,CLOAK>
|
|
<COND (<OR <SET TAKER
|
|
<FIND-IN ,FISHING-VILLAGE ,WHITEBIT>>
|
|
<SET TAKER
|
|
<FIND-IN ,FISHING-VILLAGE ,BLACKBIT>>>
|
|
<MOVE ,CLOAK .TAKER>)
|
|
(T
|
|
<MOVE ,CLOAK ,FISHING-VILLAGE>)>
|
|
<TELL
|
|
" A particularly surly-looking guard says, \"Check your cloak in our coat
|
|
room, haw haw haw.\" He grabs the cloak and kicks it through the door." CR>)>
|
|
<SETG WINNER .OWINNER>
|
|
<COND (<L? ,NUMBER-TAKEN -2>
|
|
<JIGS-UP
|
|
" The guard loses his patience and skewers you.">)
|
|
(<L? ,NUMBER-TAKEN 1>
|
|
<COND (<NOT <EQUAL? ,NUMBER-TAKEN 0>>
|
|
<TELL
|
|
" A guard pokes you with his spear. \"Hey, take a number.\"" CR>)>
|
|
<SETG NUMBER-TAKEN <- ,NUMBER-TAKEN 1>>)>)>>
|
|
|
|
<BEGIN-SEGMENT 0>
|
|
|
|
<OBJECT TICKET
|
|
(LOC INQUISITION)
|
|
(DESC "ticket")
|
|
(SYNONYM TICKET NUMBER)
|
|
(OWNER PROTAGONIST)
|
|
(FLAGS TAKEBIT READBIT TRYTAKEBIT NDESCBIT BURNBIT)
|
|
(SIZE 1)
|
|
(ACTION TICKET-F)>
|
|
|
|
<ROUTINE TICKET-F ()
|
|
<COND (<AND <VERB? TAKE>
|
|
<EQUAL? ,HERE ,INQUISITION>>
|
|
<COND (<NOT <G? ,NUMBER-TAKEN 0>>
|
|
<SETG NUMBER-TAKEN
|
|
<+ ,INQ-NUMBER ,NUMBER-ON-LINE>>
|
|
<FCLEAR ,TICKET ,NDESCBIT>
|
|
<FCLEAR ,TICKET ,TRYTAKEBIT>
|
|
<MOVE ,TICKET ,PROTAGONIST>
|
|
<TELL "You get number " N ,NUMBER-TAKEN ,PERIOD-CR>)
|
|
(<NOUN-USED? ,TICKET ,W?NUMBER>
|
|
<TELL
|
|
"A guard lightly bludgeons your hand. \"One number per person!\"" CR>)>)
|
|
(<VERB? READ EXAMINE>
|
|
<COND (<FSET? ,TICKET ,NDESCBIT>
|
|
<TELL "You haven't taken one yet!" CR>)
|
|
(T
|
|
<TELL
|
|
"The ticket has a large number \"" N ,NUMBER-TAKEN "\" on it. In smaller
|
|
type, it says, \"Frobozz Magic Inquisition Numbered Ticket Company.\"" CR>)>)>>
|
|
|
|
<OBJECT BOX
|
|
(LOC INQUISITION)
|
|
(DESC "box")
|
|
(PLURAL "boxes")
|
|
(FDESC
|
|
"One of the sinners has apparently dropped a box here. The box has some
|
|
writing on it.")
|
|
(SYNONYM BOX WRITING)
|
|
(ADJECTIVE SMALL)
|
|
(FLAGS TAKEBIT CONTBIT READBIT SEARCHBIT)
|
|
(SIZE 3)
|
|
(CAPACITY 3)
|
|
(OWNER BOX) ;"read writing on box"
|
|
(TEXT
|
|
"\"Squid Repellent! Contents: 1 pellet. Dissolves slowly in water, keeps
|
|
squid away for hours! Another fine product of the Frobozz Magic Squid
|
|
Repellent Company.\"")>
|
|
|
|
<OBJECT SQUID-REPELLENT
|
|
(LOC BOX)
|
|
(OWNER SQUID-REPELLENT)
|
|
(DESC "pellet of squid repellent")
|
|
(SYNONYM PELLET REPELLENT)
|
|
(ADJECTIVE LARGE SQUID)
|
|
(FLAGS TAKEBIT)
|
|
(SIZE 1)
|
|
(ACTION SQUID-REPELLENT-F)>
|
|
|
|
<ROUTINE SQUID-REPELLENT-F ()
|
|
<COND (<VERB? TASTE SMELL>
|
|
<TELL "Not being a squid, you're not repelled." CR>)>>
|
|
|
|
<END-SEGMENT>
|
|
|
|
<BEGIN-SEGMENT FOOZLE>
|
|
|
|
<OBJECT EXECUTIONER
|
|
(LOC INQUISITION)
|
|
(DESC "executioner")
|
|
(SYNONYM EXECUTIONER MAN)
|
|
(FLAGS ACTORBIT VOWELBIT NDESCBIT ANIMATEDBIT)
|
|
(ACTION EXECUTIONER-F)>
|
|
|
|
<ROUTINE EXECUTIONER-F ("OPT" (ARG <>))
|
|
<COND (<EQUAL? .ARG ,M-WINNER>
|
|
<COND (<EQUAL? ,NUMBER-TAKEN ,INQ-NUMBER>
|
|
<COND (<OR <AND <VERB? BEHEAD>
|
|
<PRSO? ,ME>>
|
|
<AND <VERB? CUT>
|
|
<PRSO? ,HEAD>
|
|
<ADJ-USED? ,HEAD ,W?MY ,W?MINE <>>>>
|
|
<TELL
|
|
"The executioner says, \"Hey, sure! Easy request! I can behead ya!\" Then a
|
|
confused look creeps over his face. \"But if I behead ya, then I done granted
|
|
yer last wish, and I gotta hang ya! But if I hang ya, I ain't granted yer wish,
|
|
and I gotta behead ya! But...\" He trails off. \"Guards, throw this wise guy
|
|
outta here!\" Guards surround you and escort you out." CR>
|
|
<INC-SCORE ,INQ-SCORE>
|
|
<SETG INQ-SCORE 0>
|
|
<CRLF>
|
|
<GOTO ,FISHING-VILLAGE>)
|
|
(<DOABLE-REQUEST>
|
|
<JIGS-UP
|
|
"\"Done!\" You learn that hanging is as excrutiatingly painful as promised.">)
|
|
(<OR <UNDOABLE-REQUEST>
|
|
<PROB 50>>
|
|
<JIGS-UP
|
|
"\"Sorry, can't do that.\" You learn that beheading is
|
|
indeed quite quick and painless.">)
|
|
(T
|
|
<JIGS-UP
|
|
"\"Done!\" You learn that hanging is as excrutiatingly painful as promised.">)>)
|
|
(T
|
|
<TELL "\"Shut up until your number is called!\"" CR>
|
|
<STOP>)>)>>
|
|
|
|
<ROUTINE DOABLE-REQUEST ()
|
|
<COND (<AND <VERB? KISS KICK KILL HANG>
|
|
<PRSO? ,ME>>
|
|
<RTRUE>)
|
|
(<AND <VERB? SING>
|
|
<PRSO? ,LULLABY>>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<ROUTINE UNDOABLE-REQUEST ()
|
|
<COND (<AND <VERB? GIVE>
|
|
<PRSO? ,ME>
|
|
<PRSI? ,POSTER ,THOUSAND-ZORKMIDS>>
|
|
<RTRUE>)
|
|
(<AND <VERB? SEND UNTIE>
|
|
<PRSO? ,ME>>
|
|
<RTRUE>)
|
|
(<AND <VERB? POINT>
|
|
<PRSO? ,WAND>
|
|
<PRSI? ,ME>>
|
|
<RTRUE>)
|
|
(<AND <VERB? WEAR>
|
|
<PRSO? ,RING>>
|
|
<RTRUE>)
|
|
(<AND <VERB? CUT>
|
|
<PRSO? ,HEAD>
|
|
<EQUAL? <GET-OWNER ,HEAD> ,EXECUTIONER>>
|
|
<RTRUE>)
|
|
(<AND <VERB? KILL>
|
|
<PRSO? ,EXECUTIONER>>
|
|
<RTRUE>)
|
|
(T
|
|
<RFALSE>)>>
|
|
|
|
<OBJECT THOUSAND-ZORKMIDS
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "lots of zorkmids")
|
|
(SYNONYM ZORKMIDS)
|
|
(ADJECTIVE HUNDRED THOUSAND MILLION INT.NUM)
|
|
(FLAGS NARTICLEBIT)>
|
|
|
|
<ROOM WHARF
|
|
(LOC ROOMS)
|
|
(DESC "Wharf")
|
|
(REGION "Port Foozle")
|
|
(LDESC
|
|
"This wharf extends into the harbor from a village to the east. Along the
|
|
north side of the wharf, a building rests on piers over the water.")
|
|
(EAST TO FISHING-VILLAGE)
|
|
(NORTH TO CASINO)
|
|
(WEST SORRY "The wharf ends a few steps to the west.")
|
|
(FLAGS RLANDBIT ONBIT OUTSIDEBIT)
|
|
(SYNONYM WHARF)
|
|
(GLOBAL VILLAGE GLOBAL-BLDG FLATHEAD-OCEAN)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-4 MAP-GEN-X-1>)
|
|
(ICON WHARF-ICON)>
|
|
|
|
<ROOM CASINO
|
|
(LOC ROOMS)
|
|
(DESC "Casino")
|
|
(REGION "Port Foozle")
|
|
(LDESC
|
|
"This is the Port Foozle Casino, once a world-famous gambling spot, but
|
|
now deserted and showing the effects of years of ocean storms. The casino
|
|
has been heavily looted; only a single card table seems untouched. An exit
|
|
leads south.")
|
|
(SOUTH TO WHARF)
|
|
(OUT TO WHARF)
|
|
(FLAGS RLANDBIT ONBIT)
|
|
(SYNONYM CASINO)
|
|
(GLOBAL GLOBAL-BLDG)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-3 MAP-GEN-X-1>)
|
|
(ACTION CASINO-F)>
|
|
|
|
<ROUTINE CASINO-F ("OPT" (RARG <>))
|
|
<COND (<AND <EQUAL? .RARG ,M-END>
|
|
<IN? ,BROOM ,LOCAL-GLOBALS>
|
|
<NOT <IN? ,JESTER ,HERE>>>
|
|
<MOVE ,JESTER ,HERE>
|
|
<DEQUEUE I-JESTER>
|
|
<THIS-IS-IT ,JESTER>
|
|
<RETURN-FROM-MAP>
|
|
<TELL " You do a ">
|
|
<COND (<L? <- ,MOVES ,J-DISPOSED> 4>
|
|
<TELL "triple">)
|
|
(T
|
|
<TELL "double">)>
|
|
<TELL
|
|
" take as you notice the jester at the card table, grandly shuffling a thick
|
|
deck. \"I don't wear any Gucci, I can't dance the hootchy-kootchy, I've never
|
|
been good at the old smoochie-woochie, but I sure am a whiz at Double Fanucci!
|
|
When I start to deal, the tension is real; if you can stand the heat, pull up
|
|
a seat!\" He motions for you to sit down at the table." CR>)>>
|
|
|
|
<OBJECT DOUBLE-FANUCCI
|
|
(LOC GLOBAL-OBJECTS)
|
|
(DESC "Double Fanucci")
|
|
(SYNONYM FANUCCI FANNUCCI)
|
|
(ADJECTIVE DOUBLE)
|
|
(RESEARCH
|
|
"\"Legend has it that Double Fanucci (or Fannucci) was invented by the deposed
|
|
Zilbo III in the late seventh century. A game of tremendous complexity and
|
|
almost infinite rules, King Mumberthrax proclaimed it the national sport of
|
|
the Empire in 757 GUE. The annual Double Fanucci Championships, held in
|
|
Borphee during early autumn, frequently leave thousands homeless.\"")
|
|
(ACTION DOUBLE-FANUCCI-F)>
|
|
|
|
<ROUTINE DOUBLE-FANUCCI-F ()
|
|
<COND (<VERB? PLAY>
|
|
<COND (<AND <EQUAL? ,HERE ,CASINO>
|
|
<IN? ,JESTER ,HERE>
|
|
<IN? ,BROOM ,LOCAL-GLOBALS>>
|
|
<COND (<EQUAL? <LOC ,PROTAGONIST> ,CARD-TABLE>
|
|
<F-START>)
|
|
(T
|
|
<PERFORM ,V?ENTER ,CARD-TABLE>)>
|
|
<RTRUE>)
|
|
(T
|
|
<TELL
|
|
"You don't have a pack of Fanucci cards; besides, there's no solitaire
|
|
version of Double Fanucci." CR>)>)>>
|
|
|
|
<OBJECT CARD-TABLE
|
|
(LOC CASINO)
|
|
(DESC "card table")
|
|
(SYNONYM TABLE CHAIR)
|
|
(ADJECTIVE CARD)
|
|
(FLAGS NDESCBIT SURFACEBIT CONTBIT OPENBIT SEARCHBIT VEHBIT)
|
|
(CAPACITY 50)
|
|
(ACTION CARD-TABLE-F)>
|
|
|
|
<ROUTINE CARD-TABLE-F ("OPTIONAL" VARG)
|
|
<COND (<AND <EQUAL? .VARG ,M-ENTER>
|
|
<IN? ,BROOM ,LOCAL-GLOBALS>>
|
|
<F-START>)
|
|
(.VARG
|
|
<RFALSE>)
|
|
(<VERB? EXAMINE>
|
|
<TELL "It's a pretty plain and ordinary card table.">
|
|
<COND (<FIRST? ,CARD-TABLE>
|
|
<TELL " Sitting on the card table is">
|
|
<D-NOTHING>
|
|
<RTRUE>)
|
|
(T
|
|
<CRLF>)>)>>
|
|
|
|
<ROUTINE F-START ("AUX" MARGIN)
|
|
<TELL
|
|
" The jester begins dealing. \"We'll be playing according to Revised Miznian
|
|
Rules, Seventh-Level Amendments, with these exceptions: no side-handling after
|
|
an underfunded discard, two draws after a Skybreaker, and an extra muttonation
|
|
if the conditions of Rule 17.4.1.B are met. Oh, also all the house rules
|
|
adopted by the Fanucci Casino Rebuilding Act of 817." CR CR>
|
|
<HIT-ANY-KEY "Double Fanucci">
|
|
<SETUP-CARDS>
|
|
<SETUP-FANUCCI>
|
|
<FANUCCI>
|
|
<SCREEN ,S-WINDOW>
|
|
<FONT 1> ;"proportional"
|
|
<SCREEN ,S-TEXT>
|
|
<CRLF> <CRLF>
|
|
<HIT-ANY-KEY>
|
|
<INIT-SL-WITH-SPLIT ,TEXT-WINDOW-PIC-LOC>
|
|
<COND (<FSET? ,BROOM ,TRYTAKEBIT>
|
|
;"so that when you play again, the cards all get drawn"
|
|
<PUT ,DRAW-CARDS-TABLE 0 1>
|
|
<PUT ,DRAW-CARDS-TABLE 1 1>
|
|
<PUT ,DRAW-CARDS-TABLE 2 1>
|
|
<PUT ,DRAW-CARDS-TABLE 3 1>
|
|
<PUT ,DRAW-CARDS-TABLE 4 1>
|
|
<TELL "\"W">
|
|
<COND (<G? ,F-PLAYS 5>
|
|
<TELL "he">)
|
|
(T
|
|
<TELL "o">)>
|
|
<TELL "w!\" says the jester. \"">
|
|
<COND (<G? ,F-PLAYS 5>
|
|
<TELL
|
|
"You really had me on the ropes at a few points there!\"">)
|
|
(T
|
|
<TELL
|
|
"I wasn't expecting such an early resignation! I'm amazed by my own
|
|
Fanucci prowess!\"">)>
|
|
<CRLF>)
|
|
(T
|
|
<MOVE ,BROOM ,CARD-TABLE>
|
|
<REMOVE-J>
|
|
<TELL
|
|
"\"Great Zilbo's Ghost! Three undertrumps after a Trebled Fromp discard! That's
|
|
indefensible!\" In the time-honored tradition of Double Fanucci matches, the
|
|
jester leaps over the card table to congratulate you. \"You've swept me away!
|
|
You've truly cleaned up today!\" He rifles through his wallet and removes a
|
|
broom, which he lays on the card table. \"Here are your winnings!\" In a wink,
|
|
the jester is gone.\"" CR CR>
|
|
<INC-SCORE 18>)>>
|
|
|
|
<ROUTINE SETUP-CARDS ()
|
|
<SPLIT-BY-PICTURE ,F-SPLIT T>
|
|
<ADJUST-TEXT-WINDOW ,F-BOTTOM>
|
|
<CLEAR ,S-FULL>
|
|
<PICK-RANK 0>
|
|
<PUT ,F-CARD-TABLE 1 <RANDOM 15>>
|
|
<PICK-RANK 2>
|
|
<PUT ,F-CARD-TABLE 3 <RANDOM 15>>
|
|
<PICK-RANK 4>
|
|
<PUT ,F-CARD-TABLE 5 <RANDOM 15>>
|
|
<PICK-RANK 6>
|
|
<PUT ,F-CARD-TABLE 7 <RANDOM 15>>
|
|
<PICK-RANK 8>
|
|
<PUT ,F-CARD-TABLE 9 <RANDOM 15>>
|
|
<SETG J-SCORE 0>
|
|
<SETG YOUR-SCORE 0>
|
|
<SETG F-PLAYS 0>>
|
|
|
|
<CONSTANT F-PICSET-TBL
|
|
<TABLE F-CARD-BACK
|
|
F-CARD
|
|
F-INKBLOTS
|
|
F-PLUNGERS
|
|
F-BUGS
|
|
F-ZURFS
|
|
F-EARS
|
|
F-TOPS
|
|
F-RAIN
|
|
F-HIVES
|
|
F-FACES
|
|
F-MAZES
|
|
F-LAMPS
|
|
F-TIME
|
|
F-BOOKS
|
|
F-SCYTHES
|
|
F-FROMPS
|
|
F-RV-INKBLOTS
|
|
F-RV-PLUNGERS
|
|
F-RV-BUGS
|
|
F-RV-ZURFS
|
|
F-RV-EARS
|
|
F-RV-TOPS
|
|
F-RV-RAIN
|
|
F-RV-HIVES
|
|
F-RV-FACES
|
|
F-RV-MAZES
|
|
F-RV-LAMPS
|
|
F-RV-TIME
|
|
F-RV-BOOKS
|
|
F-RV-SCYTHES
|
|
F-RV-FROMPS
|
|
F-0
|
|
F-1
|
|
F-2
|
|
F-3
|
|
F-4
|
|
F-5
|
|
F-6
|
|
F-7
|
|
F-8
|
|
F-9
|
|
F-INFINITY
|
|
F-RV-0
|
|
F-RV-1
|
|
F-RV-2
|
|
F-RV-3
|
|
F-RV-4
|
|
F-RV-5
|
|
F-RV-6
|
|
F-RV-7
|
|
F-RV-8
|
|
F-RV-9
|
|
F-RV-INFINITY
|
|
F-GRANOLA
|
|
F-LOBSTER
|
|
F-SNAIL
|
|
F-JESTER
|
|
F-HOURGLASS
|
|
F-LIGHT
|
|
F-BEAUTY
|
|
F-DEATH
|
|
F-GRUE
|
|
0>>
|
|
|
|
<ROUTINE SETUP-FANUCCI ("AUX" MARGIN
|
|
CARD-NUM-Y DISCARD-X CARD-NUM-1-X CARD-SPACE)
|
|
<SCREEN ,S-FULL>
|
|
<DISPLAY ,F-BORDER 1 1>
|
|
<SCREEN ,S-WINDOW>
|
|
<PICSET ,F-PICSET-TBL>
|
|
<FONT 4> ;"non-proportional"
|
|
<PICINF-PLUS-ONE ,J-SCORE-LOC>
|
|
<CURSET <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
|
|
<TELL "Jester's Score:">
|
|
<PICINF-PLUS-ONE ,YOUR-SCORE-LOC>
|
|
<CURSET <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
|
|
<TELL "Your Score:">
|
|
<PICINF-PLUS-ONE ,F-DISCARD-LOC>
|
|
<SET CARD-NUM-Y <ZGET ,PICINF-TBL 0>>
|
|
<SET DISCARD-X <ZGET ,PICINF-TBL 1>>
|
|
<PICINF-PLUS-ONE ,F-CARD-1-LOC>
|
|
<SET CARD-NUM-1-X <ZGET ,PICINF-TBL 1>>
|
|
<PICINF ,F-CARD-SPACE ,PICINF-TBL>
|
|
<SET CARD-SPACE <ZGET ,PICINF-TBL 1>>
|
|
<UPDATE-SCORES>
|
|
<DRAW-CARDS>
|
|
<CURSET .CARD-NUM-Y .DISCARD-X>
|
|
<TELL "DISCARD">
|
|
<CURSET .CARD-NUM-Y .CARD-NUM-1-X>
|
|
<TELL "1">
|
|
<CURSET .CARD-NUM-Y <+ .CARD-NUM-1-X .CARD-SPACE>>
|
|
<TELL "2">
|
|
<CURSET .CARD-NUM-Y <+ .CARD-NUM-1-X <* .CARD-SPACE 2>>>
|
|
<TELL "3">
|
|
<CURSET .CARD-NUM-Y <+ .CARD-NUM-1-X <* .CARD-SPACE 3>>>
|
|
<TELL "4">
|
|
<PICINF-PLUS-ONE ,F-MENU-LOC>
|
|
<CURSET <GET ,PICINF-TBL 0> <GET ,PICINF-TBL 1>>
|
|
<TELL " DRAW REVERSE COMBINE SINGLE-PLAY IONIZE">
|
|
<CURSET <+ <GET ,PICINF-TBL 0> ,FONT-Y> <GET ,PICINF-TBL 1>>
|
|
<TELL " DISCARD TRUMP PASS DOUBLE-PLAY CHEAT">
|
|
<CURSET <+ <GET ,PICINF-TBL 0> <* ,FONT-Y 2>> <GET ,PICINF-TBL 1>>
|
|
<TELL " DIVIDE UNDERTRUMP OVERPASS MUTTONATE RESIGN">
|
|
<SCREEN ,S-TEXT>
|
|
<CURSET 1 1>>
|
|
|
|
<CONSTANT F-PIC-LOCS
|
|
<PTABLE ,F-DISCARD-PIC-LOC
|
|
,F-1-PIC-LOC
|
|
,F-2-PIC-LOC
|
|
,F-3-PIC-LOC
|
|
,F-4-PIC-LOC>>
|
|
|
|
<ROUTINE DRAW-CARDS ("AUX" X (CNT 0))
|
|
<REPEAT ()
|
|
<COND (<L=? .CNT 4>
|
|
<SET X <ZGET ,F-PIC-LOCS .CNT>>)
|
|
(T
|
|
<SET X <ZGET ,F-PIC-LOCS 4>>)>
|
|
<PICINF-PLUS-ONE .X>
|
|
<SET X <GET ,PICINF-TBL 1>>
|
|
<COND (<EQUAL? .CNT 5>
|
|
<RETURN>)
|
|
(<EQUAL? <GET ,DRAW-CARDS-TABLE .CNT> 1>
|
|
<PUT ,DRAW-CARDS-TABLE .CNT 0>
|
|
<DRAW-CARD .X <* .CNT 2> <+ <* .CNT 2> 1>>)>
|
|
<SET CNT <+ .CNT 1>>>>
|
|
|
|
<CONSTANT PICTURE-CARD-PROB 20>
|
|
|
|
<ROUTINE PICK-RANK (NUM)
|
|
<PUT ,F-CARD-TABLE .NUM <COND (<PROB ,PICTURE-CARD-PROB>
|
|
<+ 11 <RANDOM 9>>)
|
|
(T
|
|
<RANDOM 11>)>>>
|
|
|
|
<CONSTANT F-FACE-CARD-PIC-TBL
|
|
<PTABLE ,F-GRANOLA
|
|
,F-LOBSTER
|
|
,F-SNAIL
|
|
,F-JESTER
|
|
,F-HOURGLASS
|
|
,F-LIGHT
|
|
,F-BEAUTY
|
|
,F-DEATH
|
|
,F-GRUE>>
|
|
|
|
<ROUTINE DISPLAY-OFFSET (PIC Y X OFFPIC)
|
|
<PICINF .OFFPIC ,PICINF-TBL>
|
|
<DISPLAY .PIC <+ <ZGET ,PICINF-TBL 0> .Y> <+ <ZGET ,PICINF-TBL 1> .X>>>
|
|
|
|
<ROUTINE DRAW-CARD (X RANK SUIT "AUX" Y PIC)
|
|
<SET RANK <GET ,F-CARD-TABLE .RANK>>
|
|
<SET SUIT <GET ,F-CARD-TABLE .SUIT>>
|
|
<SET Y <GET ,PICINF-TBL 0>>
|
|
<COND (<EQUAL? .RANK 0>
|
|
<DISPLAY ,F-CARD-BACK .Y .X>)
|
|
(<G? .RANK 11>
|
|
<SET PIC <ZGET ,F-FACE-CARD-PIC-TBL <- .RANK 12>>>
|
|
<DISPLAY .PIC .Y .X>)
|
|
(T
|
|
<DISPLAY ,F-CARD .Y .X>
|
|
<DISPLAY-OFFSET <GET ,RANK-PIC-TBL .RANK> .Y .X
|
|
,F-RANK-PIC-LOC>
|
|
<DISPLAY-OFFSET <GET ,RANK-REV-TBL .RANK> .Y .X
|
|
,F-REV-RANK-PIC-LOC>
|
|
<DISPLAY-OFFSET <GET ,SUIT-PIC-TBL .SUIT> .Y .X
|
|
,F-SUIT-PIC-LOC>
|
|
<DISPLAY-OFFSET <GET ,SUIT-REV-TBL .SUIT> .Y .X
|
|
,F-REV-SUIT-PIC-LOC>)>>
|
|
|
|
<ROUTINE FANUCCI ("AUX" X Y PTR)
|
|
<PICINF-PLUS-ONE ,F-MENU-LOC>
|
|
<SET X <GET ,PICINF-TBL 1>>
|
|
<SET Y <GET ,PICINF-TBL 0>>
|
|
<SET PTR 0>
|
|
<BOLD-MOVE .X .Y .PTR>
|
|
<CLEAR ,S-TEXT>
|
|
<TELL
|
|
"Use the arrow keys -- or the U, D, L and R keys -- to highlight a play, then
|
|
hit the RETURN/ENTER key. Or, if you have a mouse, you can use that to select
|
|
your play.">
|
|
<REPEAT ()
|
|
<COND (<PICK-PLAY .X .Y .PTR> ;"rtrues if resigned"
|
|
<RETURN>)>
|
|
<SCREEN ,S-WINDOW>
|
|
<DRAW-CARDS>
|
|
<UPDATE-SCORES>
|
|
<SCREEN ,S-TEXT>
|
|
<COND (<EQUAL? ,F-WIN-COUNT 3>
|
|
<SETG YOUR-SCORE <+ ,YOUR-SCORE 1000>>
|
|
<FCLEAR ,BROOM ,TRYTAKEBIT>
|
|
<RETURN>)
|
|
(<SCORE-CHECK>
|
|
<RETURN>)>
|
|
<J-PLAY>
|
|
<SCREEN ,S-WINDOW>
|
|
<DRAW-CARDS>
|
|
<SETG F-PLAYS <+ ,F-PLAYS 1>>
|
|
<UPDATE-SCORES>
|
|
<SCREEN ,S-TEXT>
|
|
<COND (<SCORE-CHECK>
|
|
<RETURN>)>>>
|
|
|
|
<ROUTINE UPDATE-SCORES ()
|
|
<PICINF-PLUS-ONE ,J-SCORE-LOC>
|
|
<CURSET <GET ,PICINF-TBL 0> <+ <GET ,PICINF-TBL 1> <* ,FONT-X 16>>>
|
|
<COND (<L? ,J-SCORE 10>
|
|
<TELL " 00">)
|
|
(<L? ,J-SCORE 100>
|
|
<TELL " 0">)
|
|
(<L? ,J-SCORE 1000>
|
|
<TELL " ">)>
|
|
<TELL N ,J-SCORE>
|
|
<PICINF-PLUS-ONE ,YOUR-SCORE-LOC>
|
|
<CURSET <GET ,PICINF-TBL 0> <+ <GET ,PICINF-TBL 1> <* ,FONT-X 12>>>
|
|
<COND (<L? ,YOUR-SCORE 10>
|
|
<TELL " 00">)
|
|
(<L? ,YOUR-SCORE 100>
|
|
<TELL " 0">)
|
|
(<L? ,YOUR-SCORE 1000>
|
|
<TELL " ">)>
|
|
<TELL N ,YOUR-SCORE>>
|
|
|
|
<ROUTINE SCORE-CHECK ()
|
|
<COND (<G? ,J-SCORE ,YOUR-SCORE>
|
|
<COND (<G? <- ,J-SCORE ,YOUR-SCORE> 1241>
|
|
<TELL "\"My">)
|
|
(T
|
|
<RFALSE>)>)
|
|
(T
|
|
<COND (<G? <- ,YOUR-SCORE ,J-SCORE> 1241>
|
|
<TELL "\"Your">)
|
|
(T
|
|
<RFALSE>)>)>
|
|
<TELL
|
|
" lead exceeds 1241 points,\" the jester explains, \"so by Rules Committee
|
|
Amendment #493, the game is suspended and must be replayed in its entirety,
|
|
except during a Frotz Moon or in a six-player game where at least three of
|
|
the players are of Mithican ancestry.\"|
|
|
The jester sighs. \"It's always ironic to play for so long without reaching
|
|
a decision. I'm sure that the great humorist, O'Flathead, would get a chuckle
|
|
out of our predicament.\"" CR>
|
|
<RTRUE>>
|
|
|
|
<GLOBAL J-CARDS 4>
|
|
|
|
<GLOBAL J-DISCARD-FROMP-PROB 0>
|
|
|
|
<GLOBAL F-WIN-COUNT 0>
|
|
|
|
<CONSTANT DRAW-CARDS-TABLE ;"tells DRAW-CARDS which cards have changed"
|
|
<TABLE 1 1 1 1 1>>
|
|
|
|
<CONSTANT J-LAST-CARD
|
|
<TABLE 0 0>>
|
|
|
|
<CONSTANT FROMP-SUIT 15>
|
|
|
|
<CONSTANT TREBLED-RANK 11>
|
|
|
|
<ROUTINE J-PLAY ("AUX" PLAY-NUM RANK SUIT NUM)
|
|
<TELL "| Your opponent stares at his " N ,J-CARDS " card">
|
|
<COND (<NOT <EQUAL? ,J-CARDS 1>>
|
|
<TELL "s">)>
|
|
<TELL ", pondering his move. ">
|
|
<HIT-ANY-KEY>
|
|
<CLEAR ,S-TEXT>
|
|
<TELL "The jester ">
|
|
<COND (<OR <L? ,J-CARDS 2>
|
|
<AND <EQUAL? ,J-CARDS 2>
|
|
<PROB 67>>
|
|
<AND <EQUAL? ,J-CARDS 2>
|
|
<PROB 33>>>
|
|
<SETG J-CARDS <+ ,J-CARDS 1>>
|
|
<TELL "decides to draw. He seems ">
|
|
<COND (<PROB 8>
|
|
<TELL "extremely ">)>
|
|
<COND (<PROB 50>
|
|
<TELL "delighted">)
|
|
(T
|
|
<TELL "dismayed">)>
|
|
<TELL " by his new card.">)
|
|
(T
|
|
<SETG J-CARDS <- ,J-CARDS 1>>
|
|
<SETG J-DISCARD-FROMP-PROB
|
|
<+ ,J-DISCARD-FROMP-PROB 2>>
|
|
<TELL "proceeds to ">
|
|
<COND (<PROB ,J-DISCARD-FROMP-PROB>
|
|
<SETG J-DISCARD-FROMP-PROB 0>
|
|
<SET PLAY-NUM 1>
|
|
<SET SUIT ,FROMP-SUIT>
|
|
<SET RANK ,TREBLED-RANK>)
|
|
(T
|
|
<SET PLAY-NUM <RANDOM 12>>
|
|
;"jester should never draw (here), cheat, or resign"
|
|
<SET SUIT <RANDOM 15>>
|
|
<SET RANK <COND (<PROB ,PICTURE-CARD-PROB>
|
|
<+ 11 <RANDOM 9>>)
|
|
(T
|
|
<RANDOM 11>)>>)>
|
|
<PUT ,J-LAST-CARD 0 .RANK>
|
|
<PUT ,J-LAST-CARD 1 .SUIT>
|
|
<SET NUM <MOD <* .PLAY-NUM .SUIT .RANK> 17>>
|
|
<COND (<EQUAL? .PLAY-NUM 1>
|
|
<PUT ,DRAW-CARDS-TABLE 0 1>
|
|
<PUT ,F-CARD-TABLE 0 .RANK>
|
|
<PUT ,F-CARD-TABLE 1 .SUIT>)>
|
|
<TELL
|
|
<GET ,F-PLAY-TABLE-LC .PLAY-NUM> " " <GET ,F-RANK-TABLE .RANK>>
|
|
<COND (<NOT <G? .RANK 11>>
|
|
<TELL " " <GET ,F-SUIT-TABLE .SUIT>>)>
|
|
<TELL ". He " <GET ,J-PLAY-TABLE .NUM> " ">
|
|
<F-SCORE <GET ,J-PLAY-SCORES .NUM>>)>>
|
|
|
|
<CONSTANT J-PLAY-TABLE
|
|
<PTABLE
|
|
"shrugs. \"Just a simple Borphee Bluff.\""
|
|
"smiles. \"A devilish Kovalli Hustle, don't you think?\""
|
|
"shudders. \"Babe would turn over in his grave if he could see my playing.\""
|
|
"looks satisfied. \"That ought to up the ante toward a Doubleton Duck.\""
|
|
"resists an urge to spike his cards. \"You fell for my Festeron Finesse! I get Honors!\""
|
|
"shouts, \"Whangdoogle! Four to the kitty! Minor ruff!\" and massages the resulting torn shoulder muscle."
|
|
"kicks himself. \"I should've revoked a Singleton in the third frame!\""
|
|
"snickers at you. \"Bet you didn't see that Segmented Shuffle coming!\""
|
|
"complains. \"Shy Openers! All I get are Shy Openers!\""
|
|
"applauds with delight. \"Zilbo's Half-Renege! I love it!\""
|
|
"sighs. \"I came so close to a Full Foozle Progression.\""
|
|
"produces two large mallard ducks out of thin air, thus Royal Bidding
|
|
his play."
|
|
"takes a third of the deck and burns it. \"Unlimited Singleton Bids for
|
|
the rest of the game!\""
|
|
"invokes the Grand Slam clause and reshuffles the deck. \"Slice and Call,\"
|
|
he claims."
|
|
"exhales a deep breath. \"I wasn't sure I'd have time for that Inside
|
|
Duo-Trick.\""
|
|
"gulps. \"I came close to having to invoke the Golden Fromp clause!\""
|
|
"scowls. \"An Unrejuvenated Slamboozle!\" To repent, he changes shape
|
|
to a hawk, then a milk cow, then a large carpenter ant, and finally back
|
|
to a jester. \"Full repentance; losses halved,\" he states.">>
|
|
|
|
<CONSTANT J-PLAY-SCORES
|
|
<PTABLE -10
|
|
-78
|
|
44
|
|
-21
|
|
-95
|
|
-31
|
|
22
|
|
-42
|
|
34
|
|
-56
|
|
-4
|
|
-28
|
|
-16
|
|
-37
|
|
-25
|
|
15
|
|
-22>>
|
|
|
|
<ROUTINE PICK-PLAY (X Y PTR "AUX" KEY TOP LEFT TL-X TL-Y BR-X BR-Y
|
|
CNT-X CNT-Y NEW-PTR MOUSE-MOVED?)
|
|
<PICINF-PLUS-ONE ,F-MENU-LOC>
|
|
<SET TOP <GET ,PICINF-TBL 0>>
|
|
<SET LEFT <GET ,PICINF-TBL 1>>
|
|
<BOLD-MOVE .X .Y .PTR>
|
|
<REPEAT ()
|
|
<COND (,DEMO-VERSION?
|
|
<SET KEY <INPUT-DEMO 1>>)
|
|
(T
|
|
<SET KEY <INPUT 1>>)>
|
|
<MOUSE-INPUT?>
|
|
<COND (<EQUAL? .KEY ,CLICK1 ,CLICK2>
|
|
<SET MOUSE-MOVED? <>>
|
|
<SET CNT-X 0>
|
|
<SET CNT-Y 0>
|
|
<PICINF-PLUS-ONE ,F-MENU-LOC>
|
|
<SET TL-X <GET ,PICINF-TBL 1>>
|
|
<REPEAT ()
|
|
<SET TL-Y <GET ,PICINF-TBL 0>>
|
|
<SET BR-X <+ <* ,FONT-X 13> .TL-X>>
|
|
<REPEAT ()
|
|
<SET BR-Y <+ ,FONT-Y .TL-Y>>
|
|
<COND (<WITHIN? .TL-X .TL-Y .BR-X .BR-Y>
|
|
<SET MOUSE-MOVED? T>
|
|
<UNBOLD-MOVE .X .Y .PTR>
|
|
<SET Y <GET ,PICINF-TBL 0>>
|
|
<SET X <GET ,PICINF-TBL 1>>
|
|
<SET X
|
|
<+ .X <* .CNT-X <* ,FONT-X 13>>>>
|
|
<SET Y <+ .Y <* .CNT-Y ,FONT-Y>>>
|
|
<SET NEW-PTR <+ .CNT-Y <* .CNT-X 3>>>
|
|
<COND (<EQUAL? .PTR .NEW-PTR>
|
|
<SET .KEY ,CLICK2>)>
|
|
<SET PTR .NEW-PTR>
|
|
<BOLD-MOVE .X .Y .PTR>
|
|
<RETURN>)
|
|
(<EQUAL? .CNT-Y 2>
|
|
<RETURN>)
|
|
(T
|
|
<SET CNT-Y <+ .CNT-Y 1>>
|
|
<SET TL-Y .BR-Y>)>>
|
|
<COND (.MOUSE-MOVED?
|
|
<RETURN>)
|
|
(<EQUAL? .CNT-X 4>
|
|
<RETURN>)
|
|
(T
|
|
<SET CNT-Y 0>
|
|
<SET .CNT-X <+ .CNT-X 1>>
|
|
<SET TL-X .BR-X>)>>
|
|
<COND (<NOT .MOUSE-MOVED?>
|
|
<CLEAR ,S-TEXT>
|
|
<SOUND 1>
|
|
<TELL
|
|
"Click on one of the items in the menu to highlight a play;
|
|
double-click on it to select that play.">)
|
|
(<EQUAL? .KEY ,CLICK2>
|
|
<COND (<EQUAL? <PLAY-SELECTED .PTR> T> ;"resign"
|
|
<RTRUE>)
|
|
(T
|
|
<UNBOLD-MOVE .X .Y .PTR>
|
|
<RFALSE>)>)>)
|
|
(<OR <EQUAL? .KEY ,UP-ARROW>
|
|
<EQUAL? .KEY !\U !\u>>
|
|
<COND (<EQUAL? .Y .TOP>
|
|
<CLEAR ,S-TEXT>
|
|
<SOUND 1>
|
|
<TELL ,ALREADY-AT "top row!">)
|
|
(T
|
|
<UNBOLD-MOVE .X .Y .PTR>
|
|
<SET Y <- .Y ,FONT-Y>>
|
|
<SET PTR <- .PTR 1>>
|
|
<BOLD-MOVE .X .Y .PTR>)>)
|
|
(<OR <EQUAL? .KEY ,DOWN-ARROW>
|
|
<EQUAL? .KEY !\D !\d>>
|
|
<COND (<EQUAL? .Y <+ .TOP <* ,FONT-Y 2>>>
|
|
<CLEAR ,S-TEXT>
|
|
<SOUND 1>
|
|
<TELL ,ALREADY-AT "bottom row!">)
|
|
(T
|
|
<UNBOLD-MOVE .X .Y .PTR>
|
|
<SET Y <+ .Y ,FONT-Y>>
|
|
<SET PTR <+ .PTR 1>>
|
|
<BOLD-MOVE .X .Y .PTR>)>)
|
|
(<OR <EQUAL? .KEY ,LEFT-ARROW>
|
|
<EQUAL? .KEY !\L !\l>>
|
|
<COND (<EQUAL? .X .LEFT>
|
|
<CLEAR ,S-TEXT>
|
|
<SOUND 1>
|
|
<TELL ,ALREADY-AT "left-most column!">)
|
|
(T
|
|
<UNBOLD-MOVE .X .Y .PTR>
|
|
<SET X <- .X <* ,FONT-X 13>>>
|
|
<SET PTR <- .PTR 3>>
|
|
<BOLD-MOVE .X .Y .PTR>)>)
|
|
(<OR <EQUAL? .KEY ,RIGHT-ARROW>
|
|
<EQUAL? .KEY !\R !\r>>
|
|
<COND (<EQUAL? .X <+ .LEFT <* ,FONT-X 52>>>
|
|
<CLEAR ,S-TEXT>
|
|
<SOUND 1>
|
|
<TELL ,ALREADY-AT "right-most column!">)
|
|
(T
|
|
<UNBOLD-MOVE .X .Y .PTR>
|
|
<SET X <+ .X <* ,FONT-X 13>>>
|
|
<SET PTR <+ .PTR 3>>
|
|
<BOLD-MOVE .X .Y .PTR>)>)
|
|
(<EQUAL? .KEY 10 13> ;"RETURN/ENTER key"
|
|
<COND (<EQUAL? <PLAY-SELECTED .PTR> T> ;"resign"
|
|
<RTRUE>)
|
|
(T
|
|
<UNBOLD-MOVE .X .Y .PTR>
|
|
<RFALSE>)>)
|
|
(T
|
|
<CLEAR ,S-TEXT>
|
|
<SOUND 1>
|
|
<TELL
|
|
"Use the arrow keys to highlight a play, or hit RETURN/ENTER to select
|
|
the currently highlighted play.">)>>>
|
|
|
|
<ROUTINE UNBOLD-MOVE (X Y PTR)
|
|
<SCREEN ,S-WINDOW>
|
|
<CURSET .Y <- .X 1>>
|
|
<TELL " " <GET ,F-PLAY-TABLE .PTR>>
|
|
<SCREEN ,S-TEXT>>
|
|
|
|
<ROUTINE BOLD-MOVE (X Y PTR)
|
|
<SCREEN ,S-WINDOW>
|
|
<CURSET .Y <- .X 1>>
|
|
<HLIGHT ,H-BOLD>
|
|
<TELL ">" <GET ,F-PLAY-TABLE .PTR>>
|
|
<HLIGHT ,H-NORMAL>
|
|
<SCREEN ,S-TEXT>>
|
|
|
|
<ROUTINE PLAY-SELECTED (PTR "AUX" CNT X NUM)
|
|
<COND (<EQUAL? .PTR 14> ;"resign"
|
|
<RTRUE>)
|
|
(<EQUAL? .PTR 13> ;"cheat"
|
|
<COND (<PROB 50>
|
|
<CHEAT-RESULT ,CHEAT-WINS>)
|
|
(T
|
|
<CHEAT-RESULT ,CHEAT-LOSSES>)>)
|
|
(<EQUAL? .PTR 0> ;"draw"
|
|
<SET CNT 0>
|
|
<REPEAT ()
|
|
<COND (<EQUAL? <GET ,F-CARD-TABLE .CNT> 0>
|
|
<PUT ,DRAW-CARDS-TABLE </ .CNT 2> 1>
|
|
<PICK-RANK .CNT>
|
|
<PUT ,F-CARD-TABLE
|
|
<+ .CNT 1> <RANDOM 15>>
|
|
<CLEAR ,S-TEXT>
|
|
<TELL "You draw ">
|
|
<PRINT-CARD-NAME .CNT>
|
|
<TELL ".">
|
|
<RETURN>)
|
|
(<EQUAL? .CNT 8>
|
|
<CLEAR ,S-TEXT>
|
|
<TELL
|
|
"The jester snickers. \"You've no empty slot; you forfeit your shot!\"">
|
|
<RETURN>)>
|
|
<SET CNT <+ .CNT 2>>>)
|
|
(<AND <EQUAL? <GET ,F-CARD-TABLE 2> 0>
|
|
<EQUAL? <GET ,F-CARD-TABLE 4> 0>
|
|
<EQUAL? <GET ,F-CARD-TABLE 6> 0>
|
|
<EQUAL? <GET ,F-CARD-TABLE 8> 0>>
|
|
<CLEAR ,S-TEXT>
|
|
<SOUND 1>
|
|
<TELL
|
|
"You can't " <GET ,F-PLAY-TABLE-LC .PTR>
|
|
" just now; you have no drawn cards!">)
|
|
(T
|
|
<CLEAR ,S-TEXT>
|
|
<TELL
|
|
"Use your mouse or type the number of the card you'd like to "
|
|
<GET ,F-PLAY-TABLE-LC .PTR> ".">
|
|
<REPEAT ()
|
|
<SET X <INPUT 1>>
|
|
<MOUSE-INPUT?>
|
|
<COND (<EQUAL? .X ,CLICK1 ,CLICK2>
|
|
<SET X <F-MOUSE-CARD-PICK>>)>
|
|
<COND (<EQUAL? .X 146 147 148 149> ;"keypad"
|
|
<SET X <- .X 97>>)>
|
|
<COND (<OR <AND <EQUAL? .X !\1>
|
|
<EQUAL? <GET ,F-CARD-TABLE 2> 0>>
|
|
<AND <EQUAL? .X !\2>
|
|
<EQUAL? <GET ,F-CARD-TABLE 4> 0>>
|
|
<AND <EQUAL? .X !\3>
|
|
<EQUAL? <GET ,F-CARD-TABLE 6> 0>>
|
|
<AND <EQUAL? .X !\4>
|
|
<EQUAL? <GET ,F-CARD-TABLE 8> 0>>>
|
|
<CLEAR ,S-TEXT>
|
|
<SOUND 1>
|
|
<TELL
|
|
"You can't " <GET ,F-PLAY-TABLE-LC .PTR>
|
|
" that card; it hasn't been drawn yet!">)
|
|
(<EQUAL? .X !\1>
|
|
<SET X 2>
|
|
<RETURN>)
|
|
(<EQUAL? .X !\2>
|
|
<SET X 4>
|
|
<RETURN>)
|
|
(<EQUAL? .X !\3>
|
|
<SET X 6>
|
|
<RETURN>)
|
|
(<EQUAL? .X !\4>
|
|
<SET X 8>
|
|
<RETURN>)
|
|
(T
|
|
<CLEAR ,S-TEXT>
|
|
<SOUND 1>
|
|
<TELL ,TYPE-A-NUMBER "4.">)>>
|
|
<SET NUM <MOD <* <GET ,F-CARD-TABLE .X>
|
|
<GET ,F-CARD-TABLE <+ .X 1>>
|
|
.PTR> 37>>
|
|
<COND (<EQUAL? .PTR 5> ;"undertrump"
|
|
<COND (<G? ,F-WIN-COUNT 0>
|
|
<SETG F-WIN-COUNT
|
|
<+ ,F-WIN-COUNT 1>>
|
|
<COND (<EQUAL? ,F-WIN-COUNT 3>
|
|
<PUT ,DRAW-CARDS-TABLE </ .X 2> 1>
|
|
<PUT ,F-CARD-TABLE .X 0>
|
|
<PUT ,F-CARD-TABLE <+ .X 1> 0>
|
|
;"go straight to win-text"
|
|
<RFALSE>)>)
|
|
(<AND <EQUAL? <GET ,J-LAST-CARD 0>
|
|
,TREBLED-RANK>
|
|
<EQUAL? <GET ,J-LAST-CARD 1>
|
|
,FROMP-SUIT>>
|
|
<SETG F-WIN-COUNT 1>)>)
|
|
(T
|
|
<SETG F-WIN-COUNT 0>)>
|
|
<COND (<EQUAL? <GET ,F-SCORES .NUM> 0>
|
|
<SETG F-WIN-COUNT 0>
|
|
;"else you can win Fanucci after this response"
|
|
<TELL
|
|
" The jester is outraged! \"You can't "
|
|
<GET ,F-PLAY-TABLE-LC .PTR> " ">
|
|
<PRINT-CARD-NAME .X>
|
|
<COND (<PROB 6>
|
|
<TELL " when ">
|
|
<PRINT-CARD-NAME 0>
|
|
<TELL " is showing on the Discard Pile!">)
|
|
(T
|
|
<TELL " " <GET ,J-RESPONSES .NUM>>)>)
|
|
(T
|
|
<CLEAR ,S-TEXT>
|
|
<TELL "You " <GET ,F-PLAY-TABLE-LC .PTR> " ">
|
|
<PRINT-CARD-NAME .X>
|
|
<TELL ". The jester " <GET ,J-RESPONSES .NUM> " ">
|
|
<F-SCORE <GET ,F-SCORES .NUM>>
|
|
<COND (<EQUAL? .PTR 1> ;"move card to discard pile"
|
|
<PUT ,DRAW-CARDS-TABLE 0 1>
|
|
<PUT ,F-CARD-TABLE 0
|
|
<GET ,F-CARD-TABLE .X>>
|
|
<PUT ,F-CARD-TABLE 1
|
|
<GET ,F-CARD-TABLE <+ .X 1>>>)>
|
|
<PUT ,DRAW-CARDS-TABLE </ .X 2> 1>
|
|
<PUT ,F-CARD-TABLE .X 0>
|
|
<PUT ,F-CARD-TABLE <+ .X 1> 0>)>)>
|
|
<RFALSE>>
|
|
|
|
<ROUTINE F-MOUSE-CARD-PICK
|
|
("AUX" TL-X TL-Y BR-X BR-Y CARD-WIDTH CARD-HEIGHT)
|
|
<PICINF ,F-CARD ,PICINF-TBL>
|
|
<SET CARD-HEIGHT <GET ,PICINF-TBL 0>>
|
|
<SET CARD-WIDTH <GET ,PICINF-TBL 1>>
|
|
<PICINF-PLUS-ONE ,F-1-PIC-LOC>
|
|
<SET TL-Y <GET ,PICINF-TBL 0>>
|
|
<SET TL-X <GET ,PICINF-TBL 1>>
|
|
<SET BR-Y <+ .TL-Y .CARD-HEIGHT>>
|
|
<SET BR-X <+ .TL-X .CARD-WIDTH>>
|
|
<COND (<WITHIN? .TL-X .TL-Y .BR-X .BR-Y>
|
|
<RETURN 49> ;"1 in ASCII")>
|
|
<PICINF-PLUS-ONE ,F-2-PIC-LOC>
|
|
<SET TL-Y <GET ,PICINF-TBL 0>>
|
|
<SET TL-X <GET ,PICINF-TBL 1>>
|
|
<SET BR-Y <+ .TL-Y .CARD-HEIGHT>>
|
|
<SET BR-X <+ .TL-X .CARD-WIDTH>>
|
|
<COND (<WITHIN? .TL-X .TL-Y .BR-X .BR-Y>
|
|
<RETURN 50> ;"2 in ASCII")>
|
|
<PICINF-PLUS-ONE ,F-3-PIC-LOC>
|
|
<SET TL-Y <GET ,PICINF-TBL 0>>
|
|
<SET TL-X <GET ,PICINF-TBL 1>>
|
|
<SET BR-Y <+ .TL-Y .CARD-HEIGHT>>
|
|
<SET BR-X <+ .TL-X .CARD-WIDTH>>
|
|
<COND (<WITHIN? .TL-X .TL-Y .BR-X .BR-Y>
|
|
<RETURN 51> ;"3 in ASCII")>
|
|
<PICINF-PLUS-ONE ,F-4-PIC-LOC>
|
|
<SET TL-Y <GET ,PICINF-TBL 0>>
|
|
<SET TL-X <GET ,PICINF-TBL 1>>
|
|
<SET BR-Y <+ .TL-Y .CARD-HEIGHT>>
|
|
<SET BR-X <+ .TL-X .CARD-WIDTH>>
|
|
<COND (<WITHIN? .TL-X .TL-Y .BR-X .BR-Y>
|
|
<RETURN 52> ;"4 in ASCII")>
|
|
<RETURN ,CLICK1>>
|
|
|
|
<ROUTINE PRINT-CARD-NAME (CNT)
|
|
<TELL <GET ,F-RANK-TABLE <GET ,F-CARD-TABLE .CNT>>>
|
|
<COND (<L? <GET ,F-CARD-TABLE .CNT> 12>
|
|
<TELL " " <GET ,F-SUIT-TABLE
|
|
<GET ,F-CARD-TABLE <+ .CNT 1>>>>)>>
|
|
|
|
<CONSTANT F-PLAY-TABLE
|
|
;"space after word overwrites pixels left by bold-word on certain micros"
|
|
<PTABLE "DRAW "
|
|
"DISCARD "
|
|
"DIVIDE "
|
|
"REVERSE "
|
|
"TRUMP "
|
|
"UNDERTRUMP "
|
|
"COMBINE "
|
|
"PASS "
|
|
"OVERPASS "
|
|
"SINGLE-PLAY "
|
|
"DOUBLE-PLAY "
|
|
"MUTTONATE "
|
|
"IONIZE "
|
|
"CHEAT "
|
|
"RESIGN ">>
|
|
|
|
<CONSTANT F-PLAY-TABLE-LC
|
|
<PTABLE "draw"
|
|
"discard"
|
|
"divide"
|
|
"reverse"
|
|
"trump"
|
|
"undertrump"
|
|
"combine"
|
|
"pass"
|
|
"overpass"
|
|
"single-play"
|
|
"double-play"
|
|
"muttonate"
|
|
"ionize"
|
|
"cheat"
|
|
"resign">>
|
|
|
|
<CONSTANT RANK-PIC-TBL
|
|
<PTABLE ;0 <> ;"unused"
|
|
;1 F-4
|
|
;2 F-5
|
|
;3 F-6
|
|
;4 F-7
|
|
;5 F-8
|
|
;6 F-9
|
|
;7 F-0
|
|
;8 F-INFINITY
|
|
;9 F-1
|
|
;10 F-2
|
|
;11 F-3>>
|
|
|
|
<CONSTANT RANK-REV-TBL
|
|
<PTABLE ;0 <> ;"unused"
|
|
;1 F-RV-4
|
|
;2 F-RV-5
|
|
;3 F-RV-6
|
|
;4 F-RV-7
|
|
;5 F-RV-8
|
|
;6 F-RV-9
|
|
;7 F-RV-0
|
|
;8 F-RV-INFINITY
|
|
;9 F-RV-1
|
|
;10 F-RV-2
|
|
;11 F-RV-3>>
|
|
|
|
<CONSTANT F-RANK-TABLE
|
|
<PTABLE ;0 <> ;"unused"
|
|
;1 "the Four of"
|
|
;2 "the Five of"
|
|
;3 "the Six of"
|
|
;4 "the Seven of"
|
|
;5 "the Eight of"
|
|
;6 "the Nine of"
|
|
;7 "the Naught of"
|
|
;8 "Infinite"
|
|
;9 "Singled"
|
|
;10 "Doubled"
|
|
;11 "Trebled"
|
|
;12 "Granola"
|
|
;13 "the Lobster"
|
|
;14 "the Snail"
|
|
;15 "the Jester"
|
|
;16 "Time"
|
|
;17 "Light"
|
|
;18 "Beauty"
|
|
;19 "Death"
|
|
;20 "the Grue">>
|
|
|
|
<CONSTANT SUIT-PIC-TBL
|
|
<PTABLE ;0 <> ;"unused"
|
|
;1 F-INKBLOTS
|
|
;2 F-PLUNGERS
|
|
;3 F-BUGS
|
|
;4 F-ZURFS
|
|
;5 F-EARS
|
|
;6 F-TOPS
|
|
;7 F-RAIN
|
|
;8 F-HIVES
|
|
;9 F-FACES
|
|
;10 F-MAZES
|
|
;11 F-LAMPS
|
|
;12 F-TIME
|
|
;13 F-BOOKS
|
|
;14 F-SCYTHES
|
|
;15 F-FROMPS>>
|
|
|
|
<CONSTANT SUIT-REV-TBL
|
|
<PTABLE ;0 <> ;"unused"
|
|
;1 F-RV-INKBLOTS
|
|
;2 F-RV-PLUNGERS
|
|
;3 F-RV-BUGS
|
|
;4 F-RV-ZURFS
|
|
;5 F-RV-EARS
|
|
;6 F-RV-TOPS
|
|
;7 F-RV-RAIN
|
|
;8 F-RV-HIVES
|
|
;9 F-RV-FACES
|
|
;10 F-RV-MAZES
|
|
;11 F-RV-LAMPS
|
|
;12 F-RV-TIME
|
|
;13 F-RV-BOOKS
|
|
;14 F-RV-SCYTHES
|
|
;15 F-RV-FROMPS>>
|
|
|
|
<CONSTANT F-SUIT-TABLE
|
|
<PTABLE ;0 <> ;"unused"
|
|
;1 "Inkblots"
|
|
;2 "Plungers"
|
|
;3 "Bugs"
|
|
;4 "Zurfs"
|
|
;5 "Ears"
|
|
;6 "Tops"
|
|
;7 "Rain"
|
|
;8 "Hives"
|
|
;9 "Faces"
|
|
;10 "Mazes"
|
|
;11 "Lamps"
|
|
;12 "Time"
|
|
;13 "Books"
|
|
;14 "Scythes"
|
|
;15 "Fromps">>
|
|
|
|
<CONSTANT F-CARD-TABLE
|
|
<TABLE <> <> ;"discard card"
|
|
<> <> ;"card 1"
|
|
<> <> ;"card 2"
|
|
<> <> ;"card 3"
|
|
<> <> ;"card 4">>
|
|
|
|
<GLOBAL YOUR-SCORE 0>
|
|
|
|
<GLOBAL J-SCORE 0>
|
|
|
|
<GLOBAL F-PLAYS 0>
|
|
|
|
<ROUTINE CHEAT-RESULT (TBL "AUX" CNT X PTS)
|
|
<SET CNT <GET .TBL 0>>
|
|
<SET X <- <* <RANDOM .CNT> 2> 1>>
|
|
<SET PTS <GET .TBL <+ .X 1>>>
|
|
<CLEAR ,S-TEXT>
|
|
<TELL <GET .TBL .X> " ">
|
|
<F-SCORE .PTS>>
|
|
|
|
<ROUTINE F-SCORE (PTS)
|
|
<COND (<G? .PTS 0>
|
|
<COND (<AND <PROB </ ,YOUR-SCORE 10>>
|
|
<G? ,J-SCORE .PTS>>
|
|
<SETG J-SCORE <- ,J-SCORE .PTS>>
|
|
<TELL "The jester loses">)
|
|
(T
|
|
<SETG YOUR-SCORE <+ ,YOUR-SCORE .PTS>>
|
|
<TELL "You gain">)>)
|
|
(T
|
|
<SET PTS <* .PTS -1>>
|
|
<COND (<AND <PROB </ ,J-SCORE 10>>
|
|
<G? ,YOUR-SCORE .PTS>>
|
|
<SETG YOUR-SCORE <- ,YOUR-SCORE .PTS>>
|
|
<TELL "You lose">)
|
|
(T
|
|
<SETG J-SCORE <+ ,J-SCORE .PTS>>
|
|
<TELL "The jester gains">)>)>
|
|
<TELL " " N .PTS " points.">>
|
|
|
|
<CONSTANT CHEAT-WINS
|
|
<PTABLE 3
|
|
"You catch the jester looking out the window, and take the opportunity to
|
|
alter the scores."
|
|
45
|
|
"You distract the jester by faking a muscle cramp."
|
|
23
|
|
"You successfully slip a card out of your sleeve."
|
|
19>>
|
|
|
|
<CONSTANT CHEAT-LOSSES
|
|
<PTABLE 3
|
|
"The jester seems to doze off for a moment, and you try to take advantage by
|
|
fudging the scores. However, the jester stirs, and in your haste you help the
|
|
jester instead of yourself!"
|
|
-60
|
|
"The jester catches you marking the cards, and assesses a stiff penalty."
|
|
-47
|
|
"You substitute a card from the middle of the deck, but the new card places
|
|
you in an even worse position!"
|
|
-33>>
|
|
|
|
<CONSTANT J-RESPONSES
|
|
<PTABLE
|
|
"during the middle third of Mumberber!\""
|
|
"before a New Sun!\""
|
|
"in a two-person game!\""
|
|
"cries, \"Daring move!\""
|
|
"looks bored. \"The old Oddzio Gambit.\""
|
|
"says, \"A gutsy play!\""
|
|
"applauds. \"A brilliant Festeron Feint!\""
|
|
"sneers. \"A transparent maneuver.\""
|
|
"shakes his head. \"A poorly executed Antharian Attack.\""
|
|
"exclaims, \"A skillful finesse!\""
|
|
"is obviously impressed. \"A spectacular Bloodworm Defense!\""
|
|
"sniffs. \"A weak response.\""
|
|
"smiles mysteriously. \"An unusual Balsawood Convention!\""
|
|
"looks impressed. \"That was a stroke of genius!\""
|
|
"taps his fingers impatiently. \"A typical Egreth Convention.\""
|
|
"whispers, \"Crude, but effective.\""
|
|
"tips his hat to you. \"A well-executed Zilbo Standard!\""
|
|
"looks unimpressed. \"Just a lucky stroke!\""
|
|
"smirks. \"A poorly timed Forborn Chisel, wouldn't you say?\""
|
|
"laughs. \"That was a sign of panic on your part, if you ask me.\""
|
|
"peruses your move. \"Ah, yes. The Accardi Variation. I haven't seen that one in a while.\""
|
|
"bows his head with respect. \"You're a regular Fanuccimeister, eh?\""
|
|
"salutes you. \"A well-timed Frotz Factor! Bravo!\""
|
|
"scratches his head. \"A thoroughly mystifying maneuver.\""
|
|
"yawns. \"The dependable Zibble Ploy.\""
|
|
"laughs derisively. \"An amateurish blunder!\""
|
|
"says, \"A classic Frotzen Ploy.\""
|
|
"shrugs. \"Oh, well... If people never made mistakes, they wouldn't put
|
|
erasers on pencils...\""
|
|
"looks at you with scorn. \"A lukewarm Porridge Variation.\""
|
|
"blinks. Then blinks again. \"Now I've seen EVERYTHING!\""
|
|
"nods knowingly. \"An obvious Fublian Gambit.\""
|
|
"offers you some advice. \"Remember the words of Leo 'the Lip' Flathead: 'Nice
|
|
guys finish last.'\""
|
|
"under Miznian rules!\""
|
|
"without a note from your doctor!\""
|
|
"except after a third-level Hamster Substitution!\""
|
|
"in a coastal city without first eating the rind of a burnt casaba melon!\""
|
|
"chortles gratingly. \"Who taught you how to play cards? Vanna Flathead?\"">>
|
|
|
|
<CONSTANT F-SCORES
|
|
<PTABLE 0
|
|
0
|
|
0
|
|
24
|
|
10
|
|
28
|
|
41
|
|
-12
|
|
-81
|
|
37
|
|
54
|
|
-29
|
|
17
|
|
66
|
|
-35
|
|
14
|
|
18
|
|
13
|
|
-79
|
|
-41
|
|
-15
|
|
60
|
|
64
|
|
-99
|
|
10
|
|
-73
|
|
12
|
|
-55
|
|
-20
|
|
-77
|
|
-11
|
|
-14
|
|
0
|
|
0
|
|
0
|
|
0
|
|
-38>>
|
|
|
|
<OBJECT BROOM
|
|
(LOC LOCAL-GLOBALS)
|
|
(DESC "broom")
|
|
(SYNONYM BROOM)
|
|
(SIZE 10)
|
|
(FLAGS TAKEBIT TRYTAKEBIT)>
|
|
|
|
<ROOM SANDBAR
|
|
(LOC ROOMS)
|
|
(DESC "Sandbar")
|
|
(REGION "Port Foozle")
|
|
(LDESC
|
|
"You are on a wide sandbar, which almost certainly vanishes at high tide.
|
|
The only ways off the sandbar are to the north and south.")
|
|
(NORTH TO FISHING-VILLAGE)
|
|
(SOUTH TO QUILBOZZA-BEACH)
|
|
(FLAGS RLANDBIT ONBIT OUTSIDEBIT)
|
|
(SYNONYM SANDBAR)
|
|
(GLOBAL FLATHEAD-OCEAN)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-5 MAP-GEN-X-2>)>
|
|
|
|
<ROOM QUILBOZZA-BEACH
|
|
(LOC ROOMS)
|
|
(DESC "Quilbozza Beach")
|
|
(REGION "Port Foozle")
|
|
(LDESC
|
|
"You are on a wide beach of fine pinkish-white sand. The ocean stretches
|
|
west to the horizon. Due to the low tide, it looks as if you could travel
|
|
north. In addition, tunnels open to the northeast and southeast.")
|
|
(NORTH TO SANDBAR)
|
|
(NE TO SALTY-SMELL)
|
|
(SE TO WARNING-ROOM)
|
|
(FLAGS RLANDBIT ONBIT OUTSIDEBIT)
|
|
(SYNONYM BEACH)
|
|
(ADJECTIVE QUILBOZZA)
|
|
(GLOBAL FLATHEAD-OCEAN)
|
|
(RESEARCH
|
|
"\"Quilbozza, just south of Port Foozle, is considered the nicest beachfront
|
|
in the eastlands, if not all of Quendor.\"")
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-2>)
|
|
(ICON QUILBOZZA-BEACH-ICON)
|
|
(ACTION QUILBOZZA-BEACH-F)>
|
|
|
|
<ROUTINE QUILBOZZA-BEACH-F ("OPT" (RARG <>))
|
|
<COND (<AND <EQUAL? .RARG ,M-END>
|
|
<PROB 40>
|
|
<NOT <EQUAL? ,CURRENT-SPLIT ,MAP-TOP-LEFT-LOC>>>
|
|
<TELL " A wave crashes against the beach." CR>)>>
|
|
|
|
<ROOM WARNING-ROOM
|
|
(LOC ROOMS)
|
|
(DESC "Warning Room")
|
|
(REGION "Port Foozle")
|
|
(LDESC
|
|
"You are in a tunnel which curves northwest and northeast. The tunnel rises
|
|
at the latter end, and passes a large, eye-catching sign.")
|
|
(NW TO QUILBOZZA-BEACH)
|
|
(DOWN TO QUILBOZZA-BEACH)
|
|
(NE TO ROOM-OF-THREE-DOORS)
|
|
(UP TO ROOM-OF-THREE-DOORS)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(GLOBAL SIGN)
|
|
(ICON WARNING-ROOM-ICON)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-7 MAP-GEN-X-3>)>
|
|
|
|
<ROOM ROOM-OF-THREE-DOORS
|
|
(LOC ROOMS)
|
|
(DESC "Room of Three Doors")
|
|
(REGION "Port Foozle")
|
|
(SW TO WARNING-ROOM)
|
|
(OUT TO WARNING-ROOM)
|
|
(IN SORRY "Pick a door... any door...")
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM MAP-GEN-Y-6 MAP-GEN-X-4>)
|
|
(ICON ROOM-OF-3-DOORS-ICON)
|
|
(ACTION ROOM-OF-THREE-DOORS-F)>
|
|
|
|
<GLOBAL VERITASSI-DOOR <>>
|
|
|
|
<GLOBAL PREVARICON-DOOR <>>
|
|
|
|
<GLOBAL WISHYFOO-DOOR <>>
|
|
|
|
<GLOBAL WRITING-CHANGED <>>
|
|
|
|
<ROUTINE ROOM-OF-THREE-DOORS-F ("OPT" (RARG <>))
|
|
<COND (<EQUAL? .RARG ,M-LOOK>
|
|
<TELL
|
|
"Before you are three doors: left, center, and right. All three doors are
|
|
closed, and have writing on them. In addition, a tunnel leads southwest.">)
|
|
(<AND <EQUAL? .RARG ,M-END>
|
|
,WRITING-CHANGED>
|
|
<SETG WRITING-CHANGED <>>
|
|
<RETURN-FROM-MAP>
|
|
<TELL
|
|
" The writing on the doors appears to have changed since the last time
|
|
you were here." CR>)
|
|
(<EQUAL? .RARG ,M-ENTER>
|
|
<COND (<FSET? ,ROOM-OF-THREE-DOORS ,TOUCHBIT>
|
|
<SETG WRITING-CHANGED T>)>
|
|
<COND (<PROB 33>
|
|
<SETG VERITASSI-DOOR ,LEFT-DOOR>
|
|
<COND (<PROB 50>
|
|
<SETG PREVARICON-DOOR ,RIGHT-DOOR>
|
|
<SETG WISHYFOO-DOOR ,CENTER-DOOR>)
|
|
(T
|
|
<SETG PREVARICON-DOOR ,CENTER-DOOR>
|
|
<SETG WISHYFOO-DOOR ,RIGHT-DOOR>)>)
|
|
(<PROB 50>
|
|
<SETG VERITASSI-DOOR ,RIGHT-DOOR>
|
|
<COND (<PROB 50>
|
|
<SETG PREVARICON-DOOR ,LEFT-DOOR>
|
|
<SETG WISHYFOO-DOOR ,CENTER-DOOR>)
|
|
(T
|
|
<SETG PREVARICON-DOOR ,CENTER-DOOR>
|
|
<SETG WISHYFOO-DOOR ,LEFT-DOOR>)>)
|
|
(T
|
|
<SETG VERITASSI-DOOR ,CENTER-DOOR>
|
|
<COND (<PROB 50>
|
|
<SETG PREVARICON-DOOR ,LEFT-DOOR>
|
|
<SETG WISHYFOO-DOOR ,RIGHT-DOOR>)
|
|
(T
|
|
<SETG PREVARICON-DOOR ,RIGHT-DOOR>
|
|
<SETG WISHYFOO-DOOR ,LEFT-DOOR>)>)>)>>
|
|
|
|
<OBJECT LEFT-DOOR
|
|
(LOC ROOM-OF-THREE-DOORS)
|
|
(DESC "left door")
|
|
(SYNONYM DOOR WRITING)
|
|
(ADJECTIVE LEFT FIRST)
|
|
(FLAGS DOORBIT NDESCBIT)
|
|
(OWNER LEFT-DOOR) ;"read writing on door"
|
|
(ACTION THREE-DOORS-F)>
|
|
|
|
<OBJECT RIGHT-DOOR
|
|
(LOC ROOM-OF-THREE-DOORS)
|
|
(DESC "right door")
|
|
(SYNONYM DOOR WRITING)
|
|
(ADJECTIVE RIGHT THIRD)
|
|
(FLAGS DOORBIT NDESCBIT)
|
|
(OWNER RIGHT-DOOR) ;"read writing on door"
|
|
(ACTION THREE-DOORS-F)>
|
|
|
|
<OBJECT CENTER-DOOR
|
|
(LOC ROOM-OF-THREE-DOORS)
|
|
(DESC "center door")
|
|
(SYNONYM DOOR WRITING)
|
|
(ADJECTIVE CENTER MIDDLE SECOND)
|
|
(FLAGS DOORBIT NDESCBIT)
|
|
(OWNER CENTER-DOOR) ;"read writing on door"
|
|
(ACTION THREE-DOORS-F)>
|
|
|
|
<ROUTINE THREE-DOORS-F ()
|
|
<COND (<VERB? READ>
|
|
<TELL
|
|
"\"Attention:|
|
|
1. This door does not lead to Prevaricon territory.|
|
|
2. The ">
|
|
<COND (<PRSO? ,VERITASSI-DOOR>
|
|
<TELL D ,PREVARICON-DOOR " does not lead to Wishyfoo">)
|
|
(<PRSO? ,PREVARICON-DOOR>
|
|
<TELL D ,WISHYFOO-DOOR " does not lead to Wishyfoo">)
|
|
(T
|
|
<TELL D ,VERITASSI-DOOR " does not lead to Veritassi">)>
|
|
<TELL " territory.\"" CR>)
|
|
(<VERB? OPEN ENTER>
|
|
<TELL
|
|
"As you open it, a strong draft sucks you through the doorway. You stumble
|
|
down a steep incline" ,ELLIPSIS>
|
|
<COND (<PRSO? ,WISHYFOO-DOOR>
|
|
<GOTO ,WISHYFOO-TERRITORY>)
|
|
(T
|
|
<HLIGHT ,H-BOLD>
|
|
<COND (<PRSO? ,VERITASSI-DOOR>
|
|
<TELL "Veritassi">)
|
|
(T
|
|
<TELL "Prevaricon">)>
|
|
<TELL " Territory" CR>
|
|
<HLIGHT ,H-NORMAL>
|
|
<JIGS-UP
|
|
" You are immediately fed to ravenous hellhounds.">)>)>>
|
|
|
|
<ROOM WISHYFOO-TERRITORY
|
|
(LOC ROOMS)
|
|
(DESC "Wishyfoo Territory")
|
|
(REGION "Port Foozle")
|
|
(LDESC
|
|
"You are in a medium-sized cavern, which appears to have been recently
|
|
occupied. The steep passage which brought you here leads southwest. Also,
|
|
a passage just large enough to fit through leads downward.")
|
|
(SW SORRY "The passage is too steep to climb back.")
|
|
(UP SORRY "The passage is too steep to climb back.")
|
|
(DOWN TO FORK)
|
|
(FLAGS RLANDBIT UNDERGROUNDBIT)
|
|
(VALUE 6)
|
|
(MAP-LOC <PTABLE FOOZLE-MAP-NUM WISHYFOO-ICON-LOC MAP-GEN-X-4>)
|
|
(ICON WISHYFOO-ICON)>
|
|
|
|
<OBJECT SHOVEL
|
|
(LOC WISHYFOO-TERRITORY)
|
|
(DESC "shovel")
|
|
(SYNONYM SHOVEL)
|
|
(SIZE 20)
|
|
(FLAGS TAKEBIT)>
|
|
|
|
<END-SEGMENT> |