Report walking - KVonGit/zil-stuff GitHub Wiki
<CONSTANT DIR-TBL
<LTABLE
"down" "up"
"out" "in"
"southwest" "southeast" "northwest" "northeast"
"west" "east" "south" "north"
>
>
<ROUTINE DIR-STRING (DIR-TBL-KEY)
<GET ,DIR-TBL .DIR-TBL-KEY>
>
<ROUTINE DIRP-TO-DIR-TBL-VAL ("OPT" (DIR-PROP ,PRSO))
<- .DIR-PROP <- ,P?DOWN 1>>
>
<ROUTINE REPORT-WALKING ()
<TELL "You walk "><TELL <DIR-STRING <DIRP-TO-DIR-TBL-VAL>>><TELL ".||">
>
Then, at the very bottom when redefining V-WALK:
<REPORT-WALKING>
<GOTO .RM>>
<VERSION XZIP>
<CONSTANT RELEASEID 4>
<CONSTANT GAME-BANNER "*** TESTING ***">
<COMPILATION-FLAG DEBUGGING-VERBS T>
<COMPILATION-FLAG DEBUG T>
<INSERT-FILE "parser">
<SET REDEFINE T>
<ROUTINE GO ()
<CRLF>
<CRLF>
<SETG MODE ,VERBOSE>
<SETG HERE ,ROOM1>
<MOVE ,PLAYER ,HERE>
<INIT-STATUS-LINE>
<V-VERSION>
<CRLF>
<V-LOOK>
<MAIN-LOOP>>
<ROOM ROOM1
(IN ROOMS)
(DESC "ROOM1")
(FLAGS LIGHTBIT)
(WEST TO ROOM2)
>
<ROOM ROOM2
(IN ROOMS)
(DESC "ROOM2")
(FLAGS LIGHTBIT)
(EAST TO ROOM1)
>
<ROUTINE V-WALK ("AUX" PT PTS RM D)
<COND (<NOT ,PRSO-DIR>
<PRINTR "Which direction?">)
(<0? <SET PT <GETPT ,HERE ,PRSO>>>
<COND (<OR ,HERE-LIT <NOT <DARKNESS-F ,M-DARK-CANT-GO>>>
<TELL-CANT-GO-THAT-WAY>)>
<SETG P-CONT 0>
<RTRUE>)
(<==? <SET PTS <PTSIZE .PT>> ,UEXIT>
<SET RM <GET/B .PT ,EXIT-RM>>)
(<==? .PTS ,NEXIT>
<TELL <GET .PT ,NEXIT-MSG> CR>
<SETG P-CONT 0>
<RTRUE>)
(<==? .PTS ,FEXIT>
<COND (<0? <SET RM <APPLY <GET .PT ,FEXIT-RTN>>>>
<SETG P-CONT 0>
<RTRUE>)>)
(<==? .PTS ,CEXIT>
<COND (<VALUE <GETB .PT ,CEXIT-VAR>>
<SET RM <GET/B .PT ,EXIT-RM>>)
(ELSE
<COND (<SET RM <GET .PT ,CEXIT-MSG>>
<TELL .RM CR>)
(<AND <NOT ,HERE-LIT> <DARKNESS-F ,M-DARK-CANT-GO>>
;"DARKNESS-F printed a message")
(ELSE
<TELL-CANT-GO-THAT-WAY>)>
<SETG P-CONT 0>
<RTRUE>)>)
(<==? .PTS ,DEXIT>
<COND (<FSET? <SET D <GET/B .PT ,DEXIT-OBJ>> ,OPENBIT>
<SET RM <GET/B .PT ,EXIT-RM>>)
(<SET RM <GET .PT ,DEXIT-MSG>>
<TELL .RM CR>
<SETG P-CONT 0>
<RTRUE>)
(ELSE
<THIS-IS-IT .D>
<TELL "You'll have to open " T .D
" first." CR>
<SETG P-CONT 0>
<RTRUE>)>)
(ELSE
<TELL "Broken exit (" N .PTS ")." CR>
<SETG P-CONT 0>
<RTRUE>)>
<REPORT-WALKING>
<GOTO .RM>>
<CONSTANT DIR-TBL
<LTABLE
"down" "up"
"out" "in"
"southwest" "southeast" "northwest" "northeast"
"west" "east" "south" "north"
>
>
<ROUTINE DIR-STRING (DIR-TBL-KEY)
<GET ,DIR-TBL .DIR-TBL-KEY>
>
<ROUTINE DIRP-TO-DIR-TBL-VAL ("OPT" (DIR-PROP ,PRSO))
<- .DIR-PROP <- ,P?DOWN 1>>
>
<ROUTINE REPORT-WALKING ()
<TELL "You walk "><TELL <DIR-STRING <DIRP-TO-DIR-TBL-VAL>>><TELL ".||">
>
<SYNTAX DIRS = V-DIRS>
<ROUTINE V-DIRS ()
<TELL "NORTH: " N, P?NORTH CR> ;"63"
<TELL "SOUTH: " N, P?SOUTH CR> ;"62"
<TELL "EAST: " N, P?EAST CR> ;"61"
<TELL "WEST: " N, P?WEST CR> ;"60"
<TELL "NE: " N, P?NE CR> ;"59"
<TELL "NW: " N, P?NW CR> ;"58"
<TELL "SE: " N, P?SE CR> ;"57"
<TELL "SW: " N, P?SW CR> ;"56"
<TELL "IN: " N, P?IN CR> ;"55"
<TELL "OUT: " N, P?OUT CR> ;"54"
<TELL "UP: " N, P?UP CR> ;"53"
<TELL "DOWN: " N, P?DOWN CR> ;"52"
>
<SYNTAX EXITS = V-EXITS>
<ROUTINE V-EXITS ()
<TELL "Exits:" CR>
<MAP-DIRECTIONS (D PT ,HERE)
<TELL " " <DIR-STRING <DIRP-TO-DIR-TBL-VAL .D>>><CRLF>
>
>