Rivals of Aether Plush, Hugging and Special Animation
Learn how to make your workshop character compatible with the affectionate ninja kitty, Amber. Hugs and plushies!
How to Add Plushies (Easy)
First. Make a plush sprite for Amber. Ideally 13×13 pixels but not limited to that size. The game will manually scale this sprite 2x when Amber pulls out this plush. Save it as any file name you want. Put this inside your character’s sprite folder.
Inside your character’s init.gml script, put
inside there. Can be on any line. Make sprite_get reference the exact name of the sprite that will be used for Amber’s plush. (Do not include “strip1” in the name)
Test it in-game with Amber using Forward + Taunt. If done right, Amber should pull out your character’s plush!
Non-compatible characters, or incorrectly setup plush will have Amber default to her own plush.
How to Add Hugs/Special Animation Interaction (Advanced)
Animate the interaction with both characters visible. It is recommended to have these characters on different layers for reasons explained later. The animation can be as long or as short as you want. Looping windows are allowed as well. Your character can be rendered in front or behind Amber which will be explained later.
The pivot point for the sprite is set on Amber. As shown with the green crosshair in this pic.
Save the animation into 2 different sprite strips. One for Amber and one for your character. Hide one of the layers when doing this. Make sure they’re scaled 2x to fit with the game’s pixel size ratio. Changing the canvas size between characters is not recommended. The file names can be any name you want.
Open up your character’s init.gml. Copy and paste the following. The comments explain what these variables are.
//Amber interaction variables
amber_herObj = noone; //The object ID of Amber when she hugs. Amber’s own script will set this when the hug is inititated
amber_thisHugSprite = sprite_get(“sandbert_hug”);
amber_herHugSprite = sprite_get(“amber_hug”);
amber_startHug = false; //This variable is set true from Amber’s scripts
amber_thisSpriteInFront = true; //When true, this character’s sprite is rendered over Amber’s sprite
amber_autoTurnToHer = true; //This character will automatically face towards Amber upon hug activatation when true
amber_hugStartPos = 42; //The x target offset point (from Amber’s pos) where the player should hug Amber at.
amber_hugStartPos = 0; //The y target offset point. Recommended to keep this at 0 for grounded interaction
amber_hugExitPos = 42; //The x target offset point (from Amber’s pos) where the player stands at when exiting hug state.
amber_hugExitPos = 0; //The y target offset point.
//The x target offset positions will inherit the character’s spr_dir when this is true.
//Set this to true for character interactions that face toward each other such as hugging
//Set this to false for centered interaction animations
amber_useSprDirOffset = true;
amber_hugExitTimer = 30; //How many frames should pass before either player can exit the hug window loop
amber_hugExitWindow = 3; //The window to jump to when either player presses a button to exit hug loop
Open up load.gml. Set the pivot point for the sprites. Both of these should focus on Amber’s position as shown in the previous screenshot (Step 1.1)
Inside update.gml, paste this into the script. We are setting Amber’s AT_EXTRA_3 to match the animation windows for the interaction. Do not set Amber’s sprites in attack_values. The variables from init are the ones that set these sprites.
//Amber hug compatibility
if (amber_startHug == true) //Amber will set this bool to true when this player accepts the hug
with (amber_herObj) //Access Amber’s player object and set the values
//Set the window values for Amber’s hugging. DO NOT change Amber’s sprites
//in the attack_values
set_window_value(AT_EXTRA_3, 1, AG_WINDOW_TYPE, 1);
//Important. Puts Amber in startup hug state (2). //Editing this variable not recommended amberHugState = 2; } //Important. Puts this character in startup hug state (2). //Editing this variable not recommended oPlayerHugAmberState = 2; //Set this bool back to false so that this doesn't loop amber_startHug = false;
Test the interaction in-game. Amber’s interactive taunt is done by doing Up + Taunt.
If you do not have a 2nd controller, just control Amber to taunt near your character in training mode. If the compatibility works, they should play the animation. Looping window taunts can be cancelled by pressing shield, attack or special.
Notes: The interaction will read the pallet colors. If your character uses special colors that are altered in-game, make sure the sprite animation follows exactly how your character follows it.
Amber’s eyelashes uses a dark blue color. Make sure to include the exact color in her animations.
The interaction does not have to be strictly hugging. It can be petting or any kind of interactive animation. Get creative!
Disclaimer: No inappropriate/explicit animations please, or they may get blacklisted.