diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index d9a55bbcd..392a387e9 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1282,16 +1282,16 @@ various BS_ATTACKER, VARIOUS_RESET_PLAYER_FAINTED .endm - .macro various8 battler:req - various \battler, 8 + .macro getbattlersforrecall + various BS_ATTACKER, VARIOUS_GET_BATTLERS_FOR_RECALL .endm - .macro returnopponentmon1toball battler:req - various \battler, VARIOUS_RETURN_OPPONENT_MON1 + .macro returnopponentmon1toball + various BS_ATTACKER, VARIOUS_RETURN_OPPONENT_MON1 .endm - .macro returnopponentmon2toball battler:req - various \battler, VARIOUS_RETURN_OPPONENT_MON2 + .macro returnopponentmon2toball + various BS_ATTACKER, VARIOUS_RETURN_OPPONENT_MON2 .endm .macro checkpokeflute battler:req diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index d469bb95d..6cf321c02 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2964,13 +2964,13 @@ BattleScript_RivalBattleLostSkipMonRecall:: end2 BattleScript_BattleTowerLost:: - various8 BS_ATTACKER + getbattlersforrecall jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0, BattleScript_BattleTowerLostLostSkipMonRecall printfromtable gDoubleBattleRecallStrings waitmessage B_WAIT_TIME_LONG - returnopponentmon1toball BS_ATTACKER + returnopponentmon1toball waitstate - returnopponentmon2toball BS_ATTACKER + returnopponentmon2toball waitstate BattleScript_BattleTowerLostLostSkipMonRecall:: trainerslidein BS_ATTACKER diff --git a/graphics/interface/unk_8D2FBB4.pal b/graphics/interface/text_pp.pal similarity index 100% rename from graphics/interface/unk_8D2FBB4.pal rename to graphics/interface/text_pp.pal diff --git a/include/battle.h b/include/battle.h index b581190d6..54ba4a776 100644 --- a/include/battle.h +++ b/include/battle.h @@ -30,7 +30,7 @@ && !(gDisableStructs[battler].mimickedMoves & gBitTable[moveSlot])) #define TRAINER_OPPONENT_3FE 0x3FE -#define TRAINER_OPPONENT_C00 0xC00 +#define TRAINER_UNION_ROOM 0xC00 #define TRAINER_LINK_OPPONENT 0x800 #define SECRET_BASE_OPPONENT 0x400 diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h index d0461319d..461994d62 100644 --- a/include/battle_ai_switch_items.h +++ b/include/battle_ai_switch_items.h @@ -3,8 +3,7 @@ #include "global.h" -enum -{ +enum { AI_ITEM_FULL_RESTORE = 1, AI_ITEM_HEAL_HP, AI_ITEM_CURE_CONDITION, @@ -13,6 +12,15 @@ enum AI_ITEM_NOT_RECOGNIZABLE }; +enum { + AI_HEAL_CONFUSION, + AI_HEAL_PARALYSIS, + AI_HEAL_FREEZE, + AI_HEAL_BURN, + AI_HEAL_POISON, + AI_HEAL_SLEEP, +}; + void AI_TrySwitchOrUseItem(void); u8 GetMostSuitableMonToSwitchInto(void); diff --git a/include/battle_message.h b/include/battle_message.h index 49d05b07d..7e882e3a8 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -242,11 +242,11 @@ extern const u8 gText_Ice[]; extern const u8 gText_Confusion[]; extern const u8 gText_Love[]; -extern const u8 gUnknown_83FE859[]; -extern const u8 gUnknown_83FE85E[]; -extern const u8 gUnknown_83FE85C[]; -extern const u8 gUnknown_83FE860[]; -extern const u8 gUnknown_83FE864[]; +extern const u8 gText_BattleTowerBan_Space[]; +extern const u8 gText_BattleTowerBan_Newline1[]; +extern const u8 gText_BattleTowerBan_Newline2[]; +extern const u8 gText_BattleTowerBan_Is1[]; +extern const u8 gText_BattleTowerBan_Is2[]; extern const u8 gText_SafariBalls[]; extern const u8 gText_HighlightRed_Left[]; diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h index 69086a626..2a056e516 100644 --- a/include/battle_string_ids.h +++ b/include/battle_string_ids.h @@ -385,7 +385,7 @@ #define STRINGID_TRAINER1MON2COMEBACK 384 #define STRINGID_TRAINER1MON1AND2COMEBACK 385 -#define BATTLESTRINGS_COUNT 374 +#define BATTLESTRINGS_COUNT 386 // This is the string id that gBattleStringsTable starts with. // String ids before this (e.g. STRINGID_INTROMSG) are not in the table, @@ -545,19 +545,15 @@ #define B_MSG_WONT_OBEY 1 #define B_MSG_TURNED_AWAY 2 #define B_MSG_PRETEND_NOT_NOTICE 3 -#define B_MSG_INCAPABLE_OF_POWER 4 -// For randomly selecting a disobey string -// Skips the one used for Battle Palace -#define NUM_LOAF_STRINGS 4 // gSafariGetNearStringIds #define B_MSG_CREPT_CLOSER 0 #define B_MSG_CANT_GET_CLOSER 1 // gSafariPokeblockResultStringIds -#define B_MSG_MON_CURIOUS 0 -#define B_MSG_MON_ENTHRALLED 1 -#define B_MSG_MON_IGNORED 2 +#define B_MSG_MON_WATCHING 0 +#define B_MSG_MON_ANGRY 1 +#define B_MSG_MON_EATING 2 // gFlashFireStringIds #define B_MSG_FLASH_FIRE_BOOST 0 diff --git a/include/constants/battle.h b/include/constants/battle.h index 0b4c372a2..041c6e73e 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -321,7 +321,7 @@ #define BATTLE_RUN_FORBIDDEN 1 #define BATTLE_RUN_FAILURE 2 -// Window Ids for sStandardBattleWindowTemplates +// Window Ids for sTextOnWindowsInfo_Normal #define B_WIN_MSG 0 #define B_WIN_ACTION_PROMPT 1 // "What will {x} do?" #define B_WIN_ACTION_MENU 2 // "Fight/Pokémon/Bag/Run" menu diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 6856f4bf8..e08a9e400 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -87,7 +87,7 @@ #define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 #define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 #define VARIOUS_RESET_PLAYER_FAINTED 7 -#define VARIOUS_CASE_8 8 +#define VARIOUS_GET_BATTLERS_FOR_RECALL 8 #define VARIOUS_RETURN_OPPONENT_MON1 9 #define VARIOUS_RETURN_OPPONENT_MON2 10 #define VARIOUS_CHECK_POKEFLUTE 11 diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index dbea7dff5..298a829c9 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -93,25 +93,26 @@ #define MON_DATA_SPDEF2 88 // Pokemon types -#define TYPE_NORMAL 0x00 -#define TYPE_FIGHTING 0x01 -#define TYPE_FLYING 0x02 -#define TYPE_POISON 0x03 -#define TYPE_GROUND 0x04 -#define TYPE_ROCK 0x05 -#define TYPE_BUG 0x06 -#define TYPE_GHOST 0x07 -#define TYPE_STEEL 0x08 -#define TYPE_MYSTERY 0x09 -#define TYPE_FIRE 0x0a -#define TYPE_WATER 0x0b -#define TYPE_GRASS 0x0c -#define TYPE_ELECTRIC 0x0d -#define TYPE_PSYCHIC 0x0e -#define TYPE_ICE 0x0f -#define TYPE_DRAGON 0x10 -#define TYPE_DARK 0x11 -#define NUMBER_OF_MON_TYPES 0x12 +#define TYPE_NONE 255 +#define TYPE_NORMAL 0 +#define TYPE_FIGHTING 1 +#define TYPE_FLYING 2 +#define TYPE_POISON 3 +#define TYPE_GROUND 4 +#define TYPE_ROCK 5 +#define TYPE_BUG 6 +#define TYPE_GHOST 7 +#define TYPE_STEEL 8 +#define TYPE_MYSTERY 9 +#define TYPE_FIRE 10 +#define TYPE_WATER 11 +#define TYPE_GRASS 12 +#define TYPE_ELECTRIC 13 +#define TYPE_PSYCHIC 14 +#define TYPE_ICE 15 +#define TYPE_DRAGON 16 +#define TYPE_DARK 17 +#define NUMBER_OF_MON_TYPES 18 // Pokemon egg groups #define EGG_GROUP_NONE 0 diff --git a/include/constants/weather.h b/include/constants/weather.h index 241dc5e2a..b02496bff 100644 --- a/include/constants/weather.h +++ b/include/constants/weather.h @@ -16,6 +16,7 @@ #define WEATHER_DROUGHT 12 // unused and broken in overworld #define WEATHER_DOWNPOUR 13 // unused #define WEATHER_UNDERWATER_BUBBLES 14 // unused +#define WEATHER_ABNORMAL 15 // unused #define WEATHER_ROUTE119_CYCLE 20 // unused #define WEATHER_ROUTE123_CYCLE 21 // unused diff --git a/include/graphics.h b/include/graphics.h index f26373307..70b85d41b 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4848,7 +4848,7 @@ extern const u32 gBuyMenuFrame_TmHmTilemap[]; extern const u32 gBuyMenuFrame_Pal[]; // battle_message -extern const u16 gUnknown_8D2FBB4[]; +extern const u16 gPPTextPalette[]; // trainer card extern const u16 gKantoTrainerCard_Pal[]; diff --git a/include/string_util.h b/include/string_util.h index 65511b5c4..5f052d9f9 100644 --- a/include/string_util.h +++ b/include/string_util.h @@ -11,8 +11,8 @@ enum StringConvertMode }; u8 *StringCopy_Nickname(u8 *dest, const u8 *src); -u8 *StringGetEnd10(u8 *str); -u8 *StringCopy7(u8 *dest, const u8 *src); +u8 *StringGet_Nickname(u8 *str); +u8 *StringCopy_PlayerName(u8 *dest, const u8 *src); u8 *StringCopy(u8 *dest, const u8 *src); u8 *StringAppend(u8 *dest, const u8 *src); u8 *StringCopyN(u8 *dest, const u8 *src, u8 n); diff --git a/include/strings.h b/include/strings.h index c7663fef9..63fed5e97 100644 --- a/include/strings.h +++ b/include/strings.h @@ -216,12 +216,12 @@ extern const u8 gString_SlotMachineControls[]; // battle_controller_safari extern const u8 gText_EmptyString3[]; -extern const u8 gUnknown_83FE747[]; +extern const u8 gText_SafariZoneMenu[]; extern const u8 gText_WhatWillPlayerThrow[]; // battle_controller_player extern const u8 gText_BattleSwitchWhich[]; -extern const u8 gUnknown_83FE770[]; +extern const u8 gText_MoveInterfaceDynamicColors[]; extern const u8 gText_MoveInterfacePP[]; extern const u8 gText_MoveInterfaceType[]; extern const u8 gText_LinkStandby[]; diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 839a230ad..b9573611e 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -1134,7 +1134,7 @@ static void LinkOpponentHandleDrawTrainerPic(void) else { xPos = 176; - if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) { trainerPicId = GetUnionRoomTrainerPic(); } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 16c812fb0..541276a78 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1369,7 +1369,7 @@ static void MoveSelectionDisplayMoveNames(void) for (i = 0; i < MAX_MON_MOVES; ++i) { MoveSelectionDestroyCursorAt(i); - StringCopy(gDisplayedStringBattle, gUnknown_83FE770); + StringCopy(gDisplayedStringBattle, gText_MoveInterfaceDynamicColors); StringAppend(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]); BattlePutTextOnWindow(gDisplayedStringBattle, i + 3); if (moveInfo->moves[i] != MOVE_NONE) @@ -1407,7 +1407,7 @@ static void MoveSelectionDisplayMoveType(void) *txtPtr++ = EXT_CTRL_CODE_BEGIN; *txtPtr++ = 6; *txtPtr++ = 1; - txtPtr = StringCopy(txtPtr, gUnknown_83FE770); + txtPtr = StringCopy(txtPtr, gText_MoveInterfaceDynamicColors); StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]); BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE); } diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 6e7b1ee9a..545572416 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -439,7 +439,7 @@ static void SafariHandleChooseAction(void) gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG); - BattlePutTextOnWindow(gUnknown_83FE747, B_WIN_ACTION_MENU); + BattlePutTextOnWindow(gText_SafariZoneMenu, B_WIN_ACTION_MENU); for (i = 0; i < 4; ++i) ActionSelectionDestroyCursorAt(i); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); diff --git a/src/battle_interface.c b/src/battle_interface.c index d0713bda1..07f880acc 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1466,7 +1466,7 @@ void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon) ptr = StringCopy(gDisplayedStringBattle, gUnknown_8260556); GetMonData(mon, MON_DATA_NICKNAME, nickname); - StringGetEnd10(nickname); + StringGet_Nickname(nickname); ptr = StringCopy(ptr, nickname); *ptr++ = EXT_CTRL_CODE_BEGIN; *ptr++ = EXT_CTRL_CODE_COLOR; diff --git a/src/battle_message.c b/src/battle_message.c index 12369f063..ffe2bd764 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -16,9 +16,11 @@ #include "new_menu_helpers.h" #include "battle_controllers.h" #include "graphics.h" +#include "battle_ai_switch_items.h" #include "constants/moves.h" #include "constants/items.h" #include "constants/trainers.h" +#include "constants/weather.h" struct BattleWindowText { @@ -330,7 +332,7 @@ static const u8 sText_WildFled[] = _("{PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME} f static const u8 sText_TwoWildFled[] = _("{PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME} and\n{B_LINK_OPPONENT2_NAME} fled!"); static const u8 sText_NoRunningFromTrainers[] = _("No! There's no running\nfrom a TRAINER battle!\p"); static const u8 sText_CantEscape[] = _("Can't escape!\p"); -static const u8 sText_EmptyString5[] = _(""); //sText_DontLeaveBirch in pokeem +static const u8 sText_DontLeaveBirch[] = _(""); // Dummied static const u8 sText_ButNothingHappened[] = _("But nothing happened!"); static const u8 sText_ButItFailed[] = _("But it failed!"); static const u8 sText_ItHurtConfusion[] = _("It hurt itself in its\nconfusion!"); @@ -470,7 +472,7 @@ static const u8 sText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!"); static const u8 sText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!"); static const u8 sText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!"); static const u8 sText_ShootSoClose[] = _("Shoot!\nIt was so close, too!"); -const u8 gUnknown_83FD78A[] = _("よけられた!\nこいつは つかまりそうにないぞ!"); +static const u8 sText_ItDodgedBall2[] = _("よけられた!\nこいつは つかまりそうにないぞ!"); // Unused version of the Marowak ghost dodging text static const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}\p"); static const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}{PAUSE 127}"); static const u8 sText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?"); @@ -483,7 +485,7 @@ static const u8 sText_SandstormIsRaging[] = _("A sandstorm is raging."); static const u8 sText_BoxIsFull[] = _("The BOX is full!\nYou can't catch any more!\p"); static const u8 sText_EnigmaBerry[] = _("ENIGMA BERRY"); static const u8 sText_BerrySuffix[] = _(" BERRY"); -static const u8 gUnknown_83FD8B6[] = _("ナゾ"); +static const u8 sText_Enigma[] = _("ナゾ"); static const u8 sText_PkmnsItemCuredParalysis[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured paralysis!"); static const u8 sText_PkmnsItemCuredPoison[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\ncured poison!"); static const u8 sText_PkmnsItemHealedBurn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM}\nhealed its burn!"); @@ -513,7 +515,7 @@ const u8 gText_OakNoRunningFromATrainer[] = _("OAK: No! There's no running away\ const u8 gText_WinEarnsPrizeMoney[] = _("OAK: Hm! Excellent!\pIf you win, you earn prize money,\nand your POKéMON will grow!\pBattle other TRAINERS and make\nyour POKéMON strong!\p"); const u8 gText_HowDissapointing[] = _("OAK: Hm…\nHow disappointing…\pIf you win, you earn prize money,\nand your POKéMON grow.\pBut if you lose, {B_PLAYER_NAME}, you end\nup paying prize money…\pHowever, since you had no warning\nthis time, I'll pay for you.\pBut things won't be this way once\nyou step outside these doors.\pThat's why you must strengthen your\nPOKéMON by battling wild POKéMON.\p"); -const u8 *const gBattleStringsTable[] = { +const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT - BATTLESTRINGS_TABLE_START] = { [STRINGID_TRAINER1LOSETEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer1LoseText, [STRINGID_PKMNGAINEDEXP - BATTLESTRINGS_TABLE_START] = sText_PkmnGainedEXP, [STRINGID_PKMNGREWTOLV - BATTLESTRINGS_TABLE_START] = sText_PkmnGrewToLv, @@ -625,7 +627,7 @@ const u8 *const gBattleStringsTable[] = { [STRINGID_PKMNSTORINGENERGY - BATTLESTRINGS_TABLE_START] = sText_PkmnStoringEnergy, [STRINGID_PKMNUNLEASHEDENERGY - BATTLESTRINGS_TABLE_START] = sText_PkmnUnleashedEnergy, [STRINGID_PKMNFATIGUECONFUSION - BATTLESTRINGS_TABLE_START] = sText_PkmnFatigueConfusion, - [STRINGID_PLAYERPICKEDUPMONEY - BATTLESTRINGS_TABLE_START] = sText_PkmnPickedUpItem, + [STRINGID_PLAYERPICKEDUPMONEY - BATTLESTRINGS_TABLE_START] = sText_PkmnPickedUpItem, [STRINGID_PKMNUNAFFECTED - BATTLESTRINGS_TABLE_START] = sText_PkmnUnaffected, [STRINGID_PKMNTRANSFORMEDINTO - BATTLESTRINGS_TABLE_START] = sText_PkmnTransformedInto, [STRINGID_PKMNMADESUBSTITUTE - BATTLESTRINGS_TABLE_START] = sText_PkmnMadeSubstitute, @@ -729,7 +731,7 @@ const u8 *const gBattleStringsTable[] = { [STRINGID_WILDPKMNFLED - BATTLESTRINGS_TABLE_START] = sText_WildPkmnFled, [STRINGID_NORUNNINGFROMTRAINERS - BATTLESTRINGS_TABLE_START] = sText_NoRunningFromTrainers, [STRINGID_CANTESCAPE - BATTLESTRINGS_TABLE_START] = sText_CantEscape, - [STRINGID_DONTLEAVEBIRCH - BATTLESTRINGS_TABLE_START] = sText_EmptyString5, + [STRINGID_DONTLEAVEBIRCH - BATTLESTRINGS_TABLE_START] = sText_DontLeaveBirch, [STRINGID_BUTNOTHINGHAPPENED - BATTLESTRINGS_TABLE_START] = sText_ButNothingHappened, [STRINGID_BUTITFAILED - BATTLESTRINGS_TABLE_START] = sText_ButItFailed, [STRINGID_ITHURTCONFUSION - BATTLESTRINGS_TABLE_START] = sText_ItHurtConfusion, @@ -890,104 +892,120 @@ const u8 *const gBattleStringsTable[] = { [STRINGID_TRAINER1MON1AND2COMEBACK - BATTLESTRINGS_TABLE_START] = sText_Trainer1RecallBoth }; -const u16 gMissStringIds[] = { - STRINGID_ATTACKMISSED, - STRINGID_PKMNPROTECTEDITSELF, - STRINGID_PKMNAVOIDEDATTACK, - STRINGID_AVOIDEDDAMAGE, - STRINGID_PKMNMAKESGROUNDMISS +const u16 gMissStringIds[] = +{ + [B_MSG_MISSED] = STRINGID_ATTACKMISSED, + [B_MSG_PROTECTED] = STRINGID_PKMNPROTECTEDITSELF, + [B_MSG_AVOIDED_ATK] = STRINGID_PKMNAVOIDEDATTACK, + [B_MSG_AVOIDED_DMG] = STRINGID_AVOIDEDDAMAGE, + [B_MSG_GROUND_MISS] = STRINGID_PKMNMAKESGROUNDMISS }; -const u16 gNoEscapeStringIds[] = { - STRINGID_CANTESCAPE, - STRINGID_DONTLEAVEBIRCH, - STRINGID_PREVENTSESCAPE, - STRINGID_CANTESCAPE2, - STRINGID_ATTACKERCANTESCAPE +const u16 gNoEscapeStringIds[] = +{ + [B_MSG_CANT_ESCAPE] = STRINGID_CANTESCAPE, + [B_MSG_DONT_LEAVE_BIRCH] = STRINGID_DONTLEAVEBIRCH, + [B_MSG_PREVENTS_ESCAPE] = STRINGID_PREVENTSESCAPE, + [B_MSG_CANT_ESCAPE_2] = STRINGID_CANTESCAPE2, + [B_MSG_ATTACKER_CANT_ESCAPE] = STRINGID_ATTACKERCANTESCAPE }; -const u16 gMoveWeatherChangeStringIds[] = { - STRINGID_STARTEDTORAIN, - STRINGID_DOWNPOURSTARTED, - STRINGID_BUTITFAILED, - STRINGID_SANDSTORMBREWED, - STRINGID_SUNLIGHTGOTBRIGHT, - STRINGID_STARTEDHAIL +const u16 gMoveWeatherChangeStringIds[] = +{ + [B_MSG_STARTED_RAIN] = STRINGID_STARTEDTORAIN, + [B_MSG_STARTED_DOWNPOUR] = STRINGID_DOWNPOURSTARTED, + [B_MSG_WEATHER_FAILED] = STRINGID_BUTITFAILED, + [B_MSG_STARTED_SANDSTORM] = STRINGID_SANDSTORMBREWED, + [B_MSG_STARTED_SUNLIGHT] = STRINGID_SUNLIGHTGOTBRIGHT, + [B_MSG_STARTED_HAIL] = STRINGID_STARTEDHAIL }; -const u16 gSandstormHailContinuesStringIds[] = { - STRINGID_SANDSTORMRAGES, - STRINGID_HAILCONTINUES +const u16 gSandstormHailContinuesStringIds[] = +{ + [B_MSG_SANDSTORM] = STRINGID_SANDSTORMRAGES, + [B_MSG_HAIL] = STRINGID_HAILCONTINUES }; -const u16 gSandstormHailDmgStringIds[] = { - STRINGID_PKMNBUFFETEDBYSANDSTORM, - STRINGID_PKMNPELTEDBYHAIL +const u16 gSandstormHailDmgStringIds[] = +{ + [B_MSG_SANDSTORM] = STRINGID_PKMNBUFFETEDBYSANDSTORM, + [B_MSG_HAIL] = STRINGID_PKMNPELTEDBYHAIL }; -const u16 gSandstormHailEndStringIds[] = { - STRINGID_SANDSTORMSUBSIDED, - STRINGID_HAILSTOPPED +const u16 gSandstormHailEndStringIds[] = +{ + [B_MSG_SANDSTORM] = STRINGID_SANDSTORMSUBSIDED, + [B_MSG_HAIL] = STRINGID_HAILSTOPPED }; -const u16 gRainContinuesStringIds[] = { - STRINGID_RAINCONTINUES, - STRINGID_DOWNPOURCONTINUES, - STRINGID_RAINSTOPPED +const u16 gRainContinuesStringIds[] = +{ + [B_MSG_RAIN_CONTINUES] = STRINGID_RAINCONTINUES, + [B_MSG_DOWNPOUR_CONTINUES] = STRINGID_DOWNPOURCONTINUES, + [B_MSG_RAIN_STOPPED] = STRINGID_RAINSTOPPED }; -const u16 gProtectLikeUsedStringIds[] = { - STRINGID_PKMNPROTECTEDITSELF2, - STRINGID_PKMNBRACEDITSELF, - STRINGID_BUTITFAILED +const u16 gProtectLikeUsedStringIds[] = +{ + [B_MSG_PROTECTED_ITSELF] = STRINGID_PKMNPROTECTEDITSELF2, + [B_MSG_BRACED_ITSELF] = STRINGID_PKMNBRACEDITSELF, + [B_MSG_PROTECT_FAILED] = STRINGID_BUTITFAILED }; -const u16 gReflectLightScreenSafeguardStringIds[] = { - STRINGID_BUTITFAILED, - STRINGID_PKMNRAISEDDEF, - STRINGID_PKMNRAISEDDEFALITTLE, - STRINGID_PKMNRAISEDSPDEF, - STRINGID_PKMNRAISEDSPDEFALITTLE, - STRINGID_PKMNCOVEREDBYVEIL +const u16 gReflectLightScreenSafeguardStringIds[] = +{ + [B_MSG_SIDE_STATUS_FAILED] = STRINGID_BUTITFAILED, + [B_MSG_SET_REFLECT_SINGLE] = STRINGID_PKMNRAISEDDEF, + [B_MSG_SET_REFLECT_DOUBLE] = STRINGID_PKMNRAISEDDEFALITTLE, + [B_MSG_SET_LIGHTSCREEN_SINGLE] = STRINGID_PKMNRAISEDSPDEF, + [B_MSG_SET_LIGHTSCREEN_DOUBLE] = STRINGID_PKMNRAISEDSPDEFALITTLE, + [B_MSG_SET_SAFEGUARD] = STRINGID_PKMNCOVEREDBYVEIL }; -const u16 gLeechSeedStringIds[] = { - STRINGID_PKMNSEEDED, - STRINGID_PKMNEVADEDATTACK, - STRINGID_ITDOESNTAFFECT, - STRINGID_PKMNSAPPEDBYLEECHSEED, - STRINGID_ITSUCKEDLIQUIDOOZE +const u16 gLeechSeedStringIds[] = +{ + [B_MSG_LEECH_SEED_SET] = STRINGID_PKMNSEEDED, + [B_MSG_LEECH_SEED_MISS] = STRINGID_PKMNEVADEDATTACK, + [B_MSG_LEECH_SEED_FAIL] = STRINGID_ITDOESNTAFFECT, + [B_MSG_LEECH_SEED_DRAIN] = STRINGID_PKMNSAPPEDBYLEECHSEED, + [B_MSG_LEECH_SEED_OOZE] = STRINGID_ITSUCKEDLIQUIDOOZE }; -const u16 gRestUsedStringIds[] = { - STRINGID_PKMNWENTTOSLEEP, - STRINGID_PKMNSLEPTHEALTHY +const u16 gRestUsedStringIds[] = +{ + [B_MSG_REST] = STRINGID_PKMNWENTTOSLEEP, + [B_MSG_REST_STATUSED] = STRINGID_PKMNSLEPTHEALTHY }; -const u16 gUproarOverTurnStringIds[] = { - STRINGID_PKMNMAKINGUPROAR, - STRINGID_PKMNCALMEDDOWN +const u16 gUproarOverTurnStringIds[] = +{ + [B_MSG_UPROAR_CONTINUES] = STRINGID_PKMNMAKINGUPROAR, + [B_MSG_UPROAR_ENDS] = STRINGID_PKMNCALMEDDOWN }; -const u16 gStockpileUsedStringIds[] = { - STRINGID_PKMNSTOCKPILED, - STRINGID_PKMNCANTSTOCKPILE +const u16 gStockpileUsedStringIds[] = +{ + [B_MSG_STOCKPILED] = STRINGID_PKMNSTOCKPILED, + [B_MSG_CANT_STOCKPILE] = STRINGID_PKMNCANTSTOCKPILE }; -const u16 gWokeUpStringIds[] = { - STRINGID_PKMNWOKEUP, - STRINGID_PKMNWOKEUPINUPROAR +const u16 gWokeUpStringIds[] = +{ + [B_MSG_WOKE_UP] = STRINGID_PKMNWOKEUP, + [B_MSG_WOKE_UP_UPROAR] = STRINGID_PKMNWOKEUPINUPROAR }; -const u16 gSwallowFailStringIds[] = { - STRINGID_FAILEDTOSWALLOW, - STRINGID_PKMNHPFULL +const u16 gSwallowFailStringIds[] = +{ + [B_MSG_SWALLOW_FAILED] = STRINGID_FAILEDTOSWALLOW, + [B_MSG_SWALLOW_FULL_HP] = STRINGID_PKMNHPFULL }; -const u16 gUproarAwakeStringIds[] = { - STRINGID_PKMNCANTSLEEPINUPROAR2, - STRINGID_UPROARKEPTPKMNAWAKE, - STRINGID_PKMNSTAYEDAWAKEUSING +const u16 gUproarAwakeStringIds[] = +{ + [B_MSG_CANT_SLEEP_UPROAR] = STRINGID_PKMNCANTSLEEPINUPROAR2, + [B_MSG_UPROAR_KEPT_AWAKE] = STRINGID_UPROARKEPTPKMNAWAKE, + [B_MSG_STAYED_AWAKE_USING] = STRINGID_PKMNSTAYEDAWAKEUSING }; const u16 gStatUpStringIds[] = @@ -1000,220 +1018,258 @@ const u16 gStatUpStringIds[] = [B_MSG_USED_DIRE_HIT] = STRINGID_PKMNUSEDXTOGETPUMPED, }; -const u16 gStatDownStringIds[] = { - STRINGID_ATTACKERSSTATFELL, - STRINGID_DEFENDERSSTATFELL, - STRINGID_STATSWONTDECREASE, - STRINGID_EMPTYSTRING3 +const u16 gStatDownStringIds[] = +{ + [B_MSG_ATTACKER_STAT_FELL] = STRINGID_ATTACKERSSTATFELL, + [B_MSG_DEFENDER_STAT_FELL] = STRINGID_DEFENDERSSTATFELL, + [B_MSG_STAT_WONT_DECREASE] = STRINGID_STATSWONTDECREASE, + [B_MSG_STAT_FELL_EMPTY] = STRINGID_EMPTYSTRING3 }; -const u16 gFirstTurnOfTwoStringIds[] = { - STRINGID_PKMNWHIPPEDWHIRLWIND, - STRINGID_PKMNTOOKSUNLIGHT, - STRINGID_PKMNLOWEREDHEAD, - STRINGID_PKMNISGLOWING, - STRINGID_PKMNFLEWHIGH, - STRINGID_PKMNDUGHOLE, - STRINGID_PKMNHIDUNDERWATER, - STRINGID_PKMNSPRANGUP +// Index read from sTWOTURN_STRINGID +const u16 gFirstTurnOfTwoStringIds[] = +{ + [B_MSG_TURN1_RAZOR_WIND] = STRINGID_PKMNWHIPPEDWHIRLWIND, + [B_MSG_TURN1_SOLAR_BEAM] = STRINGID_PKMNTOOKSUNLIGHT, + [B_MSG_TURN1_SKULL_BASH] = STRINGID_PKMNLOWEREDHEAD, + [B_MSG_TURN1_SKY_ATTACK] = STRINGID_PKMNISGLOWING, + [B_MSG_TURN1_FLY] = STRINGID_PKMNFLEWHIGH, + [B_MSG_TURN1_DIG] = STRINGID_PKMNDUGHOLE, + [B_MSG_TURN1_DIVE] = STRINGID_PKMNHIDUNDERWATER, + [B_MSG_TURN1_BOUNCE] = STRINGID_PKMNSPRANGUP }; -const u16 gWrappedStringIds[] = { - STRINGID_PKMNSQUEEZEDBYBIND, - STRINGID_PKMNWRAPPEDBY, - STRINGID_PKMNTRAPPEDINVORTEX, - STRINGID_PKMNCLAMPED, - STRINGID_PKMNTRAPPEDINVORTEX, - STRINGID_PKMNTRAPPEDBYSANDTOMB +// Index copied from move's index in gTrappingMoves +const u16 gWrappedStringIds[] = +{ + STRINGID_PKMNSQUEEZEDBYBIND, // MOVE_BIND + STRINGID_PKMNWRAPPEDBY, // MOVE_WRAP + STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_FIRE_SPIN + STRINGID_PKMNCLAMPED, // MOVE_CLAMP + STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_WHIRLPOOL + STRINGID_PKMNTRAPPEDBYSANDTOMB // MOVE_SAND_TOMB }; -const u16 gMistUsedStringIds[] = { - STRINGID_PKMNSHROUDEDINMIST, - STRINGID_BUTITFAILED +const u16 gMistUsedStringIds[] = +{ + [B_MSG_SET_MIST] = STRINGID_PKMNSHROUDEDINMIST, + [B_MSG_MIST_FAILED] = STRINGID_BUTITFAILED }; -const u16 gFocusEnergyUsedStringIds[] = { - STRINGID_PKMNGETTINGPUMPED, - STRINGID_BUTITFAILED +const u16 gFocusEnergyUsedStringIds[] = +{ + [B_MSG_GETTING_PUMPED] = STRINGID_PKMNGETTINGPUMPED, + [B_MSG_FOCUS_ENERGY_FAILED] = STRINGID_BUTITFAILED }; -const u16 gTransformUsedStringIds[] = { - STRINGID_PKMNTRANSFORMEDINTO, - STRINGID_BUTITFAILED +const u16 gTransformUsedStringIds[] = +{ + [B_MSG_TRANSFORMED] = STRINGID_PKMNTRANSFORMEDINTO, + [B_MSG_TRANSFORM_FAILED] = STRINGID_BUTITFAILED }; -const u16 gSubstituteUsedStringIds[] = { - STRINGID_PKMNMADESUBSTITUTE, - STRINGID_TOOWEAKFORSUBSTITUTE +const u16 gSubstituteUsedStringIds[] = +{ + [B_MSG_SET_SUBSTITUTE] = STRINGID_PKMNMADESUBSTITUTE, + [B_MSG_SUBSTITUTE_FAILED] = STRINGID_TOOWEAKFORSUBSTITUTE }; -const u16 gGotPoisonedStringIds[] = { - STRINGID_PKMNWASPOISONED, - STRINGID_PKMNPOISONEDBY +const u16 gGotPoisonedStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNWASPOISONED, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNPOISONEDBY }; -const u16 gGotParalyzedStringIds[] = { - STRINGID_PKMNWASPARALYZED, - STRINGID_PKMNWASPARALYZEDBY +const u16 gGotParalyzedStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNWASPARALYZED, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNWASPARALYZEDBY }; -const u16 gFellAsleepStringIds[] = { - STRINGID_PKMNFELLASLEEP, - STRINGID_PKMNMADESLEEP +const u16 gFellAsleepStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNFELLASLEEP, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNMADESLEEP }; -const u16 gGotBurnedStringIds[] = { - STRINGID_PKMNWASBURNED, - STRINGID_PKMNBURNEDBY +const u16 gGotBurnedStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNWASBURNED, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNBURNEDBY }; -const u16 gGotFrozenStringIds[] = { - STRINGID_PKMNWASFROZEN, - STRINGID_PKMNFROZENBY +const u16 gGotFrozenStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNWASFROZEN, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNFROZENBY }; -const u16 gGotDefrostedStringIds[] = { - STRINGID_PKMNWASDEFROSTED2, - STRINGID_PKMNWASDEFROSTEDBY +const u16 gGotDefrostedStringIds[] = +{ + [B_MSG_DEFROSTED] = STRINGID_PKMNWASDEFROSTED2, + [B_MSG_DEFROSTED_BY_MOVE] = STRINGID_PKMNWASDEFROSTEDBY }; -const u16 gKOFailedStringIds[] = { - STRINGID_ATTACKMISSED, - STRINGID_PKMNUNAFFECTED +const u16 gKOFailedStringIds[] = +{ + [B_MSG_KO_MISS] = STRINGID_ATTACKMISSED, + [B_MSG_KO_UNAFFECTED] = STRINGID_PKMNUNAFFECTED }; -const u16 gAttractUsedStringIds[] = { - STRINGID_PKMNFELLINLOVE, - STRINGID_PKMNSXINFATUATEDY +const u16 gAttractUsedStringIds[] = +{ + [B_MSG_STATUSED] = STRINGID_PKMNFELLINLOVE, + [B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNSXINFATUATEDY }; -const u16 gAbsorbDrainStringIds[] = { - STRINGID_PKMNENERGYDRAINED, - STRINGID_ITSUCKEDLIQUIDOOZE +const u16 gAbsorbDrainStringIds[] = +{ + [B_MSG_ABSORB] = STRINGID_PKMNENERGYDRAINED, + [B_MSG_ABSORB_OOZE] = STRINGID_ITSUCKEDLIQUIDOOZE }; -const u16 gSportsUsedStringIds[] = { - STRINGID_ELECTRICITYWEAKENED, - STRINGID_FIREWEAKENED +const u16 gSportsUsedStringIds[] = +{ + [B_MSG_WEAKEN_ELECTRIC] = STRINGID_ELECTRICITYWEAKENED, + [B_MSG_WEAKEN_FIRE] = STRINGID_FIREWEAKENED }; -const u16 gPartyStatusHealStringIds[] = { - STRINGID_BELLCHIMED, - STRINGID_BELLCHIMED, - STRINGID_BELLCHIMED, - STRINGID_BELLCHIMED, - STRINGID_SOOTHINGAROMA +const u16 gPartyStatusHealStringIds[] = +{ + [B_MSG_BELL] = STRINGID_BELLCHIMED, + [B_MSG_BELL_SOUNDPROOF_ATTACKER] = STRINGID_BELLCHIMED, + [B_MSG_BELL_SOUNDPROOF_PARTNER] = STRINGID_BELLCHIMED, + [B_MSG_BELL_BOTH_SOUNDPROOF] = STRINGID_BELLCHIMED, + [B_MSG_SOOTHING_AROMA] = STRINGID_SOOTHINGAROMA }; -const u16 gFutureMoveUsedStringIds[] = { - STRINGID_PKMNFORESAWATTACK, - STRINGID_PKMNCHOSEXASDESTINY +const u16 gFutureMoveUsedStringIds[] = +{ + [B_MSG_FUTURE_SIGHT] = STRINGID_PKMNFORESAWATTACK, + [B_MSG_DOOM_DESIRE] = STRINGID_PKMNCHOSEXASDESTINY }; -const u16 gBallEscapeStringIds[] = { - STRINGID_PKMNBROKEFREE, - STRINGID_ITAPPEAREDCAUGHT, - STRINGID_AARGHALMOSTHADIT, - STRINGID_SHOOTSOCLOSE +const u16 gBallEscapeStringIds[] = +{ + [BALL_NO_SHAKES] = STRINGID_PKMNBROKEFREE, + [BALL_1_SHAKE] = STRINGID_ITAPPEAREDCAUGHT, + [BALL_2_SHAKES] = STRINGID_AARGHALMOSTHADIT, + [BALL_3_SHAKES_FAIL] = STRINGID_SHOOTSOCLOSE }; -const u16 gWeatherStartsStringIds[] = { - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_SANDSTORMISRAGING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_SUNLIGHTSTRONG, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING, - STRINGID_ITISRAINING +// Overworld weathers that don't have an associated battle weather default to "It is raining." +const u16 gWeatherStartsStringIds[] = +{ + [WEATHER_NONE] = STRINGID_ITISRAINING, + [WEATHER_SUNNY_CLOUDS] = STRINGID_ITISRAINING, + [WEATHER_SUNNY] = STRINGID_ITISRAINING, + [WEATHER_RAIN] = STRINGID_ITISRAINING, + [WEATHER_SNOW] = STRINGID_ITISRAINING, + [WEATHER_RAIN_THUNDERSTORM] = STRINGID_ITISRAINING, + [WEATHER_FOG_HORIZONTAL] = STRINGID_ITISRAINING, + [WEATHER_VOLCANIC_ASH] = STRINGID_ITISRAINING, + [WEATHER_SANDSTORM] = STRINGID_SANDSTORMISRAGING, + [WEATHER_FOG_DIAGONAL] = STRINGID_ITISRAINING, + [WEATHER_UNDERWATER] = STRINGID_ITISRAINING, + [WEATHER_SHADE] = STRINGID_ITISRAINING, + [WEATHER_DROUGHT] = STRINGID_SUNLIGHTSTRONG, + [WEATHER_DOWNPOUR] = STRINGID_ITISRAINING, + [WEATHER_UNDERWATER_BUBBLES] = STRINGID_ITISRAINING, + [WEATHER_ABNORMAL] = STRINGID_ITISRAINING }; -const u16 gInobedientStringIds[] = { - STRINGID_PKMNLOAFING, - STRINGID_PKMNWONTOBEY, - STRINGID_PKMNTURNEDAWAY, - STRINGID_PKMNPRETENDNOTNOTICE +const u16 gInobedientStringIds[] = +{ + [B_MSG_LOAFING] = STRINGID_PKMNLOAFING, + [B_MSG_WONT_OBEY] = STRINGID_PKMNWONTOBEY, + [B_MSG_TURNED_AWAY] = STRINGID_PKMNTURNEDAWAY, + [B_MSG_PRETEND_NOT_NOTICE] = STRINGID_PKMNPRETENDNOTNOTICE }; -const u16 gSafariPokeblockResultStringIds[] = { - STRINGID_PKMNWATCHINGCAREFULLY, - STRINGID_PKMNANGRY, - STRINGID_PKMNEATING +const u16 gSafariPokeblockResultStringIds[] = +{ + [B_MSG_MON_WATCHING] = STRINGID_PKMNWATCHINGCAREFULLY, + [B_MSG_MON_ANGRY] = STRINGID_PKMNANGRY, + [B_MSG_MON_EATING] = STRINGID_PKMNEATING }; -const u16 gTrainerItemCuredStatusStringIds[] = { - STRINGID_PKMNSITEMSNAPPEDOUT, - STRINGID_PKMNSITEMCUREDPARALYSIS, - STRINGID_PKMNSITEMDEFROSTEDIT, - STRINGID_PKMNSITEMHEALEDBURN, - STRINGID_PKMNSITEMCUREDPOISON, - STRINGID_PKMNSITEMWOKEIT +const u16 gTrainerItemCuredStatusStringIds[] = +{ + [AI_HEAL_CONFUSION] = STRINGID_PKMNSITEMSNAPPEDOUT, + [AI_HEAL_PARALYSIS] = STRINGID_PKMNSITEMCUREDPARALYSIS, + [AI_HEAL_FREEZE] = STRINGID_PKMNSITEMDEFROSTEDIT, + [AI_HEAL_BURN] = STRINGID_PKMNSITEMHEALEDBURN, + [AI_HEAL_POISON] = STRINGID_PKMNSITEMCUREDPOISON, + [AI_HEAL_SLEEP] = STRINGID_PKMNSITEMWOKEIT }; -const u16 gBerryEffectStringIds[] = { - STRINGID_PKMNSITEMCUREDPROBLEM, - STRINGID_PKMNSITEMNORMALIZEDSTATUS +const u16 gBerryEffectStringIds[] = +{ + [B_MSG_CURED_PROBLEM] = STRINGID_PKMNSITEMCUREDPROBLEM, + [B_MSG_NORMALIZED_STATUS] = STRINGID_PKMNSITEMNORMALIZEDSTATUS }; -const u16 gBRNPreventionStringIds[] = { - STRINGID_PKMNSXPREVENTSBURNS, - STRINGID_PKMNSXPREVENTSYSZ, - STRINGID_PKMNSXHADNOEFFECTONY +const u16 gBRNPreventionStringIds[] = +{ + [B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNSXPREVENTSBURNS, + [B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ, + [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY }; -const u16 gPRLZPreventionStringIds[] = { - STRINGID_PKMNPREVENTSPARALYSISWITH, - STRINGID_PKMNSXPREVENTSYSZ, - STRINGID_PKMNSXHADNOEFFECTONY +const u16 gPRLZPreventionStringIds[] = +{ + [B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNPREVENTSPARALYSISWITH, + [B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ, + [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY }; -const u16 gPSNPreventionStringIds[] = { - STRINGID_PKMNPREVENTSPOISONINGWITH, - STRINGID_PKMNSXPREVENTSYSZ, - STRINGID_PKMNSXHADNOEFFECTONY +const u16 gPSNPreventionStringIds[] = +{ + [B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNPREVENTSPOISONINGWITH, + [B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ, + [B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY }; -const u16 gItemSwapStringIds[] = { - STRINGID_PKMNOBTAINEDX, - STRINGID_PKMNOBTAINEDX2, - STRINGID_PKMNOBTAINEDXYOBTAINEDZ +const u16 gItemSwapStringIds[] = +{ + [B_MSG_ITEM_SWAP_TAKEN] = STRINGID_PKMNOBTAINEDX, + [B_MSG_ITEM_SWAP_GIVEN] = STRINGID_PKMNOBTAINEDX2, + [B_MSG_ITEM_SWAP_BOTH] = STRINGID_PKMNOBTAINEDXYOBTAINEDZ }; -const u16 gFlashFireStringIds[] = { - STRINGID_PKMNRAISEDFIREPOWERWITH, - STRINGID_PKMNSXMADEYINEFFECTIVE +const u16 gFlashFireStringIds[] = +{ + [B_MSG_FLASH_FIRE_BOOST] = STRINGID_PKMNRAISEDFIREPOWERWITH, + [B_MSG_FLASH_FIRE_NO_BOOST] = STRINGID_PKMNSXMADEYINEFFECTIVE }; -const u16 gCaughtMonStringIds[] = { - STRINGID_PKMNTRANSFERREDSOMEONESPC, - STRINGID_PKMNTRANSFERREDBILLSPC, - STRINGID_PKMNBOXSOMEONESPCFULL, - STRINGID_PKMNBOXBILLSPCFULL +const u16 gCaughtMonStringIds[] = +{ + [B_MSG_SENT_SOMEONES_PC] = STRINGID_PKMNTRANSFERREDSOMEONESPC, + [B_MSG_SENT_BILLS_PC] = STRINGID_PKMNTRANSFERREDBILLSPC, + [B_MSG_SOMEONES_BOX_FULL] = STRINGID_PKMNBOXSOMEONESPCFULL, + [B_MSG_BILLS_BOX_FULL] = STRINGID_PKMNBOXBILLSPCFULL }; -const u16 gDoubleBattleRecallStrings[] = { +// Index is determined in VARIOUS_GET_BATTLERS_FOR_RECALL by ORing flags for each present battler on the losing side. +// No battlers (0) is skipped. +const u16 gDoubleBattleRecallStrings[1 << (MAX_BATTLERS_COUNT / 2)] = +{ STRINGID_TRAINER1MON1COMEBACK, STRINGID_TRAINER1MON1COMEBACK, STRINGID_TRAINER1MON2COMEBACK, STRINGID_TRAINER1MON1AND2COMEBACK }; -const u16 gTrappingMoves[] = { +const u16 gTrappingMoves[NUM_TRAPPING_MOVES + 1] = +{ MOVE_BIND, MOVE_WRAP, MOVE_FIRE_SPIN, MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, - 0xFFFF + 0xFFFF // Never read }; const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!"); @@ -1225,30 +1281,32 @@ const u8 gText_WhatWillPlayerThrow[] = _("What will {B_PLAYER_NAME}\nthrow?"); const u8 gText_WhatWillOldManDo[] = _("What will the\nold man do?"); const u8 gText_LinkStandby[] = _("{PAUSE 16}Link standby…"); const u8 gText_BattleMenu[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN"); -const u8 gUnknown_83FE747[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}BALL{CLEAR_TO 56}BAIT\nROCK{CLEAR_TO 56}RUN"); +const u8 gText_SafariZoneMenu[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}BALL{CLEAR_TO 56}BAIT\nROCK{CLEAR_TO 56}RUN"); const u8 gText_MoveInterfacePP[] = _("PP "); const u8 gText_MoveInterfaceType[] = _("TYPE/"); -const u8 gUnknown_83FE770[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); -const u8 gUnknown_83FE779[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}どの わざを\nわすれさせたい?"); +const u8 gText_MoveInterfaceDynamicColors[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); +const u8 gText_WhichMoveToForget_Unused[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}どの わざを\nわすれさせたい?"); const u8 gText_BattleYesNoChoice[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Yes\nNo"); const u8 gText_BattleSwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}Switch\nwhich?"); -const u8 gUnknown_83FE7B6[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); -const u8 gUnknown_83FE7BF[] = _("{RIGHT_ARROW_2}"); -const u8 gUnknown_83FE7C2[] = _("{PLUS}"); -const u8 gUnknown_83FE7C5[] = _("-"); +static const u8 sText_UnusedColors[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW 13 14 15}"); +static const u8 sText_RightArrow2[] = _("{RIGHT_ARROW_2}"); +static const u8 sText_Plus[] = _("{PLUS}"); +static const u8 sText_Dash[] = _("-"); -const u8 gUnknown_83FE7C7[] = _("{FONT_0}Max{FONT_2} HP"); -const u8 gUnknown_83FE7D4[] = _("ATTACK "); -const u8 gUnknown_83FE7DC[] = _("DEFENSE"); -const u8 gUnknown_83FE7E4[] = _("SP. ATK"); -const u8 gUnknown_83FE7EC[] = _("SP. DEF"); +static const u8 sText_MaxHP[] = _("{FONT_0}Max{FONT_2} HP"); +static const u8 sText_Attack[] = _("ATTACK "); +static const u8 sText_Defense[] = _("DEFENSE"); +static const u8 sText_SpAtk[] = _("SP. ATK"); +static const u8 sText_SpDef[] = _("SP. DEF"); -const u8 *const gUnknown_83FE7F4[] = { - gUnknown_83FE7C7, - gUnknown_83FE7E4, - gUnknown_83FE7D4, - gUnknown_83FE7EC, - gUnknown_83FE7DC, +// Unused +static const u8 *const sStatNamesTable2[] = +{ + sText_MaxHP, + sText_SpAtk, + sText_Attack, + sText_SpDef, + sText_Defense, sText_Speed }; @@ -1262,81 +1320,84 @@ const u8 gText_Paralysis[] = _("paralysis"); const u8 gText_Ice[] = _("ice"); const u8 gText_Confusion[] = _("confusion"); const u8 gText_Love[] = _("love"); -const u8 gUnknown_83FE859[] = _(" "); -const u8 gUnknown_83FE85C[] = _("\n"); -const u8 gUnknown_83FE85E[] = _("\n"); -const u8 gUnknown_83FE860[] = _(" is"); -const u8 gUnknown_83FE864[] = _(" is"); +const u8 gText_BattleTowerBan_Space[] = _(" "); +const u8 gText_BattleTowerBan_Newline1[] = _("\n"); +const u8 gText_BattleTowerBan_Newline2[] = _("\n"); +const u8 gText_BattleTowerBan_Is1[] = _(" is"); +const u8 gText_BattleTowerBan_Is2[] = _(" is"); const u8 gText_BadEgg[] = _("Bad EGG"); -const u8 gUnknown_83FE870[] = _("ミツル"); +const u8 gText_BattleWallyName[] = _("ミツル"); const u8 gText_Win[] = _("{HIGHLIGHT 0}Win"); const u8 gText_Loss[] = _("{HIGHLIGHT 0}Loss"); const u8 gText_Draw[] = _("{HIGHLIGHT 0}Draw"); static const u8 sText_SpaceIs[] = _(" is"); static const u8 sText_ApostropheS[] = _("'s"); -const u8 gUnknown_83FE892[] = _("a NORMAL move"); -const u8 gUnknown_83FE8A0[] = _("a FIGHTING move"); -const u8 gUnknown_83FE8B0[] = _("a FLYING move"); -const u8 gUnknown_83FE8BE[] = _("a POISON move"); -const u8 gUnknown_83FE8CC[] = _("a GROUND move"); -const u8 gUnknown_83FE8DA[] = _("a ROCK move"); -const u8 gUnknown_83FE8E6[] = _("a BUG move"); -const u8 gUnknown_83FE8F1[] = _("a GHOST move"); -const u8 gUnknown_83FE8FE[] = _("a STEEL move"); -const u8 gUnknown_83FE90B[] = _("a ??? move"); -const u8 gUnknown_83FE916[] = _("a FIRE move"); -const u8 gUnknown_83FE922[] = _("a WATER move"); -const u8 gUnknown_83FE92F[] = _("a GRASS move"); -const u8 gUnknown_83FE93C[] = _("an ELECTRIC move"); -const u8 gUnknown_83FE94D[] = _("a PSYCHIC move"); -const u8 gUnknown_83FE95C[] = _("an ICE move"); -const u8 gUnknown_83FE968[] = _("a DRAGON move"); -const u8 gUnknown_83FE976[] = _("a DARK move"); +const u8 gText_ANormalMove[] = _("a NORMAL move"); +const u8 gText_AFightingMove[] = _("a FIGHTING move"); +const u8 gText_AFlyingMove[] = _("a FLYING move"); +const u8 gText_APoisonMove[] = _("a POISON move"); +const u8 gText_AGroundMove[] = _("a GROUND move"); +const u8 gText_ARockMove[] = _("a ROCK move"); +const u8 gText_ABugMove[] = _("a BUG move"); +const u8 gText_AGhostMove[] = _("a GHOST move"); +const u8 gText_ASteelMove[] = _("a STEEL move"); +const u8 gText_AMysteryMove[] = _("a ??? move"); +const u8 gText_AFireMove[] = _("a FIRE move"); +const u8 gText_AWaterMove[] = _("a WATER move"); +const u8 gText_AGrassMove[] = _("a GRASS move"); +const u8 gText_AnElectricMove[] = _("an ELECTRIC move"); +const u8 gText_APsychicMove[] = _("a PSYCHIC move"); +const u8 gText_AnIceMove[] = _("an ICE move"); +const u8 gText_ADragonMove[] = _("a DRAGON move"); +const u8 gText_ADarkMove[] = _("a DARK move"); const u8 gText_TimeBoard[] = _("TIME BOARD"); const u8 gText_ClearTime[] = _("CLEAR TIME"); // Unused const u8 gText_XMinYZSec[] = _("{STR_VAR_1}MIN. {STR_VAR_2}.{STR_VAR_3}SEC."); -const u8 gUnknown_83FE9A9[] = _("1F"); -const u8 gUnknown_83FE9AC[] = _("2F"); -const u8 gUnknown_83FE9AF[] = _("3F"); -const u8 gUnknown_83FE9B2[] = _("4F"); -const u8 gUnknown_83FE9B5[] = _("5F"); -const u8 gUnknown_83FE9B8[] = _("6F"); -const u8 gUnknown_83FE9BB[] = _("7F"); -const u8 gUnknown_83FE9BE[] = _("8F"); +const u8 gText_Unused_1F[] = _("1F"); +const u8 gText_Unused_2F[] = _("2F"); +const u8 gText_Unused_3F[] = _("3F"); +const u8 gText_Unused_4F[] = _("4F"); +const u8 gText_Unused_5F[] = _("5F"); +const u8 gText_Unused_6F[] = _("6F"); +const u8 gText_Unused_7F[] = _("7F"); +const u8 gText_Unused_8F[] = _("8F"); -const u8 *const gTrainerTowerChallengeTypeTexts[NUM_TOWER_CHALLENGE_TYPES] = { +const u8 *const gTrainerTowerChallengeTypeTexts[NUM_TOWER_CHALLENGE_TYPES] = +{ gOtherText_Single, gOtherText_Double, gOtherText_Knockout, gOtherText_Mixed }; -const u8 gUnknown_83FE9D4[] = _("{PLAY_SE SE_FLEE}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!"); // +static const u8 sText_Trainer1Fled[] = _("{PLAY_SE SE_FLEE}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!"); static const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); static const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); -static const u8 *const sATypeMove_Table[] = { - gUnknown_83FE892, - gUnknown_83FE8A0, - gUnknown_83FE8B0, - gUnknown_83FE8BE, - gUnknown_83FE8CC, - gUnknown_83FE8DA, - gUnknown_83FE8E6, - gUnknown_83FE8F1, - gUnknown_83FE8FE, - gUnknown_83FE90B, - gUnknown_83FE916, - gUnknown_83FE922, - gUnknown_83FE92F, - gUnknown_83FE93C, - gUnknown_83FE94D, - gUnknown_83FE95C, - gUnknown_83FE968, - gUnknown_83FE976 +static const u8 *const sATypeMove_Table[NUMBER_OF_MON_TYPES] = +{ + [TYPE_NORMAL] = gText_ANormalMove, + [TYPE_FIGHTING] = gText_AFightingMove, + [TYPE_FLYING] = gText_AFlyingMove, + [TYPE_POISON] = gText_APoisonMove, + [TYPE_GROUND] = gText_AGroundMove, + [TYPE_ROCK] = gText_ARockMove, + [TYPE_BUG] = gText_ABugMove, + [TYPE_GHOST] = gText_AGhostMove, + [TYPE_STEEL] = gText_ASteelMove, + [TYPE_MYSTERY] = gText_AMysteryMove, + [TYPE_FIRE] = gText_AFireMove, + [TYPE_WATER] = gText_AWaterMove, + [TYPE_GRASS] = gText_AGrassMove, + [TYPE_ELECTRIC] = gText_AnElectricMove, + [TYPE_PSYCHIC] = gText_APsychicMove, + [TYPE_ICE] = gText_AnIceMove, + [TYPE_DRAGON] = gText_ADragonMove, + [TYPE_DARK] = gText_ADarkMove }; -static const u16 sGrammarMoveUsedTable[] = { +static const u16 sGrammarMoveUsedTable[] = +{ MOVE_SWORDS_DANCE, MOVE_STRENGTH, MOVE_GROWTH, @@ -1460,7 +1521,6 @@ static const u16 sGrammarMoveUsedTable[] = { MOVE_NONE }; -// code void BufferStringBattle(u16 stringId) { s32 i; @@ -1499,7 +1559,7 @@ void BufferStringBattle(u16 stringId) } else { - if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) stringPtr = sText_Trainer1WantsToBattle; else stringPtr = sText_LinkTrainerWantsToBattle; @@ -1559,7 +1619,7 @@ void BufferStringBattle(u16 stringId) { if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) stringPtr = sText_Trainer1SentOutPkmn; - else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) stringPtr = sText_Trainer1SentOutPkmn; else stringPtr = sText_LinkTrainerSentOutPkmn; @@ -1611,7 +1671,7 @@ void BufferStringBattle(u16 stringId) { if (gBattleTypeFlags & BATTLE_TYPE_MULTI) stringPtr = sText_LinkTrainerMultiSentOutPkmn; - else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) stringPtr = sText_Trainer1SentOutPkmn2; else stringPtr = sText_LinkTrainerSentOutPkmn2; @@ -1644,8 +1704,8 @@ void BufferStringBattle(u16 stringId) stringPtr = sText_GotAwaySafely; else if (gBattleTypeFlags & BATTLE_TYPE_MULTI) stringPtr = sText_TwoWildFled; - else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) - stringPtr = gUnknown_83FE9D4; + else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) + stringPtr = sText_Trainer1Fled; else stringPtr = sText_WildFled; } @@ -1669,7 +1729,7 @@ void BufferStringBattle(u16 stringId) break; } } - else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) { switch (gBattleTextBuff1[0]) { @@ -1702,7 +1762,7 @@ void BufferStringBattle(u16 stringId) } break; default: // load a string from the table - if (stringId >= BATTLESTRINGS_COUNT + BATTLESTRINGS_TABLE_START) + if (stringId >= BATTLESTRINGS_COUNT) { gDisplayedStringBattle[0] = EOS; return; @@ -1770,7 +1830,7 @@ static const u8 *TryGetStatusString(u8 *src) { \ GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \ } \ - StringGetEnd10(text); \ + StringGet_Nickname(text); \ toCpy = text; u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) @@ -1833,49 +1893,49 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) case B_TXT_PLAYER_MON1_NAME: // first player poke name GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_OPPONENT_MON1_NAME: // first enemy poke name GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_PLAYER_MON2_NAME: // second player poke name GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_OPPONENT_MON2_NAME: // second enemy poke name GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_LINK_PLAYER_MON1_NAME: // link first player poke name GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_LINK_OPPONENT_MON1_NAME: // link first opponent poke name GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id ^ 1]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_LINK_PLAYER_MON2_NAME: // link second player poke name GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id ^ 2]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_LINK_OPPONENT_MON2_NAME: // link second opponent poke name GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerId].id ^ 3]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_ATK_NAME_WITH_PREFIX_MON1: // attacker name with prefix, only battlerId 0/1 @@ -1892,7 +1952,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) &gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(GET_BATTLER_SIDE(gBattlerAttacker)) + 2]], MON_DATA_NICKNAME, text); - StringGetEnd10(text); + StringGet_Nickname(text); toCpy = text; break; case B_TXT_ATK_NAME_WITH_PREFIX: // attacker name with prefix @@ -1983,7 +2043,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) case B_TXT_TRAINER1_CLASS: // trainer class name if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT) toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()]; - else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + else if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) toCpy = gTrainerClassNames[GetUnionRoomTrainerClass()]; else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) toCpy = gTrainerClassNames[GetBattleTowerTrainerClassNameId()]; @@ -2002,7 +2062,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) text[i] = EOS; toCpy = text; } - if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00) + if (gTrainerBattleOpponent_A == TRAINER_UNION_ROOM) { toCpy = gLinkPlayers[multiplayerId ^ BIT_SIDE].name; } @@ -2129,29 +2189,24 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst) // missing if (toCpy != NULL) check while (*toCpy != EOS) { - dst[dstId] = *toCpy; - dstId++; + dst[dstId++] = *toCpy; toCpy++; } if (*src == B_TXT_TRAINER1_LOSE_TEXT || *src == B_TXT_TRAINER1_WIN_TEXT || *src == B_TXT_TRAINER2_LOSE_TEXT || *src == B_TXT_TRAINER2_WIN_TEXT) { - dst[dstId] = EXT_CTRL_CODE_BEGIN; - dstId++; - dst[dstId] = 9; - dstId++; + dst[dstId++] = EXT_CTRL_CODE_BEGIN; + dst[dstId++] = EXT_CTRL_CODE_WAIT_BUTTON; } } else { - dst[dstId] = *src; - dstId++; + dst[dstId++] = *src; } src++; } - dst[dstId] = *src; - dstId++; + dst[dstId++] = *src; return dstId; } @@ -2211,7 +2266,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) GetMonData(&gEnemyParty[src[srcId + 2]], MON_DATA_NICKNAME, text); } - StringGetEnd10(text); + StringGet_Nickname(text); StringAppend(dst, text); srcId += 3; break; @@ -2228,7 +2283,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst) GetMonData(&gPlayerParty[src[srcId + 2]], MON_DATA_NICKNAME, dst); else GetMonData(&gEnemyParty[src[srcId + 2]], MON_DATA_NICKNAME, dst); - StringGetEnd10(dst); + StringGet_Nickname(dst); srcId += 3; break; case B_BUFF_NEGATIVE_FLAVOR: // flavor table @@ -2351,31 +2406,306 @@ static void ChooseTypeOfMoveUsedString(u8 *dst) } static const struct BattleWindowText sTextOnWindowsInfo_Normal[] = { - {PIXEL_FILL(0xf), 2, 0x02, 2, 0, 2, 1, 0x1, 0xf, 0x6}, - {PIXEL_FILL(0xf), 2, 0x02, 2, 0, 2, 0, 0x1, 0xf, 0x6}, - {PIXEL_FILL(0xe), 1, 0x00, 2, 0, 2, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 0, 0x00, 1, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 0, 0x00, 1, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 0, 0x00, 1, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 0, 0x00, 1, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 0, 0x00, 2, 0, 0, 0, 0xc, 0xe, 0xb}, - {PIXEL_FILL(0xe), 0, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 1, 0x0a, 2, 0, 2, 0, 0xc, 0xe, 0xb}, - {PIXEL_FILL(0xe), 1, 0x00, 2, 0, 2, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 1, 0x00, 2, 0, 2, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 0, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0x0), 0, 0x20, 0, 0, 0, 0, 0x1, 0x0, 0x2}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 1, 2, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0xe), 2, 0x00, 2, 0, 0, 0, 0xd, 0xe, 0xf}, - {PIXEL_FILL(0x0), 2, 0x00, 2, 0, 0, 0, 0x1, 0x0, 0x6}, - {PIXEL_FILL(0x0), 2, 0x00, 2, 0, 0, 0, 0x1, 0x0, 0x6}, - {PIXEL_FILL(0x0), 2, 0x00, 2, 0, 0, 0, 0x1, 0x0, 0x6}, - {PIXEL_FILL(0x1), 4, 0x00, 1, 0, 1, 1, 0x2, 0x1, 0x3} + [B_WIN_MSG] = { + .fillValue = PIXEL_FILL(0xf), + .fontId = FONT_2, + .x = 2, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 2, + .speed = 1, + .fgColor = 1, + .bgColor = 15, + .shadowColor = 6, + }, + [B_WIN_ACTION_PROMPT] = { + .fillValue = PIXEL_FILL(0xf), + .fontId = FONT_2, + .x = 2, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 2, + .speed = 0, + .fgColor = 1, + .bgColor = 15, + .shadowColor = 6, + }, + [B_WIN_ACTION_MENU] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_1, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 2, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_MOVE_NAME_1] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_0, + .x = 0, + .y = 1, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_MOVE_NAME_2] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_0, + .x = 0, + .y = 1, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_MOVE_NAME_3] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_0, + .x = 0, + .y = 1, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_MOVE_NAME_4] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_0, + .x = 0, + .y = 1, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_PP] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_0, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 12, + .bgColor = 14, + .shadowColor = 11, + }, + [B_WIN_MOVE_TYPE] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_0, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_PP_REMAINING] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_1, + .x = 10, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 2, + .speed = 0, + .fgColor = 12, + .bgColor = 14, + .shadowColor = 11, + }, + [B_WIN_DUMMY] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_1, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 2, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_SWITCH_PROMPT] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_1, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 2, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_LEVEL_UP_BOX] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 0, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_LEVEL_UP_BANNER] = { + .fillValue = PIXEL_FILL(0x0), + .fontId = FONT_0, + .x = 0x20, + .y = 0, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 1, + .bgColor = 0, + .shadowColor = 2, + }, + [B_WIN_YESNO] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 1, + .lineSpacing = 2, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_PLAYER] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_OPPONENT] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_MULTI_PLAYER_1] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_MULTI_PLAYER_2] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_MULTI_PLAYER_3] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_MULTI_PLAYER_4] = { + .fillValue = PIXEL_FILL(0xe), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 13, + .bgColor = 14, + .shadowColor = 15, + }, + [B_WIN_VS_OUTCOME_DRAW] = { + .fillValue = PIXEL_FILL(0x0), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 1, + .bgColor = 0, + .shadowColor = 6, + }, + [B_WIN_VS_OUTCOME_LEFT] = { + .fillValue = PIXEL_FILL(0x0), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 1, + .bgColor = 0, + .shadowColor = 6, + }, + [B_WIN_VS_OUTCOME_RIGHT] = { + .fillValue = PIXEL_FILL(0x0), + .fontId = FONT_2, + .x = 0, + .y = 2, + .letterSpacing = 0, + .lineSpacing = 0, + .speed = 0, + .fgColor = 1, + .bgColor = 0, + .shadowColor = 6, + }, + [B_WIN_OAK_OLD_MAN] = { + .fillValue = PIXEL_FILL(0x1), + .fontId = FONT_4, + .x = 0, + .y = 1, + .letterSpacing = 0, + .lineSpacing = 1, + .speed = 1, + .fgColor = 2, + .bgColor = 1, + .shadowColor = 3, + } }; const u8 gUnknown_83FEC90[] = {0x04, 0x05, 0x02, 0x02}; @@ -2403,11 +2733,18 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) { } switch (windowId) { - case 15 ... 20: + case B_WIN_VS_PLAYER: + case B_WIN_VS_OPPONENT: + case B_WIN_VS_MULTI_PLAYER_1: + case B_WIN_VS_MULTI_PLAYER_2: + case B_WIN_VS_MULTI_PLAYER_3: + case B_WIN_VS_MULTI_PLAYER_4: x = (48 - GetStringWidth(sTextOnWindowsInfo_Normal[windowId].fontId, text, sTextOnWindowsInfo_Normal[windowId].letterSpacing)) / 2; break; - case 21 ... 23: + case B_WIN_VS_OUTCOME_DRAW: + case B_WIN_VS_OUTCOME_LEFT: + case B_WIN_VS_OUTCOME_RIGHT: x = (64 - GetStringWidth(sTextOnWindowsInfo_Normal[windowId].fontId, text, sTextOnWindowsInfo_Normal[windowId].letterSpacing)) / 2; break; @@ -2429,17 +2766,17 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) { printerTemplate.fgColor = sTextOnWindowsInfo_Normal[windowId].fgColor; printerTemplate.bgColor = sTextOnWindowsInfo_Normal[windowId].bgColor; printerTemplate.shadowColor = sTextOnWindowsInfo_Normal[windowId].shadowColor; - if (windowId == 24) + if (windowId == B_WIN_OAK_OLD_MAN) gTextFlags.useAlternateDownArrow = FALSE; else gTextFlags.useAlternateDownArrow = TRUE; - if ((gBattleTypeFlags & BATTLE_TYPE_LINK) || ((gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) && windowId != 24)) + if ((gBattleTypeFlags & BATTLE_TYPE_LINK) || ((gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) && windowId != B_WIN_OAK_OLD_MAN)) gTextFlags.autoScroll = TRUE; else gTextFlags.autoScroll = FALSE; - if (windowId == 0 || windowId == 24) + if (windowId == B_WIN_MSG || windowId == B_WIN_OAK_OLD_MAN) { if (gBattleTypeFlags & BATTLE_TYPE_LINK) speed = 1; @@ -2471,7 +2808,7 @@ bool8 BattleStringShouldBeColored(u16 stringId) void SetPpNumbersPaletteInMoveSelection(void) { struct ChooseMoveStruct *chooseMoveStruct = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]); - const u16 *palPtr = gUnknown_8D2FBB4; + const u16 *palPtr = gPPTextPalette; u8 var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[gActiveBattler]], chooseMoveStruct->maxPp[gMoveSelectionCursor[gActiveBattler]]); diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 92dc9ecf4..272c900bb 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -6125,7 +6125,7 @@ static void Cmd_various(void) gHitMarker &= ~HITMARKER_PLAYER_FAINTED; } break; - case VARIOUS_CASE_8: + case VARIOUS_GET_BATTLERS_FOR_RECALL: i = 0; // redundant gBattleCommunication[MULTISTRING_CHOOSER] = 0; gActiveBattler = 1; diff --git a/src/battle_tower.c b/src/battle_tower.c index 5c6672f6e..134e82a11 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -717,21 +717,21 @@ static u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 count) if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT)) { if (count == 0) - StringAppend(gStringVar1, gUnknown_83FE859); + StringAppend(gStringVar1, gText_BattleTowerBan_Space); count++; StringAppend(gStringVar1, gSpeciesNames[species]); switch (count) { case 2: - StringAppend(gStringVar1, gUnknown_83FE85E); + StringAppend(gStringVar1, gText_BattleTowerBan_Newline2); break; case 5: case 8: case 11: - StringAppend(gStringVar1, gUnknown_83FE85C); + StringAppend(gStringVar1, gText_BattleTowerBan_Newline1); break; default: - StringAppend(gStringVar1, gUnknown_83FE859); + StringAppend(gStringVar1, gText_BattleTowerBan_Space); break; } } @@ -815,9 +815,9 @@ void CheckPartyBattleTowerBanlist(void) i = StringLength(gStringVar1); gStringVar1[i - 1] = EOS; if (counter < 3) - StringAppend(gStringVar1, gUnknown_83FE860); + StringAppend(gStringVar1, gText_BattleTowerBan_Is1); else - StringAppend(gStringVar1, gUnknown_83FE864); + StringAppend(gStringVar1, gText_BattleTowerBan_Is2); } else { @@ -1119,7 +1119,7 @@ static void SetPlayerBattleTowerRecord(void) playerRecord->trainerClass = trainerClass; CopyTrainerId(playerRecord->trainerId, gSaveBlock2Ptr->playerTrainerId); - StringCopy7(playerRecord->name, gSaveBlock2Ptr->playerName); + StringCopy_PlayerName(playerRecord->name, gSaveBlock2Ptr->playerName); playerRecord->winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType); @@ -1310,7 +1310,7 @@ static void Debug_FillEReaderTrainerWithPlayerData(void) } CopyTrainerId(ereaderTrainer->trainerId, gSaveBlock2Ptr->playerTrainerId); - StringCopy7(ereaderTrainer->name, gSaveBlock2Ptr->playerName); + StringCopy_PlayerName(ereaderTrainer->name, gSaveBlock2Ptr->playerName); ereaderTrainer->winStreak = 1; diff --git a/src/field_poison.c b/src/field_poison.c index 1e2a30c0c..9c8b1f4b9 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -36,7 +36,7 @@ static void FaintFromFieldPoison(u8 partyIdx) AdjustFriendship(pokemon, FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE); SetMonData(pokemon, MON_DATA_STATUS, &status); GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1); - StringGetEnd10(gStringVar1); + StringGet_Nickname(gStringVar1); } static bool32 MonFaintedFromPoison(u8 partyIdx) diff --git a/src/field_specials.c b/src/field_specials.c index d306236cb..92c47c2eb 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1663,7 +1663,7 @@ static void ChangePokemonNickname_CB(void) void BufferMonNickname(void) { GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1); - StringGetEnd10(gStringVar1); + StringGet_Nickname(gStringVar1); } void IsMonOTIDNotPlayers(void) diff --git a/src/graphics.c b/src/graphics.c index b7694f158..ce702daf4 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -950,7 +950,7 @@ const u32 gBattleAnimSpritePal_Meteor[] = INCBIN_U32("graphics/battle_anims/spri const u32 gBattleAnimSpriteGfx_FlatRock[] = INCBIN_U32("graphics/battle_anims/sprites/flat_rock.4bpp.lz"); const u32 gBattleAnimSpritePal_FlatRock[] = INCBIN_U32("graphics/battle_anims/sprites/flat_rock.gbapal.lz"); -const u16 gUnknown_8D2FBB4[] = INCBIN_U16("graphics/interface/unk_8D2FBB4.gbapal"); +const u16 gPPTextPalette[] = INCBIN_U16("graphics/interface/text_pp.gbapal"); #include "data/graphics/pokemon.h" #include "data/graphics/trainers.h" diff --git a/src/party_menu.c b/src/party_menu.c index ee2800801..faeca7ef9 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -895,7 +895,7 @@ static void DisplayPartyPokemonDataForMultiBattle(u8 slot) { menuBox->infoRects->blitFunc(menuBox->windowId, 0, 0, 0, 0, FALSE); StringCopy(gStringVar1, gMultiPartnerParty[actualSlot].nickname); - StringGetEnd10(gStringVar1); + StringGet_Nickname(gStringVar1); if (StringLength(gStringVar1) <= 5) ConvertInternationalString(gStringVar1, 1); DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, menuBox->infoRects->dimensions); @@ -1530,7 +1530,7 @@ static s8 GetNewSlotDoubleLayout(s8 slotId, s8 movementDir) u8 *GetMonNickname(struct Pokemon *mon, u8 *dest) { GetMonData(mon, MON_DATA_NICKNAME, dest); - return StringGetEnd10(dest); + return StringGet_Nickname(dest); } #define tKeepOpen data[0] diff --git a/src/pokemon.c b/src/pokemon.c index e2bfb20cf..8955cfe4c 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -6082,7 +6082,7 @@ bool8 CheckBattleTypeGhost(struct Pokemon *mon, u8 battlerId) if (gBattleTypeFlags & BATTLE_TYPE_GHOST && GetBattlerSide(battlerId) != B_SIDE_PLAYER) { GetMonData(mon, MON_DATA_NICKNAME, buffer); - StringGetEnd10(buffer); + StringGet_Nickname(buffer); if (!StringCompare(buffer, gText_Ghost)) return TRUE; } diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_5.c index f01a1551b..8074b57c4 100644 --- a/src/pokemon_storage_system_5.c +++ b/src/pokemon_storage_system_5.c @@ -1026,7 +1026,7 @@ static void SetCursorMonData(void *pokemon, u8 mode) gPSSData->displayMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG); GetMonData(mon, MON_DATA_NICKNAME, gPSSData->displayMonName); - StringGetEnd10(gPSSData->displayMonName); + StringGet_Nickname(gPSSData->displayMonName); gPSSData->displayMonLevel = GetMonData(mon, MON_DATA_LEVEL); gPSSData->displayMonMarkings = GetMonData(mon, MON_DATA_MARKINGS); gPSSData->displayMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY); @@ -1051,7 +1051,7 @@ static void SetCursorMonData(void *pokemon, u8 mode) GetBoxMonData(boxMon, MON_DATA_NICKNAME, gPSSData->displayMonName); - StringGetEnd10(gPSSData->displayMonName); + StringGet_Nickname(gPSSData->displayMonName); gPSSData->displayMonLevel = GetLevelFromBoxMonExp(boxMon); gPSSData->displayMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS); gPSSData->displayMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY); diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index fa3731083..bfe9fd267 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -2110,7 +2110,7 @@ static void BufferMonInfo(void) GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_NICKNAME, tempStr); StringCopyN_Multibyte(sMonSummaryScreen->summary.nicknameStrBuf, tempStr, POKEMON_NAME_LENGTH); - StringGetEnd10(sMonSummaryScreen->summary.nicknameStrBuf); + StringGet_Nickname(sMonSummaryScreen->summary.nicknameStrBuf); gender = GetMonGender(&sMonSummaryScreen->currentMon); dexNum = GetMonData(&sMonSummaryScreen->currentMon, MON_DATA_SPECIES2); diff --git a/src/quest_log_events.c b/src/quest_log_events.c index e805b5f2e..6dc645b93 100644 --- a/src/quest_log_events.c +++ b/src/quest_log_events.c @@ -1149,9 +1149,9 @@ static const u16 *BufferQuestLogText_LinkBattledMulti(const u16 *a0) memset(gStringVar1, EOS, PLAYER_NAME_LENGTH + 1); memset(gStringVar2, EOS, PLAYER_NAME_LENGTH + 1); memset(gStringVar3, EOS, PLAYER_NAME_LENGTH + 1); - StringCopy7(gStringVar1, (const u8 *)a0 + 5); - StringCopy7(gStringVar2, (const u8 *)a0 + 12); - StringCopy7(gStringVar3, (const u8 *)a0 + 19); + StringCopy_PlayerName(gStringVar1, (const u8 *)a0 + 5); + StringCopy_PlayerName(gStringVar2, (const u8 *)a0 + 12); + StringCopy_PlayerName(gStringVar3, (const u8 *)a0 + 19); BufferLinkPartnersName(gStringVar1); BufferLinkPartnersName(gStringVar2); BufferLinkPartnersName(gStringVar3); diff --git a/src/scrcmd.c b/src/scrcmd.c index 823593623..3640aba6a 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1616,7 +1616,7 @@ bool8 ScrCmd_bufferpartymonnick(struct ScriptContext * ctx) u16 partyIndex = VarGet(ScriptReadHalfword(ctx)); GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]); - StringGetEnd10(sScriptStringVars[stringVarIndex]); + StringGet_Nickname(sScriptStringVars[stringVarIndex]); return FALSE; } diff --git a/src/string_util.c b/src/string_util.c index ffb51b354..4744e231c 100644 --- a/src/string_util.c +++ b/src/string_util.c @@ -54,10 +54,10 @@ u8 *StringCopy_Nickname(u8 *dest, const u8 *src) return &dest[i]; } -u8 *StringGetEnd10(u8 *str) +u8 *StringGet_Nickname(u8 *str) { u8 i; - u32 limit = 10; + u32 limit = POKEMON_NAME_LENGTH; for (i = 0; i < limit; i++) if (str[i] == EOS) @@ -67,10 +67,10 @@ u8 *StringGetEnd10(u8 *str) return &str[i]; } -u8 *StringCopy7(u8 *dest, const u8 *src) +u8 *StringCopy_PlayerName(u8 *dest, const u8 *src) { s32 i; - s32 limit = 7; + s32 limit = PLAYER_NAME_LENGTH; for (i = 0; i < limit; i++) { diff --git a/src/union_room.c b/src/union_room.c index cadc00181..70973e4aa 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -645,7 +645,7 @@ static const u8 sUnref_84570D1[] = _("{DYNAMIC 00}·{DYNAMIC 01}"); // These are functions in Emerald but inlined in FireRed #define IntlConvPartnerUname7(dest, arg1) ({ \ - StringCopy7(dest, (arg1).gname_uname.uname); \ + StringCopy_PlayerName(dest, (arg1).gname_uname.uname); \ ConvertInternationalString(dest, (arg1).gname_uname.gname.unk_00.language); \ }) diff --git a/src/union_room_battle.c b/src/union_room_battle.c index 56676ab7b..907c9ef8d 100644 --- a/src/union_room_battle.c +++ b/src/union_room_battle.c @@ -58,7 +58,7 @@ static void SetUpPartiesAndStartBattle(void) } IncrementGameStat(GAME_STAT_NUM_UNION_ROOM_BATTLES); CalculatePlayerPartyCount(); - gTrainerBattleOpponent_A = TRAINER_OPPONENT_C00; + gTrainerBattleOpponent_A = TRAINER_UNION_ROOM; SetMainCallback2(CB2_InitBattle); }