====== 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.