====== ZZT Enhancer's ZZT-OOP enhancements ======
This article is a stub. You can help by reverse-engineering things.
===== General principles =====
* ZZT Enhancer commands are prefixed with ''']''. This makes regular ZZT see them as comments, due to the preceding apostrophe. Prefixing the ZZT Enhancer command with ' makes its parser also treat it as a comment.
* Variables must always be specified in quotes, like ''']add "stones" 1''.
===== Variables =====
TODO (potential names: ''lastmx'', ''lastmy'', ''songpos'', ''songrow'', ''songvol'', ''enhancer'', ''playerx'', ''playery'', ''playerdist'')
===== String IDs =====
^ ID ^ String ^
| 7 | ''Torches:'' |
| 8 | '' Gems:'' |
| 11 | '' T '' |
| 25 | '' Torch'' |
TODO: Complete list.
===== Commands =====
==== n, s, e, w, ne, sw, se, nw ====
Move while preserving background color.
TODO
==== tn, ts, te, tw, tne, tsw, tse, tnw ====
TODO
==== activate ====
Takes two arguments.
==== add ====
Syntax: ''add "variable" x''
Adds ''x'' to ''"variable"''.
==== addcstat ====
Syntax: ''addcstat ypos color char name "variable"''
Adds a stat to the sidebar, at Y position ''ypos'', with an icon ''color'', ''char'', name ''name'', tracking variable ''"variable"''.
==== allocscreen ====
Syntax: ''allocscreen number_of_screens''
Allocate ''number_of_screens'' screens, addressable from ''0'' to ''number_of_screens - 1''.
==== becomeb ====
Syntax: ''becomeb element color''.
Becomes a statless ''element'' of color ''color''.
==== becomeo ====
Syntax: ''becomeo element_id color ??? ??? ???''
Becomes a statted element with the specified parameters.
==== bgfade ====
Takes four arguments.
==== blinkmode ====
Takes one argument.
==== border ====
Takes one argument.
==== changeb ====
Syntax: ''changeb from_element from_color to_element to_color''.
Changes all instances of a given element ID and color to the other element ID and color. ? may be used as a wildcard in from_color. Faster than ZZT ''#change''.
TODO: Can ? be used elsewhere?
==== charedit ====
Takes three arguments.
==== charid ====
Syntax: ''charid element_id char_id''
Changes the rendering character for ''element_id'' to ''char_id''.
TODO: Does this work on elements with custom rendering logic? (Text, objects, etc.)
==== chstr ====
Syntax: ''chstr string_id contents''
Replaces the string with ID ''string_id'' with ''contents''.
==== color, colour ====
Syntax: ''color x''
Sets the color value of the tile to ''x''.
==== colorxy, colourxy ====
Takes three arguments.
==== cropscreen ====
Syntax: ''cropscreen screen_index x1 y1 width height x2 y2''
TODO
==== defaultpal ====
Takes no arguments.
==== delete ====
Syntax: ''delete "variable"''
Deletes the variable ''"variable"''.
==== deletecstat ====
Seemingly **not implemented** as of Enhancer 0.3b. TODO: Verify
Syntax: ''deletecstat ypos''
Removes the custom stat at ''ypos''.
==== dieitem ====
Syntax: ''dieitem''
Destroys the object and moves stat 0 - the player - to its location.
==== divide ====
Syntax: ''divide "variable" x''
Divides ''"variable"'' by ''x''.
==== dualfont ====
Takes no arguments.
==== dup ====
Takes three or four arguments.
==== enhance ====
Syntax: ''enhance [16-byte lower-case hex value]''
TODO
==== enhancedlogo ====
Takes one argument.
==== eraseplayer ====
Takes no arguments.
==== extern ====
Takes between one and eight arguments.
==== externc ====
Takes between one and eight arguments.
==== freescreen ====
Syntax: ''freescreen''.
Deallocate all allocated screens. The opposite of ''allocscreen''.
==== freewav ====
Takes one argument.
==== global ====
Takes no arguments.
==== goto ====
Takes one argument.
==== if ====
Operators:
* ''=='' - equal
* ''!='' - not equal
* ''>='' - greater than or equal
* ''<='' - smaller than or equal
* ''>>'' - greater than
* ''<<'' - smaller than
==== ifat ====
Syntax: ''ifat x y element color command''.
If, at location ''x'', ''y'', there is an element ''element'' of color ''color'', execute ''command''.
==== ifbup ====
Takes two arguments.
==== ifoat ====
Takes six arguments.
==== ifoup ====
Takes four arguments.
==== jump ====
Takes two arguments.
==== keyvar ====
Takes two arguments.
==== keyvard ====
Takes one argument.
==== loadfont ====
Takes two arguments.
==== loadfontres ====
Takes two arguments.
==== loadpal ====
Takes one argument.
==== loadpalres ====
Takes one argument.
==== loadscreen ====
Takes one argument.
==== loadscreenres ====
Syntax: ''loadscreenres screen_index resource_index''
Loads screen from resource ''resource_index'' to slot ''screen_index''.
==== loadwav ====
Takes two arguments.
==== loadwavres ====
Takes two arguments.
==== lockplayer ====
Takes one argument.
==== mainfont ====
Takes one argument.
==== mod ====
Takes two arguments.
==== mousepoll ====
Takes one argument.
==== moveplayer ====
Syntax: ''moveplayer x y''
Moves the player to location ''x'', ''y''.
==== moveplayerhere ====
Takes no arguments.
==== multiply ====
TODO: Is mul also valid?
Syntax: ''multiply "variable" x''
Multiplies ''"variable"'' by ''x''.
==== playerchar ====
Syntax: ''playerchar char_id''.
Sets the player character to ''char_id''.
==== playercharn, playerchars, playerchare, playercharw ====
Takes one argument.
==== playercol ====
Syntax: ''playercol color''.
Sets the player color to ''color'' (0 - 255).
==== playsong ====
Syntax: ''playsong filename''.
Plays the song ''filename''.
==== playsongres ====
Syntax: ''playsongres resource_index''.
Playes the song at asset index ''resource_index''.
==== playwav ====
Takes five arguments.
==== putblock ====
Syntax: ''putblock x y element color''.
Place a statless ''element'' of color ''color'' at position ''x'', ''y''.
==== putcolor, putcolour ====
Takes three arguments.
==== putmes ====
Takes three arguments.
==== putobj ====
Syntax: ''putobj x y element_id color ??? ??? ???''
Place a statted element with the specified parameters at location ''x'', ''y''.
==== putobjup ====
Syntax: ''putobjup element_id color ??? ??? ???''
TODO
==== putsave ====
Takes five arguments.
==== puttext ====
Syntax: ''puttext x y color text''
Puts the "''text''" string in color ''color'' location ''x'', ''y''.
==== putval ====
Takes four arguments.
==== random ====
Takes two arugments.
==== rel ====
Takes the following types of arguments: ''player'', ''self'', or '' ''.
Makes future "x, y" location arguments be calculated relative to the provided target.
==== restorescreen ====
Syntax: ''restorescreen screen_index x y''.
Restores the screen slot ''screen_index'' to (''x'', ''y'').
==== rgb ====
Syntax: ''rgb id r g b''
Set the color ''id'' to color values ''r'', ''g'', ''b'' (range 0-63).
==== savescreen ====
Syntax: ''savescreen screen_index x1 y1 x2 y2''.
Saves the screen area from (''x1'', ''y1'') to (''x2'', ''y2'') to the screen slot ''screen_index''.
==== scrollchar ====
Takes four arguments.
==== secfont ====
Takes one argument.
==== set ====
Syntax: ''set "variable" x''
Sets the variable ''"variable"'' to the value ''x''.
==== setcoli ====
Syntax: ''setcoli c x''
Sets the intensity of color ''c'' to ''x'' (0 - 100).
==== setmusicvol ====
Syntax: ''setmusicvol x''
Sets the music volume to ''x'' (0 - 100).
==== setpali ====
Syntax: ''setpali x''
Sets the global palette intensity to ''x'' (0 - 100).
==== setsongpos ====
Takes one argument.
==== singlefont ====
Takes no arguments.
==== showpal ====
Takes no arguments.
==== statvar ====
Takes two arguments.
==== stopsong ====
Stops the currently playing song.
==== subtract ====
Syntax: ''subtract "variable" x''
Subtracts ''x'' from ''"variable"''.
==== teleport ====
Takes four arguments.
==== uneraseplayer ====
Takes two arguments.
==== unlockplayer ====
Takes no arguments.
==== varstat ====
Takes two arguments.
==== walk ====
Syntax: ''walk x y''
Sets the walking direction to ''x'', ''y''. For instance, ''walk -1 -1'' will cause the object to walk north-west.
==== walkxy ====
Takes four arguments.