From cdf7190d15aa9f90b60441715c2db280499ae324 Mon Sep 17 00:00:00 2001 From: psf <77138753+pkmnsnfrn@users.noreply.github.com> Date: Tue, 16 Jan 2024 10:05:41 -0800 Subject: [PATCH] Add pluralName to gItems to allow the proper spelling when multiple items are received at once (#4001) * Updated CopyItemNameHandlePlural to deal with plural names * Fixed whitespace in a few places * Fixed whitespace in a few places * Add remaining plural forms. * Created ITEM_NAME_PLURAL_LENGTH * Updated ITEM_NAME_PLURAL_LENGTH per feedback https://github.com/rh-hideout/pokeemerald-expansion/pull/4001\#discussion_r1453598165 * Reverted ITEM_NAME_PLURAL_LENGTH to +2 and added new comment * Removed GetBerryCountString from CopyItemNameHandlePlural Will deprecate the former in a future feature: https://github.com/rh-hideout/pokeemerald-expansion/issues/4010 --------- Co-authored-by: Zimmermann Gyula Co-authored-by: Bassoonian --- include/constants/global.h | 1 + include/item.h | 1 + src/data/items.h | 200 +++++++++++++++++++++++++++++++++++++ src/item.c | 16 ++- 4 files changed, 216 insertions(+), 2 deletions(-) diff --git a/include/constants/global.h b/include/constants/global.h index cb023efab35..6a2713c3d62 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -101,6 +101,7 @@ // string lengths #define ITEM_NAME_LENGTH 14 +#define ITEM_NAME_PLURAL_LENGTH ITEM_NAME_LENGTH + 2 // 2 is used for the instance where a word's suffix becomes y->ies #define POKEMON_NAME_LENGTH 10 #define POKEMON_NAME_BUFFER_SIZE max(20, POKEMON_NAME_LENGTH + 1) // Frequently used buffer size. Larger than necessary #define PLAYER_NAME_LENGTH 7 diff --git a/include/item.h b/include/item.h index 1388daca85a..c9c38543cd8 100644 --- a/include/item.h +++ b/include/item.h @@ -15,6 +15,7 @@ struct Item const u8 *description; const u8 *effect; u8 name[ITEM_NAME_LENGTH]; + u8 pluralName[ITEM_NAME_PLURAL_LENGTH]; u8 holdEffect; u8 holdEffectParam; u8 importance; diff --git a/src/data/items.h b/src/data/items.h index cc9372e72ec..db3e8cbe3e3 100644 --- a/src/data/items.h +++ b/src/data/items.h @@ -712,6 +712,7 @@ const struct Item gItems[] = [ITEM_MOOMOO_MILK] = { .name = _("Moomoo Milk"), + .pluralName = _("Moomoo Milk"), .price = (I_PRICE >= GEN_7) ? 600 : 500, .holdEffectParam = 100, .description = COMPOUND_STRING("A nutritious milk\n" @@ -728,6 +729,7 @@ const struct Item gItems[] = [ITEM_ENERGY_POWDER] = { .name = _("Energy Powder"), + .pluralName = _("Energy Powder"), .price = 500, #if I_HEALTH_RECOVERY >= GEN_7 .description = COMPOUND_STRING("A bitter powder\n" @@ -770,6 +772,7 @@ const struct Item gItems[] = [ITEM_HEAL_POWDER] = { .name = _("Heal Powder"), + .pluralName = _("Heal Powder"), .price = (I_PRICE >= GEN_7) ? 300 : 450, .description = COMPOUND_STRING("A bitter powder\n" "that heals all\n" @@ -946,6 +949,7 @@ const struct Item gItems[] = [ITEM_BERRY_JUICE] = { .name = _("Berry Juice"), + .pluralName = _("Berry Juice"), .price = 100, .holdEffect = HOLD_EFFECT_RESTORE_HP, .holdEffectParam = 20, @@ -963,6 +967,7 @@ const struct Item gItems[] = [ITEM_SACRED_ASH] = { .name = _("Sacred Ash"), + .pluralName = _("Sacred Ashes"), .price = (I_PRICE >= GEN_7) ? 50000 : 200, .description = COMPOUND_STRING("Fully revives and\n" "restores all\n" @@ -993,6 +998,7 @@ const struct Item gItems[] = [ITEM_MAX_HONEY] = { .name = _("Max Honey"), + .pluralName = _("Max Honey"), .price = 8000, .description = sMaxReviveDesc, .pocket = POCKET_ITEMS, @@ -1008,6 +1014,7 @@ const struct Item gItems[] = [ITEM_PEWTER_CRUNCHIES] = { .name = _("PewtrCrnches"), + .pluralName = _("PewtrCrnches"), .price = 250, .description = sFullHealDesc, .pocket = POCKET_ITEMS, @@ -1049,6 +1056,7 @@ const struct Item gItems[] = [ITEM_OLD_GATEAU] = { .name = _("Old Gateau"), + .pluralName = _("Old Gateaux"), .price = (I_PRICE >= GEN_7) ? 350 : 200, .description = sFullHealDesc, .pocket = POCKET_ITEMS, @@ -1185,6 +1193,7 @@ const struct Item gItems[] = [ITEM_CARBOS] = { .name = _("Carbos"), + .pluralName = _("Carbos"), .price = (I_PRICE >= GEN_7) ? 10000 : 9800, .description = COMPOUND_STRING("Raises the base\n" "Speed stat of one\n" @@ -1213,6 +1222,7 @@ const struct Item gItems[] = [ITEM_PP_MAX] = { .name = _("PP Max"), + .pluralName = _("PP Maxes"), .price = (I_PRICE >= GEN_7) ? 10000 : 9800, .description = COMPOUND_STRING("Raises the PP of a\n" "move to its maximum\n" @@ -1315,6 +1325,7 @@ const struct Item gItems[] = [ITEM_ABILITY_PATCH] = { .name = _("AbilityPatch"), + .pluralName = _("AbilityPatches"), .price = (I_PRICE >= GEN_9) ? 250000 : 20, .holdEffectParam = 0, .description = COMPOUND_STRING("Turns the ability\n" @@ -1626,6 +1637,7 @@ const struct Item gItems[] = [ITEM_RARE_CANDY] = { .name = _("Rare Candy"), + .pluralName = _("Rare Candies"), .price = (I_PRICE >= GEN_7) ? 10000 : 4800, .description = COMPOUND_STRING("Raises the level\n" "of a Pokémon by\n" @@ -1640,6 +1652,7 @@ const struct Item gItems[] = [ITEM_EXP_CANDY_XS] = { .name = _("Exp.Candy XS"), + .pluralName = _("Exp.Candies XS"), .price = 20, .holdEffectParam = EXP_100, .description = COMPOUND_STRING("Gives a very small\n" @@ -1655,6 +1668,7 @@ const struct Item gItems[] = [ITEM_EXP_CANDY_S] = { .name = _("Exp.Candy S"), + .pluralName = _("Exp.Candies S"), .price = 240, .holdEffectParam = EXP_800, .description = COMPOUND_STRING("Gives a small\n" @@ -1670,6 +1684,7 @@ const struct Item gItems[] = [ITEM_EXP_CANDY_M] = { .name = _("Exp.Candy M"), + .pluralName = _("Exp.Candies M"), .price = 1000, .holdEffectParam = EXP_3000, .description = COMPOUND_STRING("Gives a moderate\n" @@ -1685,6 +1700,7 @@ const struct Item gItems[] = [ITEM_EXP_CANDY_L] = { .name = _("Exp.Candy L"), + .pluralName = _("Exp.Candies L"), .price = 3000, .holdEffectParam = EXP_10000, .description = COMPOUND_STRING("Gives a large\n" @@ -1700,6 +1716,7 @@ const struct Item gItems[] = [ITEM_EXP_CANDY_XL] = { .name = _("Exp.Candy XL"), + .pluralName = _("Exp.Candies L"), .price = 10000, .holdEffectParam = EXP_30000, .description = COMPOUND_STRING("Gives a very large\n" @@ -1715,6 +1732,7 @@ const struct Item gItems[] = [ITEM_DYNAMAX_CANDY] = { .name = _("DynamaxCandy"), + .pluralName = _("DynamaxCandies"), .price = 0, .description = COMPOUND_STRING("Raises the Dynamax\n" "Level of a single\n" @@ -2024,6 +2042,7 @@ const struct Item gItems[] = [ITEM_X_ACCURACY] = { .name = _("X Accuracy"), + .pluralName = _("X Accuracies"), .price = (I_PRICE >= GEN_7) ? 1000 : 950, .holdEffectParam = X_ITEM_STAGES, #if B_X_ITEMS_BUFF >= GEN_7 @@ -2061,6 +2080,7 @@ const struct Item gItems[] = [ITEM_GUARD_SPEC] = { .name = _("Guard Spec."), + .pluralName = _("Guard Specs."), .price = (I_PRICE >= GEN_7) ? 1500 : 700, .description = COMPOUND_STRING("Prevents stat\n" "reduction when\n" @@ -2112,6 +2132,7 @@ const struct Item gItems[] = [ITEM_MAX_MUSHROOMS] = { .name = _("MaxMushrooms"), + .pluralName = _("MaxMushrooms"), .price = 8000, .description = COMPOUND_STRING("Raises every stat\n" "during one battle\n" @@ -2254,6 +2275,7 @@ const struct Item gItems[] = [ITEM_STARDUST] = { .name = _("Stardust"), + .pluralName = _("Stardust"), .price = (I_PRICE >= GEN_7) ? 3000 * TREASURE_FACTOR: 2000, .description = COMPOUND_STRING("Beautiful red sand.\n" "Can be sold at a\n" @@ -2293,6 +2315,7 @@ const struct Item gItems[] = [ITEM_SHOAL_SALT] = { .name = _("Shoal Salt"), + .pluralName = _("Shoal Salt"), .price = 20, .description = COMPOUND_STRING("Salt obtained from\n" "deep inside the\n" @@ -2376,6 +2399,7 @@ const struct Item gItems[] = [ITEM_HONEY] = { .name = _("Honey"), + .pluralName = _("Honey"), .price = (I_PRICE < GEN_5) ? 100 : ((I_PRICE < GEN_8) ? 300 : 900), .description = COMPOUND_STRING("Sweet honey that\n" "attracts wild\n" @@ -2716,6 +2740,7 @@ const struct Item gItems[] = [ITEM_FOSSILIZED_FISH] = { .name = _("FosslzedFish"), + .pluralName = _("FosslzedFishes"), .price = 5000, .description = sFossilizedFishDesc, .pocket = POCKET_ITEMS, @@ -2753,6 +2778,7 @@ const struct Item gItems[] = [ITEM_GROWTH_MULCH] = { .name = _("Growth Mulch"), + .pluralName = _("Growth Mulch"), .price = 200, #if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" @@ -2771,6 +2797,7 @@ const struct Item gItems[] = [ITEM_DAMP_MULCH] = { .name = _("Damp Mulch"), + .pluralName = _("Damp Mulch"), .price = 200, #if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" @@ -2789,6 +2816,7 @@ const struct Item gItems[] = [ITEM_STABLE_MULCH] = { .name = _("Stable Mulch"), + .pluralName = _("Stable Mulch"), .price = 200, #if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" @@ -2807,6 +2835,7 @@ const struct Item gItems[] = [ITEM_GOOEY_MULCH] = { .name = _("Gooey Mulch"), + .pluralName = _("Gooey Mulch"), .price = 200, #if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" @@ -2825,6 +2854,7 @@ const struct Item gItems[] = [ITEM_RICH_MULCH] = { .name = _("Rich Mulch"), + .pluralName = _("Rich Mulch"), .price = 200, #if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" @@ -2843,6 +2873,7 @@ const struct Item gItems[] = [ITEM_SURPRISE_MULCH] = { .name = _("SurprseMulch"), + .pluralName = _("SurprseMulch"), .price = 200, #if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" @@ -2861,6 +2892,7 @@ const struct Item gItems[] = [ITEM_BOOST_MULCH] = { .name = _("Boost Mulch"), + .pluralName = _("Boost Mulch"), .price = 200, #if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer that\n" @@ -2879,6 +2911,7 @@ const struct Item gItems[] = [ITEM_AMAZE_MULCH] = { .name = _("Amaze Mulch"), + .pluralName = _("Amaze Mulch"), .price = 200, #if OW_BERRY_MULCH_USAGE == TRUE .description = COMPOUND_STRING("A fertilizer Rich\n" @@ -3009,6 +3042,7 @@ const struct Item gItems[] = [ITEM_ARMORITE_ORE] = { .name = _("Armorite Ore"), + .pluralName = _("Armorite Ore"), .price = 20, .description = COMPOUND_STRING("A rare ore. Can be\n" "found in the Isle\n" @@ -3022,6 +3056,7 @@ const struct Item gItems[] = [ITEM_DYNITE_ORE] = { .name = _("Dynite Ore"), + .pluralName = _("Dynite Ore"), .price = 20, .description = COMPOUND_STRING("A mysterious ore.\n" "It can be found in\n" @@ -3037,6 +3072,7 @@ const struct Item gItems[] = [ITEM_ORANGE_MAIL] = { .name = _("Orange Mail"), + .pluralName = _("Orange Mail"), .price = 50, .description = COMPOUND_STRING("A Zigzagoon-print\n" "Mail to be held by\n" @@ -3050,6 +3086,7 @@ const struct Item gItems[] = [ITEM_HARBOR_MAIL] = { .name = _("Harbor Mail"), + .pluralName = _("Harbor Mail"), .price = 50, .description = COMPOUND_STRING("A Wingull-print\n" "Mail to be held by\n" @@ -3063,6 +3100,7 @@ const struct Item gItems[] = [ITEM_GLITTER_MAIL] = { .name = _("Glitter Mail"), + .pluralName = _("Glitter Mail"), .price = 50, .description = COMPOUND_STRING("A Pikachu-print\n" "Mail to be held by\n" @@ -3076,6 +3114,7 @@ const struct Item gItems[] = [ITEM_MECH_MAIL] = { .name = _("Mech Mail"), + .pluralName = _("Mech Mail"), .price = 50, .description = COMPOUND_STRING("A Magnemite-print\n" "Mail to be held by\n" @@ -3089,6 +3128,7 @@ const struct Item gItems[] = [ITEM_WOOD_MAIL] = { .name = _("Wood Mail"), + .pluralName = _("Wood Mail"), .price = 50, .description = COMPOUND_STRING("A Slakoth-print\n" "Mail to be held by\n" @@ -3102,6 +3142,7 @@ const struct Item gItems[] = [ITEM_WAVE_MAIL] = { .name = _("Wave Mail"), + .pluralName = _("Wave Mail"), .price = 50, .description = COMPOUND_STRING("A Wailmer-print\n" "Mail to be held by\n" @@ -3115,6 +3156,7 @@ const struct Item gItems[] = [ITEM_BEAD_MAIL] = { .name = _("Bead Mail"), + .pluralName = _("Bead Mail"), .price = 50, .description = sBeadMailDesc, .pocket = POCKET_ITEMS, @@ -3126,6 +3168,7 @@ const struct Item gItems[] = [ITEM_SHADOW_MAIL] = { .name = _("Shadow Mail"), + .pluralName = _("Shadow Mail"), .price = 50, .description = COMPOUND_STRING("A Duskull-print\n" "Mail to be held by\n" @@ -3139,6 +3182,7 @@ const struct Item gItems[] = [ITEM_TROPIC_MAIL] = { .name = _("Tropic Mail"), + .pluralName = _("Tropic Mail"), .price = 50, .description = COMPOUND_STRING("A Bellossom-print\n" "Mail to be held by\n" @@ -3152,6 +3196,7 @@ const struct Item gItems[] = [ITEM_DREAM_MAIL] = { .name = _("Dream Mail"), + .pluralName = _("Dream Mail"), .price = 50, .description = sBeadMailDesc, .pocket = POCKET_ITEMS, @@ -3163,6 +3208,7 @@ const struct Item gItems[] = [ITEM_FAB_MAIL] = { .name = _("Fab Mail"), + .pluralName = _("Fab Mail"), .price = 50, .description = COMPOUND_STRING("A gorgeous-print\n" "Mail to be held\n" @@ -3176,6 +3222,7 @@ const struct Item gItems[] = [ITEM_RETRO_MAIL] = { .name = _("Retro Mail"), + .pluralName = _("Retro Mail"), .price = 50, .description = COMPOUND_STRING("Mail featuring the\n" "drawings of three\n" @@ -3381,6 +3428,7 @@ const struct Item gItems[] = [ITEM_GALARICA_WREATH] = { .name = _("GalrcaWreath"), + .pluralName = _("GalrcaWreathes"), .price = (I_PRICE >= GEN_9) ? 3000 : 6000, .description = COMPOUND_STRING("A wreath made in\n" "Galar. Makes some\n" @@ -3481,6 +3529,7 @@ const struct Item gItems[] = [ITEM_REAPER_CLOTH] = { .name = _("Reaper Cloth"), + .pluralName = _("Reaper Clothes"), .price = (I_PRICE >= GEN_7) ? 2000 * TREASURE_FACTOR : 2100, .description = COMPOUND_STRING("Loved by a certain\n" "Pokémon. Imbued with\n" @@ -3509,6 +3558,7 @@ const struct Item gItems[] = [ITEM_WHIPPED_DREAM] = { .name = _("Whipped Dream"), + .pluralName = _("Whipped Dream"), .price = (I_PRICE >= GEN_7) ? 2000 * TREASURE_FACTOR : 2100, .description = COMPOUND_STRING("A soft and sweet\n" "treat loved by\n" @@ -4044,6 +4094,7 @@ const struct Item gItems[] = [ITEM_FIRE_MEMORY] = { .name = _("Fire Memory"), + .pluralName = _("Fire Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4060,6 +4111,7 @@ const struct Item gItems[] = [ITEM_WATER_MEMORY] = { .name = _("Water Memory"), + .pluralName = _("Water Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4076,6 +4128,7 @@ const struct Item gItems[] = [ITEM_ELECTRIC_MEMORY] = { .name = _("ElectrcMemory"), + .pluralName = _("ElectrcMemories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4092,6 +4145,7 @@ const struct Item gItems[] = [ITEM_GRASS_MEMORY] = { .name = _("Grass Memory"), + .pluralName = _("Grass Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4108,6 +4162,7 @@ const struct Item gItems[] = [ITEM_ICE_MEMORY] = { .name = _("Ice Memory"), + .pluralName = _("Ice Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4124,6 +4179,7 @@ const struct Item gItems[] = [ITEM_FIGHTING_MEMORY] = { .name = _("FightngMemory"), + .pluralName = _("FightngMemories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4140,6 +4196,7 @@ const struct Item gItems[] = [ITEM_POISON_MEMORY] = { .name = _("Poison Memory"), + .pluralName = _("Poison Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4156,6 +4213,7 @@ const struct Item gItems[] = [ITEM_GROUND_MEMORY] = { .name = _("Ground Memory"), + .pluralName = _("Ground Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4172,6 +4230,7 @@ const struct Item gItems[] = [ITEM_FLYING_MEMORY] = { .name = _("Flying Memory"), + .pluralName = _("Flying Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4188,6 +4247,7 @@ const struct Item gItems[] = [ITEM_PSYCHIC_MEMORY] = { .name = _("PsychicMemory"), + .pluralName = _("PsychicMemories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4204,6 +4264,7 @@ const struct Item gItems[] = [ITEM_BUG_MEMORY] = { .name = _("Bug Memory"), + .pluralName = _("Bug Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4220,6 +4281,7 @@ const struct Item gItems[] = [ITEM_ROCK_MEMORY] = { .name = _("Rock Memory"), + .pluralName = _("Rock Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4236,6 +4298,7 @@ const struct Item gItems[] = [ITEM_GHOST_MEMORY] = { .name = _("Ghost Memory"), + .pluralName = _("Ghost Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4252,6 +4315,7 @@ const struct Item gItems[] = [ITEM_DRAGON_MEMORY] = { .name = _("Dragon Memory"), + .pluralName = _("Dragon Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4268,6 +4332,7 @@ const struct Item gItems[] = [ITEM_DARK_MEMORY] = { .name = _("Dark Memory"), + .pluralName = _("Dark Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4284,6 +4349,7 @@ const struct Item gItems[] = [ITEM_STEEL_MEMORY] = { .name = _("Steel Memory"), + .pluralName = _("Steel Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4300,6 +4366,7 @@ const struct Item gItems[] = [ITEM_FAIRY_MEMORY] = { .name = _("Fairy Memory"), + .pluralName = _("Fairy Memories"), .price = 1000, .holdEffect = HOLD_EFFECT_MEMORY, .holdEffectParam = 0, @@ -4384,6 +4451,7 @@ const struct Item gItems[] = [ITEM_CHARIZARDITE_X] = { .name = _("CharizarditeX"), + .pluralName = _("Charizardites X"), .price = 0, .holdEffect = HOLD_EFFECT_MEGA_STONE, .description = sCharizarditeDesc, @@ -4396,6 +4464,7 @@ const struct Item gItems[] = [ITEM_CHARIZARDITE_Y] = { .name = _("CharizarditeY"), + .pluralName = _("Charizardites Y"), .price = 0, .holdEffect = HOLD_EFFECT_MEGA_STONE, .description = sCharizarditeDesc, @@ -4548,6 +4617,7 @@ const struct Item gItems[] = [ITEM_MEWTWONITE_X] = { .name = _("Mewtwonite X"), + .pluralName = _("Mewtwonites X"), .price = 0, .holdEffect = HOLD_EFFECT_MEGA_STONE, .description = sMewtwoniteDesc, @@ -4560,6 +4630,7 @@ const struct Item gItems[] = [ITEM_MEWTWONITE_Y] = { .name = _("Mewtwonite Y"), + .pluralName = _("Mewtwonites Y"), .price = 0, .holdEffect = HOLD_EFFECT_MEGA_STONE, .description = sMewtwoniteDesc, @@ -5828,6 +5899,7 @@ const struct Item gItems[] = [ITEM_LUCKY_PUNCH] = { .name = _("Lucky Punch"), + .pluralName = _("Lucky Punches"), .price = (I_PRICE >= GEN_7) ? 1000 : 10, .holdEffect = HOLD_EFFECT_LUCKY_PUNCH, .description = COMPOUND_STRING("A hold item that\n" @@ -5842,6 +5914,7 @@ const struct Item gItems[] = [ITEM_METAL_POWDER] = { .name = _("Metal Powder"), + .pluralName = _("Metal Powder"), .price = (I_PRICE >= GEN_7) ? 1000 : 10, .holdEffect = HOLD_EFFECT_METAL_POWDER, .description = COMPOUND_STRING("A hold item that\n" @@ -5856,6 +5929,7 @@ const struct Item gItems[] = [ITEM_QUICK_POWDER] = { .name = _("Quick Powder"), + .pluralName = _("Quick Powder"), .price = (I_PRICE >= GEN_7) ? 1000 : 10, .holdEffect = HOLD_EFFECT_QUICK_POWDER, .description = COMPOUND_STRING("An item to be held\n" @@ -5885,6 +5959,7 @@ const struct Item gItems[] = [ITEM_DEEP_SEA_TOOTH] = { .name = _("DeepSeaTooth"), + .pluralName = _("DeepSeaTeeth"), .price = (I_PRICE >= GEN_7) ? 2000 : 200, .holdEffect = HOLD_EFFECT_DEEP_SEA_TOOTH, .description = COMPOUND_STRING("A hold item that\n" @@ -6087,6 +6162,7 @@ const struct Item gItems[] = [ITEM_RED_SCARF] = { .name = _("Red Scarf"), + .pluralName = _("Red Scarves"), .price = 100, .description = COMPOUND_STRING("A hold item that\n" "raises Cool in\n" @@ -6100,6 +6176,7 @@ const struct Item gItems[] = [ITEM_BLUE_SCARF] = { .name = _("Blue Scarf"), + .pluralName = _("Blue Scarves"), .price = 100, .description = COMPOUND_STRING("A hold item that\n" "raises Beauty in\n" @@ -6113,6 +6190,7 @@ const struct Item gItems[] = [ITEM_PINK_SCARF] = { .name = _("Pink Scarf"), + .pluralName = _("Pink Scarves"), .price = 100, .description = COMPOUND_STRING("A hold item that\n" "raises Cute in\n" @@ -6126,6 +6204,7 @@ const struct Item gItems[] = [ITEM_GREEN_SCARF] = { .name = _("Green Scarf"), + .pluralName = _("Green Scarves"), .price = 100, .description = COMPOUND_STRING("A hold item that\n" "raises Smart in\n" @@ -6139,6 +6218,7 @@ const struct Item gItems[] = [ITEM_YELLOW_SCARF] = { .name = _("Yellow Scarf"), + .pluralName = _("Yellow Scarves"), .price = 100, .description = COMPOUND_STRING("A hold item that\n" "raises Tough in\n" @@ -6216,6 +6296,7 @@ const struct Item gItems[] = [ITEM_POWER_LENS] = { .name = _("Power Lens"), + .pluralName = _("Power Lenses"), .price = (I_PRICE >= GEN_9) ? 10000 : 3000, .holdEffect = HOLD_EFFECT_POWER_ITEM, .holdEffectParam = POWER_ITEM_BOOST, @@ -6266,6 +6347,7 @@ const struct Item gItems[] = [ITEM_SILK_SCARF] = { .name = _("Silk Scarf"), + .pluralName = _("Silk Scarves"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_NORMAL_POWER, .holdEffectParam = TYPE_BOOST_PARAM, @@ -6296,6 +6378,7 @@ const struct Item gItems[] = [ITEM_MYSTIC_WATER] = { .name = _("Mystic Water"), + .pluralName = _("Mystic Water"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_WATER_POWER, .holdEffectParam = TYPE_BOOST_PARAM, @@ -6339,6 +6422,7 @@ const struct Item gItems[] = [ITEM_NEVER_MELT_ICE] = { .name = _("Never-MeltIce"), + .pluralName = _("Never-MeltIce"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_ICE_POWER, .holdEffectParam = TYPE_BOOST_PARAM, @@ -6384,6 +6468,7 @@ const struct Item gItems[] = [ITEM_SOFT_SAND] = { .name = _("Soft Sand"), + .pluralName = _("Soft Sand"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_GROUND_POWER, .holdEffectParam = TYPE_BOOST_PARAM, @@ -6427,6 +6512,7 @@ const struct Item gItems[] = [ITEM_SILVER_POWDER] = { .name = _("Silver Powder"), + .pluralName = _("Silver Powder"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_BUG_POWER, .holdEffectParam = TYPE_BOOST_PARAM, @@ -6485,6 +6571,7 @@ const struct Item gItems[] = [ITEM_BLACK_GLASSES] = { .name = _("Black Glasses"), + .pluralName = _("Black Glasses"), .price = (I_PRICE >= GEN_9) ? 3000 : ((I_PRICE >= GEN_7) ? 1000 : 100), .holdEffect = HOLD_EFFECT_DARK_POWER, .holdEffectParam = TYPE_BOOST_PARAM, @@ -6532,6 +6619,7 @@ const struct Item gItems[] = [ITEM_CHOICE_SPECS] = { .name = _("Choice Specs"), + .pluralName = _("Choice Specs"), .price = (I_PRICE >= GEN_9) ? 100000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_CHOICE_SPECS, .description = COMPOUND_STRING("Boosts Sp. Atk, but\n" @@ -6546,6 +6634,7 @@ const struct Item gItems[] = [ITEM_CHOICE_SCARF] = { .name = _("Choice Scarf"), + .pluralName = _("Choice Scarves"), .price = (I_PRICE >= GEN_9) ? 100000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_CHOICE_SCARF, .description = COMPOUND_STRING("Boosts Speed, but\n" @@ -6727,6 +6816,7 @@ const struct Item gItems[] = [ITEM_CELL_BATTERY] = { .name = _("Cell Battery"), + .pluralName = _("Cell Batteries"), .price = (I_PRICE >= GEN_9) ? 5000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_CELL_BATTERY, .holdEffectParam = 0, @@ -6742,6 +6832,7 @@ const struct Item gItems[] = [ITEM_LUMINOUS_MOSS] = { .name = _("Luminous Moss"), + .pluralName = _("Luminous Moss"), .price = (I_PRICE >= GEN_9) ? 5000 : ((I_PRICE >= GEN_7) ? 4000 : 1000), .holdEffect = HOLD_EFFECT_LUMINOUS_MOSS, .holdEffectParam = 0, @@ -6774,6 +6865,7 @@ const struct Item gItems[] = [ITEM_BRIGHT_POWDER] = { .name = _("Bright Powder"), + .pluralName = _("Bright Powder"), .price = (I_PRICE >= GEN_9) ? 30000 : ((I_PRICE >= GEN_7) ? 4000 : 10), .holdEffect = HOLD_EFFECT_EVASION_UP, .holdEffectParam = 10, @@ -6954,6 +7046,7 @@ const struct Item gItems[] = [ITEM_SCOPE_LENS] = { .name = _("Scope Lens"), + .pluralName = _("Scope Lenses"), .price = (I_PRICE >= GEN_9) ? 15000 : ((I_PRICE >= GEN_7) ? 4000 : 100), .holdEffect = HOLD_EFFECT_SCOPE_LENS, .description = COMPOUND_STRING("A hold item that\n" @@ -6968,6 +7061,7 @@ const struct Item gItems[] = [ITEM_LEFTOVERS] = { .name = _("Leftovers"), + .pluralName = _("Leftovers"), .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_LEFTOVERS, .holdEffectParam = 10, @@ -6998,6 +7092,7 @@ const struct Item gItems[] = [ITEM_WIDE_LENS] = { .name = _("Wide Lens"), + .pluralName = _("Wide Lenses"), .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_WIDE_LENS, .holdEffectParam = 10, @@ -7028,6 +7123,7 @@ const struct Item gItems[] = [ITEM_WISE_GLASSES] = { .name = _("Wise Glasses"), + .pluralName = _("Wise Glasses"), .price = (I_PRICE >= GEN_9) ? 8000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_WISE_GLASSES, .holdEffectParam = 10, @@ -7058,6 +7154,7 @@ const struct Item gItems[] = [ITEM_LIGHT_CLAY] = { .name = _("Light Clay"), + .pluralName = _("Light Clay"), .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_LIGHT_CLAY, .description = COMPOUND_STRING("Extends the length\n" @@ -7100,6 +7197,7 @@ const struct Item gItems[] = [ITEM_FOCUS_SASH] = { .name = _("Focus Sash"), + .pluralName = _("Focus Sashes"), .price = (I_PRICE >= GEN_9) ? 50000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_FOCUS_SASH, .description = COMPOUND_STRING("If the holder has\n" @@ -7114,6 +7212,7 @@ const struct Item gItems[] = [ITEM_ZOOM_LENS] = { .name = _("Zoom Lens"), + .pluralName = _("Zoom Lenses"), .price = (I_PRICE >= GEN_9) ? 10000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_ZOOM_LENS, .holdEffectParam = 20, @@ -7184,6 +7283,7 @@ const struct Item gItems[] = [ITEM_BLACK_SLUDGE] = { .name = _("Black Sludge"), + .pluralName = _("Black Sludge"), .price = (I_PRICE >= GEN_9) ? 10000 : ((I_PRICE >= GEN_7) ? 4000 : 200), .holdEffect = HOLD_EFFECT_BLACK_SLUDGE, .description = COMPOUND_STRING("Gradually restores\n" @@ -7402,6 +7502,7 @@ const struct Item gItems[] = [ITEM_WEAKNESS_POLICY] = { .name = _("WeaknssPolicy"), + .pluralName = _("WeaknssPolicies"), .price = (I_PRICE >= GEN_9) ? 50000 : 1000, .holdEffect = HOLD_EFFECT_WEAKNESS_POLICY, .holdEffectParam = 0, @@ -7432,6 +7533,7 @@ const struct Item gItems[] = [ITEM_SAFETY_GOGGLES] = { .name = _("SafetyGoggles"), + .pluralName = _("SafetyGoggles"), .price = (I_PRICE >= GEN_9) ? 20000 : ((I_PRICE >= GEN_7) ? 4000 : 1000), .holdEffect = HOLD_EFFECT_SAFETY_GOGGLES, .description = COMPOUND_STRING("Protect from\n" @@ -7474,6 +7576,7 @@ const struct Item gItems[] = [ITEM_PROTECTIVE_PADS] = { .name = _("ProtectvePads"), + .pluralName = _("ProtectvePads"), .price = (I_PRICE >= GEN_9) ? 15000 : 4000, .holdEffect = HOLD_EFFECT_PROTECTIVE_PADS, .description = COMPOUND_STRING("Guard the holder\n" @@ -7516,6 +7619,7 @@ const struct Item gItems[] = [ITEM_HEAVY_DUTY_BOOTS] = { .name = _("Heavy-DtyBts"), + .pluralName = _("Heavy-DtyBts"), .price = (I_PRICE >= GEN_9) ? 20000 : 4000, .holdEffect = HOLD_EFFECT_HEAVY_DUTY_BOOTS, .description = COMPOUND_STRING("Boots that prevent\n" @@ -7530,6 +7634,7 @@ const struct Item gItems[] = [ITEM_BLUNDER_POLICY] = { .name = _("BlundrPolicy"), + .pluralName = _("BlundrPolicies"), .price = (I_PRICE >= GEN_9) ? 30000 : 4000, .holdEffect = HOLD_EFFECT_BLUNDER_POLICY, .description = COMPOUND_STRING("Raises Speed if\n" @@ -7574,6 +7679,7 @@ const struct Item gItems[] = [ITEM_CHERI_BERRY] = { .name = _("Cheri Berry"), + .pluralName = _("Cheri Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_PAR, .description = COMPOUND_STRING("A hold item that\n" @@ -7590,6 +7696,7 @@ const struct Item gItems[] = [ITEM_CHESTO_BERRY] = { .name = _("Chesto Berry"), + .pluralName = _("Chesto Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_SLP, .description = COMPOUND_STRING("A hold item that\n" @@ -7606,6 +7713,7 @@ const struct Item gItems[] = [ITEM_PECHA_BERRY] = { .name = _("Pecha Berry"), + .pluralName = _("Pecha Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_PSN, .description = COMPOUND_STRING("A hold item that\n" @@ -7622,6 +7730,7 @@ const struct Item gItems[] = [ITEM_RAWST_BERRY] = { .name = _("Rawst Berry"), + .pluralName = _("Rawst Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_BRN, .description = COMPOUND_STRING("A hold item that\n" @@ -7638,6 +7747,7 @@ const struct Item gItems[] = [ITEM_ASPEAR_BERRY] = { .name = _("Aspear Berry"), + .pluralName = _("Aspear Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_FRZ, .description = COMPOUND_STRING("A hold item that\n" @@ -7654,6 +7764,7 @@ const struct Item gItems[] = [ITEM_LEPPA_BERRY] = { .name = _("Leppa Berry"), + .pluralName = _("Leppa Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESTORE_PP, .holdEffectParam = 10, @@ -7671,6 +7782,7 @@ const struct Item gItems[] = [ITEM_ORAN_BERRY] = { .name = _("Oran Berry"), + .pluralName = _("Oran Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESTORE_HP, .holdEffectParam = 10, @@ -7688,6 +7800,7 @@ const struct Item gItems[] = [ITEM_PERSIM_BERRY] = { .name = _("Persim Berry"), + .pluralName = _("Persim Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_CONFUSION, .description = COMPOUND_STRING("A hold item that\n" @@ -7704,6 +7817,7 @@ const struct Item gItems[] = [ITEM_LUM_BERRY] = { .name = _("Lum Berry"), + .pluralName = _("Lum Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CURE_STATUS, .description = COMPOUND_STRING("A hold item that\n" @@ -7720,6 +7834,7 @@ const struct Item gItems[] = [ITEM_SITRUS_BERRY] = { .name = _("Sitrus Berry"), + .pluralName = _("Sitrus Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, #if I_SITRUS_BERRY_HEAL >= GEN_4 .holdEffect = HOLD_EFFECT_RESTORE_PCT_HP, @@ -7745,6 +7860,7 @@ const struct Item gItems[] = [ITEM_FIGY_BERRY] = { .name = _("Figy Berry"), + .pluralName = _("Figy Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CONFUSE_SPICY, .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, @@ -7758,6 +7874,7 @@ const struct Item gItems[] = [ITEM_WIKI_BERRY] = { .name = _("Wiki Berry"), + .pluralName = _("Wiki Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CONFUSE_DRY, .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, @@ -7771,6 +7888,7 @@ const struct Item gItems[] = [ITEM_MAGO_BERRY] = { .name = _("Mago Berry"), + .pluralName = _("Mago Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CONFUSE_SWEET, .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, @@ -7784,6 +7902,7 @@ const struct Item gItems[] = [ITEM_AGUAV_BERRY] = { .name = _("Aguav Berry"), + .pluralName = _("Aguav Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CONFUSE_BITTER, .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, @@ -7797,6 +7916,7 @@ const struct Item gItems[] = [ITEM_IAPAPA_BERRY] = { .name = _("Iapapa Berry"), + .pluralName = _("Iapapa Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CONFUSE_SOUR, .holdEffectParam = CONFUSE_BERRY_HEAL_FRACTION, @@ -7810,6 +7930,7 @@ const struct Item gItems[] = [ITEM_RAZZ_BERRY] = { .name = _("Razz Berry"), + .pluralName = _("Razz Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -7823,6 +7944,7 @@ const struct Item gItems[] = [ITEM_BLUK_BERRY] = { .name = _("Bluk Berry"), + .pluralName = _("Bluk Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -7836,6 +7958,7 @@ const struct Item gItems[] = [ITEM_NANAB_BERRY] = { .name = _("Nanab Berry"), + .pluralName = _("Nanab Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -7849,6 +7972,7 @@ const struct Item gItems[] = [ITEM_WEPEAR_BERRY] = { .name = _("Wepear Berry"), + .pluralName = _("Wepear Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -7862,6 +7986,7 @@ const struct Item gItems[] = [ITEM_PINAP_BERRY] = { .name = _("Pinap Berry"), + .pluralName = _("Pinap Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -7875,6 +8000,7 @@ const struct Item gItems[] = [ITEM_POMEG_BERRY] = { .name = _("Pomeg Berry"), + .pluralName = _("Pomeg Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("Makes a Pokémon\n" "friendly but lowers\n" @@ -7889,6 +8015,7 @@ const struct Item gItems[] = [ITEM_KELPSY_BERRY] = { .name = _("Kelpsy Berry"), + .pluralName = _("Kelpsy Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("Makes a Pokémon\n" "friendly but lowers\n" @@ -7903,6 +8030,7 @@ const struct Item gItems[] = [ITEM_QUALOT_BERRY] = { .name = _("Qualot Berry"), + .pluralName = _("Qualot Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("Makes a Pokémon\n" "friendly but lowers\n" @@ -7917,6 +8045,7 @@ const struct Item gItems[] = [ITEM_HONDEW_BERRY] = { .name = _("Hondew Berry"), + .pluralName = _("Hondew Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("Makes a Pokémon\n" "friendly but lowers\n" @@ -7931,6 +8060,7 @@ const struct Item gItems[] = [ITEM_GREPA_BERRY] = { .name = _("Grepa Berry"), + .pluralName = _("Grepa Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("Makes a Pokémon\n" "friendly but lowers\n" @@ -7945,6 +8075,7 @@ const struct Item gItems[] = [ITEM_TAMATO_BERRY] = { .name = _("Tamato Berry"), + .pluralName = _("Tamato Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("Makes a Pokémon\n" "friendly but lowers\n" @@ -7959,6 +8090,7 @@ const struct Item gItems[] = [ITEM_CORNN_BERRY] = { .name = _("Cornn Berry"), + .pluralName = _("Cornn Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -7972,6 +8104,7 @@ const struct Item gItems[] = [ITEM_MAGOST_BERRY] = { .name = _("Magost Berry"), + .pluralName = _("Magost Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -7985,6 +8118,7 @@ const struct Item gItems[] = [ITEM_RABUTA_BERRY] = { .name = _("Rabuta Berry"), + .pluralName = _("Rabuta Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -7998,6 +8132,7 @@ const struct Item gItems[] = [ITEM_NOMEL_BERRY] = { .name = _("Nomel Berry"), + .pluralName = _("Nomel Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -8011,6 +8146,7 @@ const struct Item gItems[] = [ITEM_SPELON_BERRY] = { .name = _("Spelon Berry"), + .pluralName = _("Spelon Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -8024,6 +8160,7 @@ const struct Item gItems[] = [ITEM_PAMTRE_BERRY] = { .name = _("Pamtre Berry"), + .pluralName = _("Pamtre Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -8037,6 +8174,7 @@ const struct Item gItems[] = [ITEM_WATMEL_BERRY] = { .name = _("Watmel Berry"), + .pluralName = _("Watmel Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -8050,6 +8188,7 @@ const struct Item gItems[] = [ITEM_DURIN_BERRY] = { .name = _("Durin Berry"), + .pluralName = _("Durin Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -8063,6 +8202,7 @@ const struct Item gItems[] = [ITEM_BELUE_BERRY] = { .name = _("Belue Berry"), + .pluralName = _("Belue Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -8076,6 +8216,7 @@ const struct Item gItems[] = [ITEM_CHILAN_BERRY] = { .name = _("Chilan Berry"), + .pluralName = _("Chilan Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_NORMAL, @@ -8091,6 +8232,7 @@ const struct Item gItems[] = [ITEM_OCCA_BERRY] = { .name = _("Occa Berry"), + .pluralName = _("Occa Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_FIRE, @@ -8106,6 +8248,7 @@ const struct Item gItems[] = [ITEM_PASSHO_BERRY] = { .name = _("Passho Berry"), + .pluralName = _("Passho Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_WATER, @@ -8121,6 +8264,7 @@ const struct Item gItems[] = [ITEM_WACAN_BERRY] = { .name = _("Wacan Berry"), + .pluralName = _("Wacan Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_ELECTRIC, @@ -8136,6 +8280,7 @@ const struct Item gItems[] = [ITEM_RINDO_BERRY] = { .name = _("Rindo Berry"), + .pluralName = _("Rindo Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_GRASS, @@ -8151,6 +8296,7 @@ const struct Item gItems[] = [ITEM_YACHE_BERRY] = { .name = _("Yache Berry"), + .pluralName = _("Yache Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_ICE, @@ -8166,6 +8312,7 @@ const struct Item gItems[] = [ITEM_CHOPLE_BERRY] = { .name = _("Chople Berry"), + .pluralName = _("Chople Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_FIGHTING, @@ -8181,6 +8328,7 @@ const struct Item gItems[] = [ITEM_KEBIA_BERRY] = { .name = _("Kebia Berry"), + .pluralName = _("Kebia Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_POISON, @@ -8196,6 +8344,7 @@ const struct Item gItems[] = [ITEM_SHUCA_BERRY] = { .name = _("Shuca Berry"), + .pluralName = _("Shuca Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_GROUND, @@ -8211,6 +8360,7 @@ const struct Item gItems[] = [ITEM_COBA_BERRY] = { .name = _("Coba Berry"), + .pluralName = _("Coba Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_FLYING, @@ -8226,6 +8376,7 @@ const struct Item gItems[] = [ITEM_PAYAPA_BERRY] = { .name = _("Payapa Berry"), + .pluralName = _("Payapa Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_PSYCHIC, @@ -8241,6 +8392,7 @@ const struct Item gItems[] = [ITEM_TANGA_BERRY] = { .name = _("Tanga Berry"), + .pluralName = _("Tanga Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_BUG, @@ -8256,6 +8408,7 @@ const struct Item gItems[] = [ITEM_CHARTI_BERRY] = { .name = _("Charti Berry"), + .pluralName = _("Charti Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_ROCK, @@ -8271,6 +8424,7 @@ const struct Item gItems[] = [ITEM_KASIB_BERRY] = { .name = _("Kasib Berry"), + .pluralName = _("Kasib Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_GHOST, @@ -8286,6 +8440,7 @@ const struct Item gItems[] = [ITEM_HABAN_BERRY] = { .name = _("Haban Berry"), + .pluralName = _("Haban Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_DRAGON, @@ -8301,6 +8456,7 @@ const struct Item gItems[] = [ITEM_COLBUR_BERRY] = { .name = _("Colbur Berry"), + .pluralName = _("Colbur Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_DARK, @@ -8316,6 +8472,7 @@ const struct Item gItems[] = [ITEM_BABIRI_BERRY] = { .name = _("Babiri Berry"), + .pluralName = _("Babiri Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_STEEL, @@ -8331,6 +8488,7 @@ const struct Item gItems[] = [ITEM_ROSELI_BERRY] = { .name = _("Roseli Berry"), + .pluralName = _("Roseli Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RESIST_BERRY, .holdEffectParam = TYPE_FAIRY, @@ -8346,6 +8504,7 @@ const struct Item gItems[] = [ITEM_LIECHI_BERRY] = { .name = _("Liechi Berry"), + .pluralName = _("Liechi Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_ATTACK_UP, .holdEffectParam = 4, @@ -8361,6 +8520,7 @@ const struct Item gItems[] = [ITEM_GANLON_BERRY] = { .name = _("Ganlon Berry"), + .pluralName = _("Ganlon Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_DEFENSE_UP, .holdEffectParam = 4, @@ -8376,6 +8536,7 @@ const struct Item gItems[] = [ITEM_SALAC_BERRY] = { .name = _("Salac Berry"), + .pluralName = _("Salac Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_SPEED_UP, .holdEffectParam = 4, @@ -8391,6 +8552,7 @@ const struct Item gItems[] = [ITEM_PETAYA_BERRY] = { .name = _("Petaya Berry"), + .pluralName = _("Petaya Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_SP_ATTACK_UP, .holdEffectParam = 4, @@ -8406,6 +8568,7 @@ const struct Item gItems[] = [ITEM_APICOT_BERRY] = { .name = _("Apicot Berry"), + .pluralName = _("Apicot Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_SP_DEFENSE_UP, .holdEffectParam = 4, @@ -8421,6 +8584,7 @@ const struct Item gItems[] = [ITEM_LANSAT_BERRY] = { .name = _("Lansat Berry"), + .pluralName = _("Lansat Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CRITICAL_UP, .holdEffectParam = 4, @@ -8436,6 +8600,7 @@ const struct Item gItems[] = [ITEM_STARF_BERRY] = { .name = _("Starf Berry"), + .pluralName = _("Starf Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_RANDOM_STAT_UP, .holdEffectParam = 4, @@ -8451,6 +8616,7 @@ const struct Item gItems[] = [ITEM_ENIGMA_BERRY] = { .name = _("Enigma Berry"), + .pluralName = _("Enigma Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_ENIGMA_BERRY, .description = COMPOUND_STRING("A hold item that\n" @@ -8465,6 +8631,7 @@ const struct Item gItems[] = [ITEM_MICLE_BERRY] = { .name = _("Micle Berry"), + .pluralName = _("Micle Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_MICLE_BERRY, .holdEffectParam = 4, @@ -8480,6 +8647,7 @@ const struct Item gItems[] = [ITEM_CUSTAP_BERRY] = { .name = _("Custap Berry"), + .pluralName = _("Custap Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_CUSTAP_BERRY, .holdEffectParam = 4, @@ -8495,6 +8663,7 @@ const struct Item gItems[] = [ITEM_JABOCA_BERRY] = { .name = _("Jaboca Berry"), + .pluralName = _("Jaboca Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_JABOCA_BERRY, .description = COMPOUND_STRING("If hit by a physical\n" @@ -8509,6 +8678,7 @@ const struct Item gItems[] = [ITEM_ROWAP_BERRY] = { .name = _("Rowap Berry"), + .pluralName = _("Rowap Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_ROWAP_BERRY, .description = COMPOUND_STRING("If hit by a special\n" @@ -8523,6 +8693,7 @@ const struct Item gItems[] = [ITEM_KEE_BERRY] = { .name = _("Kee Berry"), + .pluralName = _("Kee Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_KEE_BERRY, .description = COMPOUND_STRING("If hit by a physical\n" @@ -8537,6 +8708,7 @@ const struct Item gItems[] = [ITEM_MARANGA_BERRY] = { .name = _("Maranga Berry"), + .pluralName = _("Maranga Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .holdEffect = HOLD_EFFECT_MARANGA_BERRY, .description = COMPOUND_STRING("If hit by a special\n" @@ -8551,6 +8723,7 @@ const struct Item gItems[] = [ITEM_ENIGMA_BERRY_E_READER] = { .name = _("Enigma Berry"), + .pluralName = _("Enigma Berries"), .price = (I_BERRY_PRICE >= GEN_8) ? 80 : 20, .description = COMPOUND_STRING("{POKEBLOCK} ingredient.\n" "Plant in loamy soil\n" @@ -10062,6 +10235,7 @@ const struct Item gItems[] = [ITEM_REVEAL_GLASS] = { .name = _("Reveal Glass"), + .pluralName = _("Reveal Glasses"), .price = 0, .importance = 1, .description = COMPOUND_STRING("This glass returns\n" @@ -10075,6 +10249,7 @@ const struct Item gItems[] = [ITEM_DNA_SPLICERS] = { .name = _("DNA Splicers"), + .pluralName = _("DNA Splicers"), .price = 0, .importance = 1, .description = COMPOUND_STRING("Splicer that fuses\n" @@ -10140,6 +10315,7 @@ const struct Item gItems[] = [ITEM_REINS_OF_UNITY] = { .name = _("ReinsOfUnity"), + .pluralName = _("ReinsOfUnities"), .price = 0, .importance = 1, .description = COMPOUND_STRING("Reins that unite\n" @@ -10334,6 +10510,7 @@ const struct Item gItems[] = [ITEM_BERRY_POUCH] = { .name = _("Berry Pouch"), + .pluralName = _("Berry Pouches"), .price = 0, .description = COMPOUND_STRING("A convenient\n" "container that\n" @@ -10557,6 +10734,7 @@ const struct Item gItems[] = [ITEM_DEVON_PARTS] = { .name = _("Devon Parts"), + .pluralName = _("Devon Parts"), .price = 0, .description = COMPOUND_STRING("A package that\n" "contains Devon's\n" @@ -10570,6 +10748,7 @@ const struct Item gItems[] = [ITEM_GO_GOGGLES] = { .name = _("Go-Goggles"), + .pluralName = _("Go-Goggles"), .price = 0, .description = COMPOUND_STRING("Nifty goggles that\n" "protect eyes from\n" @@ -10635,6 +10814,7 @@ const struct Item gItems[] = [ITEM_KEY_TO_ROOM_1] = { .name = _("Key to Room 1"), + .pluralName = _("Keys to Room 1"), .price = 0, .description = sKeyToRoomDesc, .importance = 1, @@ -10646,6 +10826,7 @@ const struct Item gItems[] = [ITEM_KEY_TO_ROOM_2] = { .name = _("Key to Room 2"), + .pluralName = _("Keys to Room 2"), .price = 0, .description = sKeyToRoomDesc, .importance = 1, @@ -10657,6 +10838,7 @@ const struct Item gItems[] = [ITEM_KEY_TO_ROOM_4] = { .name = _("Key to Room 4"), + .pluralName = _("Keys to Room 4"), .price = 0, .description = sKeyToRoomDesc, .importance = 1, @@ -10668,6 +10850,7 @@ const struct Item gItems[] = [ITEM_KEY_TO_ROOM_6] = { .name = _("Key to Room 6"), + .pluralName = _("Keys to Room 6"), .price = 0, .description = sKeyToRoomDesc, .importance = 1, @@ -10704,6 +10887,7 @@ const struct Item gItems[] = [ITEM_CONTEST_PASS] = { .name = _("Contest Pass"), + .pluralName = _("Contest Passes"), .price = 0, .description = COMPOUND_STRING("The pass required\n" "for entering\n" @@ -10756,6 +10940,7 @@ const struct Item gItems[] = [ITEM_GOLD_TEETH] = { .name = _("Gold Teeth"), + .pluralName = _("Gold Teeth"), .price = 0, .description = COMPOUND_STRING("Gold dentures lost\n" "by the Safari\n" @@ -10808,6 +10993,7 @@ const struct Item gItems[] = [ITEM_TRI_PASS] = { .name = _("Tri-Pass"), + .pluralName = _("Tri-Passes"), .price = 0, .description = COMPOUND_STRING("A pass for ferries\n" "between One, Two,\n" @@ -10821,6 +11007,7 @@ const struct Item gItems[] = [ITEM_RAINBOW_PASS] = { .name = _("Rainbow Pass"), + .pluralName = _("Rainbow Passes"), .price = 0, .description = COMPOUND_STRING("For ferries serving\n" "Vermilion and the\n" @@ -10834,6 +11021,7 @@ const struct Item gItems[] = [ITEM_TEA] = { .name = _("Tea"), + .pluralName = _("Tea"), .price = 0, .description = COMPOUND_STRING("A thirst-quenching\n" "tea prepared by an\n" @@ -10847,6 +11035,7 @@ const struct Item gItems[] = [ITEM_RUBY] = { .name = _("Ruby"), + .pluralName = _("Rubies"), .price = 0, .description = COMPOUND_STRING("An exquisite, red-\n" "glowing gem that\n" @@ -10931,6 +11120,7 @@ const struct Item gItems[] = [ITEM_LOADED_DICE] = { .name = _("Loaded Dice"), + .pluralName = _("Loaded Dice"), .price = 20000, .holdEffect = HOLD_EFFECT_LOADED_DICE, .description = COMPOUND_STRING("Rolls high numbers.\n" @@ -10959,6 +11149,7 @@ const struct Item gItems[] = [ITEM_BOOSTER_ENERGY] = { .name = _("BoosterEnergy"), + .pluralName = _("BoosterEnergies"), .price = 0, .holdEffect = HOLD_EFFECT_BOOSTER_ENERGY, .description = COMPOUND_STRING("Encapsuled energy\n" @@ -11038,6 +11229,7 @@ const struct Item gItems[] = [ITEM_SCROLL_OF_DARKNESS] = { .name = _("ScrllOfDrknss"), + .pluralName = _("ScrllsOfDrknss"), .price = 0, .description = COMPOUND_STRING("A peculiar scroll\n" "with secrets of\n" @@ -11052,6 +11244,7 @@ const struct Item gItems[] = [ITEM_SCROLL_OF_WATERS] = { .name = _("ScrollOfWatrs"), + .pluralName = _("ScrollsOfWatrs"), .price = 0, .description = COMPOUND_STRING("A peculiar scroll\n" "with secrets of\n" @@ -11460,6 +11653,7 @@ const struct Item gItems[] = [ITEM_HEALTH_MOCHI] = { .name = _("Health Mochi"), + .pluralName = _("Health Mochi"), .price = 500, .description = sHealthFeatherDesc, .pocket = POCKET_ITEMS, @@ -11472,6 +11666,7 @@ const struct Item gItems[] = [ITEM_MUSCLE_MOCHI] = { .name = _("Muscle Mochi"), + .pluralName = _("Muscle Mochi"), .price = 500, .description = sMuscleFeatherDesc, .pocket = POCKET_ITEMS, @@ -11484,6 +11679,7 @@ const struct Item gItems[] = [ITEM_RESIST_MOCHI] = { .name = _("Resist Mochi"), + .pluralName = _("Resist Mochi"), .price = 500, .description = sResistFeatherDesc, .pocket = POCKET_ITEMS, @@ -11496,6 +11692,7 @@ const struct Item gItems[] = [ITEM_GENIUS_MOCHI] = { .name = _("Genius Mochi"), + .pluralName = _("Genius Mochi"), .price = 500, .description = sGeniusFeatherDesc, .pocket = POCKET_ITEMS, @@ -11508,6 +11705,7 @@ const struct Item gItems[] = [ITEM_CLEVER_MOCHI] = { .name = _("Clever Mochi"), + .pluralName = _("Clever Mochi"), .price = 500, .description = sCleverFeatherDesc, .pocket = POCKET_ITEMS, @@ -11520,6 +11718,7 @@ const struct Item gItems[] = [ITEM_SWIFT_MOCHI] = { .name = _("Swift Mochi"), + .pluralName = _("Swift Mochi"), .price = 500, .description = sSwiftFeatherDesc, .pocket = POCKET_ITEMS, @@ -11532,6 +11731,7 @@ const struct Item gItems[] = [ITEM_FRESH_START_MOCHI] = { .name = _("FrshStrtMochi"), + .pluralName = _("FrshStrtMochi"), .price = 300, .description = COMPOUND_STRING("An item that resets\n" "all base points of\n" diff --git a/src/item.c b/src/item.c index 04078e60b51..b0813efdf5a 100644 --- a/src/item.c +++ b/src/item.c @@ -20,6 +20,8 @@ static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count); static bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count); +static const u8 *ItemId_GetPluralName(u16); +static bool32 DoesItemHavePluralName(u16); EWRAM_DATA struct BagPocket gBagPockets[POCKETS_COUNT] = {0}; @@ -93,8 +95,8 @@ void CopyItemNameHandlePlural(u16 itemId, u8 *dst, u32 quantity) if (quantity < 2) return; - if (ItemId_GetPocket(itemId) == POCKET_BERRIES) - GetBerryCountString(dst, gBerries[itemId - FIRST_BERRY_INDEX].name, quantity); + if (DoesItemHavePluralName(itemId)) + StringCopy(dst, ItemId_GetPluralName(itemId)); else StringAppend(end, sText_s); } @@ -887,6 +889,16 @@ u32 ItemId_GetPrice(u16 itemId) return gItems[SanitizeItemId(itemId)].price; } +static bool32 DoesItemHavePluralName(u16 itemId) +{ + return (gItems[SanitizeItemId(itemId)].pluralName[0] != '\0'); +} + +static const u8 *ItemId_GetPluralName(u16 itemId) +{ + return gItems[SanitizeItemId(itemId)].pluralName; +} + const u8 *ItemId_GetEffect(u32 itemId) { if (itemId == ITEM_ENIGMA_BERRY_E_READER)