An incomplete remake of Oska Software's DeskMates in Python. Contributions are welcome.
DeskMates are animated characters that live their own lives right on your desktop. You can launch the selected character and just watch their various sequences, or you can take an active part in them. Clicking on different parts of the character's body will cause them to have different reactions. There are also very small secret touch reactions (up to 1 pixel).
- Touch reaction with hotspots (DONE)
- Recursive sequence parsing
- Frame range (DONE): a numeric string range of frames. It could be either forwards or backwards.
Example:
0881-0895
- Frame group (DONE): parts enclosed in parentheses.
- Repeats (DONE): a frame/group followed by an asterisk and a number.
Examples:
0000*5 (0192-0201)*10
- Playing the sound effect (DONE): a name of the sound effect is preceded by a space and an exclamation point, or a
double dagger (" !"/"‡", or 0x2021 in hex). Must be contained in the frame group. (Not necessary: If the previous sound
is currently playing, the animation has to pause till the former ends before playing the next one.)
Example (from the
DESKMATE.FAS
file of Oska DeskMate v2.06):( !FLAP,1218,1220,1218,1219)
- Weighted random choices (DONE): parts followed by a percentage symbol and a number,
separated with '|' delimiters and enclosed in curly brackets.
Example (from the
common_demo.FAS
file of the Kahli DeskMate):{pause_chair%4|pause_ice|pause_metalsuit_a|pause_metalsuit_b%4|pause_orb%3|pause_treadmill%4}
It will randomly pick either "pause_chair", "pause_ice", "pause_metalsuit_a", "pause_metalsuit_b", "pause_orb", or "pause_treadmill" with probabilities of [4, 1, 1, 4, 3, 4].
- Relative position (DONE): numbers representing coordinates in a Cartesian coordinate system, enclosed in square
brackets.
Example:
[15,8]
- Fencing region (ALMOST DONE): numbers representing coordinates of the region (where a character will be
repositioned) in a Cartesian coordinate system, enclosed with copyright symbols (©, 0xA9 in hex). A digit before
the letter can be set to:
- 0 — align to the screen
- 1 — align the top-left corner to the last saved position
- 2 — unknown functionality
- 3 — align to the parent sprite
It is formatted like: ©[x1,y1]0h0v,[x2,y2]0h0v©.
Example:
©[-100,100]0c0m,[100,-100]0c0m©
...will set the first point of the region to the center (center-middle) of the screen with the offset of (-100,-100) and the second one to the center (center-middle) of the screen with the offset of (100,100), and re-position the character to be in the set region.
- Flipping (DONE): The following frames can be flipped either horizontally or vertically by adding either the "less- than" symbol (<, 0x3C in hex) or the caret (^, 0x5E in hex), respectively. Introduced in the Maeka DeskMate.
- Random floating (DONE): This part will make the character float around at random in the region with set maximum horizontal and vertical speeds. It's useful if you don't feel like adding relative positioning to every frame. It is preceded by the section sign (§, 0xA7) and values are separated by the forward slash (/), and the result would be like this: §h/v. Introduced in the Johlee DeskMate.
- Extra sprite (DONE): The parts are preceded by a single number sign (#) followed by symbols representing the parameters (# for attaching to the parent sprite, - for adding to the back of the current sprite). Introduced in Sugar-n-Spice.
- Loading external FAS file (DONE): the specific FAS file is loaded. The part (filename) is preceded by the underscore
(_). Introduced in Sugar-n-Spice.
Example:
_SnS_t_both_bondage (loads "SnS_t_both_bondage.fas")
- Timer (DONE): The sequence will be looped for a set number of frames or more. The part is followed by the "at"
symbol (@) and a number of frames. Introduced in Dancing Girls.
Example (taken from the
dance_cheerleader.FAS
file of the Dancing Girls DeskMate):float_loop_cheerleader@1000
- Masking (DONE): The sequence is preceded by the symbol ½ (0xBD in hex) for masking the parent sprite.
Introduced in Screen Sirens.
Example (taken from the
sfx_iris.FAS
file of the Kahli 3D DeskMate):½9198,9100,9102,9104,9106,9108,9110,9112,9199
- Frame range (DONE): a numeric string range of frames. It could be either forwards or backwards.
- Faster file loading (NOT YET)