--CITRON-- Citron is a funny little experiment that can do stuff. Only works in TurboWarp: turbowarp.org/1202695164?offscreen&hqpen&fps=250 Blue app link (13+): tdNv8tFevt --DOCUMENTATION-- Press arrow down to select the code screen. //the semicolon [;] has been replaced with a normal colon [:]. But if you try writing a semicolon it just will write a colon anyway so don't worry. # Basics `vif;com;[x]<[y]?` - compares *[x]* and *[y]*. `vif;key;[x]` - checks if key *[x]* is pressed. `vif;col;[x]&[y]` - checks for collision ㅤbetween object *[x]* and *[y]*. This uses math and a global hitbox size, so the two objects don't have to actually "touch" eachother. `els;` - else statement. Written at the same indent as the first statement. -# example: ``` vif;com;1=1? ㅤlog;yes ofcourse els; ㅤlog;are you stupid ``` `int;[x]=[y]` - Defines and sets/(*in/de*)-creases variable *[x]* to/by *[y]* ㅤList of operators: `+` (plus), `-` (minus), `/` (divide), `*` (multi), `%` (random (between *[y]* and *[z]*) `log;[x]` - Prints *[x]* to the terminal. `end;` - Ends the script. `hop;[x]` - Hops to another line in the code (line number *[x]*). This is how you create loops. `del;[x]` - Deletes object *[x]*. `hbx;[x]` - Changes the universal hitbox size. The default is currently 10. `cam;[x]=[y]` - Moves the camera's x or y *[x]* to/by *[y]*. `bkg;[x]` - Sets color of the background. (HEX CODE) There are three built-in variables: ㅤ- **Mx** + **My** - mouse x and y positions ㅤ- **Et** - basic timer (stands for *elapsed time*) You can nest lines by putting a space before them. -# example: ``` vif;com;variable>0? ㅤvif;com;variable<50? ㅤㅤlog;less than fifty ``` # Objects There are two types of objects; "*Phys*" and "*Text*": ㅤ- **Phys** are objects rendered with a *Model*. ㅤ- **Text** are objects rendered with a string of text *[tx]*. There are eight properties objects have: ㅤ- **Name** (cannot be changed) ㅤ- **Model** (cannot be changed) ㅤ- **Size** ㅤ- **X** ㅤ- **Y** ㅤ- **Dir** ㅤ- **Color** - Hue value between 0 - 200 ㅤ- **Tx** - String of text (only for *text* objects) `new;[type];"[x]";[y]` - Creates a new object with the name *[x]* and model/string of *[y]*. `obj;[x];[y]=[z]` - Modifies object properties - name of object *[x]*, property you want to change *[y]*, and sets/(in/de)-creases it to. *[z]* # Functions Functions are a way to clean up your code and make repeating tasks easier. `fun;def;"[x]"` - creates a function named *[x].* `fun;exe;[x]` - executes function *[x].* Everything the function does should be nested or it won't work. -# example: ``` int;num=1%100 fun;def;"math" ㅤvif;com;num<50? ㅤㅤlog;less than fifty ㅤels; ㅤㅤlog;more than fifty fun;exe;math ``` # List of models: circle, square, nanamonster, popmonster, pongomonster, bashmonster, dango, chick, crab, banana, basketball, baseball, butterfly, cat, gobo, giga, nano, tera, pico, frank, dango-cat --CREDITS--