Merge pull request #1957 from ghoulslash/be/ability_popup

Ability Popup Fixes + Longer Ability Names config
This commit is contained in:
Eduardo Quezada D'Ottone 2022-01-01 19:39:55 -03:00 committed by GitHub
commit 221e38ff86
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 337 additions and 25 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 B

After

Width:  |  Height:  |  Size: 275 B

View File

@ -23,7 +23,12 @@ struct MultiPartnerMenuPokemon
};
#define TYPE_NAME_LENGTH 6
#if B_EXPANDED_ABILITY_NAMES
#define ABILITY_NAME_LENGTH 16
#else
#define ABILITY_NAME_LENGTH 12
#endif
// defines for the 'DoBounceEffect' function
#define BOUNCE_MON 0x0

View File

@ -1,7 +1,13 @@
#ifndef GUARD_BATTLE_MESSAGE_H
#define GUARD_BATTLE_MESSAGE_H
#define TEXT_BUFF_ARRAY_COUNT 16
#include "constants/battle_config.h"
#if B_EXPANDED_ABILITY_NAMES == TRUE
#define TEXT_BUFF_ARRAY_COUNT 17
#else
#define TEXT_BUFF_ARRAY_COUNT 16
#endif
// for 0xFD
#define B_TXT_BUFF1 0x0

View File

@ -165,6 +165,7 @@
#define B_RAMPAGE_CANCELLING GEN_7 // In Gen5+, a failed Thrash, etc, will cancel except on its last turn.
// Ability settings
#define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters.
#define B_ABILITY_WEATHER GEN_7 // In Gen6+, ability-induced weather lasts 5 turns. Before, it lasted until the battle ended or until it was changed by a move or a different weather-affecting ability.
#define B_GALE_WINGS GEN_7 // In Gen7+ requires full HP to trigger.
#define B_STANCE_CHANGE_FAIL GEN_7 // In Gen7+, Stance Change fails if the Pokémon is unable to use a move because of confusion, paralysis, etc. In Gen6, it doesn't.

View File

