zork-german/globals.zil

454 lines
12 KiB
Plaintext

"Generic GLOBALS file for
The ZORK Trilogy
started on 7/28/83 by MARC
-- GERMAN EDITION "
"SUBTITLE GLOBAL OBJECTS"
<OBJECT GLOBAL-OBJECTS
(SYNONYM ZZMGCK)
(DESC "es")
(FLAGS
ACTORBIT DOORBIT LIGHTBIT RMUNGBIT TOOLBIT WEAPONBIT
BURNBIT DRINKBIT NDESCBIT SACREDBIT TOUCHBIT WEARBIT
CLIMBBIT FIGHTBIT NONLANDBIT SEARCHBIT TRANSBIT READBIT
CONTBIT FLAMEBIT ONBIT STAGGERED TRYTAKEBIT
DASBIT FOODBIT OPENBIT SURFACEBIT TURNBIT DIEBIT
DERBIT INVISIBLE RLANDBIT TAKEBIT VEHBIT KLUDGEBIT)>
<OBJECT LOCAL-GLOBALS
(LOC GLOBAL-OBJECTS)
(SYNONYM ZZMGCK)
(DESCFCN PATH-OBJECT)
(GLOBAL GLOBAL-OBJECTS)
(ADVFCN 0)
(DESC "F")
(FDESC "F")
(LDESC "F")
;(PSEUDO "FOOBAR" V-WALK)
(CONTFCN 0)
(VTYPE 1)
(SIZE 0)
(CAPACITY 0)>
;"Yes, this synonym for LOCAL-GLOBALS needs to exist... sigh"
<OBJECT ROOMS
(HINEIN TO ROOMS)>
<OBJECT INTNUM
(LOC GLOBAL-OBJECTS)
(SYNONYM INTNUM)
(FLAGS TOOLBIT DIEBIT)
(DESC "Nummer")>
;"adjs. make ps?direction work for 'walk to east'"
<OBJECT INTDIR
(LOC GLOBAL-OBJECTS)
(SYNONYM WEG ;DIRECTION)
(ADJECTIVE NORD NORDEN OST OSTEN WEST WESTEN SUED SUEDEN
NORDOSTEN NO NORDWESTEN NW SUEDOSTEN SO SUEDWESTEN SW)
(FLAGS TOOLBIT DERBIT)
(DESC "Weg")>
;<OBJECT PSEUDO-OBJECT
(LOC LOCAL-GLOBALS)
(DESC "pseudo")
(ACTION CRETIN-FCN)>
<OBJECT IT
(LOC GLOBAL-OBJECTS)
(SYNONYM ES IHM)
(DESC "es")
(FLAGS NDESCBIT TOUCHBIT DASBIT)>
<OBJECT HIM
(LOC GLOBAL-OBJECTS)
(SYNONYM ER IHN IHM)
(DESC "er")
(FLAGS NDESCBIT TOUCHBIT DERBIT)>
<OBJECT HER
(LOC GLOBAL-OBJECTS)
(SYNONYM SIE IHR)
(DESC "sie")
(FLAGS NDESCBIT TOUCHBIT DIEBIT)>
<OBJECT NOT-HERE-OBJECT
(DESC "Ding" ;"[not here]")
(FLAGS DASBIT)
(ACTION NOT-HERE-OBJECT-F)>
<ROUTINE NOT-HERE-OBJECT-F ("AUX" TBL (PRSO? T) OBJ)
;"This COND is game independent (except the TELL)"
<COND (<AND <EQUAL? ,PRSO ,NOT-HERE-OBJECT>
<EQUAL? ,PRSI ,NOT-HERE-OBJECT>>
<TELL "Diese Dinge sind nicht hier!" CR>
<RTRUE>)
(<EQUAL? ,PRSO ,NOT-HERE-OBJECT>
<SET TBL ,P-PRSO>)
(T
<SET TBL ,P-PRSI>
<SET PRSO? <>>)>
;"Here is the default 'cant see any' printer"
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<COND (<EQUAL? ,WINNER ,PLAYER>
<TELL
"Du kannst das hier nicht sehen!" CR>
;<TELL "You can't see ">
;<NOT-HERE-PRINT .PRSO?>
;<TELL "that here!" CR>)
(T
;<TELL
DER-NOM-CAP ,WINNER " seems confused. \"I don't see any ">
<TELL DER-NOM-CAP ,WINNER " scheint verwirrt. %>Ich sehe das hier nicht!%<" CR>
;<NOT-HERE-PRINT .PRSO?>
;<TELL " here!\"" CR>)>
<RTRUE>>
;<ROUTINE NOT-HERE-PRINT (PRSO?)
<COND (,P-OFLAG
<COND (,P-XADJ <PRINTB ,P-XADJ ;N>)>
<COND (,P-XNAM <PRINTB ,P-XNAM>)>)
(.PRSO?
<BUFFER-PRINT <GET ,P-ITBL ,P-NC1> <GET ,P-ITBL ,P-NC1L> <>>)
(T
<BUFFER-PRINT <GET ,P-ITBL ,P-NC2> <GET ,P-ITBL ,P-NC2L> <>>)>>
<ROUTINE NULL-F ("OPTIONAL" A1 A2)
<RFALSE>>
"Objects shared by all three Zorks go here"
<GLOBAL LOAD-MAX 100>
<GLOBAL LOAD-ALLOWED 100>
;<OBJECT BLESSINGS
(LOC GLOBAL-OBJECTS)
(SYNONYM BLESSINGS GRACES)
(DESC "blessings")
(FLAGS NDESCBIT)>
<OBJECT STAIRS
(LOC LOCAL-GLOBALS)
(SYNONYM TREPPENHAUS TREPPENSTUFE TREPPE TREPP)
(ADJECTIVE STEINE STEINEN DUNKELE DUNKELEN FORBIDDING STEEP)
(DESC "Treppe")
(FLAGS NDESCBIT CLIMBBIT DIEBIT)
(ACTION STAIRS-F)>
<ROUTINE STAIRS-F ()
<COND (<VERB? THROUGH>
<TELL
"Du mu%st sagen, ob du nach oben oder unten gehen willst." CR>)>>
<OBJECT SAILOR
(LOC GLOBAL-OBJECTS)
(SYNONYM SEEMANN)
(DESC "Seemann")
(FLAGS NDESCBIT DERBIT)
(ACTION SAILOR-FCN)>
<ROUTINE SAILOR-FCN ()
<COND (<VERB? TELL>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<TELL "So kannst du mit dem Seemann nicht sprechen." CR>)
(<VERB? EXAMINE>
%<COND (<==? ,ZORK-NUMBER 3>
'<COND (<NOT <FSET? ,VIKING-SHIP ,INVISIBLE>>
<TELL
"He looks like a sailor." CR>
<RTRUE>)>)
(ELSE T)>
<TELL
"Hier ist kein Seemann zu sehen." CR>)
(<VERB? HELLO>
<SETG HS <+ ,HS 1>>
%<COND (<==? ,ZORK-NUMBER 3>
'<COND (<NOT <FSET? ,VIKING-SHIP ,INVISIBLE>>
<TELL
"The seaman looks up and maneuvers the boat toward shore. He cries out %>I
have waited three ages for someone to say those words and save me from
sailing this endless ocean. Please accept this gift. You may find it
useful!\" He throws something which falls near you in the sand, then sails
off toward the west, singing a lively, but somewhat uncouth, sailor song." CR>
<FSET ,VIKING-SHIP ,INVISIBLE>
<MOVE ,VIAL ,HERE>)
(<==? ,HERE ,FLATHEAD-OCEAN>
<COND (,SHIP-GONE
<TELL "Nothing happens anymore." CR>)
(T
<TELL "Nothing happens yet." CR>)>)
(T <TELL "Hier passiert garnichts." CR>)>)
(T
'<COND (<0? <MOD ,HS 20>>
<TELL
"Du wiederholst dich." CR>)
(<0? <MOD ,HS 10>>
<TELL
"Dieser Satz wird langsam langweilig." CR>)
(T
<TELL "Hier passiert garnichts." CR>)>)>)>>
<OBJECT GROUND
(LOC GLOBAL-OBJECTS)
(SYNONYM GRUND BODEN MEERESBODEN SAND FUSSBODEN FU\%SBODEN)
(DESC "Grund")
(FLAGS DERBIT)
(ACTION GROUND-FUNCTION)>
<ROUTINE GROUND-FUNCTION ()
<COND (<AND <VERB? PUT PUT-ON>
<EQUAL? ,PRSI ,GROUND>>
<PERFORM ,V?DROP ,PRSO>
<RTRUE>)
%<COND (<==? ,ZORK-NUMBER 1>
'(<EQUAL? ,HERE ,SANDY-CAVE>
<SAND-FUNCTION>))
(T
'(<NULL-F>
<RFALSE>))>
(<VERB? DIG>
<TELL "Hier ist der Boden zu hart zum Graben." CR>)>>
<OBJECT GRUE
(LOC GLOBAL-OBJECTS)
(SYNONYM GREUEL)
(ADJECTIVE BOESARTIGE B\%OSARTIGE)
(DESC "Greuel")
(ADJDESC "lauernd")
(FLAGS DASBIT)
(ACTION GRUE-FUNCTION)>
<ROUTINE GRUE-FUNCTION ()
<COND (<VERB? EXAMINE>
<TELL
"Das Greuel ist ein b%osartiges lauerndes Wesen in den dunklen Orten dieser Welt. Sein Lieblingsfressen besteht aus Abenteurern, aber sein uners%attlicher Appetit ist von seiner Furcht vor Licht gem%a%sigt Kein Greuel ist je bei Tageslicht gesehen worden, und nur wenige haben seine f%urchterlichen Krallen %uberlebt, um von dem grauenhaften Wesen zu erz%ahlen." CR>)
(<VERB? FIND>
<TELL
"Hier ist kein Greuel, aber ich bin sicher, das mindestens eines hier in der N%ahe im Dunkeln auf der Lauer liegt. Es w%are schon klug, auf die Lichtquelle zu achten." CR>)
(<VERB? LISTEN>
<TELL
"Es gibt keinen Ton von sich, aber es liegt immer in der N%ahe im Dunkeln."
CR>)>>
<OBJECT LUNGS
(LOC GLOBAL-OBJECTS)
(SYNONYM LUNGEN LUFT MUND)
(DESC "Luft")
(FLAGS NDESCBIT DIEBIT)>
<OBJECT ME
(LOC GLOBAL-OBJECTS)
(SYNONYM ;MYSELF MICH ICH SELBE ABENTEURER)
(DESC "Abenteurer")
(FLAGS ACTORBIT DERBIT)
(ACTION CRETIN-FCN)>
<ROUTINE CRETIN-FCN ()
<COND (<VERB? TELL>
<SETG P-CONT <>>
<SETG QUOTE-FLAG <>>
<TELL
"Selbstgespr%ache deuten auf einen bevorstehenden Nervenzusammenbruch hin."
CR>)
(<AND <VERB? GIVE>
<EQUAL? ,PRSI ,ME>>
<PERFORM ,V?TAKE ,PRSO>
<RTRUE>)
(<VERB? ALARM>
<TELL "Du bist schon hellwach!" CR>)
(<VERB? EAT>
<TELL "Selbst-Kanibalismus ist nicht die L%osung." CR>)
(<VERB? ATTACK MUNG>
<COND (<AND ,PRSI <FSET? ,PRSI ,WEAPONBIT>>
<JIGS-UP
"Wenn du darauf bestehst.........Bum! Du bist tot.">)
(T
<TELL "Selbstmord ist nicht die L%osung." CR>)>)
(<VERB? THROW>
<COND (<==? ,PRSO ,ME>
<TELL
"Warum l%aufst du nicht wie normale Menschen?" CR>)>)
(<VERB? TAKE>
<TELL "Ach, wie romantisch!" CR>)
(<VERB? EXAMINE>
<COND %<COND (<==? ,ZORK-NUMBER 1>
'(<EQUAL? ,HERE <LOC ,MIRROR-1> <LOC ,MIRROR-2>>
<TELL
"Dein Spiegelbild sieht m%ude aus." CR>))
(<==? ,ZORK-NUMBER 3>
'(,INVIS
<TELL
"A good trick, as you are currently invisible." CR>))
(T
'(<NULL-F> <RTRUE>))>
(T
%<COND (<==? ,ZORK-NUMBER 3>
'<TELL
"What you can see looks pretty much as usual, sorry to say." CR>)
(ELSE
'<TELL
"Das ist schwierig, au%ser wenn deine Augen rausnehmbar sind." CR>)>)>)>>
<OBJECT ADVENTURER
(SYNONYM ABENTEUER)
(DESC "Abenteurer")
(FLAGS NDESCBIT INVISIBLE SACREDBIT ACTORBIT DERBIT)
(STRENGTH 0)
(ACTION 0)>
<OBJECT PATHOBJ
(LOC GLOBAL-OBJECTS)
(SYNONYM PFAD WALDPFAD)
(ADJECTIVE ENGE ENGEN WINDENDER DURCHGANG)
(DESC "Durchgang")
(FLAGS NDESCBIT DERBIT)
(ACTION PATH-OBJECT)>
<ROUTINE PATH-OBJECT ()
<COND (<VERB? FIND TAKE FOLLOW>
<TELL "Du mu%st eine Richtung angeben." CR>)
(<VERB? DIG>
<PERFORM ,V?DIG ,GROUND>
<RTRUE>)>>
<OBJECT ZORKMID
(LOC GLOBAL-OBJECTS)
(SYNONYM ZORKKNETE ZORKKNET)
(DESC "Zorkknete")
(FLAGS DIEBIT)
(ACTION ZORKMID-FUNCTION)>
<ROUTINE ZORKMID-FUNCTION ()
<COND (<VERB? EXAMINE>
<TELL
"Zorkknete ist die W%ahrung des Gro%sen Unterweltreiches." CR>)
(<VERB? FIND>
<TELL
"Man findet Zorkknete am besten, indem man rausgeht, und sie sucht." CR>)>>
<OBJECT HANDS
(LOC GLOBAL-OBJECTS)
(SYNONYM HAND HAENDE H\%ANDE)
(ADJECTIVE PAAR)
(DESC "Paar H%ande")
(FLAGS NDESCBIT TOOLBIT DASBIT)>
;"status line stuff"
<CONSTANT S-TEXT 0>
<CONSTANT S-WINDOW 1>
<CONSTANT H-NORMAL 0>
<CONSTANT H-INVERSE 1>
<CONSTANT H-BOLD 2>
<CONSTANT H-ITALIC 4>
<CONSTANT D-SCREEN-ON 1>
<CONSTANT D-SCREEN-OFF -1>
<CONSTANT D-PRINTER-ON 2>
<CONSTANT D-PRINTER-OFF -2>
<CONSTANT D-TABLE-ON 3>
<CONSTANT D-TABLE-OFF -3>
<CONSTANT D-RECORD-ON 4>
<CONSTANT D-RECORD-OFF -4>
<GLOBAL HOST:NUMBER 0> "Host machine."
<GLOBAL WIDTH:NUMBER 0> "Width of screen in chars."
;<GLOBAL MIDSCREEN:NUMBER 0> "Center of screen."
<GLOBAL CWIDTH:NUMBER 0> "Pixel width of characters."
<GLOBAL CHEIGHT:NUMBER 0> "Pixel height of characters."
<ROUTINE INIT-STATUS-LINE ()
<SETG HOST <LOWCORE INTID>>
<SETG CWIDTH <LOWCORE (FWRD 0)>>
<SETG WIDTH </ <LOWCORE HWRD> ,CWIDTH>>
<COND (<L? ,WIDTH 38>
<TELL "[Screen too narrow.]" CR>
<QUIT>)>
;<SETG MIDSCREEN <+ </ ,WIDTH 2> 1>>
<SETG CHEIGHT <LOWCORE (FWRD 1)>>
<SETG OHERE <>>
<SETG OLD-LEN 0>
;<SETG DO-WINDOW <>>
<SPLIT 1>
<SCREEN ,S-WINDOW>
;<BUFOUT <>>
<HLIGHT ,H-INVERSE>
<DO-CURSET 1 1>
;<ERASE 1> ;"This semi by Jeff"
;<PRINT-SPACES <LOWCORE SCRH>>
<PRINT-SPACES ,WIDTH>
<COND (<G? ,WIDTH 75>
<DO-CURSET 1 48 ;53>
<TELL "Spielstand:">
<DO-CURSET 1 66>
<TELL "Z%ugen:">)> ;"ren: JEFF - if Zuegen printed then needs"
;<BUFOUT T> ;"to start one char to left, 65"
<HLIGHT ,H-NORMAL>
<SCREEN ,S-TEXT>
<RTRUE>>
<CONSTANT SL-TABLE:TABLE <ITABLE NONE 80>> "status line constructed here"
<GLOBAL OHERE:OBJECT <>>
<GLOBAL OLD-LEN:NUMBER 0>
;<GLOBAL MIDSCREEN:NUMBER 0>
<ROUTINE UPDATE-STATUS-LINE ()
<SCREEN ,S-WINDOW>
;<BUFOUT <>>
<HLIGHT ,H-NORMAL>
<HLIGHT ,H-INVERSE>
<COND (<NOT <EQUAL? ,HERE ,OHERE>>
<SETG OHERE ,HERE>
; <DIROUT ,D-SCREEN-OFF> ; "Screen off."
<DIROUT ,D-TABLE-ON ,SL-TABLE> ; "Table on."
<SAY-HERE>
<DIROUT ,D-TABLE-OFF> ; "Table off."
; <DIROUT ,D-SCREEN-ON> ; "Screen on."
<DO-CURSET 1 2>
<PRINT-SPACES ,OLD-LEN> ; "Erase old HERE desc"
<SETG OLD-LEN <GET ,SL-TABLE 0>> ; "Print new HERE desc."
<DO-CURSET 1 2>
<SAY-HERE>)>
<COND (<G? ,WIDTH 78>
;"in case score g%os down, move 1 col. to left and print space"
<DO-CURSET 1 ;59 60>
<TELL N ,SCORE " ">
<DO-CURSET 1 73>
<TELL N ,MOVES>)
(T
<DIROUT ,D-TABLE-ON ,SL-TABLE>
<TELL N ,SCORE "/" N ,MOVES>
<DIROUT ,D-TABLE-OFF>
;"in case score g%os down, one col. to left and print space"
<DO-CURSET 1 <- ,WIDTH <+ <GET ,SL-TABLE 0> 2 ;1>>>
<TELL " " N ,SCORE "/" N ,MOVES>)>
<HLIGHT ,H-NORMAL>
<SCREEN ,S-TEXT> ;"Back to main screen."
<RTRUE>>
<ROUTINE PRINT-SPACES (N)
<REPEAT ()
<COND (<L? <SET N <- .N 1>> 0>
<RTRUE>)
(T
<TELL !\ >)>>
<RTRUE>>
<ROUTINE SAY-HERE ()
<COND (<ZERO? ,LIT?>
<TELL "Dunkelheit">)
(T
<TELL D ,HERE>
<COND (<AND <G? ,WIDTH 75>
<NOT <IN? ,ADVENTURER ,HERE>>>
<TELL ", in " DER-DAT <LOC ,ADVENTURER>>)>)>
<RTRUE>>