I’ve released a new version of ZILF, the ZIL compiler + Z-machine assembler + parser and game library, which you can download from Bitbucket.
There are way too many changes to list here, including:
- Doors!
- Loops!
- Scope!
- Time!
- Order!
- Vectors!
- Splices!
- Sections!
- Flags!
- Prepositions!
- Quirks!
- Retro goodness!
Thanks go out to @RoodyYogurt for contributing to the library.
ARE YOU A BAD ENOUGH DUDE(TTE) TO WRITE YOUR GAME IN ZIL?
If you’ve never tried ZIL before, here’s a taste of what you’re in for. This snippet from the 0.6 library demonstrates such new features as inferring missing nouns (“Get What I Mean”), looping over objects the player can see with MAP-SCOPE
, printing an object’s definite article with <TELL T .OBJ>
, and documenting what the hell the library code is doing:
;"Searches scope for a single object with the given flag set, and prints an
inference message before returning it.
The flag KLUDGEBIT is a special case that always finds ROOMS.
Args:
BIT: The flag to search for.
OPTS: The search options to use. (Currently ignored.)
PREP: The preposition to use in the message.
Returns:
The single object that matches, or false if zero or multiple objects match."
<ROUTINE GWIM (BIT OPTS PREP "AUX" O PW)
;"Special case"
<COND (<==? .BIT ,KLUDGEBIT>
<RETURN ,ROOMS>)>
;"Look for exactly one matching object"
<MAP-SCOPE (I)
<COND (<FSET? .I .BIT>
<COND (.O <RFALSE>)
(ELSE <SET O .I>)>)>>
;"Print inference message"
<COND (.O
<TELL "[">
<COND (<SET PW <GET-PREP-WORD .PREP>>
<TELL B .PW " ">)>
<TELL T .O "]" CR>
<RETURN .O>)
(ELSE <RFALSE>)>>