» Uncategorized Posts

has_rune

Returns whether a specific rune is currently equipped on the player. For more info on how to add custom runes to your character, check the Custom Abyss Runes page.

ArgumentTypeDescription
letter:stringThe letter of the rune to check.

Example, called from init.gml:

//This code will set the character's dash speed to be much higher only if rune A is equipped.
if has_rune("A") {
dash_speed = 8;
} else {
dash_speed = 4;
}

Custom Abyss Runes

Custom Abyss runes can be added to your custom character via the config.ini file, as well as the function has_rune( letter )  Reference→.

Each rune, from A to O, can be set in the character’s config.ini file, using the two properties below, replacing the # with the letter of the rune you want to set.

Property Description
rune # type The rune’s type. Can be set to one of the following values:
O – Object modifier, for articles and other things the character creates.
R – Ranged modifier, for projectiles.
H – Hit modifier, for melee attacks.
A – Ability boost, for miscellaneous abilities that aren’t necessarily attacks.
rune # desc The rune’s description, explaining what it actually does.

Example of setting up runes in config.ini:
rune A type="H"
rune A desc="Makes FSTRONG stronger."
rune B type="R"
rune B desc="NSPECIAL's projectile moves way faster."
rune C type="A"
rune C desc="Increased coolness."

Keep in mind that the rune types are fairly arbitrary and don’t change anything gameplay-wise, so if a rune’s effects cover multiple types, just set it to what you think is the most relevant.

As for actually implementing them into your character, making runes affect their abilities, you’ll only need the has_rune( letter )  Reference→ function. This can be used in any script in any way other functions can, returning 1 if the rune is equipped and 0 if it isn’t. Some useful examples of applying this are:
//Conditional runes
if has_rune("A") {
dash_speed = 8;
}
//Adding a rune's value
max_djumps = 1 + has_rune("B") * 2;
//Modifying attack values
set_hitbox_value( AT_FAIR, 1, HG_DAMAGE, 10 + has_rune("C") * 10 );

Hit Particles

Hit particles appear whenever you land a hit on someone. Though they’re purely decorative, they can help sell what the attack hit them with; Base game characters use this for elemental-focused attacks.

Custom characters have 6 slots for custom hit particles. By default, these slots are automatically filled out with the files hit_particle1hit_particle6 in the sprites folder. (If those sprites don’t exist, an empty sprite is used instead.) You can change which sprite a particle uses by calling set_hit_particle_sprite( num:real, sprite_index:real ) in init.gml. For example:

set_hit_particle_sprite( 1, sprite_get( "custom_sprite" ) );

For more information on how sprites are loaded and animated in general, check the Sprites page.

The particles a hitbox spawns depends on the property HG_HIT_PARTICLE_NUM. By default this property is set to 0, which will use the regular “bullet”-shaped particles. Setting it to 1 – 6 will use the hit particles from that slot, and anything above that will behave the same as 0.

Hit particle sprites are stored and drawn slightly differently to normal sprites, and have a few important differences to keep in mind.
Due to the way hit particles are stored, they cannot be updated after init.gml runs, and will not update to match palette changes mid-match.
Transparency is handled differently; the color in the bottom left pixel of each frame is counted as transparency, and every other color will be completely opaque.

set_hit_particle_sprite

Sets the character’s custom Hit Particle sprite for the specified slot. Note that this will only successfully run in init.gml.

Can be assigned to a custom sprite using

sprite_get( sprite )  Reference→

or set to one of the following indexes

ArgumentTypeDescription
num:realThe custom particle slot to change
sprite_index:realThe sprite index to assign to that slot

Example, called from init.gml:

set_hit_particle_sprite( 1, sprite_get( "custom_sprite" ) );

spawn_dust_fx

Spawns a visual effect at the specified position. Unlike hit fx, dust effects don’t pull from a list and instead just displays sprite indexes directly.

ArgumentTypeDescription
x:realThe x position to spawn effect at
y:realThe y position to spawn effect at
sprite_index:realThe sprite index to use.
length:realThe amount of time it takes for the animation to play, in frames.

Example, called from update.gml:

// spawns a visual effect at the beginning of 4th Fspecial window:
if (attack == AT_FSPECIAL && window == 4 && window_timer == 1) {
spawn_dust_fx( x, y, sprite_get("custom_sprite"), 26 );
}