Dark Room Example (w Door, Chest, and Lamp) - KVonGit/zil-stuff GitHub Wiki

"Dark Room Example - MAIN FILE"

<VERSION XZIP>
<CONSTANT RELEASEID 1>

<CONSTANT GAME-BANNER
"The Door to the Dark Room
|An Example Game for ZILF v0.9
|by Text Misadventures
|Copyright (c) 2025
|v0.1-alpha">

<ROUTINE GO ()
  <SETG HERE ,LIVING-ROOM>
  <SETG MODE ,VERBOSE>
  <MOVE ,PLAYER ,HERE>
  <CRLF>
  <CRLF>
  <TELL "As the story begins, you hear someone (or some THING) whispering, \"">
  <ITALICIZE "get out!">
  <TELL "\"">
  <CRLF>
  <CRLF>
  <V-VERSION>
  <CRLF>
  <V-LOOK>
  <MAIN-LOOP>>
  
;"----------------------- UNCOMMENT TO ENABLE DEBUGGING COMMANDS ----------------------------------"
;"<COMPILATION-FLAG DEBUGGING-VERBS T>"

<INSERT-FILE "parser">

;"------------------------- UNCOMMENT TO REDEFINE ANYTHING ----------------------------------------"
;"<SET REDEFINE T>"


<ROOM LIVING-ROOM
  (IN ROOMS)
  (DESC "Living room")
  (LDESC "You should probably go out. There's nothing else to be done here.")
  (FLAGS LIGHTBIT)
  (GLOBAL FRONT-DOOR)
  (OUT TO GARAGE IF FRONT-DOOR IS OPEN)>

<OBJECT CHEST
  (IN LIVING-ROOM)
  (DESC "chest")
  (SYNONYM CHEST)
  (FLAGS CONTBIT OPENABLEBIT)>

<OBJECT LAMP
  (IN CHEST)
  (DESC "lamp")
  (SYNONYM LAMP)
  (FLAGS TAKEBIT DEVICEBIT)
  (ACTION LAMP-R)>

<ROUTINE LAMP-R ()
  <COND
    (<VERB? TURN-OFF>
      <FCLEAR ,PRSO ,LIGHTBIT>
        <V-TURN-OFF>
        <NOW-DARK?>
        <RTRUE>)
    (<VERB? TURN-ON>
      <FSET ,LAMP ,LIGHTBIT>
      <V-TURN-ON>
      <NOW-LIT?>
      <RTRUE>)>>

;"Not sure I want SWITCH to always mean TURN, so creating syntax here."

<SYNTAX SWITCH ON OBJECT (FIND DEVICEBIT) = V-TURN-ON>
<SYNTAX SWITCH OBJECT (FIND DEVICEBIT) ON OBJECT (FIND KLUDGEBIT) = V-TURN-ON>

<SYNTAX SWITCH OFF OBJECT (FIND DEVICEBIT) = V-TURN-OFF>
<SYNTAX SWITCH OBJECT (FIND DEVICEBIT) OFF OBJECT (FIND KLUDGEBIT) = V-TURN-OFF>

<ROOM GARAGE
  (IN ROOMS)
  (DESC "Garage")
  (LDESC "You should probably go back in. There's nothing else to be done here.")
  (GLOBAL FRONT-DOOR)
  (IN TO LIVING-ROOM IF FRONT-DOOR IS OPEN)>
  
<OBJECT FRONT-DOOR
  (IN LOCAL-GLOBALS)
  (DESC "front door")
  (DESCFCN FRONT-DOOR-DESC-R)
  (SYNONYM DOOR)
  (ADJECTIVE FRONT)
  (FLAGS OPENABLEBIT DOORBIT)>

<ROUTINE FRONT-DOOR-DESC-R ()
  <TELL "The front door stands ">
  <COND
    (<FSET? ,OPENBIT ,FRONT-DOOR>
      <TELL "open">)
    (T
      <TELL "closed">)>
  <TELL "." CR>>
⚠️ **GitHub.com Fallback** ⚠️