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:
- 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>)>>