Custom buddies are structured the same way as custom characters, with config.ini and the following folders: /sprites, /scripts, /sounds. You can read more about this structure on the introduction page, use a blank buddy template, or reference our example buddy Sandbert Jr.
The core buddy folder should also include:
- icon.png [15x15px] – used for the in-game buddies sub-menu
- preview.png [any size, but 16:9 aspect ratio, 960×540 recommended] – used in the preview window on the Steam Workshop website
A buddy can only execute load.gml and update.gml custom scripts.
Buddies’ animation names also differ from the ones used by characters.
By default a buddy is not affected by its owner’s custom colors. However, you can define a list of characters you want to affect your buddy’s colors by calling add_compatiable_urls(). The function accepts both urls of published workshop characters and ▼ default character indexes. If you want the buddy to be affected by any character’s custom colors, pass all to the function.
Example, called from load.gml:
// this buddy can only borrow Zetterburn's and Sandbert's custom colors:
add_compatiable_urls( CH_ZETTERBURN, 1865940669 );
// this buddy will borrow any character's custom colors (including both workshop and default ones):
add_compatiable_urls( all );
Variables
These are all the variables you can access for pet_obj:
Variable | Default | Description |
---|---|---|
type | 0 | The type of buddy 0 = grounded 1 = flying |
can_switch_type | false | Whether the buddy will automatically switch type after going through the wait animation (in the air, the buddy will fly toward their landing point, then go into the wait animation) |
idle_spr | sprite_get( “idle” ) | The sprite to loop when idle |
run_spr | sprite_get( “run” ) | The sprite to loop when running |
turn_spr | sprite_get( “turn” ) | The sprite to play when turning around (should turn from facing left to right) |
ledge_spr | sprite_get( “ledge” ) | The sprite to play when idling at ledge |
wait_spr | sprite_get( “wait” ) | The sprite to play when idling normally |
taunt_spr | sprite_get( “taunt” ) | The sprite to play when taunting |
pet_w | 30 | The approximate width of the buddy, in pixels |
run_speed | 3 | The speed of the run state, in pixels per frame |
max_run_dist | 200 | The distance you can get away from the buddy before it starts to run toward you. Should be a fair bit more than double pet_w to avoid stuttering |
state | The current state of the buddy: “idle” “run” “taunt” |
|
teetering | If the buddy is in their ledge animation. Only relevant if state == “idle” | |
waiting | If the buddy is in their wait animation. Only relevant if state == “idle” | |
state_timer | The number of frames since starting the current state. This value is also reset when starting the ledge or wait animations |
Extra Variables
In case can_switch_type is set to true, you will also need to initialize the following variables in load.gml:
Variable | Description |
---|---|
grnd_idle_spr | The sprite to loop when idle on ground |
grnd_run_spr | The sprite to loop when running on ground |
grnd_turn_spr | The sprite to play when turning on ground. Should turn from facing left to right |
grnd_wait_spr | The sprite to play when idling on ground. Should transition from grnd_idle_spr to air_idle_spr) |
grnd_taunt_spr | The sprite to play when taunting on ground |
air_idle_spr | The sprite to loop when idle in the air |
air_run_spr | The sprite to loop when moving in the air |
air_turn_spr | The sprite to play when turning in the air. Should turn from facing left to right |
air_wait_spr | The sprite to play when idling in the air. Should transition from air_idle_spr to grnd_idle_spr) |
air_taunt_spr | The sprite to play when taunting in the air |