@ -2857,15 +2857,15 @@ static const struct SpriteTemplate sSpriteTemplate_AbilityPopUp2 =
static const s16 sAbilityPopUpCoordsDoubles[MAX_BATTLERS_COUNT][2] =
{
{29, 80}, // player left
{204, 19}, // opponent left
{186, 19}, // opponent left
{29, 97}, // player right
{204, 36}, // opponent right
{186, 36}, // opponent right
};
static const s16 sAbilityPopUpCoordsSingles[MAX_BATTLERS_COUNT][2] =
{
{29, 93}, // player
{204, 23}, // opponent
{29, 97}, // player
{186, 57}, // opponent
};
static u8* AddTextPrinterAndCreateWindowOnAbilityPopUp(const u8 *str, u32 x, u32 y, u32 color1, u32 color2, u32 color3, u32 *windowId)
@ -2876,7 +2876,7 @@ static u8* AddTextPrinterAndCreateWindowOnAbilityPopUp(const u8 *str, u32 x, u32
winTemplate.height = 2;
*windowId = AddWindow(&winTemplate);
FillWindowPixelBuffer(*windowId, (color1 << 4) | (color1));
FillWindowPixelBuffer(*windowId, PIXEL_FILL(color1));
AddTextPrinterParameterized4(*windowId, 0, x, y, 0, 0, color, -1, str);
return (u8*)(GetWindowAttribute(*windowId, WINDOW_TILE_DATA));
@ -2905,10 +2905,10 @@ static void PrintOnAbilityPopUp(const u8 *str, u8 *spriteTileData1, u8 *spriteTi
{
u32 windowId, i;
u8 *windowTileData;
u8 text1[MAX_CHARS_PRINTED + 2];
u8 text2[MAX_CHARS_PRINTED + 2];
u8 text1[MAX_CHARS_PRINTED];
u8 text2[MAX_CHARS_PRINTED];
for (i = 0; i < MAX_CHARS_PRINTED + 1; i++)
for (i = 0; i < MAX_CHARS_PRINTED; i++)
{
text1[i] = str[i];
if (text1[i] == EOS)
@ -2920,7 +2920,7 @@ static void PrintOnAbilityPopUp(const u8 *str, u8 *spriteTileData1, u8 *spriteTi
TextIntoAbilityPopUp(spriteTileData1, windowTileData, 8, (y == 0));
RemoveWindow(windowId);
if (i == MAX_CHARS_PRINTED + 1)
if (i == MAX_CHARS_PRINTED)
{
for (i = 0; i < MAX_CHARS_PRINTED; i++)
{
@ -2931,11 +2931,22 @@ static void PrintOnAbilityPopUp(const u8 *str, u8 *spriteTileData1, u8 *spriteTi
text2[i] = EOS;
windowTileData = AddTextPrinterAndCreateWindowOnAbilityPopUp(text2, x2, y, color1, color2, color3, &windowId);
TextIntoAbilityPopUp(spriteTileData2, windowTileData, 1, (y == 0));
TextIntoAbilityPopUp(spriteTileData2, windowTileData, 3, (y == 0));
RemoveWindow(windowId);
}
}
static const u8 sText_Space16[]= _(" ");
static void ClearAbilityName(u8 spriteId1, u8 spriteId2)
{
PrintOnAbilityPopUp(sText_Space16,
(void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32) + 256,
(void*)(OBJ_VRAM0) + (gSprites[spriteId2].oam.tileNum * 32) + 256,
6, 1,
4,
7, 9, 1);
}
static void PrintBattlerOnAbilityPopUp(u8 battlerId, u8 spriteId1, u8 spriteId2)
{
int i;
@ -2978,7 +2989,7 @@ static void PrintAbilityOnAbilityPopUp(u32 ability, u8 spriteId1, u8 spriteId2)
PrintOnAbilityPopUp(gAbilityNames[ability],
(void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32) + 256,
(void*)(OBJ_VRAM0) + (gSprites[spriteId2].oam.tileNum * 32) + 256,
7, 1,
6, 1,
4,
7, 9, 1);
}
@ -3039,6 +3050,20 @@ static const u16 sOverwrittenPixelsTable[][2] =
{PIXEL_COORDS_TO_OFFSET(0, 24), 3},
{PIXEL_COORDS_TO_OFFSET(0, 25), 3},
{PIXEL_COORDS_TO_OFFSET(0, 26), 3},
//Second Row Of Image
{PIXEL_COORDS_TO_OFFSET(0, 45), 8},
{PIXEL_COORDS_TO_OFFSET(0, 46), 8},
{PIXEL_COORDS_TO_OFFSET(0, 47), 8},
//{PIXEL_COORDS_TO_OFFSET(0, 48), 8}, // cuts off the top of the 'G' in Neutralizing Gas
{PIXEL_COORDS_TO_OFFSET(8, 45), 8},
{PIXEL_COORDS_TO_OFFSET(8, 46), 8},
{PIXEL_COORDS_TO_OFFSET(8, 47), 8},
{PIXEL_COORDS_TO_OFFSET(8, 48), 8},
{PIXEL_COORDS_TO_OFFSET(16, 45), 8},
{PIXEL_COORDS_TO_OFFSET(16, 46), 8},
{PIXEL_COORDS_TO_OFFSET(16, 47), 8},
{PIXEL_COORDS_TO_OFFSET(16, 48), 8},
};
static inline void CopyPixels(u8 *dest, const u8 *src, u32 pixelCount)
@ -3165,6 +3190,7 @@ void UpdateAbilityPopup(u8 battlerId)
u8 spriteId2 = gBattleStruct->abilityPopUpSpriteIds[battlerId][1];
u16 ability = (gBattleScripting.abilityPopupOverwrite != 0) ? gBattleScripting.abilityPopupOverwrite : gBattleMons[battlerId].ability;
ClearAbilityName(spriteId1, spriteId2);
PrintAbilityOnAbilityPopUp(ability, spriteId1, spriteId2);
RestoreOverwrittenPixels((void*)(OBJ_VRAM0) + (gSprites[spriteId1].oam.tileNum * 32));
}
@ -3230,19 +3256,19 @@ static void Task_FreeAbilityPopUpGfx(u8 taskId)
static const struct OamData sOamData_LastUsedBall =
{
.y = 0,
.affineMode = 0,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
.shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
.size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
.affineParam = 0,
.y = 0,
.affineMode = 0,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
.shape = SPRITE_SHAPE(32x32),
.x = 0,
.matrixNum = 0,
.size = SPRITE_SIZE(32x32),
.tileNum = 0,
.priority = 1,
.paletteNum = 0,
.affineParam = 0,
};
static const struct SpriteTemplate sSpriteTemplate_LastUsedBallWindow =

View File

@ -255,6 +255,279 @@ static const u8 sGrimNeighDescription[] = _("KOs boost Sp. Atk stat.");
static const u8 sAsOneIceRiderDescription[] = _("Unnerve and Chilling Neigh.");
static const u8 sAsOneShadowRiderDescription[] = _("Unnerve and Grim Neigh.");
#if B_EXPANDED_ABILITY_NAMES == TRUE
const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] =
{
[ABILITY_NONE] = _("-------"),
[ABILITY_STENCH] = _("Stench"),
[ABILITY_DRIZZLE] = _("Drizzle"),
[ABILITY_SPEED_BOOST] = _("Speed Boost"),
[ABILITY_BATTLE_ARMOR] = _("Battle Armor"),
[ABILITY_STURDY] = _("Sturdy"),
[ABILITY_DAMP] = _("Damp"),
[ABILITY_LIMBER] = _("Limber"),
[ABILITY_SAND_VEIL] = _("Sand Veil"),
[ABILITY_STATIC] = _("Static"),
[ABILITY_VOLT_ABSORB] = _("Volt Absorb"),
[ABILITY_WATER_ABSORB] = _("Water Absorb"),
[ABILITY_OBLIVIOUS] = _("Oblivious"),
[ABILITY_CLOUD_NINE] = _("Cloud Nine"),
[ABILITY_COMPOUND_EYES] = _("Compound Eyes"),
[ABILITY_INSOMNIA] = _("Insomnia"),
[ABILITY_COLOR_CHANGE] = _("Color Change"),
[ABILITY_IMMUNITY] = _("Immunity"),
[ABILITY_FLASH_FIRE] = _("Flash Fire"),
[ABILITY_SHIELD_DUST] = _("Shield Dust"),
[ABILITY_OWN_TEMPO] = _("Own Tempo"),
[ABILITY_SUCTION_CUPS] = _("Suction Cups"),
[ABILITY_INTIMIDATE] = _("Intimidate"),
[ABILITY_SHADOW_TAG] = _("Shadow Tag"),
[ABILITY_ROUGH_SKIN] = _("Rough Skin"),
[ABILITY_WONDER_GUARD] = _("Wonder Guard"),
[ABILITY_LEVITATE] = _("Levitate"),
[ABILITY_EFFECT_SPORE] = _("Effect Spore"),
[ABILITY_SYNCHRONIZE] = _("Synchronize"),
[ABILITY_CLEAR_BODY] = _("Clear Body"),
[ABILITY_NATURAL_CURE] = _("Natural Cure"),
[ABILITY_LIGHTNING_ROD] = _("Lightning Rod"),
[ABILITY_SERENE_GRACE] = _("Serene Grace"),
[ABILITY_SWIFT_SWIM] = _("Swift Swim"),
[ABILITY_CHLOROPHYLL] = _("Chlorophyll"),
[ABILITY_ILLUMINATE] = _("Illuminate"),
[ABILITY_TRACE] = _("Trace"),
[ABILITY_HUGE_POWER] = _("Huge Power"),
[ABILITY_POISON_POINT] = _("Poison Point"),
[ABILITY_INNER_FOCUS] = _("Inner Focus"),
[ABILITY_MAGMA_ARMOR] = _("Magma Armor"),
[ABILITY_WATER_VEIL] = _("Water Veil"),
[ABILITY_MAGNET_PULL] = _("Magnet Pull"),
[ABILITY_SOUNDPROOF] = _("Soundproof"),
[ABILITY_RAIN_DISH] = _("Rain Dish"),
[ABILITY_SAND_STREAM] = _("Sand Stream"),
[ABILITY_PRESSURE] = _("Pressure"),
[ABILITY_THICK_FAT] = _("Thick Fat"),
[ABILITY_EARLY_BIRD] = _("Early Bird"),
[ABILITY_FLAME_BODY] = _("Flame Body"),
[ABILITY_RUN_AWAY] = _("Run Away"),
[ABILITY_KEEN_EYE] = _("Keen Eye"),
[ABILITY_HYPER_CUTTER] = _("Hyper Cutter"),
[ABILITY_PICKUP] = _("Pickup"),
[ABILITY_TRUANT] = _("Truant"),
[ABILITY_HUSTLE] = _("Hustle"),
[ABILITY_CUTE_CHARM] = _("Cute Charm"),
[ABILITY_PLUS] = _("Plus"),
[ABILITY_MINUS] = _("Minus"),
[ABILITY_FORECAST] = _("Forecast"),
[ABILITY_STICKY_HOLD] = _("Sticky Hold"),
[ABILITY_SHED_SKIN] = _("Shed Skin"),
[ABILITY_GUTS] = _("Guts"),
[ABILITY_MARVEL_SCALE] = _("Marvel Scale"),
[ABILITY_LIQUID_OOZE] = _("Liquid Ooze"),
[ABILITY_OVERGROW] = _("Overgrow"),
[ABILITY_BLAZE] = _("Blaze"),
[ABILITY_TORRENT] = _("Torrent"),
[ABILITY_SWARM] = _("Swarm"),
[ABILITY_ROCK_HEAD] = _("Rock Head"),
[ABILITY_DROUGHT] = _("Drought"),
[ABILITY_ARENA_TRAP] = _("Arena Trap"),
[ABILITY_VITAL_SPIRIT] = _("Vital Spirit"),
[ABILITY_WHITE_SMOKE] = _("White Smoke"),
[ABILITY_PURE_POWER] = _("Pure Power"),
[ABILITY_SHELL_ARMOR] = _("Shell Armor"),
[ABILITY_AIR_LOCK] = _("Air Lock"),
[ABILITY_TANGLED_FEET] = _("Tangled Feet"),
[ABILITY_MOTOR_DRIVE] = _("Motor Drive"),
[ABILITY_RIVALRY] = _("Rivalry"),
[ABILITY_STEADFAST] = _("Steadfast"),
[ABILITY_SNOW_CLOAK] = _("Snow Cloak"),
[ABILITY_GLUTTONY] = _("Gluttony"),
[ABILITY_ANGER_POINT] = _("Anger Point"),
[ABILITY_UNBURDEN] = _("Unburden"),
[ABILITY_HEATPROOF] = _("Heatproof"),
[ABILITY_SIMPLE] = _("Simple"),
[ABILITY_DRY_SKIN] = _("Dry Skin"),
[ABILITY_DOWNLOAD] = _("Download"),
[ABILITY_IRON_FIST] = _("Iron Fist"),
[ABILITY_POISON_HEAL] = _("Poison Heal"),
[ABILITY_ADAPTABILITY] = _("Adaptability"),
[ABILITY_SKILL_LINK] = _("Skill Link"),
[ABILITY_HYDRATION] = _("Hydration"),
[ABILITY_SOLAR_POWER] = _("Solar Power"),
[ABILITY_QUICK_FEET] = _("Quick Feet"),
[ABILITY_NORMALIZE] = _("Normalize"),
[ABILITY_SNIPER] = _("Sniper"),
[ABILITY_MAGIC_GUARD] = _("Magic Guard"),
[ABILITY_NO_GUARD] = _("No Guard"),
[ABILITY_STALL] = _("Stall"),
[ABILITY_TECHNICIAN] = _("Technician"),
[ABILITY_LEAF_GUARD] = _("Leaf Guard"),
[ABILITY_KLUTZ] = _("Klutz"),
[ABILITY_MOLD_BREAKER] = _("Mold Breaker"),
[ABILITY_SUPER_LUCK] = _("Super Luck"),
[ABILITY_AFTERMATH] = _("Aftermath"),
[ABILITY_ANTICIPATION] = _("Anticipation"),
[ABILITY_FOREWARN] = _("Forewarn"),
[ABILITY_UNAWARE] = _("Unaware"),
[ABILITY_TINTED_LENS] = _("Tinted Lens"),
[ABILITY_FILTER] = _("Filter"),
[ABILITY_SLOW_START] = _("Slow Start"),
[ABILITY_SCRAPPY] = _("Scrappy"),
[ABILITY_STORM_DRAIN] = _("Storm Drain"),
[ABILITY_ICE_BODY] = _("Ice Body"),
[ABILITY_SOLID_ROCK] = _("Solid Rock"),
[ABILITY_SNOW_WARNING] = _("Snow Warning"),
[ABILITY_HONEY_GATHER] = _("Honey Gather"),
[ABILITY_FRISK] = _("Frisk"),
[ABILITY_RECKLESS] = _("Reckless"),
[ABILITY_MULTITYPE] = _("Multitype"),
[ABILITY_FLOWER_GIFT] = _("Flower Gift"),
[ABILITY_BAD_DREAMS] = _("Bad Dreams"),
[ABILITY_PICKPOCKET] = _("Pickpocket"),
[ABILITY_SHEER_FORCE] = _("Sheer Force"),
[ABILITY_CONTRARY] = _("Contrary"),
[ABILITY_UNNERVE] = _("Unnerve"),
[ABILITY_DEFIANT] = _("Defiant"),
[ABILITY_DEFEATIST] = _("Defeatist"),
[ABILITY_CURSED_BODY] = _("Cursed Body"),
[ABILITY_HEALER] = _("Healer"),
[ABILITY_FRIEND_GUARD] = _("Friend Guard"),
[ABILITY_WEAK_ARMOR] = _("Weak Armor"),
[ABILITY_HEAVY_METAL] = _("Heavy Metal"),
[ABILITY_LIGHT_METAL] = _("Light Metal"),
[ABILITY_MULTISCALE] = _("Multiscale"),
[ABILITY_TOXIC_BOOST] = _("Toxic Boost"),
[ABILITY_FLARE_BOOST] = _("Flare Boost"),
[ABILITY_HARVEST] = _("Harvest"),
[ABILITY_TELEPATHY] = _("Telepathy"),
[ABILITY_MOODY] = _("Moody"),
[ABILITY_OVERCOAT] = _("Overcoat"),
[ABILITY_POISON_TOUCH] = _("Poison Touch"),
[ABILITY_REGENERATOR] = _("Regenerator"),
[ABILITY_BIG_PECKS] = _("Big Pecks"),
[ABILITY_SAND_RUSH] = _("Sand Rush"),
[ABILITY_WONDER_SKIN] = _("Wonder Skin"),
[ABILITY_ANALYTIC] = _("Analytic"),
[ABILITY_ILLUSION] = _("Illusion"),
[ABILITY_IMPOSTER] = _("Imposter"),
[ABILITY_INFILTRATOR] = _("Infiltrator"),
[ABILITY_MUMMY] = _("Mummy"),
[ABILITY_MOXIE] = _("Moxie"),
[ABILITY_JUSTIFIED] = _("Justified"),
[ABILITY_RATTLED] = _("Rattled"),
[ABILITY_MAGIC_BOUNCE] = _("Magic Bounce"),
[ABILITY_SAP_SIPPER] = _("Sap Sipper"),
[ABILITY_PRANKSTER] = _("Prankster"),
[ABILITY_SAND_FORCE] = _("Sand Force"),
[ABILITY_IRON_BARBS] = _("Iron Barbs"),
[ABILITY_ZEN_MODE] = _("Zen Mode"),
[ABILITY_VICTORY_STAR] = _("Victory Star"),
[ABILITY_TURBOBLAZE] = _("Turboblaze"),
[ABILITY_TERAVOLT] = _("Teravolt"),
[ABILITY_AROMA_VEIL] = _("Aroma Veil"),
[ABILITY_FLOWER_VEIL] = _("Flower Veil"),
[ABILITY_CHEEK_POUCH] = _("Cheek Pouch"),
[ABILITY_PROTEAN] = _("Protean"),
[ABILITY_FUR_COAT] = _("Fur Coat"),
[ABILITY_MAGICIAN] = _("Magician"),
[ABILITY_BULLETPROOF] = _("Bulletproof"),
[ABILITY_COMPETITIVE] = _("Competitive"),
[ABILITY_STRONG_JAW] = _("Strong Jaw"),
[ABILITY_REFRIGERATE] = _("Refrigerate"),
[ABILITY_SWEET_VEIL] = _("Sweet Veil"),
[ABILITY_STANCE_CHANGE] = _("Stance Change"),
[ABILITY_GALE_WINGS] = _("Gale Wings"),
[ABILITY_MEGA_LAUNCHER] = _("Mega Launcher"),
[ABILITY_GRASS_PELT] = _("Grass Pelt"),
[ABILITY_SYMBIOSIS] = _("Symbiosis"),
[ABILITY_TOUGH_CLAWS] = _("Tough Claws"),
[ABILITY_PIXILATE] = _("Pixilate"),
[ABILITY_GOOEY] = _("Gooey"),
[ABILITY_AERILATE] = _("Aerilate"),
[ABILITY_PARENTAL_BOND] = _("Parental Bond"),
[ABILITY_DARK_AURA] = _("Dark Aura"),
[ABILITY_FAIRY_AURA] = _("Fairy Aura"),
[ABILITY_AURA_BREAK] = _("Aura Break"),
[ABILITY_PRIMORDIAL_SEA] = _("Primordial Sea"),
[ABILITY_DESOLATE_LAND] = _("Desolate Land"),
[ABILITY_DELTA_STREAM] = _("Delta Stream"),
[ABILITY_STAMINA] = _("Stamina"),
[ABILITY_WIMP_OUT] = _("Wimp Out"),
[ABILITY_EMERGENCY_EXIT] = _("Emergency Exit"),
[ABILITY_WATER_COMPACTION] = _("Water Compaction"),
[ABILITY_MERCILESS] = _("Merciless"),
[ABILITY_SHIELDS_DOWN] = _("Shields Down"),
[ABILITY_STAKEOUT] = _("Stakeout"),
[ABILITY_WATER_BUBBLE] = _("Water Bubble"),
[ABILITY_STEELWORKER] = _("Steelworker"),
[ABILITY_BERSERK] = _("Berserk"),
[ABILITY_SLUSH_RUSH] = _("Slush Rush"),
[ABILITY_LONG_REACH] = _("Long Reach"),
[ABILITY_LIQUID_VOICE] = _("Liquid Voice"),
[ABILITY_TRIAGE] = _("Triage"),
[ABILITY_GALVANIZE] = _("Galvanize"),
[ABILITY_SURGE_SURFER] = _("Surge Surfer"),
[ABILITY_SCHOOLING] = _("Schooling"),
[ABILITY_DISGUISE] = _("Disguise"),
[ABILITY_BATTLE_BOND] = _("Battle Bond"),
[ABILITY_POWER_CONSTRUCT] = _("Power Construct"),
[ABILITY_CORROSION] = _("Corrosion"),
[ABILITY_COMATOSE] = _("Comatose"),
[ABILITY_QUEENLY_MAJESTY] = _("Queenly Majesty"),
[ABILITY_INNARDS_OUT] = _("Innards Out"),
[ABILITY_DANCER] = _("Dancer"),
[ABILITY_BATTERY] = _("Battery"),
[ABILITY_FLUFFY] = _("Fluffy"),
[ABILITY_DAZZLING] = _("Dazzling"),
[ABILITY_SOUL_HEART] = _("Soul-Heart"),
[ABILITY_TANGLING_HAIR] = _("Tangling Hair"),
[ABILITY_RECEIVER] = _("Receiver"),
[ABILITY_POWER_OF_ALCHEMY] = _("Power Of Alchemy"),
[ABILITY_BEAST_BOOST] = _("Beast Boost"),
[ABILITY_RKS_SYSTEM] = _("RKS System"),
[ABILITY_ELECTRIC_SURGE] = _("Electric Surge"),
[ABILITY_PSYCHIC_SURGE] = _("Psychic Surge"),
[ABILITY_MISTY_SURGE] = _("Misty Surge"),
[ABILITY_GRASSY_SURGE] = _("Grassy Surge"),
[ABILITY_FULL_METAL_BODY] = _("Full Metal Body"),
[ABILITY_SHADOW_SHIELD] = _("Shadow Shield"),
[ABILITY_PRISM_ARMOR] = _("Prism Armor"),
[ABILITY_NEUROFORCE] = _("Neuroforce"),
[ABILITY_INTREPID_SWORD] = _("Intrepid Sword"),
[ABILITY_DAUNTLESS_SHIELD] = _("Dauntless Shield"),
[ABILITY_LIBERO] = _("Libero"),
[ABILITY_BALL_FETCH] = _("Ball Fetch"),
[ABILITY_COTTON_DOWN] = _("Cotton Down"),
[ABILITY_PROPELLER_TAIL] = _("Propeller Tail"),
[ABILITY_MIRROR_ARMOR] = _("Mirror Armor"),
[ABILITY_GULP_MISSILE] = _("Gulp Missile"),
[ABILITY_STALWART] = _("Stalwart"),
[ABILITY_STEAM_ENGINE] = _("Steam Engine"),
[ABILITY_PUNK_ROCK] = _("Punk Rock"),
[ABILITY_SAND_SPIT] = _("Sand Spit"),
[ABILITY_ICE_SCALES] = _("Ice Scales"),
[ABILITY_RIPEN] = _("Ripen"),
[ABILITY_ICE_FACE] = _("Ice Face"),
[ABILITY_POWER_SPOT] = _("Power Spot"),
[ABILITY_MIMICRY] = _("Mimicry"),
[ABILITY_SCREEN_CLEANER] = _("Screen Cleaner"),
[ABILITY_STEELY_SPIRIT] = _("Steely Spirit"),
[ABILITY_PERISH_BODY] = _("Perish Body"),
[ABILITY_WANDERING_SPIRIT] = _("Wandering Spirit"),
[ABILITY_GORILLA_TACTICS] = _("Gorilla Tactics"),
[ABILITY_NEUTRALIZING_GAS] = _("Neutralizing Gas"),
[ABILITY_PASTEL_VEIL] = _("Pastel Veil"),
[ABILITY_HUNGER_SWITCH] = _("Hunger Switch"),
[ABILITY_QUICK_DRAW] = _("Quick Draw"),
[ABILITY_UNSEEN_FIST] = _("Unseen Fist"),
[ABILITY_CURIOUS_MEDICINE] = _("Curious Medicine"),
[ABILITY_TRANSISTOR] = _("Transistor"),
[ABILITY_DRAGONS_MAW] = _("Dragon's Maw"),
[ABILITY_CHILLING_NEIGH] = _("Chilling Neigh"),
[ABILITY_GRIM_NEIGH] = _("Grim Neigh"),
[ABILITY_AS_ONE_ICE_RIDER] = _("As One"),
[ABILITY_AS_ONE_SHADOW_RIDER] = _("As One"),
};
#else // 12 characters
const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] =
{
[ABILITY_NONE] = _("-------"),
@ -526,6 +799,7 @@ const u8 gAbilityNames[ABILITIES_COUNT][ABILITY_NAME_LENGTH + 1] =
[ABILITY_AS_ONE_ICE_RIDER] = _("As One"),
[ABILITY_AS_ONE_SHADOW_RIDER] = _("As One"),
};
#endif
const u8 *const gAbilityDescriptionPointers[ABILITIES_COUNT] =
{