pokeemerald/src/battle_message.c

3383 lines
142 KiB
C
Raw Normal View History

2017-10-07 15:15:47 +02:00
#include "global.h"
#include "battle.h"
#include "battle_message.h"
2018-02-08 00:35:13 +01:00
#include "constants/battle_string_ids.h"
2017-12-11 19:27:51 +01:00
#include "constants/moves.h"
2017-10-07 15:15:47 +02:00
#include "text.h"
#include "string_util.h"
2017-12-05 18:55:48 +01:00
#include "constants/items.h"
2018-07-01 11:15:42 +02:00
#include "constants/trainers.h"
#include "event_data.h"
#include "link.h"
#include "item.h"
2017-10-08 14:54:51 +02:00
#include "window.h"
#include "palette.h"
#include "battle_controllers.h"
2017-12-01 21:25:13 +01:00
#include "battle_setup.h"
2018-02-09 01:09:02 +01:00
#include "menu.h"
#include "recorded_battle.h"
#include "international_string_util.h"
2017-10-07 15:15:47 +02:00
2018-06-17 16:48:58 +02:00
struct BattleWindowText
{
u8 fillValue;
u8 fontId;
u8 x;
u8 y;
u8 letterSpacing;
u8 lineSpacing;
u8 speed;
u8 fgColor;
u8 bgColor;
u8 shadowColor;
};
2017-10-08 14:54:51 +02:00
extern u8 gUnknown_0203C7B4;
2017-10-07 15:15:47 +02:00
extern const u8 gMoveNames[MOVES_COUNT][13];
extern const u8 gTrainerClassNames[][13];
2017-10-08 14:54:51 +02:00
extern const u16 gUnknown_08D85620[];
2017-10-07 15:15:47 +02:00
// strings
extern const u8 gText_PkmnBoxSomeonesPCFull[];
extern const u8 gText_PkmnBoxLanettesPCFull[];
extern const u8 gText_PkmnTransferredSomeonesPC[];
extern const u8 gText_PkmnTransferredLanettesPC[];
extern u8 GetFrontierBrainTrainerClass(void); // battle_frontier_2
extern u8 GetFrontierOpponentClass(u16 trainerId); // battle_tower
extern u8 sub_81D5530(u16 trainerId); // pokenav
extern u8 GetEreaderTrainerClassId(void); // battle_tower
extern void CopyFrontierBrainTrainerName(u8 *txtPtr); // battle_frontier_2
extern void sub_81D5554(u8 *txtPtr, u16 trainerId); // pokenav
extern void GetEreaderTrainerName(u8 *txtPtr);
extern void sub_81A36D0(u8 arg0, u16 trainerId); // battle_frontier_2
extern void sub_81D572C(u8 arg0, u16 trainerId); // pokenav
extern void GetFrontierTrainerName(u8 *dst, u16 trainerId);
2018-07-24 20:13:02 +02:00
// this files functions
2018-06-30 14:12:17 +02:00
static void ChooseMoveUsedParticle(u8 *textPtr);
static void ChooseTypeOfMoveUsedString(u8 *dst);
static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst);
2017-10-07 15:15:47 +02:00
2018-06-30 15:35:54 +02:00
// EWRAM vars
static EWRAM_DATA u8 sBattlerAbilities[MAX_BATTLERS_COUNT] = {0};
EWRAM_DATA struct BattleMsgData *gBattleMsgDataPtr = NULL;
2017-10-07 15:15:47 +02:00
// const rom data
2017-10-08 14:54:51 +02:00
// todo: make some of those names less vague: attacker/target vs pkmn, etc.
2017-10-07 15:15:47 +02:00
2018-02-28 23:50:25 +01:00
static const u8 sText_Trainer1LoseText[] = _("{B_TRAINER1_LOSE_TEXT}");
static const u8 sText_PkmnGainedEXP[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_BUFF3} EXP. Points!\p");
static const u8 sText_EmptyString4[] = _("");
static const u8 sText_ABoosted[] = _(" a boosted");
static const u8 sText_PkmnGrewToLv[] = _("{B_BUFF1} grew to\nLV. {B_BUFF2}!{UNKNOWN_A}\p");
static const u8 sText_PkmnLearnedMove[] = _("{B_BUFF1} learned\n{B_BUFF2}!{UNKNOWN_A}\p");
static const u8 sText_TryToLearnMove1[] = _("{B_BUFF1} is trying to\nlearn {B_BUFF2}.\p");
static const u8 sText_TryToLearnMove2[] = _("But, {B_BUFF1} cant learn\nmore than four moves.\p");
static const u8 sText_TryToLearnMove3[] = _("Delete a move to make\nroom for {B_BUFF2}?");
static const u8 sText_PkmnForgotMove[] = _("{B_BUFF1} forgot\n{B_BUFF2}.\p");
static const u8 sText_StopLearningMove[] = _("{PAUSE 32}Stop learning\n{B_BUFF2}?");
static const u8 sText_DidNotLearnMove[] = _("{B_BUFF1} did not learn\n{B_BUFF2}.\p");
static const u8 sText_UseNextPkmn[] = _("Use next POKéMON?");
static const u8 sText_AttackMissed[] = _("{B_ATK_NAME_WITH_PREFIX}s\nattack missed!");
static const u8 sText_PkmnProtectedItself[] = _("{B_DEF_NAME_WITH_PREFIX}\nprotected itself!");
static const u8 sText_AvoidedDamage[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\ndamage with {B_DEF_ABILITY}!");
static const u8 sText_PkmnMakesGroundMiss[] = _("{B_DEF_NAME_WITH_PREFIX} makes GROUND\nmoves miss with {B_DEF_ABILITY}!");
static const u8 sText_PkmnAvoidedAttack[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\nthe attack!");
static const u8 sText_ItDoesntAffect[] = _("It doesnt affect\n{B_DEF_NAME_WITH_PREFIX}…");
static const u8 sText_AttackerFainted[] = _("{B_ATK_NAME_WITH_PREFIX}\nfainted!\p");
static const u8 sText_TargetFainted[] = _("{B_DEF_NAME_WITH_PREFIX}\nfainted!\p");
static const u8 sText_PlayerGotMoney[] = _("{B_PLAYER_NAME} got ¥{B_BUFF1}\nfor winning!\p");
static const u8 sText_PlayerWhiteout[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\p");
static const u8 sText_PlayerWhiteout2[] = _("{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}");
static const u8 sText_PreventsEscape[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents\nescape with {B_SCR_ACTIVE_ABILITY}!\p");
static const u8 sText_CantEscape2[] = _("Cant escape!\p");
static const u8 sText_AttackerCantEscape[] = _("{B_ATK_NAME_WITH_PREFIX} cant escape!");
static const u8 sText_HitXTimes[] = _("Hit {B_BUFF1} time(s)!");
static const u8 sText_PkmnFellAsleep[] = _("{B_EFF_NAME_WITH_PREFIX}\nfell asleep!");
static const u8 sText_PkmnMadeSleep[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nmade {B_EFF_NAME_WITH_PREFIX} sleep!");
static const u8 sText_PkmnAlreadyAsleep[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready asleep!");
static const u8 sText_PkmnAlreadyAsleep2[] = _("{B_ATK_NAME_WITH_PREFIX} is\nalready asleep!");
static const u8 sText_PkmnWasntAffected[] = _("{B_DEF_NAME_WITH_PREFIX}\nwasnt affected!");
static const u8 sText_PkmnWasPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX}\nwas poisoned!");
static const u8 sText_PkmnPoisonedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\npoisoned {B_EFF_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnHurtByPoison[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby poison!");
static const u8 sText_PkmnAlreadyPoisoned[] = _("{B_DEF_NAME_WITH_PREFIX} is already\npoisoned.");
static const u8 sText_PkmnBadlyPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX} is badly\npoisoned!");
static const u8 sText_PkmnEnergyDrained[] = _("{B_DEF_NAME_WITH_PREFIX} had its\nenergy drained!");
static const u8 sText_PkmnWasBurned[] = _("{B_EFF_NAME_WITH_PREFIX} was burned!");
static const u8 sText_PkmnBurnedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nburned {B_EFF_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnHurtByBurn[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby its burn!");
static const u8 sText_PkmnAlreadyHasBurn[] = _("{B_DEF_NAME_WITH_PREFIX} already\nhas a burn.");
static const u8 sText_PkmnWasFrozen[] = _("{B_EFF_NAME_WITH_PREFIX} was\nfrozen solid!");
static const u8 sText_PkmnFrozenBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nfroze {B_EFF_NAME_WITH_PREFIX} solid!");
static const u8 sText_PkmnIsFrozen[] = _("{B_ATK_NAME_WITH_PREFIX} is\nfrozen solid!");
static const u8 sText_PkmnWasDefrosted[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndefrosted!");
static const u8 sText_PkmnWasDefrosted2[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted!");
static const u8 sText_PkmnWasDefrostedBy[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted by {B_CURRENT_MOVE}!");
static const u8 sText_PkmnWasParalyzed[] = _("{B_EFF_NAME_WITH_PREFIX} is paralyzed!\nIt may be unable to move!");
static const u8 sText_PkmnWasParalyzedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nparalyzed {B_EFF_NAME_WITH_PREFIX}!\lIt may be unable to move!");
static const u8 sText_PkmnIsParalyzed[] = _("{B_ATK_NAME_WITH_PREFIX} is paralyzed!\nIt cant move!");
static const u8 sText_PkmnIsAlreadyParalyzed[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready paralyzed!");
static const u8 sText_PkmnHealedParalysis[] = _("{B_DEF_NAME_WITH_PREFIX} was\nhealed of paralysis!");
static const u8 sText_PkmnDreamEaten[] = _("{B_DEF_NAME_WITH_PREFIX}s\ndream was eaten!");
static const u8 sText_StatsWontIncrease[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_BUFF1}\nwont go higher!");
static const u8 sText_StatsWontDecrease[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_BUFF1}\nwont go lower!");
static const u8 sText_TeamStoppedWorking[] = _("Your teams {B_BUFF1}\nstopped working!");
static const u8 sText_FoeStoppedWorking[] = _("The foes {B_BUFF1}\nstopped working!");
static const u8 sText_PkmnIsConfused[] = _("{B_ATK_NAME_WITH_PREFIX} is\nconfused!");
static const u8 sText_PkmnHealedConfusion[] = _("{B_ATK_NAME_WITH_PREFIX} snapped\nout of confusion!");
static const u8 sText_PkmnWasConfused[] = _("{B_EFF_NAME_WITH_PREFIX} became\nconfused!");
static const u8 sText_PkmnAlreadyConfused[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready confused!");
static const u8 sText_PkmnFellInLove[] = _("{B_DEF_NAME_WITH_PREFIX}\nfell in love!");
static const u8 sText_PkmnInLove[] = _("{B_ATK_NAME_WITH_PREFIX} is in love\nwith {B_SCR_ACTIVE_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnImmobilizedByLove[] = _("{B_ATK_NAME_WITH_PREFIX} is\nimmobilized by love!");
static const u8 sText_PkmnBlownAway[] = _("{B_DEF_NAME_WITH_PREFIX} was\nblown away!");
static const u8 sText_PkmnChangedType[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto the {B_BUFF1} type!");
static const u8 sText_PkmnFlinched[] = _("{B_ATK_NAME_WITH_PREFIX} flinched!");
static const u8 sText_PkmnRegainedHealth[] = _("{B_DEF_NAME_WITH_PREFIX} regained\nhealth!");
static const u8 sText_PkmnHPFull[] = _("{B_DEF_NAME_WITH_PREFIX}s\nHP is full!");
static const u8 sText_PkmnRaisedSpDef[] = _("{B_ATK_PREFIX2}s {B_CURRENT_MOVE}\nraised SP. DEF!");
static const u8 sText_PkmnRaisedSpDefALittle[] = _("{B_ATK_PREFIX2}s {B_CURRENT_MOVE}\nraised SP. DEF a little!");
static const u8 sText_PkmnRaisedDef[] = _("{B_ATK_PREFIX2}s {B_CURRENT_MOVE}\nraised DEFENSE!");
static const u8 sText_PkmnRaisedDefALittle[] = _("{B_ATK_PREFIX2}s {B_CURRENT_MOVE}\nraised DEFENSE a little!");
static const u8 sText_PkmnCoveredByVeil[] = _("{B_ATK_PREFIX2}s party is covered\nby a veil!");
static const u8 sText_PkmnUsedSafeguard[] = _("{B_DEF_NAME_WITH_PREFIX}s party is protected\nby SAFEGUARD!");
static const u8 sText_PkmnSafeguardExpired[] = _("{B_ATK_PREFIX3}s party is no longer\nprotected by SAFEGUARD!");
static const u8 sText_PkmnWentToSleep[] = _("{B_ATK_NAME_WITH_PREFIX} went\nto sleep!");
static const u8 sText_PkmnSleptHealthy[] = _("{B_ATK_NAME_WITH_PREFIX} slept and\nbecame healthy!");
static const u8 sText_PkmnWhippedWhirlwind[] = _("{B_ATK_NAME_WITH_PREFIX} whipped\nup a whirlwind!");
static const u8 sText_PkmnTookSunlight[] = _("{B_ATK_NAME_WITH_PREFIX} took\nin sunlight!");
static const u8 sText_PkmnLoweredHead[] = _("{B_ATK_NAME_WITH_PREFIX} lowered\nits head!");
static const u8 sText_PkmnIsGlowing[] = _("{B_ATK_NAME_WITH_PREFIX} is glowing!");
static const u8 sText_PkmnFlewHigh[] = _("{B_ATK_NAME_WITH_PREFIX} flew\nup high!");
static const u8 sText_PkmnDugHole[] = _("{B_ATK_NAME_WITH_PREFIX} dug a hole!");
static const u8 sText_PkmnHidUnderwater[] = _("{B_ATK_NAME_WITH_PREFIX} hid\nunderwater!");
static const u8 sText_PkmnSprangUp[] = _("{B_ATK_NAME_WITH_PREFIX} sprang up!");
static const u8 sText_PkmnSqueezedByBind[] = _("{B_DEF_NAME_WITH_PREFIX} was squeezed by\n{B_ATK_NAME_WITH_PREFIX}s BIND!");
static const u8 sText_PkmnTrappedInVortex[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nin the vortex!");
static const u8 sText_PkmnTrappedBySandTomb[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nby SAND TOMB!");
static const u8 sText_PkmnWrappedBy[] = _("{B_DEF_NAME_WITH_PREFIX} was WRAPPED by\n{B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnClamped[] = _("{B_ATK_NAME_WITH_PREFIX} CLAMPED\n{B_DEF_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnHurtBy[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby {B_BUFF1}!");
static const u8 sText_PkmnFreedFrom[] = _("{B_ATK_NAME_WITH_PREFIX} was freed\nfrom {B_BUFF1}!");
static const u8 sText_PkmnCrashed[] = _("{B_ATK_NAME_WITH_PREFIX} kept going\nand crashed!");
2017-10-07 15:15:47 +02:00
const u8 gText_PkmnShroudedInMist[] = _("{B_ATK_PREFIX2} became\nshrouded in MIST!");
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnProtectedByMist[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is protected\nby MIST!");
2017-10-07 15:15:47 +02:00
const u8 gText_PkmnGettingPumped[] = _("{B_ATK_NAME_WITH_PREFIX} is getting\npumped!");
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnHitWithRecoil[] = _("{B_ATK_NAME_WITH_PREFIX} is hit\nwith recoil!");
static const u8 sText_PkmnProtectedItself2[] = _("{B_ATK_NAME_WITH_PREFIX} protected\nitself!");
static const u8 sText_PkmnBuffetedBySandstorm[] = _("{B_ATK_NAME_WITH_PREFIX} is buffeted\nby the sandstorm!");
static const u8 sText_PkmnPeltedByHail[] = _("{B_ATK_NAME_WITH_PREFIX} is pelted\nby HAIL!");
static const u8 sText_PkmnsXWoreOff[] = _("{B_ATK_PREFIX1}s {B_BUFF1}\nwore off!");
static const u8 sText_PkmnSeeded[] = _("{B_DEF_NAME_WITH_PREFIX} was seeded!");
static const u8 sText_PkmnEvadedAttack[] = _("{B_DEF_NAME_WITH_PREFIX} evaded\nthe attack!");
static const u8 sText_PkmnSappedByLeechSeed[] = _("{B_ATK_NAME_WITH_PREFIX}s health is\nsapped by LEECH SEED!");
static const u8 sText_PkmnFastAsleep[] = _("{B_ATK_NAME_WITH_PREFIX} is fast\nasleep.");
static const u8 sText_PkmnWokeUp[] = _("{B_ATK_NAME_WITH_PREFIX} woke up!");
static const u8 sText_PkmnUproarKeptAwake[] = _("But {B_SCR_ACTIVE_NAME_WITH_PREFIX}s UPROAR\nkept it awake!");
static const u8 sText_PkmnWokeUpInUproar[] = _("{B_ATK_NAME_WITH_PREFIX} woke up\nin the UPROAR!");
static const u8 sText_PkmnCausedUproar[] = _("{B_ATK_NAME_WITH_PREFIX} caused\nan UPROAR!");
static const u8 sText_PkmnMakingUproar[] = _("{B_ATK_NAME_WITH_PREFIX} is making\nan UPROAR!");
static const u8 sText_PkmnCalmedDown[] = _("{B_ATK_NAME_WITH_PREFIX} calmed down.");
static const u8 sText_PkmnCantSleepInUproar[] = _("But {B_DEF_NAME_WITH_PREFIX} cant\nsleep in an UPROAR!");
static const u8 sText_PkmnStockpiled[] = _("{B_ATK_NAME_WITH_PREFIX} STOCKPILED\n{B_BUFF1}!");
static const u8 sText_PkmnCantStockpile[] = _("{B_ATK_NAME_WITH_PREFIX} cant\nSTOCKPILE any more!");
static const u8 sText_PkmnCantSleepInUproar2[] = _("But {B_DEF_NAME_WITH_PREFIX} cant\nsleep in an UPROAR!");
static const u8 sText_UproarKeptPkmnAwake[] = _("But the UPROAR kept\n{B_DEF_NAME_WITH_PREFIX} awake!");
static const u8 sText_PkmnStayedAwakeUsing[] = _("{B_DEF_NAME_WITH_PREFIX} stayed awake\nusing its {B_DEF_ABILITY}!");
static const u8 sText_PkmnStoringEnergy[] = _("{B_ATK_NAME_WITH_PREFIX} is storing\nenergy!");
static const u8 sText_PkmnUnleashedEnergy[] = _("{B_ATK_NAME_WITH_PREFIX} unleashed\nenergy!");
static const u8 sText_PkmnFatigueConfusion[] = _("{B_ATK_NAME_WITH_PREFIX} became\nconfused due to fatigue!");
static const u8 sText_PkmnPickedUpItem[] = _("{B_PLAYER_NAME} picked up\n¥{B_BUFF1}!\p");
static const u8 sText_PkmnUnaffected[] = _("{B_DEF_NAME_WITH_PREFIX} is\nunaffected!");
static const u8 sText_PkmnTransformedInto[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto {B_BUFF1}!");
static const u8 sText_PkmnMadeSubstitute[] = _("{B_ATK_NAME_WITH_PREFIX} made\na SUBSTITUTE!");
static const u8 sText_PkmnHasSubstitute[] = _("{B_ATK_NAME_WITH_PREFIX} already\nhas a SUBSTITUTE!");
static const u8 sText_SubstituteDamaged[] = _("The SUBSTITUTE took damage\nfor {B_DEF_NAME_WITH_PREFIX}!\p");
static const u8 sText_PkmnSubstituteFaded[] = _("{B_DEF_NAME_WITH_PREFIX}s\nSUBSTITUTE faded!\p");
static const u8 sText_PkmnMustRecharge[] = _("{B_ATK_NAME_WITH_PREFIX} must\nrecharge!");
static const u8 sText_PkmnRageBuilding[] = _("{B_DEF_NAME_WITH_PREFIX}s RAGE\nis building!");
static const u8 sText_PkmnMoveWasDisabled[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_BUFF1}\nwas disabled!");
static const u8 sText_PkmnMoveDisabledNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is disabled\nno more!");
static const u8 sText_PkmnGotEncore[] = _("{B_DEF_NAME_WITH_PREFIX} got\nan ENCORE!");
static const u8 sText_PkmnEncoreEnded[] = _("{B_ATK_NAME_WITH_PREFIX}s ENCORE\nended!");
static const u8 sText_PkmnTookAim[] = _("{B_ATK_NAME_WITH_PREFIX} took aim\nat {B_DEF_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnSketchedMove[] = _("{B_ATK_NAME_WITH_PREFIX} SKETCHED\n{B_BUFF1}!");
static const u8 sText_PkmnTryingToTakeFoe[] = _("{B_ATK_NAME_WITH_PREFIX} is trying\nto take its foe with it!");
static const u8 sText_PkmnTookFoe[] = _("{B_DEF_NAME_WITH_PREFIX} took\n{B_ATK_NAME_WITH_PREFIX} with it!");
static const u8 sText_PkmnReducedPP[] = _("Reduced {B_DEF_NAME_WITH_PREFIX}s\n{B_BUFF1} by {B_BUFF2}!");
static const u8 sText_PkmnStoleItem[] = _("{B_ATK_NAME_WITH_PREFIX} stole\n{B_DEF_NAME_WITH_PREFIX}s {B_LAST_ITEM}!");
static const u8 sText_TargetCantEscapeNow[] = _("{B_DEF_NAME_WITH_PREFIX} cant\nescape now!");
static const u8 sText_PkmnFellIntoNightmare[] = _("{B_DEF_NAME_WITH_PREFIX} fell into\na NIGHTMARE!");
static const u8 sText_PkmnLockedInNightmare[] = _("{B_ATK_NAME_WITH_PREFIX} is locked\nin a NIGHTMARE!");
static const u8 sText_PkmnLaidCurse[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP and\nlaid a CURSE on {B_DEF_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnAfflictedByCurse[] = _("{B_ATK_NAME_WITH_PREFIX} is afflicted\nby the CURSE!");
static const u8 sText_SpikesScattered[] = _("SPIKES were scattered all around\nthe opponents side!");
static const u8 sText_PkmnHurtBySpikes[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\nby SPIKES!");
static const u8 sText_PkmnIdentified[] = _("{B_ATK_NAME_WITH_PREFIX} identified\n{B_DEF_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnPerishCountFell[] = _("{B_ATK_NAME_WITH_PREFIX}s PERISH count\nfell to {B_BUFF1}!");
static const u8 sText_PkmnBracedItself[] = _("{B_ATK_NAME_WITH_PREFIX} braced\nitself!");
static const u8 sText_PkmnEnduredHit[] = _("{B_DEF_NAME_WITH_PREFIX} ENDURED\nthe hit!");
static const u8 sText_MagnitudeStrength[] = _("MAGNITUDE {B_BUFF1}!");
static const u8 sText_PkmnCutHPMaxedAttack[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP\nand maximized ATTACK!");
static const u8 sText_PkmnCopiedStatChanges[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}s stat changes!");
static const u8 sText_PkmnGotFree[] = _("{B_ATK_NAME_WITH_PREFIX} got free of\n{B_DEF_NAME_WITH_PREFIX}s {B_BUFF1}!");
static const u8 sText_PkmnShedLeechSeed[] = _("{B_ATK_NAME_WITH_PREFIX} shed\nLEECH SEED!");
static const u8 sText_PkmnBlewAwaySpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSPIKES!");
static const u8 sText_PkmnFledFromBattle[] = _("{B_ATK_NAME_WITH_PREFIX} fled from\nbattle!");
static const u8 sText_PkmnForesawAttack[] = _("{B_ATK_NAME_WITH_PREFIX} foresaw\nan attack!");
static const u8 sText_PkmnTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX} took the\n{B_BUFF1} attack!");
static const u8 sText_PkmnChoseXAsDestiny[] = _("{B_ATK_NAME_WITH_PREFIX} chose\n{B_CURRENT_MOVE} as its destiny!");
static const u8 sText_PkmnAttack[] = _("{B_BUFF1}s attack!");
static const u8 sText_PkmnCenterAttention[] = _("{B_ATK_NAME_WITH_PREFIX} became the\ncenter of attention!");
static const u8 sText_PkmnChargingPower[] = _("{B_ATK_NAME_WITH_PREFIX} began\ncharging power!");
static const u8 sText_NaturePowerTurnedInto[] = _("NATURE POWER turned into\n{B_CURRENT_MOVE}!");
static const u8 sText_PkmnStatusNormal[] = _("{B_ATK_NAME_WITH_PREFIX}s status\nreturned to normal!");
static const u8 sText_PkmnSubjectedToTorment[] = _("{B_DEF_NAME_WITH_PREFIX} was subjected\nto TORMENT!");
static const u8 sText_PkmnTighteningFocus[] = _("{B_ATK_NAME_WITH_PREFIX} is tightening\nits focus!");
static const u8 sText_PkmnFellForTaunt[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe TAUNT!");
static const u8 sText_PkmnReadyToHelp[] = _("{B_ATK_NAME_WITH_PREFIX} is ready to\nhelp {B_DEF_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnSwitchedItems[] = _("{B_ATK_NAME_WITH_PREFIX} switched\nitems with its opponent!");
static const u8 sText_PkmnObtainedX[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}.");
static const u8 sText_PkmnObtainedX2[] = _("{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}.");
static const u8 sText_PkmnObtainedXYObtainedZ[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}.\p{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}.");
static const u8 sText_PkmnCopiedFoe[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}!");
static const u8 sText_PkmnMadeWish[] = _("{B_ATK_NAME_WITH_PREFIX} made a WISH!");
static const u8 sText_PkmnWishCameTrue[] = _("{B_BUFF1}s WISH\ncame true!");
static const u8 sText_PkmnPlantedRoots[] = _("{B_ATK_NAME_WITH_PREFIX} planted its roots!");
static const u8 sText_PkmnAbsorbedNutrients[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nnutrients with its roots!");
static const u8 sText_PkmnAnchoredItself[] = _("{B_DEF_NAME_WITH_PREFIX} anchored\nitself with its roots!");
static const u8 sText_PkmnWasMadeDrowsy[] = _("{B_ATK_NAME_WITH_PREFIX} made\n{B_DEF_NAME_WITH_PREFIX} drowsy!");
static const u8 sText_PkmnKnockedOff[] = _("{B_ATK_NAME_WITH_PREFIX} knocked off\n{B_DEF_NAME_WITH_PREFIX}s {B_LAST_ITEM}!");
static const u8 sText_PkmnSwappedAbilities[] = _("{B_ATK_NAME_WITH_PREFIX} swapped abilities\nwith its opponent!");
static const u8 sText_PkmnSealedOpponentMove[] = _("{B_ATK_NAME_WITH_PREFIX} sealed the\nopponents move(s)!");
static const u8 sText_PkmnWantsGrudge[] = _("{B_ATK_NAME_WITH_PREFIX} wants the\nopponent to bear a GRUDGE!");
static const u8 sText_PkmnLostPPGrudge[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_BUFF1} lost\nall its PP due to the GRUDGE!");
static const u8 sText_PkmnShroudedItself[] = _("{B_ATK_NAME_WITH_PREFIX} shrouded\nitself in {B_CURRENT_MOVE}!");
static const u8 sText_PkmnMoveBounced[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_CURRENT_MOVE}\nwas bounced back by MAGIC COAT!");
static const u8 sText_PkmnWaitsForTarget[] = _("{B_ATK_NAME_WITH_PREFIX} waits for a target\nto make a move!");
static const u8 sText_PkmnSnatchedMove[] = _("{B_DEF_NAME_WITH_PREFIX} SNATCHED\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}s move!");
static const u8 sText_ElectricityWeakened[] = _("Electricitys power was\nweakened!");
static const u8 sText_FireWeakened[] = _("Fires power was\nweakened!");
static const u8 sText_XFoundOneY[] = _("{B_ATK_NAME_WITH_PREFIX} found\none {B_LAST_ITEM}!");
static const u8 sText_SoothingAroma[] = _("A soothing aroma wafted\nthrough the area!");
static const u8 sText_ItemsCantBeUsedNow[] = _("Items cant be used now.{PAUSE 64}");
static const u8 sText_ForXCommaYZ[] = _("For {B_SCR_ACTIVE_NAME_WITH_PREFIX},\n{B_LAST_ITEM} {B_BUFF1}");
static const u8 sText_PkmnUsedXToGetPumped[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to get pumped!");
static const u8 sText_PkmnLostFocus[] = _("{B_ATK_NAME_WITH_PREFIX} lost its\nfocus and couldnt move!");
static const u8 sText_PkmnWasDraggedOut[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndragged out!\p");
static const u8 sText_TheWallShattered[] = _("The wall shattered!");
static const u8 sText_ButNoEffect[] = _("But it had no effect!");
static const u8 sText_PkmnHasNoMovesLeft[] = _("{B_ACTIVE_NAME_WITH_PREFIX} has no\nmoves left!\p");
static const u8 sText_PkmnMoveIsDisabled[] = _("{B_ACTIVE_NAME_WITH_PREFIX}s {B_CURRENT_MOVE}\nis disabled!\p");
static const u8 sText_PkmnCantUseMoveTorment[] = _("{B_ACTIVE_NAME_WITH_PREFIX} cant use the same\nmove in a row due to the TORMENT!\p");
static const u8 sText_PkmnCantUseMoveTaunt[] = _("{B_ACTIVE_NAME_WITH_PREFIX} cant use\n{B_CURRENT_MOVE} after the TAUNT!\p");
static const u8 sText_PkmnCantUseMoveSealed[] = _("{B_ACTIVE_NAME_WITH_PREFIX} cant use the\nsealed {B_CURRENT_MOVE}!\p");
static const u8 sText_PkmnMadeItRain[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nmade it rain!");
static const u8 sText_PkmnRaisedSpeed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nraised its SPEED!");
static const u8 sText_PkmnProtectedBy[] = _("{B_DEF_NAME_WITH_PREFIX} was protected\nby {B_DEF_ABILITY}!");
static const u8 sText_PkmnPreventsUsage[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nprevents {B_ATK_NAME_WITH_PREFIX}\lfrom using {B_CURRENT_MOVE}!");
static const u8 sText_PkmnRestoredHPUsing[] = _("{B_DEF_NAME_WITH_PREFIX} restored HP\nusing its {B_DEF_ABILITY}!");
static const u8 sText_PkmnsXMadeYUseless[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} useless!");
static const u8 sText_PkmnChangedTypeWith[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nmade it the {B_BUFF1} type!");
static const u8 sText_PkmnPreventsParalysisWith[] = _("{B_EFF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nprevents paralysis!");
static const u8 sText_PkmnPreventsRomanceWith[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nprevents romance!");
static const u8 sText_PkmnPreventsPoisoningWith[] = _("{B_EFF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nprevents poisoning!");
static const u8 sText_PkmnPreventsConfusionWith[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nprevents confusion!");
static const u8 sText_PkmnRaisedFirePowerWith[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nraised its FIRE power!");
static const u8 sText_PkmnAnchorsItselfWith[] = _("{B_DEF_NAME_WITH_PREFIX} anchors\nitself with {B_DEF_ABILITY}!");
static const u8 sText_PkmnCutsAttackWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}s ATTACK!");
static const u8 sText_PkmnPreventsStatLossWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nprevents stat loss!");
static const u8 sText_PkmnHurtsWith[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nhurt {B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnTraced[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED\n{B_BUFF1}s {B_BUFF2}!");
static const u8 sText_PkmnsXPreventsBurns[] = _("{B_EFF_NAME_WITH_PREFIX}s {B_EFF_ABILITY}\nprevents burns!");
static const u8 sText_PkmnsXBlocksY[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nblocks {B_CURRENT_MOVE}!");
static const u8 sText_PkmnsXBlocksY2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nblocks {B_CURRENT_MOVE}!");
static const u8 sText_PkmnsXRestoredHPALittle2[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_ATK_ABILITY}\nrestored its HP a little!");
static const u8 sText_PkmnsXWhippedUpSandstorm[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nwhipped up a sandstorm!");
static const u8 sText_PkmnsXIntensifiedSun[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nintensified the suns rays!");
static const u8 sText_PkmnsXPreventsYLoss[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nprevents {B_BUFF1} loss!");
static const u8 sText_PkmnsXInfatuatedY[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\ninfatuated {B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_PkmnsXMadeYIneffective[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} ineffective!");
static const u8 sText_PkmnsXCuredYProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!");
static const u8 sText_ItSuckedLiquidOoze[] = _("It sucked up the\nLIQUID OOZE!");
static const u8 sText_PkmnTransformed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed!");
static const u8 sText_PkmnsXTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\ntook the attack!");
2017-10-08 14:54:51 +02:00
const u8 gText_PkmnsXPreventsSwitching[] = _("{B_BUFF1}s {B_LAST_ABILITY}\nprevents switching!\p");
2018-02-28 23:50:25 +01:00
static const u8 sText_PreventedFromWorking[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nprevented {B_SCR_ACTIVE_NAME_WITH_PREFIX}s\l{B_BUFF1} from working!");
static const u8 sText_PkmnsXMadeItIneffective[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nmade it ineffective!");
static const u8 sText_PkmnsXPreventsFlinching[] = _("{B_EFF_NAME_WITH_PREFIX}s {B_EFF_ABILITY}\nprevents flinching!");
static const u8 sText_PkmnsXPreventsYsZ[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_ATK_ABILITY}\nprevents {B_DEF_NAME_WITH_PREFIX}s\l{B_DEF_ABILITY} from working!");
static const u8 sText_PkmnsXCuredItsYProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!");
static const u8 sText_PkmnsXHadNoEffectOnY[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_SCR_ACTIVE_ABILITY}\nhad no effect on {B_EFF_NAME_WITH_PREFIX}!");
static const u8 sText_StatSharply[] = _("sharply ");
2017-10-07 15:15:47 +02:00
const u8 gText_StatRose[] = _("rose!");
2018-02-28 23:50:25 +01:00
static const u8 sText_StatHarshly[] = _("harshly ");
static const u8 sText_StatFell[] = _("fell!");
static const u8 sText_PkmnsStatChanged[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_BUFF1}\n{B_BUFF2}");
2017-10-07 15:15:47 +02:00
const u8 gText_PkmnsStatChanged2[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_BUFF1}\n{B_BUFF2}");
2018-02-28 23:50:25 +01:00
static const u8 sText_UsingXTheYOfZN[] = _("Using {B_LAST_ITEM}, the {B_BUFF1}\nof {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}");
static const u8 sText_PkmnsStatChanged3[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_BUFF1}\n{B_BUFF2}");
static const u8 sText_PkmnsStatChanged4[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_BUFF1}\n{B_BUFF2}");
static const u8 sText_StatsWontIncrease2[] = _("{B_ATK_NAME_WITH_PREFIX}s stats wont\ngo any higher!");
static const u8 sText_StatsWontDecrease2[] = _("{B_DEF_NAME_WITH_PREFIX}s stats wont\ngo any lower!");
static const u8 sText_CriticalHit[] = _("A critical hit!");
static const u8 sText_OneHitKO[] = _("Its a one-hit KO!");
static const u8 sText_123Poof[] = _("{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE 0x0038}Poof!\p");
static const u8 sText_AndEllipsis[] = _("And…\p");
static const u8 sText_HMMovesCantBeForgotten[] = _("HM moves cant be\nforgotten now.\p");
static const u8 sText_NotVeryEffective[] = _("Its not very effective…");
static const u8 sText_SuperEffective[] = _("Its super effective!");
static const u8 sText_GotAwaySafely[] = _("{PLAY_SE 0x0011}Got away safely!\p");
static const u8 sText_PkmnFledUsingIts[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing its {B_LAST_ITEM}!\p");
static const u8 sText_PkmnFledUsing[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing {B_ATK_ABILITY}!\p");
static const u8 sText_WildPkmnFled[] = _("{PLAY_SE 0x0011}Wild {B_BUFF1} fled!");
static const u8 sText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_20}!");
static const u8 sText_TwoLinkTrainersDefeated[] = _("Player beat {B_20}\nand {B_21}!");
static const u8 sText_PlayerLostAgainstLinkTrainer[] = _("Player lost against\n{B_20}!");
static const u8 sText_PlayerLostToTwo[] = _("Player lost to {B_20}\nand {B_21}!");
static const u8 sText_PlayerBattledToDrawLinkTrainer[] = _("Player battled to a draw against\n{B_20}!");
static const u8 sText_PlayerBattledToDrawVsTwo[] = _("Player battled to a draw against\n{B_20} and {B_21}!");
static const u8 sText_WildFled[] = _("{PLAY_SE 0x0011}{B_20} fled!");
static const u8 sText_TwoWildFled[] = _("{PLAY_SE 0x0011}{B_20} and\n{B_21} fled!");
static const u8 sText_NoRunningFromTrainers[] = _("No! Theres no running\nfrom a TRAINER battle!\p");
static const u8 sText_CantEscape[] = _("Cant escape!\p");
static const u8 sText_DontLeaveBirch[] = _("PROF. BIRCH: Dont leave me like this!\p");
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!");
static const u8 sText_MirrorMoveFailed[] = _("The MIRROR MOVE failed!");
static const u8 sText_StartedToRain[] = _("It started to rain!");
static const u8 sText_DownpourStarted[] = _("A downpour started!");
static const u8 sText_RainContinues[] = _("Rain continues to fall.");
static const u8 sText_DownpourContinues[] = _("The downpour continues.");
static const u8 sText_RainStopped[] = _("The rain stopped.");
static const u8 sText_SandstormBrewed[] = _("A sandstorm brewed!");
static const u8 sText_SandstormRages[] = _("The sandstorm rages.");
static const u8 sText_SandstormSubsided[] = _("The sandstorm subsided.");
static const u8 sText_SunlightGotBright[] = _("The sunlight got bright!");
static const u8 sText_SunlightStrong[] = _("The sunlight is strong.");
static const u8 sText_SunlightFaded[] = _("The sunlight faded.");
static const u8 sText_StartedHail[] = _("It started to hail!");
static const u8 sText_HailContinues[] = _("Hail continues to fall.");
static const u8 sText_HailStopped[] = _("The hail stopped.");
static const u8 sText_FailedToSpitUp[] = _("But it failed to SPIT UP\na thing!");
static const u8 sText_FailedToSwallow[] = _("But it failed to SWALLOW\na thing!");
static const u8 sText_WindBecameHeatWave[] = _("The wind turned into a\nHEAT WAVE!");
static const u8 sText_StatChangesGone[] = _("All stat changes were\neliminated!");
static const u8 sText_CoinsScattered[] = _("Coins scattered everywhere!");
static const u8 sText_TooWeakForSubstitute[] = _("It was too weak to make\na SUBSTITUTE!");
static const u8 sText_SharedPain[] = _("The battlers shared\ntheir pain!");
static const u8 sText_BellChimed[] = _("A bell chimed!");
static const u8 sText_FaintInThree[] = _("All affected POKéMON will\nfaint in three turns!");
static const u8 sText_NoPPLeft[] = _("Theres no PP left for\nthis move!\p");
static const u8 sText_ButNoPPLeft[] = _("But there was no PP left\nfor the move!");
static const u8 sText_PkmnIgnoresAsleep[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders while asleep!");
static const u8 sText_PkmnIgnoredOrders[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders!");
static const u8 sText_PkmnBeganToNap[] = _("{B_ATK_NAME_WITH_PREFIX} began to nap!");
static const u8 sText_PkmnLoafing[] = _("{B_ATK_NAME_WITH_PREFIX} is\nloafing around!");
static const u8 sText_PkmnWontObey[] = _("{B_ATK_NAME_WITH_PREFIX} wont\nobey!");
static const u8 sText_PkmnTurnedAway[] = _("{B_ATK_NAME_WITH_PREFIX} turned away!");
static const u8 sText_PkmnPretendNotNotice[] = _("{B_ATK_NAME_WITH_PREFIX} pretended\nnot to notice!");
static const u8 sText_EnemyAboutToSwitchPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} is\nabout to use {B_BUFF2}.\pWill {B_PLAYER_NAME} change\nPOKéMON?");
static const u8 sText_PkmnLearnedMove2[] = _("{B_ATK_NAME_WITH_PREFIX} learned\n{B_BUFF1}!");
static const u8 sText_PlayerDefeatedLinkTrainerTrainer1[] = _("Player defeated\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!\p");
static const u8 sText_CreptCloser[] = _("{B_PLAYER_NAME} crept closer to\n{B_OPPONENT_MON1_NAME}!");
static const u8 sText_CantGetCloser[] = _("{B_PLAYER_NAME} cant get any closer!");
static const u8 sText_PkmnWatchingCarefully[] = _("{B_OPPONENT_MON1_NAME} is watching\ncarefully!");
static const u8 sText_PkmnCuriousAboutX[] = _("{B_OPPONENT_MON1_NAME} is curious about\nthe {B_BUFF1}!");
static const u8 sText_PkmnEnthralledByX[] = _("{B_OPPONENT_MON1_NAME} is enthralled by\nthe {B_BUFF1}!");
static const u8 sText_PkmnIgnoredX[] = _("{B_OPPONENT_MON1_NAME} completely ignored\nthe {B_BUFF1}!");
static const u8 sText_ThrewPokeblockAtPkmn[] = _("{B_PLAYER_NAME} threw a {POKEBLOCK}\nat the {B_OPPONENT_MON1_NAME}!");
static const u8 sText_OutOfSafariBalls[] = _("{PLAY_SE 0x0049}ANNOUNCER: Youre out of\nSAFARI BALLS! Game over!\p");
static const u8 sText_OpponentMon1Appeared[] = _("{B_OPPONENT_MON1_NAME} appeared!\p");
static const u8 sText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p");
static const u8 sText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p");
static const u8 sText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}");
static const u8 sText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p");
static const u8 sText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p");
static const u8 sText_LinkTrainerWantsToBattle[] = _("{B_20}\nwants to battle!");
static const u8 sText_TwoLinkTrainersWantToBattle[] = _("{B_20} and {B_21}\nwant to battle!");
static const u8 sText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!");
static const u8 sText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!");
static const u8 sText_Trainer1SentOutPkmn2[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_BUFF1}!");
static const u8 sText_LinkTrainerSentOutPkmn[] = _("{B_20} sent out\n{B_OPPONENT_MON1_NAME}!");
static const u8 sText_LinkTrainerSentOutTwoPkmn[] = _("{B_20} sent out\n{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!");
static const u8 sText_TwoLinkTrainersSentOutPkmn[] = _("{B_20} sent out {B_LINK_OPPONENT_MON1_NAME}!\n{B_21} sent out {B_LINK_OPPONENT_MON2_NAME}!");
static const u8 sText_LinkTrainerSentOutPkmn2[] = _("{B_20} sent out\n{B_BUFF1}!");
static const u8 sText_LinkTrainerMultiSentOutPkmn[] = _("{B_22} sent out\n{B_BUFF1}!");
static const u8 sText_GoPkmn[] = _("Go! {B_PLAYER_MON1_NAME}!");
static const u8 sText_GoTwoPkmn[] = _("Go! {B_PLAYER_MON1_NAME} and\n{B_PLAYER_MON2_NAME}!");
static const u8 sText_GoPkmn2[] = _("Go! {B_BUFF1}!");
static const u8 sText_DoItPkmn[] = _("Do it! {B_BUFF1}!");
static const u8 sText_GoForItPkmn[] = _("Go for it, {B_BUFF1}!");
static const u8 sText_YourFoesWeakGetEmPkmn[] = _("Your foes weak!\nGet em, {B_BUFF1}!");
static const u8 sText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_1F} sent out {B_LINK_PLAYER_MON2_NAME}!\nGo! {B_LINK_PLAYER_MON1_NAME}!");
static const u8 sText_PkmnThatsEnough[] = _("{B_BUFF1}, thats enough!\nCome back!");
static const u8 sText_PkmnComeBack[] = _("{B_BUFF1}, come back!");
static const u8 sText_PkmnOkComeBack[] = _("{B_BUFF1}, OK!\nCome back!");
static const u8 sText_PkmnGoodComeBack[] = _("{B_BUFF1}, good!\nCome back!");
static const u8 sText_Trainer1WithdrewPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwithdrew {B_BUFF1}!");
static const u8 sText_LinkTrainer1WithdrewPkmn[] = _("{B_20} withdrew\n{B_BUFF1}!");
static const u8 sText_LinkTrainer2WithdrewPkmn[] = _("{B_22} withdrew\n{B_BUFF1}!");
static const u8 sText_WildPkmnPrefix[] = _("Wild ");
static const u8 sText_FoePkmnPrefix[] = _("Foe ");
static const u8 sText_EmptyString8[] = _( "");
static const u8 sText_FoePkmnPrefix2[] = _("Foe");
static const u8 sText_AllyPkmnPrefix[] = _("Ally");
static const u8 sText_FoePkmnPrefix3[] = _("Foe");
static const u8 sText_AllyPkmnPrefix2[] = _("Ally");
static const u8 sText_FoePkmnPrefix4[] = _("Foe");
static const u8 sText_AllyPkmnPrefix3[] = _("Ally");
2018-07-22 18:40:18 +02:00
static const u8 sText_AttackerUsedX[] = _("{B_ATK_NAME_WITH_PREFIX} used\n{B_BUFF3}!");
2018-02-28 23:50:25 +01:00
static const u8 sText_ExclamationMark[] = _("!");
static const u8 sText_ExclamationMark2[] = _("!");
static const u8 sText_ExclamationMark3[] = _("!");
static const u8 sText_ExclamationMark4[] = _("!");
static const u8 sText_ExclamationMark5[] = _("!");
static const u8 sText_HP2[] = _("HP");
static const u8 sText_Attack2[] = _("ATTACK");
static const u8 sText_Defense2[] = _("DEFENSE");
2018-07-13 23:00:56 +02:00
const u8 gText_Speed[] = _("SPEED");
2018-02-28 23:50:25 +01:00
static const u8 sText_SpAtk2[] = _("SP. ATK");
static const u8 sText_SpDef2[] = _("SP. DEF");
static const u8 sText_Accuracy[] = _("accuracy");
static const u8 sText_Evasiveness[] = _("evasiveness");
2017-10-07 15:15:47 +02:00
const u8 * const gStatNamesTable[] =
{
2018-02-28 23:50:25 +01:00
sText_HP2, sText_Attack2, sText_Defense2,
2018-07-13 23:00:56 +02:00
gText_Speed, sText_SpAtk2, sText_SpDef2,
2018-02-28 23:50:25 +01:00
sText_Accuracy, sText_Evasiveness
2017-10-07 15:15:47 +02:00
};
2018-02-28 23:50:25 +01:00
static const u8 sText_PokeblockWasTooSpicy[] = _("was too spicy!");
static const u8 sText_PokeblockWasTooDry[] = _("was too dry!");
static const u8 sText_PokeblockWasTooSweet[] = _("was too sweet!");
static const u8 sText_PokeblockWasTooBitter[] = _("was too bitter!");
static const u8 sText_PokeblockWasTooSour[] = _("was too sour!");
2017-10-07 15:15:47 +02:00
const u8 * const gPokeblockWasTooXStringTable[] =
{
2018-02-28 23:50:25 +01:00
sText_PokeblockWasTooSpicy, sText_PokeblockWasTooDry,
sText_PokeblockWasTooSweet, sText_PokeblockWasTooBitter,
sText_PokeblockWasTooSour
2017-10-07 15:15:47 +02:00
};
2018-02-28 23:50:25 +01:00
static const u8 sText_PlayerUsedItem[] = _("{B_PLAYER_NAME} used\n{B_LAST_ITEM}!");
static const u8 sText_WallyUsedItem[] = _("WALLY used\n{B_LAST_ITEM}!");
static const u8 sText_Trainer1UsedItem[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nused {B_LAST_ITEM}!");
static const u8 sText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!");
static const u8 sText_DontBeAThief[] = _("Dont be a thief!");
static const u8 sText_ItDodgedBall[] = _("It dodged the thrown BALL!\nThis POKéMON cant be caught!");
static const u8 sText_YouMissedPkmn[] = _("You missed the POKéMON!");
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!");
static const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM MUS_KACHI22}\p");
static const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM MUS_KACHI22}{PAUSE 127}");
static const u8 sText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?");
static const u8 sText_PkmnSentToPC[] = _("{B_OPPONENT_MON1_NAME} was sent to\n{B_PC_CREATOR_NAME} PC.");
static const u8 sText_Someones[] = _("someones");
static const u8 sText_Lanettes[] = _("LANETTEs");
static const u8 sText_PkmnDataAddedToDex[] = _("{B_OPPONENT_MON1_NAME}s data was\nadded to the POKéDEX.\p");
static const u8 sText_ItIsRaining[] = _("It is raining.");
static const u8 sText_SandstormIsRaging[] = _("A sandstorm is raging.");
static const u8 sText_BoxIsFull[] = _("The BOX is full!\nYou cant catch any more!\p");
static const u8 sText_EnigmaBerry[] = _("ENIGMA BERRY");
static const u8 sText_BerrySuffix[] = _(" BERRY");
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!");
static const u8 sText_PkmnsItemDefrostedIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_LAST_ITEM}\ndefrosted it!");
static const u8 sText_PkmnsItemWokeIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_LAST_ITEM}\nwoke it from its sleep!");
static const u8 sText_PkmnsItemSnappedOut[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_LAST_ITEM}\nsnapped it out of confusion!");
static const u8 sText_PkmnsItemCuredProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_LAST_ITEM}\ncured its {B_BUFF1} problem!");
static const u8 sText_PkmnsItemNormalizedStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_LAST_ITEM}\nnormalized its status!");
static const u8 sText_PkmnsItemRestoredHealth[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_LAST_ITEM}\nrestored health!");
static const u8 sText_PkmnsItemRestoredPP[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_LAST_ITEM}\nrestored {B_BUFF1}s PP!");
static const u8 sText_PkmnsItemRestoredStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_LAST_ITEM}\nrestored its status!");
static const u8 sText_PkmnsItemRestoredHPALittle[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}s {B_LAST_ITEM}\nrestored its HP a little!");
static const u8 sText_ItemAllowsOnlyYMove[] = _("{B_LAST_ITEM} allows the\nuse of only {B_CURRENT_MOVE}!\p");
static const u8 sText_PkmnHungOnWithX[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!");
2017-10-07 15:15:47 +02:00
const u8 gText_EmptyString3[] = _("");
2018-02-28 23:50:25 +01:00
static const u8 sText_YouThrowABallNowRight[] = _("You throw a BALL now, right?\nI… Ill do my best!");
2017-10-07 15:15:47 +02:00
// early declaration of strings
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnIncapableOfPower[];
static const u8 sText_GlintAppearsInEye[];
static const u8 sText_PkmnGettingIntoPosition[];
static const u8 sText_PkmnBeganGrowlingDeeply[];
static const u8 sText_PkmnEagerForMore[];
static const u8 sText_DefeatedOpponentByReferee[];
static const u8 sText_LostToOpponentByReferee[];
static const u8 sText_TiedOpponentByReferee[];
static const u8 sText_QuestionForfeitMatch[];
static const u8 sText_ForfeitedMatch[];
static const u8 sText_Trainer1WinText[];
static const u8 sText_Trainer2WinText[];
static const u8 sText_TwoInGameTrainersDefeated[];
static const u8 sText_Trainer2LoseText[];
2017-10-07 15:15:47 +02:00
2018-07-15 18:53:43 +02:00
// New battle strings.
static const s8 sText_EnduredViaSturdy[] = _("{B_DEF_NAME_WITH_PREFIX} ENDURED\nthe hit using {B_DEF_ABILITY}!");
static const s8 sText_PowerHerbActivation[] = _("{B_ATK_NAME_WITH_PREFIX} became fully charged\ndue to its {B_LAST_ITEM}!");
static const s8 sText_HurtByItem[] = _("{B_ATK_NAME_WITH_PREFIX} was hurt\nby its {B_LAST_ITEM}!");
static const s8 sText_BadlyPoisonedByItem[] = _("{B_EFF_NAME_WITH_PREFIX} was badly \npoisoned by the {B_LAST_ITEM}!");
static const s8 sText_BurnedByItem[] = _("{B_EFF_NAME_WITH_PREFIX} was burned\nby the {B_LAST_ITEM}!");
static const s8 sText_TargetAbilityActivates[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY} activates!");
static const u8 sText_GravityIntensified[] = _("GRAVITY intensified!");
static const u8 sText_TargetIdentified[] = _("{B_DEF_NAME_WITH_PREFIX} was \nidentified!");
static const u8 sText_TargetWokeUp[] = _("{B_DEF_NAME_WITH_PREFIX} woke up!");
static const u8 sText_PkmnStoleAndAteItem[] = _("{B_ATK_NAME_WITH_PREFIX} stole and\nate {B_DEF_NAME_WITH_PREFIX}s {B_LAST_ITEM}!");
static const u8 sText_TailWindBlew[] = _("The tailwind blew from\nbehind your team!");
static const u8 sText_PkmnWentBack[] = _("{B_ATK_NAME_WITH_PREFIX} went back\nto {B_ATK_TRAINER_CLASS} {B_ATK_TRAINER_NAME}");
static const u8 sText_PkmnCantUseItemsAnymore[] = _("{B_DEF_NAME_WITH_PREFIX} cant use\nitems anymore!");
static const u8 sText_PkmnFlung[] = _("{B_ATK_NAME_WITH_PREFIX} flung its\n{B_LAST_ITEM}!");
static const u8 sText_PkmnPreventedFromHealing[] = _("{B_DEF_NAME_WITH_PREFIX} was prevented\nfrom healing!");
static const u8 sText_PkmnSwitchedAtkAndDef[] = _("{B_ATK_NAME_WITH_PREFIX} switched its\nAttack and Defense!");
static const u8 sText_PkmnsAbilitySuppressed[] = _("{B_DEF_NAME_WITH_PREFIX}s ability\nwas suppressed!");
static const u8 sText_ShieldedFromCriticalHits[] = _("The {B_CURRENT_MOVE} shielded your\nteam from critical hits!");
static const u8 sText_SwitchedAtkAndSpAtk[] = _("{B_ATK_NAME_WITH_PREFIX} switched all its\nchanges to its Attack and\pSp. Atk with the target!");
static const u8 sText_SwitchedDefAndSpDef[] = _("{B_ATK_NAME_WITH_PREFIX} switched all its\nchanges to its Defense and\pSp. Def with the target!");
static const u8 sText_PkmnAcquiredAbility[] = _("{B_DEF_NAME_WITH_PREFIX} acquired\n{B_LAST_ABILITY}!");
static const u8 sText_PoisonSpikesScattered[] = _("Poison Spikes were scattered all\naround the opposing teams feet!");
2018-07-15 18:53:43 +02:00
static const u8 sText_PkmnSwitchedStatChanges[] = _("{B_ATK_NAME_WITH_PREFIX} switched stat changes\nwith the target!");
static const u8 sText_PkmnSurroundedWithVeilOfWater[] = _("{B_ATK_NAME_WITH_PREFIX} surrounded itself\nwith a veil of water!");
static const u8 sText_PkmnLevitatedOnElectromagnetism[] = _("{B_ATK_NAME_WITH_PREFIX} levitated on\nelectromagnetism!");
static const u8 sText_PkmnTwistedDimensions[] = _("{B_ATK_NAME_WITH_PREFIX} twisted\nthe dimensions!");
static const u8 sText_PointedStonesFloat[] =_("Pointed stones float in the air\naround your foes team!");
static const u8 sText_CloakedInMysticalMoonlight[] =_("It became cloaked in mystical\nmoonlight!");
static const u8 sText_TrappedBySwirlingMagma[] =_("{B_DEF_NAME_WITH_PREFIX} became\ntrapped by swirling magma!");
static const u8 sText_VanishedInstantly[] =_("{B_ATK_NAME_WITH_PREFIX} Vanished\ninstantly!");
static const u8 sText_ProtectedTeam[] =_("Wide Guard protected your team!");
static const u8 sText_SharedItsGuard[] =_("{B_ATK_NAME_WITH_PREFIX} shared its\nguard with the target!");
static const u8 sText_SharedItsPower[] =_("{B_ATK_NAME_WITH_PREFIX} shared its\npower with the target!");
static const u8 sText_SwapsDefAndSpDefOfAllPkmn[] =_("It created a bizarre area in which\nthe Defense and Sp.Def stats are swapped!");
static const u8 sText_BecameNimble[] =_("{B_ATK_NAME_WITH_PREFIX} became nimble!");
static const u8 sText_HurledIntoTheAir[] =_("{B_DEF_NAME_WITH_PREFIX} was hurled\ninto the air!");
static const u8 sText_HeldItemsLoseEffects[] =_("It created a bizarra area in which\nPokémons held items lose their effects!");
static const u8 sText_FellStraightDown[] =_("{B_DEF_NAME_WITH_PREFIX} fell\nstraight down!");
static const u8 sText_TransformedIntoWaterType[] =_("{B_DEF_NAME_WITH_PREFIX} transformed\ninto the water type!");
static const u8 sText_PkmnAcquiredSimple[] =_("{B_DEF_NAME_WITH_PREFIX} acquired\nSimple!");
static const u8 sText_KindOffer[] =_("{B_DEF_NAME_WITH_PREFIX}\ntook the kind offer!");
static const u8 sText_ResetsTargetsStatLevels[] =_("{B_DEF_NAME_WITH_PREFIX} stat changes\nwere removed!");
static const u8 sText_ProtectsTeamFromPriority[] =_("Quick Guard protected your team!");
static const u8 sText_AllySwitchPosition[] =_("{B_ATK_NAME_WITH_PREFIX} and\n{B_SCR_ACTIVE_NAME_WITH_PREFIX} switched places!");
static const u8 sText_RestoreTargetsHealth[] =_("{B_DEF_NAME_WITH_PREFIX}s HP was restored!");
static const u8 sText_TookPkmnIntoTheSky[] =_("{B_ATK_NAME_WITH_PREFIX} took\n{B_DEF_NAME_WITH_PREFIX} into the sky!");
static const u8 sText_FreedFromSkyDrop[] =_("{B_DEF_NAME_WITH_PREFIX} was freed\nfrom the Sky Drop!");
static const u8 sText_PostponeTargetMove[] =_("{B_DEF_NAME_WITH_PREFIX}s move\nwas postponed!");
static const u8 sText_ReflectTargetsType[] =_("{B_ATK_NAME_WITH_PREFIX}s type\nchanged to match the {B_DEF_NAME_WITH_PREFIX}s!");
static const u8 sText_TransferHeldItem[] =_("{B_DEF_NAME_WITH_PREFIX} recieved {B_LAST_ITEM}\nfrom {B_ATK_NAME_WITH_PREFIX}");
2018-07-20 16:39:40 +02:00
static const u8 sText_EmbargoEnds[] = _("{B_DEF_NAME_WITH_PREFIX}can\nuse items again!");
static const u8 sText_MagnetRiseEnds[] = _("{B_ATK_NAME_WITH_PREFIX}s electromagnetism\nwore off!");
static const u8 sText_HealBlockEnds[] = _("{B_ATK_NAME_WITH_PREFIX}s Heal Block\nwore off!");
static const u8 sText_TelekinesisEnds[] = _("{B_ATK_NAME_WITH_PREFIX} was freed\nfrom the telekinesis!");
2018-07-21 12:56:07 +02:00
static const u8 sText_TailwindEnds[] = _("{B_ATK_TEAM}s tailwind\n petered out!");
static const u8 sText_LuckyChantEnds[] = _("{B_ATK_TEAM}s Lucky Chant\n wore off!");
2018-07-20 16:39:40 +02:00
static const u8 sText_TrickRoomEnds[] = _("The twisted dimensions returned to\nnormal!");
static const u8 sText_WonderRoomEnds[] = _("Wonder Room wore off, and\nDefense and Sp. Def stats returned to normal!");
static const u8 sText_MagicRoomEnds[] = _("Magic Room wore off, and\nheld items effects returned to normal!");
static const u8 sText_MudSportEnds[] = _("The effects of Mud Sport have faded.");
static const u8 sText_WaterSportEnds[] = _("The effects of Water Sport have faded.");
static const u8 sText_GravityEnds[] = _("Gravity returned to normal!");
static const u8 sText_AquaRingHeal[] = _("Aqua Ring restored\n{B_ATK_NAME_WITH_PREFIX}s HP!");
2018-07-26 21:56:23 +02:00
static const u8 sText_TargetAbilityRaisedStat[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nraised its {B_BUFF1}!");
static const u8 sText_TargetAbilityLoweredStat[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nlowered its {B_BUFF1}!");
static const u8 sText_AttackerAbilityRaisedStat[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_ATK_ABILITY}\nraised its {B_BUFF1}!");
2018-07-24 20:13:02 +02:00
static const u8 sText_AuroraVeilEnds[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}\nwore off!");
static const u8 sText_ElectricTerrainEnds[] = _("{B_ATK_ABILITY} wore off.");
static const u8 sText_MistyTerrainEnds[] = _("{B_ATK_ABILITY} wore off.");
static const u8 sText_PsychicTerrainEnds[] = _("{B_ATK_ABILITY} wore off.");
static const u8 sText_GrassyTerrainEnds[] = _("{B_ATK_ABILITY} wore off.");
static const u8 sText_AngryPointActivates[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY} maxed\nits attack!");
static const u8 sText_PoisonHealHpUp[] = _("The poisoning healed {B_ATK_NAME_WITH_PREFIX}\na little bit!");
static const u8 sText_BadDreamsDmg[] = _("The {B_DEF_NAME_WITH_PREFIX} is tormented\nby {B_DEF_ABILITY}!");
static const u8 sText_MoldBreakerEnters[] = _("The {B_DEF_NAME_WITH_PREFIX} breaks the mold!");
static const u8 sText_TeravoltEnters[] = _("{B_ATK_NAME_WITH_PREFIX} is radiating a bursting aura!");
static const u8 sText_TurboblazeEnters[] = _("{B_ATK_NAME_WITH_PREFIX} is radiating a blazing aura!");
2018-07-24 20:13:02 +02:00
static const u8 sText_SlowStartEnters[] = _("{B_ATK_NAME_WITH_PREFIX} cant get it going!");
static const u8 sText_SlowStartEnd[] = _("{B_ATK_NAME_WITH_PREFIX} finally got its act together!");
2018-07-24 20:13:02 +02:00
static const u8 sText_SolarPowerHpDrop[] = _("The {B_ATK_NAME_WITH_PREFIX}s {B_ATK_ABILITY}\ntakes its toll!");
static const u8 sText_AftermathDmg[] = _("The {B_DEF_NAME_WITH_PREFIX}\nsuffers the {B_DEF_ABILITY}!");
static const u8 sText_AnticipationActivates[] = _("The {B_ATK_NAME_WITH_PREFIX} shuddered in {B_ATK_ABILITY}!");
2018-07-24 20:13:02 +02:00
static const u8 sText_ForewarnActivates[] = _("{B_ATK_ABILITY} alerted the {B_ATK_NAME_WITH_PREFIX} to the\n{B_DEF_NAME_WITH_PREFIX}s {B_BUFF1}!");
static const u8 sText_IceBodyHpGain[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_ATK_ABILITY}\nhealed it a little bit!");
static const u8 sText_SnowWarningHail[] = _("It started to hail!");
static const u8 sText_FriskActivates[] = _("{B_ATK_NAME_WITH_PREFIX} frisked {B_DEF_NAME_WITH_PREFIX} and\nfound its {B_LAST_ITEM}!");
static const u8 sText_UnnerveEnters[] = _("{B_ATK_NAME_WITH_PREFIX} is too nervous to eat Berries!");
2018-07-28 17:13:47 +02:00
static const u8 sText_HarvestBerry[] = _("{B_ATK_NAME_WITH_PREFIX} harvested\nits {B_LAST_ITEM}!");
2018-07-24 20:13:02 +02:00
static const u8 sText_MoxieAtkRise[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_ATK_ABILITY} raised its Attack!");
static const u8 sText_MagicBounceActivates[] = _("The {B_DEF_NAME_WITH_PREFIX} bounced the\n{B_ATK_NAME_WITH_PREFIX} back!");
2018-07-24 20:13:02 +02:00
static const u8 sText_ProteanTypeChange[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_ATK_ABILITY} transformed\nit into the {B_BUFF1} type!");
static const u8 sText_SymbiosisItemPass[] = _("{B_ATK_NAME_WITH_PREFIX} passed its {B_LAST_ITEM}\nto {B_SCR_ACTIVE_NAME_WITH_PREFIX} through {B_ATK_ABILITY}!");
2018-07-24 21:47:00 +02:00
static const u8 sText_StealthRockDmg[] = _("Pointed stones dug into\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}!");
static const u8 sText_ToxicSpikesAbsorbed[] = _("The poison spikes disappeared\nfrom around the opposing teams feet!");
static const u8 sText_ToxicSpikesPoisoned[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} was poisoned!");
static const u8 sText_StickyWebSwitchIn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} was\ncaught in a Sticky Web!");
2018-07-26 20:36:16 +02:00
static const u8 sText_HealingWishCameTrue[] = _("The healing wish came true\nfor {B_ATK_NAME_WITH_PREFIX}!");
static const u8 sText_HealingWishHealed[] = _("{B_ATK_NAME_WITH_PREFIX} regained health!");
static const u8 sText_LunarDanceCameTrue[] = _("{B_ATK_NAME_WITH_PREFIX} became cloaked\nin mystical moonlight!");
2018-07-26 21:56:23 +02:00
static const u8 sText_CursedBodyDisabled[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_BUFF1} was disabled\nby {B_DEF_NAME_WITH_PREFIX}s {B_DEF_ABILITY}!");
static const u8 sText_AttackerAquiredAbility[] = _("{B_ATK_NAME_WITH_PREFIX} acquired {B_LAST_ABILITY}!");
static const u8 sText_TargetStatWontGoHigher[] = _("{B_DEF_NAME_WITH_PREFIX}s {B_BUFF1}\nwont go higher!");
2018-07-28 10:41:20 +02:00
static const u8 sText_PkmnMoveBouncedViaAbility[] = _("{B_ATK_NAME_WITH_PREFIX}s {B_CURRENT_MOVE} was\nbounced back by {B_DEF_NAME_WITH_PREFIX}s\l{B_DEF_ABILITY}!");
2018-07-29 12:21:28 +02:00
static const u8 sText_ImposterTransform[] = _("{B_ATK_NAME_WITH_PREFIX} transformed into\n{B_DEF_NAME_WITH_PREFIX} using {B_LAST_ABILITY}!");
static const u8 sText_NotDoneYet[] = _("This move effect is not done yet!\p");
static const u8 sText_StickyWebUsed[] = _("");
static const u8 sText_QuashSuccess[] = _("");
static const u8 sText_PkmnBlewAwayToxicSpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nTOXIC SPIKES!");
static const u8 sText_PkmnBlewAwayStickyWeb[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSTICKY WEB!");
static const u8 sText_PkmnBlewAwayStealthRock[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSTEALTH ROCK!");
2018-08-04 23:34:29 +02:00
static const u8 sText_IonDelugeOn[] = _("");
static const u8 sText_TopsyTurvySwitchedStats[] = _("");
2018-07-21 12:56:07 +02:00
2018-07-31 23:09:47 +02:00
// New selection strings, they must end with "\p".
// Use {B_LAST_ITEM} and {B_CURRENT_MOVE}.
static const u8 sText_AssaultVestDoesntAllow[] = _("\p");
static const u8 sText_GravityPreventsUsage[] = _("\p");
static const u8 sText_HealBlockPreventsUsage[] = _("\p");
2018-07-15 18:53:43 +02:00
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
2017-10-07 15:15:47 +02:00
{
2018-03-01 10:12:35 +01:00
sText_Trainer1LoseText, // 12
sText_PkmnGainedEXP, // 13
sText_PkmnGrewToLv, // 14
sText_PkmnLearnedMove, // 15
sText_TryToLearnMove1, // 16
sText_TryToLearnMove2, // 17
sText_TryToLearnMove3, // 18
sText_PkmnForgotMove, // 19
sText_StopLearningMove, // 20
sText_DidNotLearnMove, // 21
sText_PkmnLearnedMove2, // 22
sText_AttackMissed, // 23
sText_PkmnProtectedItself, // 24
sText_StatsWontIncrease2, // 25
sText_AvoidedDamage, // 26
sText_ItDoesntAffect, // 27
sText_AttackerFainted, // 28
sText_TargetFainted, // 29
sText_PlayerGotMoney, // 30
sText_PlayerWhiteout, // 31
sText_PlayerWhiteout2, // 32
sText_PreventsEscape, // 33
sText_HitXTimes, // 34
sText_PkmnFellAsleep, // 35
sText_PkmnMadeSleep, // 36
sText_PkmnAlreadyAsleep, // 37
sText_PkmnAlreadyAsleep2, // 38
sText_PkmnWasntAffected, // 39
sText_PkmnWasPoisoned, // 40
sText_PkmnPoisonedBy, // 41
sText_PkmnHurtByPoison, // 42
sText_PkmnAlreadyPoisoned, // 43
sText_PkmnBadlyPoisoned, // 44
sText_PkmnEnergyDrained, // 45
sText_PkmnWasBurned, // 46
sText_PkmnBurnedBy, // 47
sText_PkmnHurtByBurn, // 48
sText_PkmnWasFrozen, // 49
sText_PkmnFrozenBy, // 50
sText_PkmnIsFrozen, // 51
sText_PkmnWasDefrosted, // 52
sText_PkmnWasDefrosted2, // 53
sText_PkmnWasDefrostedBy, // 54
sText_PkmnWasParalyzed, // 55
sText_PkmnWasParalyzedBy, // 56
sText_PkmnIsParalyzed, // 57
sText_PkmnIsAlreadyParalyzed, // 58
sText_PkmnHealedParalysis, // 59
sText_PkmnDreamEaten, // 60
sText_StatsWontIncrease, // 61
sText_StatsWontDecrease, // 62
sText_TeamStoppedWorking, // 63
sText_FoeStoppedWorking, // 64
sText_PkmnIsConfused, // 65
sText_PkmnHealedConfusion, // 66
sText_PkmnWasConfused, // 67
sText_PkmnAlreadyConfused, // 68
sText_PkmnFellInLove, // 69
sText_PkmnInLove, // 70
sText_PkmnImmobilizedByLove, // 71
sText_PkmnBlownAway, // 72
sText_PkmnChangedType, // 73
sText_PkmnFlinched, // 74
sText_PkmnRegainedHealth, // 75
sText_PkmnHPFull, // 76
sText_PkmnRaisedSpDef, // 77
sText_PkmnRaisedDef, // 78
sText_PkmnCoveredByVeil, // 79
sText_PkmnUsedSafeguard, // 80
sText_PkmnSafeguardExpired, // 81
sText_PkmnWentToSleep, // 82
sText_PkmnSleptHealthy, // 83
sText_PkmnWhippedWhirlwind, // 84
sText_PkmnTookSunlight, // 85
sText_PkmnLoweredHead, // 86
sText_PkmnIsGlowing, // 87
sText_PkmnFlewHigh, // 88
sText_PkmnDugHole, // 89
sText_PkmnSqueezedByBind, // 90
sText_PkmnTrappedInVortex, // 91
sText_PkmnWrappedBy, // 92
sText_PkmnClamped, // 93
sText_PkmnHurtBy, // 94
sText_PkmnFreedFrom, // 95
sText_PkmnCrashed, // 96
gText_PkmnShroudedInMist, // 97
sText_PkmnProtectedByMist, // 98
gText_PkmnGettingPumped, // 99
sText_PkmnHitWithRecoil, // 100
sText_PkmnProtectedItself2, // 101
sText_PkmnBuffetedBySandstorm, // 102
sText_PkmnPeltedByHail, // 103
sText_PkmnSeeded, // 104
sText_PkmnEvadedAttack, // 105
sText_PkmnSappedByLeechSeed, // 106
sText_PkmnFastAsleep, // 107
sText_PkmnWokeUp, // 108
sText_PkmnUproarKeptAwake, // 109
sText_PkmnWokeUpInUproar, // 110
sText_PkmnCausedUproar, // 111
sText_PkmnMakingUproar, // 112
sText_PkmnCalmedDown, // 113
sText_PkmnCantSleepInUproar, // 114
sText_PkmnStockpiled, // 115
sText_PkmnCantStockpile, // 116
sText_PkmnCantSleepInUproar2, // 117
sText_UproarKeptPkmnAwake, // 118
sText_PkmnStayedAwakeUsing, // 119
sText_PkmnStoringEnergy, // 120
sText_PkmnUnleashedEnergy, // 121
sText_PkmnFatigueConfusion, // 122
sText_PkmnPickedUpItem, // 123
sText_PkmnUnaffected, // 124
sText_PkmnTransformedInto, // 125
sText_PkmnMadeSubstitute, // 126
sText_PkmnHasSubstitute, // 127
sText_SubstituteDamaged, // 128
sText_PkmnSubstituteFaded, // 129
sText_PkmnMustRecharge, // 130
sText_PkmnRageBuilding, // 131
sText_PkmnMoveWasDisabled, // 132
sText_PkmnMoveIsDisabled, // 133
sText_PkmnMoveDisabledNoMore, // 134
sText_PkmnGotEncore, // 135
sText_PkmnEncoreEnded, // 136
sText_PkmnTookAim, // 137
sText_PkmnSketchedMove, // 138
sText_PkmnTryingToTakeFoe, // 139
sText_PkmnTookFoe, // 140
sText_PkmnReducedPP, // 141
sText_PkmnStoleItem, // 142
sText_TargetCantEscapeNow, // 143
sText_PkmnFellIntoNightmare, // 144
sText_PkmnLockedInNightmare, // 145
sText_PkmnLaidCurse, // 146
sText_PkmnAfflictedByCurse, // 147
sText_SpikesScattered, // 148
sText_PkmnHurtBySpikes, // 149
sText_PkmnIdentified, // 150
sText_PkmnPerishCountFell, // 151
sText_PkmnBracedItself, // 152
sText_PkmnEnduredHit, // 153
sText_MagnitudeStrength, // 154
sText_PkmnCutHPMaxedAttack, // 155
sText_PkmnCopiedStatChanges, // 156
sText_PkmnGotFree, // 157
sText_PkmnShedLeechSeed, // 158
sText_PkmnBlewAwaySpikes, // 159
sText_PkmnFledFromBattle, // 160
sText_PkmnForesawAttack, // 161
sText_PkmnTookAttack, // 162
sText_PkmnAttack, // 163
sText_PkmnCenterAttention, // 164
sText_PkmnChargingPower, // 165
sText_NaturePowerTurnedInto, // 166
sText_PkmnStatusNormal, // 167
sText_PkmnHasNoMovesLeft, // 168
sText_PkmnSubjectedToTorment, // 169
sText_PkmnCantUseMoveTorment, // 170
sText_PkmnTighteningFocus, // 171
sText_PkmnFellForTaunt, // 172
sText_PkmnCantUseMoveTaunt, // 173
sText_PkmnReadyToHelp, // 174
sText_PkmnSwitchedItems, // 175
sText_PkmnCopiedFoe, // 176
sText_PkmnMadeWish, // 177
sText_PkmnWishCameTrue, // 178
sText_PkmnPlantedRoots, // 179
sText_PkmnAbsorbedNutrients, // 180
sText_PkmnAnchoredItself, // 181
sText_PkmnWasMadeDrowsy, // 182
sText_PkmnKnockedOff, // 183
sText_PkmnSwappedAbilities, // 184
sText_PkmnSealedOpponentMove, // 185
sText_PkmnCantUseMoveSealed, // 186
sText_PkmnWantsGrudge, // 187
sText_PkmnLostPPGrudge, // 188
sText_PkmnShroudedItself, // 189
sText_PkmnMoveBounced, // 190
sText_PkmnWaitsForTarget, // 191
sText_PkmnSnatchedMove, // 192
sText_PkmnMadeItRain, // 193
sText_PkmnRaisedSpeed, // 194
sText_PkmnProtectedBy, // 195
sText_PkmnPreventsUsage, // 196
sText_PkmnRestoredHPUsing, // 197
sText_PkmnChangedTypeWith, // 198
sText_PkmnPreventsParalysisWith, // 199
sText_PkmnPreventsRomanceWith, // 200
sText_PkmnPreventsPoisoningWith, // 201
sText_PkmnPreventsConfusionWith, // 202
sText_PkmnRaisedFirePowerWith, // 203
sText_PkmnAnchorsItselfWith, // 204
sText_PkmnCutsAttackWith, // 205
sText_PkmnPreventsStatLossWith, // 206
sText_PkmnHurtsWith, // 207
sText_PkmnTraced, // 208
sText_StatSharply, // 209
gText_StatRose, // 210
sText_StatHarshly, // 211
sText_StatFell, // 212
sText_PkmnsStatChanged, // 213
gText_PkmnsStatChanged2, // 214
sText_PkmnsStatChanged3, // 215
sText_PkmnsStatChanged4, // 216
sText_CriticalHit, // 217
sText_OneHitKO, // 218
sText_123Poof, // 219
sText_AndEllipsis, // 220
sText_NotVeryEffective, // 221
sText_SuperEffective, // 222
sText_GotAwaySafely, // 223
sText_WildPkmnFled, // 224
sText_NoRunningFromTrainers, // 225
sText_CantEscape, // 226
sText_DontLeaveBirch, // 227
sText_ButNothingHappened, // 228
sText_ButItFailed, // 229
sText_ItHurtConfusion, // 230
sText_MirrorMoveFailed, // 231
sText_StartedToRain, // 232
sText_DownpourStarted, // 233
sText_RainContinues, // 234
sText_DownpourContinues, // 235
sText_RainStopped, // 236
sText_SandstormBrewed, // 237
sText_SandstormRages, // 238
sText_SandstormSubsided, // 239
sText_SunlightGotBright, // 240
sText_SunlightStrong, // 241
sText_SunlightFaded, // 242
sText_StartedHail, // 243
sText_HailContinues, // 244
sText_HailStopped, // 245
sText_FailedToSpitUp, // 246
sText_FailedToSwallow, // 247
sText_WindBecameHeatWave, // 248
sText_StatChangesGone, // 249
sText_CoinsScattered, // 250
sText_TooWeakForSubstitute, // 251
sText_SharedPain, // 252
sText_BellChimed, // 253
sText_FaintInThree, // 254
sText_NoPPLeft, // 255
sText_ButNoPPLeft, // 256
sText_PlayerUsedItem, // 257
sText_WallyUsedItem, // 258
sText_TrainerBlockedBall, // 259
sText_DontBeAThief, // 260
sText_ItDodgedBall, // 261
sText_YouMissedPkmn, // 262
sText_PkmnBrokeFree, // 263
sText_ItAppearedCaught, // 264
sText_AarghAlmostHadIt, // 265
sText_ShootSoClose, // 266
sText_GotchaPkmnCaught, // 267
sText_GotchaPkmnCaught2, // 268
sText_GiveNicknameCaptured, // 269
sText_PkmnSentToPC, // 270
sText_PkmnDataAddedToDex, // 271
sText_ItIsRaining, // 272
sText_SandstormIsRaging, // 273
sText_CantEscape2, // 274
sText_PkmnIgnoresAsleep, // 275
sText_PkmnIgnoredOrders, // 276
sText_PkmnBeganToNap, // 277
sText_PkmnLoafing, // 278
sText_PkmnWontObey, // 279
sText_PkmnTurnedAway, // 280
sText_PkmnPretendNotNotice, // 281
sText_EnemyAboutToSwitchPkmn, // 282
sText_CreptCloser, // 283
sText_CantGetCloser, // 284
sText_PkmnWatchingCarefully, // 285
sText_PkmnCuriousAboutX, // 286
sText_PkmnEnthralledByX, // 287
sText_PkmnIgnoredX, // 288
sText_ThrewPokeblockAtPkmn, // 289
sText_OutOfSafariBalls, // 290
sText_PkmnsItemCuredParalysis, // 291
sText_PkmnsItemCuredPoison, // 292
sText_PkmnsItemHealedBurn, // 293
sText_PkmnsItemDefrostedIt, // 294
sText_PkmnsItemWokeIt, // 295
sText_PkmnsItemSnappedOut, // 296
sText_PkmnsItemCuredProblem, // 297
sText_PkmnsItemRestoredHealth, // 298
sText_PkmnsItemRestoredPP, // 299
sText_PkmnsItemRestoredStatus, // 300
sText_PkmnsItemRestoredHPALittle, // 301
sText_ItemAllowsOnlyYMove, // 302
sText_PkmnHungOnWithX, // 303
gText_EmptyString3, // 304
sText_PkmnsXPreventsBurns, // 305
sText_PkmnsXBlocksY, // 306
sText_PkmnsXRestoredHPALittle2, // 307
sText_PkmnsXWhippedUpSandstorm, // 308
sText_PkmnsXPreventsYLoss, // 309
sText_PkmnsXInfatuatedY, // 310
sText_PkmnsXMadeYIneffective, // 311
sText_PkmnsXCuredYProblem, // 312
sText_ItSuckedLiquidOoze, // 313
sText_PkmnTransformed, // 314
sText_ElectricityWeakened, // 315
sText_FireWeakened, // 316
sText_PkmnHidUnderwater, // 317
sText_PkmnSprangUp, // 318
sText_HMMovesCantBeForgotten, // 319
sText_XFoundOneY, // 320
sText_PlayerDefeatedLinkTrainerTrainer1, // 321
sText_SoothingAroma, // 322
sText_ItemsCantBeUsedNow, // 323
sText_ForXCommaYZ, // 324
sText_UsingXTheYOfZN, // 325
sText_PkmnUsedXToGetPumped, // 326
sText_PkmnsXMadeYUseless, // 327
sText_PkmnTrappedBySandTomb, // 328
sText_EmptyString4, // 329
sText_ABoosted, // 330
sText_PkmnsXIntensifiedSun, // 331
sText_PkmnMakesGroundMiss, // 332
sText_YouThrowABallNowRight, // 333
sText_PkmnsXTookAttack, // 334
sText_PkmnChoseXAsDestiny, // 335
sText_PkmnLostFocus, // 336
sText_UseNextPkmn, // 337
sText_PkmnFledUsingIts, // 338
sText_PkmnFledUsing, // 339
sText_PkmnWasDraggedOut, // 340
sText_PreventedFromWorking, // 341
sText_PkmnsItemNormalizedStatus, // 342
sText_Trainer1UsedItem, // 343
sText_BoxIsFull, // 344
sText_PkmnAvoidedAttack, // 345
sText_PkmnsXMadeItIneffective, // 346
sText_PkmnsXPreventsFlinching, // 347
sText_PkmnAlreadyHasBurn, // 348
sText_StatsWontDecrease2, // 349
sText_PkmnsXBlocksY2, // 350
sText_PkmnsXWoreOff, // 351
sText_PkmnRaisedDefALittle, // 352
sText_PkmnRaisedSpDefALittle, // 353
sText_TheWallShattered, // 354
sText_PkmnsXPreventsYsZ, // 355
sText_PkmnsXCuredItsYProblem, // 356
sText_AttackerCantEscape, // 357
sText_PkmnObtainedX, // 358
sText_PkmnObtainedX2, // 359
sText_PkmnObtainedXYObtainedZ, // 360
sText_ButNoEffect, // 361
sText_PkmnsXHadNoEffectOnY, // 362
sText_TwoInGameTrainersDefeated, // 363
sText_Trainer2LoseText, // 364
sText_PkmnIncapableOfPower, // 365
sText_GlintAppearsInEye, // 366
sText_PkmnGettingIntoPosition, // 367
sText_PkmnBeganGrowlingDeeply, // 368
sText_PkmnEagerForMore, // 369
sText_DefeatedOpponentByReferee, // 370
sText_LostToOpponentByReferee, // 371
sText_TiedOpponentByReferee, // 372
sText_QuestionForfeitMatch, // 373
sText_ForfeitedMatch, // 374
gText_PkmnTransferredSomeonesPC, // 375
gText_PkmnTransferredLanettesPC, // 376
gText_PkmnBoxSomeonesPCFull, // 377
gText_PkmnBoxLanettesPCFull, // 378
sText_Trainer1WinText, // 379
sText_Trainer2WinText, // 380
2018-07-15 18:53:43 +02:00
// new battle strings
sText_EnduredViaSturdy, // 381
sText_PowerHerbActivation, // 382
sText_HurtByItem, // 383
sText_BadlyPoisonedByItem, // 384
sText_BurnedByItem, // 385
sText_TargetAbilityActivates, // 386
sText_GravityIntensified, // 387
sText_TargetIdentified, // 388
sText_TargetWokeUp, // 389
sText_PkmnStoleAndAteItem, // 390
sText_TailWindBlew, // 391
sText_PkmnWentBack, // 392
sText_PkmnCantUseItemsAnymore, // 393
sText_PkmnFlung, // 394
sText_PkmnPreventedFromHealing, // 395
sText_PkmnSwitchedAtkAndDef, // 396
sText_PkmnsAbilitySuppressed, // 397
sText_ShieldedFromCriticalHits, // 398
sText_SwitchedAtkAndSpAtk, // 399
sText_SwitchedDefAndSpDef, // 400
sText_PkmnAcquiredAbility, // 401
sText_PoisonSpikesScattered, // 402
sText_PkmnSwitchedStatChanges, // 403
sText_PkmnSurroundedWithVeilOfWater, // 404
sText_PkmnLevitatedOnElectromagnetism, // 405
sText_PkmnTwistedDimensions, // 406
sText_PointedStonesFloat, // 407
sText_CloakedInMysticalMoonlight, // 408
sText_TrappedBySwirlingMagma, // 409
sText_VanishedInstantly, // 410
sText_ProtectedTeam, // 411
sText_SharedItsGuard, // 412
sText_SharedItsPower, // 413
sText_SwapsDefAndSpDefOfAllPkmn, // 414
sText_BecameNimble, // 415
sText_HurledIntoTheAir, // 416
sText_HeldItemsLoseEffects, // 417
sText_FellStraightDown, // 418
sText_TransformedIntoWaterType, // 419
sText_PkmnAcquiredSimple, // 420
sText_EmptyString4, // 421
sText_KindOffer, // 422
sText_ResetsTargetsStatLevels, // 423
sText_ProtectsTeamFromPriority, // 424
sText_AllySwitchPosition, // 425
sText_RestoreTargetsHealth, // 426
sText_TookPkmnIntoTheSky, // 427
sText_FreedFromSkyDrop, // 428
sText_PostponeTargetMove, // 429
sText_ReflectTargetsType, // 430
sText_TransferHeldItem, // 431
2018-07-18 22:07:48 +02:00
sText_EmbargoEnds, // 432
sText_MagnetRiseEnds, // 433
sText_HealBlockEnds, // 434
sText_TelekinesisEnds, // 435
sText_TailwindEnds, // 436
sText_LuckyChantEnds, // 437
sText_TrickRoomEnds, // 438
sText_WonderRoomEnds, // 439
sText_MagicRoomEnds, // 440
sText_MudSportEnds, // 441
sText_WaterSportEnds, // 442
sText_GravityEnds, // 443
sText_AquaRingHeal, // 444
2018-07-21 13:24:20 +02:00
sText_AuroraVeilEnds, // 445
sText_ElectricTerrainEnds, // 446
sText_MistyTerrainEnds, // 447
sText_PsychicTerrainEnds, // 448
sText_GrassyTerrainEnds, // 449
2018-07-22 18:40:18 +02:00
sText_TargetAbilityRaisedStat, // 450
sText_AngryPointActivates, // 451
sText_AttackerAbilityRaisedStat, // 452
sText_PoisonHealHpUp, // 453
2018-07-22 21:05:12 +02:00
sText_BadDreamsDmg, // 454
2018-07-22 22:21:47 +02:00
sText_MoldBreakerEnters,
sText_TeravoltEnters,
sText_TurboblazeEnters,
sText_SlowStartEnters,
sText_SlowStartEnd,
sText_SolarPowerHpDrop,
sText_AftermathDmg,
sText_AnticipationActivates,
sText_ForewarnActivates,
sText_IceBodyHpGain,
sText_SnowWarningHail,
sText_FriskActivates,
sText_UnnerveEnters,
sText_HarvestBerry,
sText_MoxieAtkRise,
sText_MagicBounceActivates,
sText_ProteanTypeChange,
sText_SymbiosisItemPass,
2018-07-24 21:47:00 +02:00
sText_StealthRockDmg,
sText_ToxicSpikesAbsorbed,
sText_ToxicSpikesPoisoned,
2018-07-24 22:09:55 +02:00
sText_StickyWebSwitchIn,
2018-07-26 20:36:16 +02:00
sText_HealingWishCameTrue,
sText_HealingWishHealed,
sText_LunarDanceCameTrue,
2018-07-26 21:56:23 +02:00
sText_CursedBodyDisabled,
sText_AttackerAquiredAbility,
sText_TargetAbilityLoweredStat,
sText_TargetStatWontGoHigher,
2018-07-28 10:41:20 +02:00
sText_PkmnMoveBouncedViaAbility,
2018-07-29 12:21:28 +02:00
sText_ImposterTransform,
2018-07-31 23:09:47 +02:00
sText_AssaultVestDoesntAllow,
sText_GravityPreventsUsage,
sText_HealBlockPreventsUsage,
sText_NotDoneYet,
sText_StickyWebUsed,
sText_QuashSuccess,
sText_PkmnBlewAwayToxicSpikes,
sText_PkmnBlewAwayStickyWeb,
sText_PkmnBlewAwayStealthRock,
2018-08-04 23:34:29 +02:00
sText_IonDelugeOn,
sText_TopsyTurvySwitchedStats,
2018-07-28 10:41:20 +02:00
};
const u16 gMagicCoatBounceStringIds[] =
{
STRINGID_PKMNMOVEBOUNCED, STRINGID_PKMNMOVEBOUNCEDABILITY
2018-07-26 20:36:16 +02:00
};
const u16 gHealingWishStringIds[] =
{
STRINGID_HEALINGWISHCAMETRUE, STRINGID_LUNARDANCECAMETRUE
2018-07-24 21:47:00 +02:00
};
const u16 gDmgHazardsStringIds[] =
{
STRINGID_PKMNHURTBYSPIKES, STRINGID_STEALTHROCKDMG
2018-07-22 22:21:47 +02:00
};
const u16 gSwitchInAbilityStringIds[] =
{
STRINGID_MOLDBREAKERENTERS, STRINGID_TERAVOLTENTERS, STRINGID_TURBOBLAZEENTERS, STRINGID_SLOWSTARTENTERS, STRINGID_UNNERVEENTERS
2017-10-07 15:15:47 +02:00
};
const u16 gMissStringIds[] =
{
STRINGID_ATTACKMISSED, STRINGID_PKMNPROTECTEDITSELF,
STRINGID_PKMNAVOIDEDATTACK, STRINGID_AVOIDEDDAMAGE,
STRINGID_PKMNMAKESGROUNDMISS
};
2017-10-08 14:54:51 +02:00
const u16 gNoEscapeStringIds[] =
{
STRINGID_CANTESCAPE, STRINGID_DONTLEAVEBIRCH, STRINGID_PREVENTSESCAPE,
STRINGID_CANTESCAPE2, STRINGID_ATTACKERCANTESCAPE
};
const u16 gMoveWeatherChangeStringIds[] =
{
STRINGID_STARTEDTORAIN, STRINGID_DOWNPOURSTARTED, STRINGID_BUTITFAILED,
STRINGID_SANDSTORMBREWED, STRINGID_SUNLIGHTGOTBRIGHT, STRINGID_STARTEDHAIL
};
const u16 gSandStormHailContinuesStringIds[] =
{
STRINGID_SANDSTORMRAGES, STRINGID_HAILCONTINUES
};
const u16 gSandStormHailDmgStringIds[] =
{
STRINGID_PKMNBUFFETEDBYSANDSTORM, STRINGID_PKMNPELTEDBYHAIL
};
const u16 gSandStormHailEndStringIds[] =
2017-10-07 15:15:47 +02:00
{
STRINGID_SANDSTORMSUBSIDED, STRINGID_HAILSTOPPED
};
const u16 gRainContinuesStringIds[] =
{
STRINGID_RAINCONTINUES, STRINGID_DOWNPOURCONTINUES, STRINGID_RAINSTOPPED
};
const u16 gProtectLikeUsedStringIds[] =
{
STRINGID_PKMNPROTECTEDITSELF2, STRINGID_PKMNBRACEDITSELF, STRINGID_BUTITFAILED
};
const u16 gReflectLightScreenSafeguardStringIds[] =
{
STRINGID_BUTITFAILED, STRINGID_PKMNRAISEDDEF, STRINGID_PKMNRAISEDDEFALITTLE,
STRINGID_PKMNRAISEDSPDEF, STRINGID_PKMNRAISEDSPDEFALITTLE, STRINGID_PKMNCOVEREDBYVEIL
};
const u16 gLeechSeedStringIds[] =
{
STRINGID_PKMNSEEDED, STRINGID_PKMNEVADEDATTACK,
2017-10-08 14:54:51 +02:00
STRINGID_ITDOESNTAFFECT, STRINGID_PKMNSAPPEDBYLEECHSEED, STRINGID_ITSUCKEDLIQUIDOOZE,
};
const u16 gRestUsedStringIds[] =
{
STRINGID_PKMNWENTTOSLEEP, STRINGID_PKMNSLEPTHEALTHY
};
2017-11-26 17:26:11 +01:00
const u16 gUproarOverTurnStringIds[] =
{
STRINGID_PKMNMAKINGUPROAR, STRINGID_PKMNCALMEDDOWN
};
const u16 gStockpileUsedStringIds[] =
{
STRINGID_PKMNSTOCKPILED, STRINGID_PKMNCANTSTOCKPILE,
};
const u16 gWokeUpStringIds[] =
{
STRINGID_PKMNWOKEUP, STRINGID_PKMNWOKEUPINUPROAR
};
const u16 gSwallowFailStringIds[] =
{
STRINGID_FAILEDTOSWALLOW, STRINGID_PKMNHPFULL
};
const u16 gUproarAwakeStringIds[] =
{
STRINGID_PKMNCANTSLEEPINUPROAR2, STRINGID_UPROARKEPTPKMNAWAKE, STRINGID_PKMNSTAYEDAWAKEUSING
};
const u16 gStatUpStringIds[] =
{
STRINGID_PKMNSSTATCHANGED, STRINGID_PKMNSSTATCHANGED2, STRINGID_STATSWONTINCREASE,
STRINGID_EMPTYSTRING3, STRINGID_USINGXTHEYOFZN, STRINGID_PKMNUSEDXTOGETPUMPED
};
const u16 gStatDownStringIds[] =
{
STRINGID_PKMNSSTATCHANGED3, STRINGID_PKMNSSTATCHANGED4, STRINGID_STATSWONTDECREASE, STRINGID_EMPTYSTRING3
};
const u16 gFirstTurnOfTwoStringIds[] =
{
STRINGID_PKMNWHIPPEDWHIRLWIND, STRINGID_PKMNTOOKSUNLIGHT, STRINGID_PKMNLOWEREDHEAD, STRINGID_PKMNISGLOWING,
STRINGID_PKMNFLEWHIGH, STRINGID_PKMNDUGHOLE, STRINGID_PKMNHIDUNDERWATER, STRINGID_PKMNSPRANGUP
};
const u16 gWrappedStringIds[] =
{
STRINGID_PKMNSQUEEZEDBYBIND, STRINGID_PKMNWRAPPEDBY, STRINGID_PKMNTRAPPEDINVORTEX,
STRINGID_PKMNCLAMPED, STRINGID_PKMNTRAPPEDINVORTEX, STRINGID_PKMNTRAPPEDBYSANDTOMB
};
const u16 gMistUsedStringIds[] =
{
STRINGID_PKMNSHROUDEDINMIST, STRINGID_BUTITFAILED
};
const u16 gFocusEnergyUsedStringIds[] =
{
STRINGID_PKMNGETTINGPUMPED, STRINGID_BUTITFAILED
};
const u16 gTransformUsedStringIds[] =
{
STRINGID_PKMNTRANSFORMEDINTO, STRINGID_BUTITFAILED
};
const u16 gSubsituteUsedStringIds[] =
{
STRINGID_PKMNMADESUBSTITUTE, STRINGID_TOOWEAKFORSUBSTITUTE
};
const u16 gGotPoisonedStringIds[] =
{
STRINGID_PKMNWASPOISONED, STRINGID_PKMNPOISONEDBY
};
const u16 gGotParalyzedStringIds[] =
{
STRINGID_PKMNWASPARALYZED, STRINGID_PKMNWASPARALYZEDBY
};
const u16 gFellAsleepStringIds[] =
{
STRINGID_PKMNFELLASLEEP, STRINGID_PKMNMADESLEEP,
};
const u16 gGotBurnedStringIds[] =
{
STRINGID_PKMNWASBURNED, STRINGID_PKMNBURNEDBY
};
const u16 gGotFrozenStringIds[] =
{
STRINGID_PKMNWASFROZEN, STRINGID_PKMNFROZENBY
};
const u16 gGotDefrostedStringIds[] =
{
STRINGID_PKMNWASDEFROSTED2, STRINGID_PKMNWASDEFROSTEDBY
};
const u16 gKOFailedStringIds[] =
{
STRINGID_ATTACKMISSED, STRINGID_PKMNUNAFFECTED
};
const u16 gAttractUsedStringIds[] =
{
STRINGID_PKMNFELLINLOVE, STRINGID_PKMNSXINFATUATEDY
};
const u16 gLeechSeedDrainStringIds[] =
{
STRINGID_PKMNENERGYDRAINED, STRINGID_ITSUCKEDLIQUIDOOZE
};
const u16 gSportsUsedStringIds[] =
{
STRINGID_ELECTRICITYWEAKENED, STRINGID_FIREWEAKENED
};
const u16 gPartyStatusHealStringIds[] =
{
STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED,
// interesting how there are four instances of the same string
STRINGID_SOOTHINGAROMA
};
const u16 gFutureMoveUsedStringIds[] =
{
STRINGID_PKMNFORESAWATTACK, STRINGID_PKMNCHOSEXASDESTINY
};
const u16 gBallEscapeStringIds[] =
{
STRINGID_PKMNBROKEFREE, STRINGID_ITAPPEAREDCAUGHT, STRINGID_AARGHALMOSTHADIT, STRINGID_SHOOTSOCLOSE
};
const u16 gWeatherContinuesStringIds[] =
{
2017-10-08 14:54:51 +02:00
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
};
const u16 gInobedientStringIds[] =
{
STRINGID_PKMNLOAFING, STRINGID_PKMNWONTOBEY, STRINGID_PKMNTURNEDAWAY,
STRINGID_PKMNPRETENDNOTNOTICE, STRINGID_PKMNINCAPABLEOFPOWER
};
const u16 gSafariGetNearStringIds[] =
{
STRINGID_CREPTCLOSER, STRINGID_CANTGETCLOSER
};
const u16 gSafariPokeblockResultStringIds[] =
{
STRINGID_PKMNCURIOUSABOUTX, STRINGID_PKMNENTHRALLEDBYX, STRINGID_PKMNIGNOREDX
};
const u16 gTrainerItemCuredStatusStringIds[] =
{
2017-10-08 14:54:51 +02:00
STRINGID_PKMNSITEMSNAPPEDOUT, STRINGID_PKMNSITEMCUREDPARALYSIS, STRINGID_PKMNSITEMDEFROSTEDIT,
STRINGID_PKMNSITEMHEALEDBURN, STRINGID_PKMNSITEMCUREDPOISON, STRINGID_PKMNSITEMWOKEIT
};
const u16 gBerryEffectStringIds[] =
{
STRINGID_PKMNSITEMCUREDPROBLEM, STRINGID_PKMNSITEMNORMALIZEDSTATUS
};
const u16 gBRNPreventionStringIds[] =
{
STRINGID_PKMNSXPREVENTSBURNS, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY
};
const u16 gPRLZPreventionStringIds[] =
{
STRINGID_PKMNPREVENTSPARALYSISWITH, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY
};
const u16 gPSNPreventionStringIds[] =
{
STRINGID_PKMNPREVENTSPOISONINGWITH, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY
};
const u16 gItemSwapStringIds[] =
{
STRINGID_PKMNOBTAINEDX, STRINGID_PKMNOBTAINEDX2, STRINGID_PKMNOBTAINEDXYOBTAINEDZ
};
const u16 gFlashFireStringIds[] =
{
STRINGID_PKMNRAISEDFIREPOWERWITH, STRINGID_PKMNSXMADEYINEFFECTIVE
};
const u16 gCaughtMonStringIds[] =
{
STRINGID_PKMNTRANSFERREDSOMEONESPC, STRINGID_PKMNTRANSFERREDLANETTESPC, STRINGID_PKMNBOXSOMEONESPCFULL, STRINGID_PKMNBOXLANETTESPCFULL,
2017-10-07 15:15:47 +02:00
};
const u16 gTrappingMoves[] =
{
MOVE_BIND, MOVE_WRAP, MOVE_FIRE_SPIN, MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, 0xFFFF
};
2018-07-21 21:58:07 +02:00
const u16 gRoomsStringIds[] =
{
STRINGID_PKMNTWISTEDDIMENSIONS, STRINGID_TRICKROOMENDS,
STRINGID_SWAPSDEFANDSPDEFOFALLPOKEMON, STRINGID_WONDERROOMENDS,
STRINGID_HELDITEMSLOSEEFFECTS, STRINGID_MAGICROOMENDS,
STRINGID_EMPTYSTRING3
};
2017-10-07 15:15:47 +02:00
const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!");
const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{UNKNOWN_A}\p");
const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p");
const u8 gText_EllipsisQuestionMark[] = _("……?\p");
const u8 gText_WhatWillPkmnDo[] = _("What will\n{B_ACTIVE_NAME_WITH_PREFIX} do?");
2017-10-07 15:15:47 +02:00
const u8 gText_WhatWillPkmnDo2[] = _("What will\n{B_PLAYER_NAME} do?");
const u8 gText_WhatWillWallyDo[] = _("What will\nWALLY do?");
const u8 gText_LinkStandby[] = _("{PAUSE 16}Link standby…");
const u8 gText_BattleMenu[] = _("FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN");
const u8 gText_SafariZoneMenu[] = _("BALL{CLEAR_TO 56}{POKEBLOCK}\nGO NEAR{CLEAR_TO 56}RUN");
const u8 gText_MoveInterfacePP[] = _("PP ");
const u8 gText_MoveInterfaceType[] = _("TYPE/");
const u8 gText_MoveInterfacePpType[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}PP\nTYPE/");
const u8 gText_MoveInterfaceDynamicColors[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}");
const u8 gText_WhichMoveToForget4[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Which move should\nbe forgotten?");
const u8 gText_BattleYesNoChoice[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Yes\nNo");
const u8 gText_BattleSwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Switch\nwhich?");
const u8 gText_BattleSwitchWhich2[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}");
const u8 gText_BattleSwitchWhich3[] = _("{UP_ARROW}");
const u8 gText_BattleSwitchWhich4[] = _("{ESCAPE 4}");
const u8 gText_BattleSwitchWhich5[] = _("-");
2018-07-13 23:00:56 +02:00
const u8 sText_HP[] = _("HP");
const u8 gText_Attack[] = _("ATTACK");
const u8 gText_Defense[] = _("DEFENSE");
const u8 gText_SpAtk[] = _("SP. ATK");
const u8 gText_SpDef[] = _("SP. DEF");
2017-10-07 15:15:47 +02:00
const u8 * const gStatNamesTable2[] =
{
2018-07-13 23:00:56 +02:00
sText_HP, gText_SpAtk, gText_Attack,
gText_SpDef, gText_Defense, gText_Speed
2017-10-07 15:15:47 +02:00
};
const u8 gText_SafariBalls[] = _("{HIGHLIGHT DARK_GREY}SAFARI BALLS");
2018-07-07 14:24:19 +02:00
const u8 gText_SafariBallLeft[] = _("{HIGHLIGHT DARK_GREY}Left: $" "{HIGHLIGHT DARK_GREY}");
const u8 gText_Sleep[] = _("sleep");
const u8 gText_Poison[] = _("poison");
const u8 gText_Burn[] = _("burn");
const u8 gText_Paralysis[] = _("paralysis");
const u8 gText_Ice[] = _("ice");
const u8 gText_Confusion[] = _("confusion");
const u8 gText_Love[] = _("love");
2017-10-07 15:15:47 +02:00
const u8 gText_SpaceAndSpace[] = _(" and ");
const u8 gText_CommaSpace[] = _(", ");
const u8 gText_Space2[] = _(" ");
const u8 gText_ScrollTextUp[] = _("\l");
const u8 gText_NewLine[] = _("\n");
const u8 gText_Are[] = _("are");
const u8 gText_Are2[] = _("are");
const u8 gText_BadEgg[] = _("Bad EGG");
2018-03-01 00:59:52 +01:00
const u8 gText_BattleWallyName[] = _("WALLY");
2017-10-07 15:15:47 +02:00
const u8 gText_Win[] = _("{HIGHLIGHT TRANSPARENT}Win");
const u8 gText_Loss[] = _("{HIGHLIGHT TRANSPARENT}Loss");
const u8 gText_Draw[] = _("{HIGHLIGHT TRANSPARENT}Draw");
2018-02-28 23:50:25 +01:00
static const u8 sText_SpaceIs[] = _(" is");
static const u8 sText_ApostropheS[] = _("s");
2017-10-07 15:15:47 +02:00
2018-02-28 23:50:25 +01:00
static const u8 sATypeMove_Table[][17] =
2017-10-07 15:15:47 +02:00
{
_("a NORMAL move"),
_("a FIGHTING move"),
_("a FLYING move"),
_("a POISON move"),
_("a GROUND move"),
_("a ROCK move"),
_("a BUG move"),
_("a GHOST move"),
_("a STEEL move"),
_("a ??? move"),
_("a FIRE move"),
_("a WATER move"),
_("a GRASS move"),
_("an ELECTRIC move"),
_("a PSYCHIC move"),
_("an ICE move"),
_("a DRAGON move"),
_("a DARK move"),
_("a FAIRY move"),
2017-10-07 15:15:47 +02:00
};
const u8 gText_BattleTourney[] = _("BATTLE TOURNEY");
2018-02-28 23:50:25 +01:00
static const u8 sText_Round1[] = _("Round 1");
static const u8 sText_Round2[] = _("Round 2");
static const u8 sText_Semifinal[] = _("Semifinal");
static const u8 sText_Final[] = _("Final");
2017-10-07 15:15:47 +02:00
const u8 * const gRoundsStringTable[] =
{
2018-02-28 23:50:25 +01:00
sText_Round1,
sText_Round2,
sText_Semifinal,
sText_Final
2017-10-07 15:15:47 +02:00
};
const u8 gText_TheGreatNewHope[] = _("The great new hope!\p");
const u8 gText_WillChampinshipDreamComeTrue[] = _("Will the championship dream come true?!\p");
const u8 gText_AFormerChampion[] = _("A former CHAMPION!\p");
const u8 gText_ThePreviousChampion[] = _("The previous CHAMPION!\p");
const u8 gText_TheUnbeatenChampion[] = _("The unbeaten CHAMPION!\p");
const u8 gText_PlayerMon1Name[] = _("{B_PLAYER_MON1_NAME}");
const u8 gText_Vs[] = _("VS");
const u8 gText_OpponentMon1Name[] = _("{B_OPPONENT_MON1_NAME}");
const u8 gText_Mind[] = _("Mind");
const u8 gText_Skill[] = _("Skill");
const u8 gText_Body[] = _("Body");
const u8 gText_Judgement[] = _("{B_BUFF1}{CLEAR 13}Judgment{CLEAR 13}{B_BUFF2}");
2018-02-28 23:50:25 +01:00
static const u8 sText_TwoTrainersSentPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!\p{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent\nout {B_OPPONENT_MON2_NAME}!");
static const u8 sText_Trainer2SentOutPkmn[] = _("{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent\nout {B_BUFF1}!");
static const u8 sText_TwoTrainersWantToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} and\n{B_TRAINER2_CLASS} {B_TRAINER2_NAME}\lwant to battle!\p");
static const u8 sText_InGamePartnerSentOutZGoN[] = _("{B_PARTNER_CLASS} {B_PARTNER_NAME} sent\nout {B_PLAYER_MON2_NAME}!\lGo, {B_PLAYER_MON1_NAME}!");
static const u8 sText_TwoInGameTrainersDefeated[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} and\n{B_TRAINER2_CLASS} {B_TRAINER2_NAME}\lwere defeated!\p");
static const u8 sText_Trainer2LoseText[] = _("{B_TRAINER2_LOSE_TEXT}");
static const u8 sText_PkmnIncapableOfPower[] = _("{B_ATK_NAME_WITH_PREFIX} appears incapable\nof using its power!");
static const u8 sText_GlintAppearsInEye[] = _("A glint appears in\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}s eyes!");
static const u8 sText_PkmnGettingIntoPosition[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is getting into\nposition!");
static const u8 sText_PkmnBeganGrowlingDeeply[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} began growling deeply!");
static const u8 sText_PkmnEagerForMore[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is eager for more!");
2017-10-07 15:15:47 +02:00
const u16 gStringIds_85CCF0A[] =
2017-10-07 15:15:47 +02:00
{
STRINGID_GLINTAPPEARSINEYE, STRINGID_PKMNGETTINGINTOPOSITION,
STRINGID_PKMNBEGANGROWLINGDEEPLY, STRINGID_PKMNEAGERFORMORE
2017-10-07 15:15:47 +02:00
};
2018-02-28 23:50:25 +01:00
static const u8 sText_RefIfNothingIsDecided[] = _("REFEREE: If nothing is decided in\n3 turns, we will go to judging!");
static const u8 sText_RefThatsIt[] = _("REFEREE: Thats it! We will now go to\njudging to determine the winner!");
static const u8 sText_RefJudgeMind[] = _("REFEREE: Judging category 1, Mind!\nThe POKéMON showing the most guts!\p");
static const u8 sText_RefJudgeSkill[] = _("REFEREE: Judging category 2, Skill!\nThe POKéMON using moves the best!\p");
static const u8 sText_RefJudgeBody[] = _("REFEREE: Judging category 3, Body!\nThe POKéMON with the most vitality!\p");
static const u8 sText_RefJudgement1[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_PLAYER_NAME}s {B_PLAYER_MON1_NAME}!\p");
static const u8 sText_RefJudgement2[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_TRAINER1_NAME}s {B_OPPONENT_MON1_NAME}!\p");
static const u8 sText_RefJudgement3[] = _("REFEREE: Judgment: 3 to 3!\nWe have a draw!\p");
static const u8 sText_DefeatedOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} defeated the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREEs decision!");
static const u8 sText_LostToOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} lost to the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREEs decision!");
static const u8 sText_TiedOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} tied the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREEs decision!");
static const u8 sText_RefCommenceBattle[] = _("REFEREE: {B_PLAYER_MON1_NAME} VS {B_OPPONENT_MON1_NAME}!\nCommence battling!");
2017-10-07 15:15:47 +02:00
const u8 * const gRefereeStringsTable[] =
{
2018-02-28 23:50:25 +01:00
sText_RefIfNothingIsDecided,
sText_RefThatsIt,
sText_RefJudgeMind,
sText_RefJudgeSkill,
sText_RefJudgeBody,
sText_RefJudgement1,
sText_RefJudgement2,
sText_RefJudgement3,
sText_RefCommenceBattle,
2017-10-07 15:15:47 +02:00
};
2018-02-28 23:50:25 +01:00
static const u8 sText_QuestionForfeitMatch[] = _("Would you like to forfeit the match\nand quit now?");
static const u8 sText_ForfeitedMatch[] = _("{B_PLAYER_NAME} forfeited the match!");
static const u8 sText_Trainer1WinText[] = _("{B_TRAINER1_WIN_TEXT}");
static const u8 sText_Trainer2WinText[] = _("{B_TRAINER2_WIN_TEXT}");
static const u8 sText_Trainer1Fled[] = _( "{PLAY_SE 0x0011}{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}!");
2017-10-07 15:15:47 +02:00
const u8 gText_RecordBattleToPass[] = _("Would you like to record your battle\non your FRONTIER PASS?");
const u8 gText_BattleRecordedOnPass[] = _("{B_PLAYER_NAME}s battle result was recorded\non the FRONTIER PASS.");
2018-02-28 23:50:25 +01:00
static const u8 sText_LinkTrainerWantsToBattlePause[] = _("{B_20}\nwants to battle!{PAUSE 49}");
static const u8 sText_TwoLinkTrainersWantToBattlePause[] = _("{B_20} and {B_21}\nwant to battle!{PAUSE 49}");
2018-07-21 12:56:07 +02:00
static const u8 sText_YourTeam[] = _("Your team");
static const u8 sText_OpposingTeam[] = _("The opposing team");
2017-10-07 15:15:47 +02:00
// This is four lists of moves which use a different attack string in Japanese
2018-06-30 14:12:17 +02:00
// to the default. See the documentation for ChooseTypeOfMoveUsedString for more detail.
static const u16 sGrammarMoveUsedTable[] =
2017-10-07 15:15:47 +02:00
{
2017-10-08 14:54:51 +02:00
MOVE_SWORDS_DANCE, MOVE_STRENGTH, MOVE_GROWTH,
MOVE_HARDEN, MOVE_MINIMIZE, MOVE_SMOKESCREEN,
MOVE_WITHDRAW, MOVE_DEFENSE_CURL, MOVE_EGG_BOMB,
MOVE_SMOG, MOVE_BONE_CLUB, MOVE_FLASH, MOVE_SPLASH,
MOVE_ACID_ARMOR, MOVE_BONEMERANG, MOVE_REST, MOVE_SHARPEN,
MOVE_SUBSTITUTE, MOVE_MIND_READER, MOVE_SNORE,
MOVE_PROTECT, MOVE_SPIKES, MOVE_ENDURE, MOVE_ROLLOUT,
MOVE_SWAGGER, MOVE_SLEEP_TALK, MOVE_HIDDEN_POWER,
MOVE_PSYCH_UP, MOVE_EXTREME_SPEED, MOVE_FOLLOW_ME,
MOVE_TRICK, MOVE_ASSIST, MOVE_INGRAIN, MOVE_KNOCK_OFF,
MOVE_CAMOUFLAGE, MOVE_ASTONISH, MOVE_ODOR_SLEUTH,
MOVE_GRASS_WHISTLE, MOVE_SHEER_COLD, MOVE_MUDDY_WATER,
MOVE_IRON_DEFENSE, MOVE_BOUNCE, 0,
2017-10-08 14:54:51 +02:00
MOVE_TELEPORT, MOVE_RECOVER, MOVE_BIDE, MOVE_AMNESIA,
MOVE_FLAIL, MOVE_TAUNT, MOVE_BULK_UP, 0,
2017-10-08 14:54:51 +02:00
MOVE_MEDITATE, MOVE_AGILITY, MOVE_MIMIC, MOVE_DOUBLE_TEAM,
MOVE_BARRAGE, MOVE_TRANSFORM, MOVE_STRUGGLE, MOVE_SCARY_FACE,
MOVE_CHARGE, MOVE_WISH, MOVE_BRICK_BREAK, MOVE_YAWN,
MOVE_FEATHER_DANCE, MOVE_TEETER_DANCE, MOVE_MUD_SPORT,
MOVE_FAKE_TEARS, MOVE_WATER_SPORT, MOVE_CALM_MIND, 0,
2017-10-08 14:54:51 +02:00
MOVE_POUND, MOVE_SCRATCH, MOVE_VICE_GRIP,
MOVE_WING_ATTACK, MOVE_FLY, MOVE_BIND, MOVE_SLAM,
MOVE_HORN_ATTACK, MOVE_WRAP, MOVE_THRASH, MOVE_TAIL_WHIP,
MOVE_LEER, MOVE_BITE, MOVE_GROWL, MOVE_ROAR,
MOVE_SING, MOVE_PECK, MOVE_ABSORB, MOVE_STRING_SHOT,
MOVE_EARTHQUAKE, MOVE_FISSURE, MOVE_DIG, MOVE_TOXIC,
MOVE_SCREECH, MOVE_METRONOME, MOVE_LICK, MOVE_CLAMP,
MOVE_CONSTRICT, MOVE_POISON_GAS, MOVE_BUBBLE,
MOVE_SLASH, MOVE_SPIDER_WEB, MOVE_NIGHTMARE, MOVE_CURSE,
MOVE_FORESIGHT, MOVE_CHARM, MOVE_ATTRACT, MOVE_ROCK_SMASH,
MOVE_UPROAR, MOVE_SPIT_UP, MOVE_SWALLOW, MOVE_TORMENT,
MOVE_FLATTER, MOVE_ROLE_PLAY, MOVE_ENDEAVOR, MOVE_TICKLE,
MOVE_COVET, 0
2017-10-07 15:15:47 +02:00
};
2017-10-08 14:54:51 +02:00
static const u8 sDummyWeirdStatusString[] = {EOS, EOS, EOS, EOS, EOS, EOS, EOS, EOS, 0, 0};
2017-10-07 15:15:47 +02:00
2018-06-17 16:48:58 +02:00
static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
{
{ // 0
.fillValue = 0xFF,
.fontId = 1,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 1,
.fgColor = 1,
.bgColor = 15,
.shadowColor = 6,
},
{ // 1
.fillValue = 0xFF,
.fontId = 1,
.x = 1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 1,
.bgColor = 15,
.shadowColor = 6,
},
{ // 2
.fillValue = 0xEE,
.fontId = 1,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 3
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 4
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 5
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 6
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 7
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 12,
.bgColor = 14,
.shadowColor = 11,
},
{ // 8
.fillValue = 0xEE,
.fontId = 1,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 9
.fillValue = 0xEE,
.fontId = 1,
.x = 2,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 12,
.bgColor = 14,
.shadowColor = 11,
},
{ // 10
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 11
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 12
.fillValue = 0xEE,
.fontId = 1,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 13
.fillValue = 0xEE,
.fontId = 1,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 14
.fillValue = 0x0,
.fontId = 1,
.x = 32,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 1,
.bgColor = 0,
.shadowColor = 2,
},
{ // 15
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 16
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 17
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 18
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 19
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 20
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 21
.fillValue = 0x0,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 1,
.bgColor = 0,
.shadowColor = 6,
},
{ // 22
.fillValue = 0x0,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 1,
.bgColor = 0,
.shadowColor = 6,
},
{ // 23
.fillValue = 0x0,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 1,
.bgColor = 0,
.shadowColor = 6,
},
2017-10-07 15:15:47 +02:00
};
2018-06-17 16:48:58 +02:00
static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
{
{ // 0
.fillValue = 0xFF,
.fontId = 1,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 1,
.fgColor = 1,
.bgColor = 15,
.shadowColor = 6,
},
{ // 1
.fillValue = 0xFF,
.fontId = 1,
.x = 1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 1,
.bgColor = 15,
.shadowColor = 6,
},
{ // 2
.fillValue = 0xEE,
.fontId = 1,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 3
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 4
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 5
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 6
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 7
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 12,
.bgColor = 14,
.shadowColor = 11,
},
{ // 8
.fillValue = 0xEE,
.fontId = 1,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 9
.fillValue = 0xEE,
.fontId = 1,
.x = 2,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 12,
.bgColor = 14,
.shadowColor = 11,
},
{ // 10
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 11
.fillValue = 0xEE,
.fontId = 7,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 12
.fillValue = 0xEE,
.fontId = 1,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 13
.fillValue = 0xEE,
.fontId = 1,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 14
.fillValue = 0x0,
.fontId = 1,
.x = 32,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 1,
.bgColor = 0,
.shadowColor = 2,
},
{ // 15
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 1,
.bgColor = 14,
.shadowColor = 15,
},
{ // 16
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 17
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 18
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 19
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 20
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 21
.fillValue = 0xEE,
.fontId = 1,
.x = -1,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 0,
.fgColor = 13,
.bgColor = 14,
.shadowColor = 15,
},
{ // 22
.fillValue = 0x11,
.fontId = 1,
.x = 0,
.y = 1,
.letterSpacing = 0,
.lineSpacing = 0,
.speed = 1,
.fgColor = 2,
.bgColor = 1,
.shadowColor = 3,
},
2017-10-07 15:15:47 +02:00
};
2018-06-17 16:48:58 +02:00
static const struct BattleWindowText *const sBattleTextOnWindowsInfo[] =
2017-10-07 15:15:47 +02:00
{
2018-06-17 16:48:58 +02:00
sTextOnWindowsInfo_Normal, sTextOnWindowsInfo_Arena
2017-10-07 15:15:47 +02:00
};
2017-10-08 14:54:51 +02:00
static const u8 sRecordedBattleTextSpeeds[] = {8, 4, 1, 0};
2017-10-07 15:15:47 +02:00
2018-06-17 16:48:58 +02:00
// code
2017-10-07 15:15:47 +02:00
void BufferStringBattle(u16 stringID)
{
s32 i;
2018-06-17 16:48:58 +02:00
const u8 *stringPtr = NULL;
2017-10-07 15:15:47 +02:00
2018-06-30 15:35:54 +02:00
gBattleMsgDataPtr = (struct BattleMsgData*)(&gBattleBufferA[gActiveBattler][4]);
gLastUsedItem = gBattleMsgDataPtr->lastItem;
gLastUsedAbility = gBattleMsgDataPtr->lastAbility;
gBattleScripting.battler = gBattleMsgDataPtr->scrActive;
*(&gBattleStruct->field_52) = gBattleMsgDataPtr->unk1605E;
*(&gBattleStruct->hpScale) = gBattleMsgDataPtr->hpScale;
gPotentialItemEffectBattler = gBattleMsgDataPtr->itemEffectBattler;
*(&gBattleStruct->stringMoveType) = gBattleMsgDataPtr->moveType;
2017-10-07 15:15:47 +02:00
2018-02-06 02:46:59 +01:00
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
2017-10-07 15:15:47 +02:00
{
2018-06-30 15:35:54 +02:00
sBattlerAbilities[i] = gBattleMsgDataPtr->abilities[i];
2017-10-07 15:15:47 +02:00
}
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
{
2018-06-30 15:35:54 +02:00
gBattleTextBuff1[i] = gBattleMsgDataPtr->textBuffs[0][i];
gBattleTextBuff2[i] = gBattleMsgDataPtr->textBuffs[1][i];
gBattleTextBuff3[i] = gBattleMsgDataPtr->textBuffs[2][i];
2017-10-07 15:15:47 +02:00
}
switch (stringID)
{
case STRINGID_INTROMSG: // first battle msg
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
{
if (gBattleTypeFlags & BATTLE_TYPE_x800000)
{
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoTrainersWantToBattle;
2017-10-07 15:15:47 +02:00
}
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoLinkTrainersWantToBattlePause;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoLinkTrainersWantToBattle;
2017-10-07 15:15:47 +02:00
}
else
{
if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1WantsToBattle;
2017-10-07 15:15:47 +02:00
else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainerWantsToBattlePause;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainerWantsToBattle;
2017-10-07 15:15:47 +02:00
}
}
else
{
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoTrainersWantToBattle;
2017-10-07 15:15:47 +02:00
else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoTrainersWantToBattle;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1WantsToBattle;
2017-10-07 15:15:47 +02:00
}
}
else
{
if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
2018-02-28 23:50:25 +01:00
stringPtr = sText_WildPkmnAppeared2;
2017-10-07 15:15:47 +02:00
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoWildPkmnAppeared;
2017-10-07 15:15:47 +02:00
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
2018-02-28 23:50:25 +01:00
stringPtr = sText_WildPkmnAppearedPause;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_WildPkmnAppeared;
2017-10-07 15:15:47 +02:00
}
break;
case STRINGID_INTROSENDOUT: // poke first send-out
2018-02-06 02:46:59 +01:00
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
2017-10-07 15:15:47 +02:00
{
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
2018-02-28 23:50:25 +01:00
stringPtr = sText_InGamePartnerSentOutZGoN;
2017-10-07 15:15:47 +02:00
else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
2018-02-28 23:50:25 +01:00
stringPtr = sText_GoTwoPkmn;
2017-10-07 15:15:47 +02:00
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkPartnerSentOutPkmnGoPkmn;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_GoTwoPkmn;
2017-10-07 15:15:47 +02:00
}
else
{
2018-02-28 23:50:25 +01:00
stringPtr = sText_GoPkmn;
2017-10-07 15:15:47 +02:00
}
}
else
{
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoTrainersSentPkmn;
2017-10-07 15:15:47 +02:00
else if (gBattleTypeFlags & BATTLE_TYPE_x800000)
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoTrainersSentPkmn;
2017-10-07 15:15:47 +02:00
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoLinkTrainersSentOutPkmn;
2017-10-07 15:15:47 +02:00
else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainerSentOutTwoPkmn;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutTwoPkmn;
2017-10-07 15:15:47 +02:00
}
else
{
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)))
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn;
2017-10-07 15:15:47 +02:00
else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainerSentOutPkmn;
2017-10-07 15:15:47 +02:00
}
}
break;
case STRINGID_RETURNMON: // sending poke to ball msg
2018-02-06 02:46:59 +01:00
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
2017-10-07 15:15:47 +02:00
{
if (*(&gBattleStruct->hpScale) == 0)
2018-02-28 23:50:25 +01:00
stringPtr = sText_PkmnThatsEnough;
2017-10-07 15:15:47 +02:00
else if (*(&gBattleStruct->hpScale) == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
2018-02-28 23:50:25 +01:00
stringPtr = sText_PkmnComeBack;
2017-10-07 15:15:47 +02:00
else if (*(&gBattleStruct->hpScale) == 2)
2018-02-28 23:50:25 +01:00
stringPtr = sText_PkmnOkComeBack;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_PkmnGoodComeBack;
2017-10-07 15:15:47 +02:00
}
else
{
2018-07-01 11:15:42 +02:00
if (gTrainerBattleOpponent_A == TRAINER_LINK_OPPONENT || gBattleTypeFlags & BATTLE_TYPE_x2000000)
2017-10-07 15:15:47 +02:00
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainer2WithdrewPkmn;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainer1WithdrewPkmn;
2017-10-07 15:15:47 +02:00
}
else
{
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1WithdrewPkmn;
2017-10-07 15:15:47 +02:00
}
}
break;
case STRINGID_SWITCHINMON: // switch-in msg
2018-02-06 02:46:59 +01:00
if (GetBattlerSide(gBattleScripting.battler) == B_SIDE_PLAYER)
2017-10-07 15:15:47 +02:00
{
if (*(&gBattleStruct->hpScale) == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
2018-02-28 23:50:25 +01:00
stringPtr = sText_GoPkmn2;
2017-10-07 15:15:47 +02:00
else if (*(&gBattleStruct->hpScale) == 1)
2018-02-28 23:50:25 +01:00
stringPtr = sText_DoItPkmn;
2017-10-07 15:15:47 +02:00
else if (*(&gBattleStruct->hpScale) == 2)
2018-02-28 23:50:25 +01:00
stringPtr = sText_GoForItPkmn;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_YourFoesWeakGetEmPkmn;
2017-10-07 15:15:47 +02:00
}
else
{
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
{
if (gBattleTypeFlags & BATTLE_TYPE_x800000)
{
2018-02-06 02:46:59 +01:00
if (gBattleScripting.battler == 1)
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn2;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer2SentOutPkmn;
2017-10-07 15:15:47 +02:00
}
else
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainerMultiSentOutPkmn;
2017-10-07 15:15:47 +02:00
else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn2;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainerSentOutPkmn2;
2017-10-07 15:15:47 +02:00
}
}
else
{
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
{
2018-02-06 02:46:59 +01:00
if (gBattleScripting.battler == 1)
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn2;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer2SentOutPkmn;
2017-10-07 15:15:47 +02:00
}
else
{
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn2;
2017-10-07 15:15:47 +02:00
}
}
}
break;
case STRINGID_USEDMOVE: // pokemon used a move msg
if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT)
2018-07-22 18:40:18 +02:00
StringCopy(gBattleTextBuff3, sATypeMove_Table[*(&gBattleStruct->stringMoveType)]);
2017-10-07 15:15:47 +02:00
else
2018-07-22 18:40:18 +02:00
StringCopy(gBattleTextBuff3, gMoveNames[gBattleMsgDataPtr->currentMove]);
2017-10-07 15:15:47 +02:00
2018-02-28 23:50:25 +01:00
stringPtr = sText_AttackerUsedX;
2017-10-07 15:15:47 +02:00
break;
case STRINGID_BATTLEEND: // battle end
2018-01-16 22:12:38 +01:00
if (gBattleTextBuff1[0] & B_OUTCOME_LINK_BATTLE_RAN)
2017-10-07 15:15:47 +02:00
{
2018-01-16 22:12:38 +01:00
gBattleTextBuff1[0] &= ~(B_OUTCOME_LINK_BATTLE_RAN);
2018-02-06 02:46:59 +01:00
if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT && gBattleTextBuff1[0] != B_OUTCOME_DREW)
2018-01-16 22:12:38 +01:00
gBattleTextBuff1[0] ^= (B_OUTCOME_LOST | B_OUTCOME_WON);
2017-10-07 15:15:47 +02:00
2018-01-16 22:12:38 +01:00
if (gBattleTextBuff1[0] == B_OUTCOME_LOST || gBattleTextBuff1[0] == B_OUTCOME_DREW)
2018-02-28 23:50:25 +01:00
stringPtr = sText_GotAwaySafely;
2017-10-07 15:15:47 +02:00
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoWildFled;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_WildFled;
2017-10-07 15:15:47 +02:00
}
else
{
2018-02-06 02:46:59 +01:00
if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT && gBattleTextBuff1[0] != B_OUTCOME_DREW)
2018-01-16 22:12:38 +01:00
gBattleTextBuff1[0] ^= (B_OUTCOME_LOST | B_OUTCOME_WON);
2017-10-07 15:15:47 +02:00
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
switch (gBattleTextBuff1[0])
{
2018-01-16 22:12:38 +01:00
case B_OUTCOME_WON:
2017-10-07 15:15:47 +02:00
if (gBattleTypeFlags & BATTLE_TYPE_x800000)
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoInGameTrainersDefeated;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoLinkTrainersDefeated;
2017-10-07 15:15:47 +02:00
break;
2018-01-16 22:12:38 +01:00
case B_OUTCOME_LOST:
2018-02-28 23:50:25 +01:00
stringPtr = sText_PlayerLostToTwo;
2017-10-07 15:15:47 +02:00
break;
2018-01-16 22:12:38 +01:00
case B_OUTCOME_DREW:
2018-02-28 23:50:25 +01:00
stringPtr = sText_PlayerBattledToDrawVsTwo;
2017-10-07 15:15:47 +02:00
break;
}
}
else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
{
switch (gBattleTextBuff1[0])
{
2018-01-16 22:12:38 +01:00
case B_OUTCOME_WON:
2018-02-28 23:50:25 +01:00
stringPtr = sText_PlayerDefeatedLinkTrainerTrainer1;
2017-10-07 15:15:47 +02:00
break;
2018-01-16 22:12:38 +01:00
case B_OUTCOME_LOST:
2018-02-28 23:50:25 +01:00
stringPtr = sText_PlayerLostAgainstTrainer1;
2017-10-07 15:15:47 +02:00
break;
2018-01-16 22:12:38 +01:00
case B_OUTCOME_DREW:
2018-02-28 23:50:25 +01:00
stringPtr = sText_PlayerBattledToDrawTrainer1;
2017-10-07 15:15:47 +02:00
break;
}
}
else
{
switch (gBattleTextBuff1[0])
{
2018-01-16 22:12:38 +01:00
case B_OUTCOME_WON:
2018-02-28 23:50:25 +01:00
stringPtr = sText_PlayerDefeatedLinkTrainer;
2017-10-07 15:15:47 +02:00
break;
2018-01-16 22:12:38 +01:00
case B_OUTCOME_LOST:
2018-02-28 23:50:25 +01:00
stringPtr = sText_PlayerLostAgainstLinkTrainer;
2017-10-07 15:15:47 +02:00
break;
2018-01-16 22:12:38 +01:00
case B_OUTCOME_DREW:
2018-02-28 23:50:25 +01:00
stringPtr = sText_PlayerBattledToDrawLinkTrainer;
2017-10-07 15:15:47 +02:00
break;
}
}
}
break;
default: // load a string from the table
if (stringID >= BATTLESTRINGS_COUNT + BATTLESTRINGS_ID_ADDER)
{
gDisplayedStringBattle[0] = EOS;
return;
}
else
{
stringPtr = gBattleStringsTable[stringID - BATTLESTRINGS_ID_ADDER];
}
break;
}
BattleStringExpandPlaceholdersToDisplayedString(stringPtr);
}
u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src)
{
BattleStringExpandPlaceholders(src, gDisplayedStringBattle);
}
2018-03-01 00:59:52 +01:00
static const u8* TryGetStatusString(u8 *src)
{
u32 i;
u8 status[8];
u32 chars1, chars2;
u8* statusPtr;
memcpy(status, sDummyWeirdStatusString, 8);
statusPtr = status;
for (i = 0; i < 8; i++)
{
if (*src == EOS)
break;
*statusPtr = *src;
src++;
statusPtr++;
}
chars1 = *(u32*)(&status[0]);
chars2 = *(u32*)(&status[4]);
for (i = 0; i < ARRAY_COUNT(gStatusConditionStringsTable); i++)
{
if (chars1 == *(u32*)(&gStatusConditionStringsTable[i][0][0])
&& chars2 == *(u32*)(&gStatusConditionStringsTable[i][0][4]))
return gStatusConditionStringsTable[i][1];
}
return NULL;
}
2018-03-01 00:59:52 +01:00
#define HANDLE_NICKNAME_STRING_CASE(battlerId, monIndex) \
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) \
{ \
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix; \
else \
2018-02-28 23:50:25 +01:00
toCpy = sText_WildPkmnPrefix; \
while (*toCpy != EOS) \
{ \
dst[dstID] = *toCpy; \
dstID++; \
toCpy++; \
} \
GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \
} \
else \
{ \
GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \
} \
StringGetEnd10(text); \
toCpy = text;
2018-07-15 18:53:43 +02:00
static const u8 *BattleStringGetTrainerName(u16 trainerId, u8 *text, u8 multiplierId)
{
const u8 *toCpy;
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
{
u32 i;
for (i = 0; i < ARRAY_COUNT(gBattleResources->secretBase->trainerName); i++)
text[i] = gBattleResources->secretBase->trainerName[i];
text[i] = EOS;
ConvertInternationalString(text, gBattleResources->secretBase->language);
toCpy = text;
}
else if (trainerId == TRAINER_OPPONENT_C00)
{
toCpy = gLinkPlayers[multiplierId ^ BIT_SIDE].name;
}
else if (trainerId == TRAINER_FRONTIER_BRAIN)
{
CopyFrontierBrainTrainerName(text);
toCpy = text;
}
else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
GetFrontierTrainerName(text, trainerId);
toCpy = text;
}
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
{
sub_81D5554(text, trainerId);
toCpy = text;
}
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
{
GetEreaderTrainerName(text);
toCpy = text;
}
else
{
toCpy = gTrainers[trainerId].trainerName;
}
return toCpy;
}
static const u8 *BattleStringGetTrainerClass(u16 trainerId)
{
const u8 *toCpy;
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
toCpy = gTrainerClassNames[GetSecretBaseTrainerClass()];
else if (trainerId == TRAINER_OPPONENT_C00)
toCpy = gTrainerClassNames[sub_8068BB0()];
else if (trainerId == TRAINER_FRONTIER_BRAIN)
toCpy = gTrainerClassNames[GetFrontierBrainTrainerClass()];
else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
toCpy = gTrainerClassNames[GetFrontierOpponentClass(trainerId)];
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
toCpy = gTrainerClassNames[sub_81D5530(trainerId)];
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
toCpy = gTrainerClassNames[GetEreaderTrainerClassId()];
else
toCpy = gTrainerClassNames[gTrainers[trainerId].trainerClass];
return toCpy;
}
2018-03-01 00:59:52 +01:00
u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
{
u32 dstID = 0; // if they used dstID, why not use srcID as well?
2018-03-01 00:59:52 +01:00
const u8 *toCpy = NULL;
u8 text[30];
u8 multiplayerID;
s32 i;
if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
multiplayerID = gUnknown_0203C7B4;
else
multiplayerID = GetMultiplayerId();
while (*src != EOS)
{
2018-07-15 18:53:43 +02:00
toCpy = NULL;
if (*src == PLACEHOLDER_BEGIN)
{
src++;
switch (*src)
{
case B_TXT_BUFF1:
if (gBattleTextBuff1[0] == B_BUFF_PLACEHOLDER_BEGIN)
{
ExpandBattleTextBuffPlaceholders(gBattleTextBuff1, gStringVar1);
toCpy = gStringVar1;
}
else
{
toCpy = TryGetStatusString(gBattleTextBuff1);
if (toCpy == NULL)
toCpy = gBattleTextBuff1;
}
break;
case B_TXT_BUFF2:
if (gBattleTextBuff2[0] == B_BUFF_PLACEHOLDER_BEGIN)
{
ExpandBattleTextBuffPlaceholders(gBattleTextBuff2, gStringVar2);
toCpy = gStringVar2;
}
else
toCpy = gBattleTextBuff2;
break;
case B_TXT_BUFF3:
if (gBattleTextBuff3[0] == B_BUFF_PLACEHOLDER_BEGIN)
{
ExpandBattleTextBuffPlaceholders(gBattleTextBuff3, gStringVar3);
toCpy = gStringVar3;
}
else
toCpy = gBattleTextBuff3;
break;
case B_TXT_COPY_VAR_1:
toCpy = gStringVar1;
break;
case B_TXT_COPY_VAR_2:
toCpy = gStringVar2;
break;
case B_TXT_COPY_VAR_3:
toCpy = gStringVar3;
break;
case B_TXT_PLAYER_MON1_NAME: // first player poke name
2018-02-06 20:48:02 +01:00
GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_OPPONENT_MON1_NAME: // first enemy poke name
2018-02-06 20:48:02 +01:00
GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_PLAYER_MON2_NAME: // second player poke name
2018-02-06 20:48:02 +01:00
GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_OPPONENT_MON2_NAME: // second enemy poke name
2018-02-06 20:48:02 +01:00
GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_LINK_PLAYER_MON1_NAME: // link first player poke name
2018-07-22 12:49:49 +02:00
GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_LINK_OPPONENT_MON1_NAME: // link first opponent poke name
2018-07-22 12:49:49 +02:00
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id ^ 1]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_LINK_PLAYER_MON2_NAME: // link second player poke name
2018-07-22 12:49:49 +02:00
GetMonData(&gPlayerParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id ^ 2]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_LINK_OPPONENT_MON2_NAME: // link second opponent poke name
2018-07-22 12:49:49 +02:00
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gLinkPlayers[multiplayerID].id ^ 3]],
MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
2018-03-01 00:59:52 +01:00
case B_TXT_ATK_NAME_WITH_PREFIX_MON1: // attacker name with prefix, only battlerId 0/1
2018-02-06 23:09:39 +01:00
HANDLE_NICKNAME_STRING_CASE(gBattlerAttacker,
gBattlerPartyIndexes[GetBattlerAtPosition(GET_BATTLER_SIDE(gBattlerAttacker))])
break;
case B_TXT_ATK_PARTNER_NAME: // attacker partner name
2018-02-06 23:09:39 +01:00
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
GetMonData(&gPlayerParty[gBattlerPartyIndexes[GetBattlerAtPosition(GET_BATTLER_SIDE(gBattlerAttacker)) + 2]], MON_DATA_NICKNAME, text);
else
2018-02-06 23:09:39 +01:00
GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(GET_BATTLER_SIDE(gBattlerAttacker)) + 2]], MON_DATA_NICKNAME, text);
StringGetEnd10(text);
toCpy = text;
break;
case B_TXT_ATK_NAME_WITH_PREFIX: // attacker name with prefix
2018-02-06 23:09:39 +01:00
HANDLE_NICKNAME_STRING_CASE(gBattlerAttacker, gBattlerPartyIndexes[gBattlerAttacker])
break;
case B_TXT_DEF_NAME_WITH_PREFIX: // target name with prefix
2018-02-06 23:09:39 +01:00
HANDLE_NICKNAME_STRING_CASE(gBattlerTarget, gBattlerPartyIndexes[gBattlerTarget])
break;
2018-03-01 00:59:52 +01:00
case B_TXT_EFF_NAME_WITH_PREFIX: // effect battlerId name with prefix
2018-02-08 11:17:41 +01:00
HANDLE_NICKNAME_STRING_CASE(gEffectBattler, gBattlerPartyIndexes[gEffectBattler])
break;
2018-03-01 00:59:52 +01:00
case B_TXT_ACTIVE_NAME_WITH_PREFIX: // active battlerId name with prefix
2018-02-06 20:48:02 +01:00
HANDLE_NICKNAME_STRING_CASE(gActiveBattler, gBattlerPartyIndexes[gActiveBattler])
break;
2018-03-01 00:59:52 +01:00
case B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX: // scripting active battlerId name with prefix
2018-02-06 20:48:02 +01:00
HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, gBattlerPartyIndexes[gBattleScripting.battler])
break;
case B_TXT_CURRENT_MOVE: // current move name
if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT)
2018-02-28 23:50:25 +01:00
toCpy = sATypeMove_Table[gBattleStruct->stringMoveType];
else
2018-06-30 15:35:54 +02:00
toCpy = gMoveNames[gBattleMsgDataPtr->currentMove];
break;
2017-11-26 14:17:02 +01:00
case B_TXT_LAST_MOVE: // originally used move name
if (gBattleMsgDataPtr->originallyUsedMove >= MOVES_COUNT)
2018-02-28 23:50:25 +01:00
toCpy = sATypeMove_Table[gBattleStruct->stringMoveType];
else
2018-06-30 15:35:54 +02:00
toCpy = gMoveNames[gBattleMsgDataPtr->originallyUsedMove];
break;
case B_TXT_LAST_ITEM: // last used item
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
{
if (gLastUsedItem == ITEM_ENIGMA_BERRY)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
2018-02-08 12:13:29 +01:00
if ((gBattleScripting.multiplayerId != 0 && (gPotentialItemEffectBattler & BIT_SIDE))
|| (gBattleScripting.multiplayerId == 0 && !(gPotentialItemEffectBattler & BIT_SIDE)))
{
2018-02-08 12:13:29 +01:00
StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name);
2018-02-28 23:50:25 +01:00
StringAppend(text, sText_BerrySuffix);
toCpy = text;
}
else
{
2018-02-28 23:50:25 +01:00
toCpy = sText_EnigmaBerry;
}
}
else
{
2018-07-22 12:49:49 +02:00
if (gLinkPlayers[gBattleScripting.multiplayerId].id == gPotentialItemEffectBattler)
{
2018-02-08 12:13:29 +01:00
StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name);
2018-02-28 23:50:25 +01:00
StringAppend(text, sText_BerrySuffix);
toCpy = text;
}
else
2018-02-28 23:50:25 +01:00
toCpy = sText_EnigmaBerry;
}
}
else
{
CopyItemName(gLastUsedItem, text);
toCpy = text;
}
}
else
{
CopyItemName(gLastUsedItem, text);
toCpy = text;
}
break;
case B_TXT_LAST_ABILITY: // last used ability
toCpy = gAbilityNames[gLastUsedAbility];
break;
case B_TXT_ATK_ABILITY: // attacker ability
2018-06-30 15:35:54 +02:00
toCpy = gAbilityNames[sBattlerAbilities[gBattlerAttacker]];
break;
case B_TXT_DEF_ABILITY: // target ability
2018-06-30 15:35:54 +02:00
toCpy = gAbilityNames[sBattlerAbilities[gBattlerTarget]];
break;
case B_TXT_SCR_ACTIVE_ABILITY: // scripting active ability
2018-06-30 15:35:54 +02:00
toCpy = gAbilityNames[sBattlerAbilities[gBattleScripting.battler]];
break;
2018-03-01 00:59:52 +01:00
case B_TXT_EFF_ABILITY: // effect battlerId ability
2018-06-30 15:35:54 +02:00
toCpy = gAbilityNames[sBattlerAbilities[gEffectBattler]];
break;
case B_TXT_TRAINER1_CLASS: // trainer class name
2018-07-15 18:53:43 +02:00
toCpy = BattleStringGetTrainerClass(gTrainerBattleOpponent_A);
break;
case B_TXT_TRAINER1_NAME: // trainer1 name
2018-07-15 18:53:43 +02:00
toCpy = BattleStringGetTrainerName(gTrainerBattleOpponent_A, text, multiplayerID);
break;
case B_TXT_1E: // link player name?
toCpy = gLinkPlayers[multiplayerID].name;
break;
case B_TXT_1F: // link partner name?
2018-07-22 12:49:49 +02:00
toCpy = gLinkPlayers[GetBattlerMultiplayerId(2 ^ gLinkPlayers[multiplayerID].id)].name;
break;
case B_TXT_20: // link opponent 1 name?
2018-07-22 12:49:49 +02:00
toCpy = gLinkPlayers[GetBattlerMultiplayerId(1 ^ gLinkPlayers[multiplayerID].id)].name;
break;
case B_TXT_21: // link opponent 2 name?
2018-07-22 12:49:49 +02:00
toCpy = gLinkPlayers[GetBattlerMultiplayerId(3 ^ gLinkPlayers[multiplayerID].id)].name;
break;
case B_TXT_22: // link scripting active name
2018-02-06 20:48:02 +01:00
toCpy = gLinkPlayers[GetBattlerMultiplayerId(gBattleScripting.battler)].name;
break;
case B_TXT_PLAYER_NAME: // player name
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
toCpy = gLinkPlayers[0].name;
else
toCpy = gSaveBlock2Ptr->playerName;
break;
case B_TXT_TRAINER1_LOSE_TEXT: // trainerA lose text
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
sub_81A36D0(2, gTrainerBattleOpponent_A);
toCpy = gStringVar4;
}
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
{
sub_81D572C(4, gTrainerBattleOpponent_A);
toCpy = gStringVar4;
}
else
{
2017-12-01 21:25:13 +01:00
toCpy = GetTrainerALoseText();
}
break;
case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
sub_81A36D0(1, gTrainerBattleOpponent_A);
toCpy = gStringVar4;
}
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
{
sub_81D572C(3, gTrainerBattleOpponent_A);
toCpy = gStringVar4;
}
break;
case B_TXT_26: // ?
2018-07-15 18:53:43 +02:00
HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler, *(&gBattleStruct->field_52));
break;
case B_TXT_PC_CREATOR_NAME: // lanette pc
2017-11-08 22:20:10 +01:00
if (FlagGet(FLAG_SYS_PC_LANETTE))
2018-02-28 23:50:25 +01:00
toCpy = sText_Lanettes;
else
2018-02-28 23:50:25 +01:00
toCpy = sText_Someones;
break;
case B_TXT_ATK_PREFIX2:
2018-02-06 23:09:39 +01:00
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
2018-02-28 23:50:25 +01:00
toCpy = sText_AllyPkmnPrefix2;
else
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix3;
break;
case B_TXT_DEF_PREFIX2:
2018-02-06 23:09:39 +01:00
if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
2018-02-28 23:50:25 +01:00
toCpy = sText_AllyPkmnPrefix2;
else
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix3;
break;
case B_TXT_ATK_PREFIX1:
2018-02-06 23:09:39 +01:00
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
2018-02-28 23:50:25 +01:00
toCpy = sText_AllyPkmnPrefix;
else
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix2;
break;
case B_TXT_DEF_PREFIX1:
2018-02-06 23:09:39 +01:00
if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
2018-02-28 23:50:25 +01:00
toCpy = sText_AllyPkmnPrefix;
else
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix2;
break;
case B_TXT_ATK_PREFIX3:
2018-02-06 23:09:39 +01:00
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
2018-02-28 23:50:25 +01:00
toCpy = sText_AllyPkmnPrefix3;
else
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix4;
break;
case B_TXT_DEF_PREFIX3:
2018-02-06 23:09:39 +01:00
if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
2018-02-28 23:50:25 +01:00
toCpy = sText_AllyPkmnPrefix3;
else
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix4;
break;
case B_TXT_TRAINER2_CLASS:
2018-07-15 18:53:43 +02:00
toCpy = BattleStringGetTrainerClass(gTrainerBattleOpponent_B);
break;
case B_TXT_TRAINER2_NAME:
2018-07-15 18:53:43 +02:00
toCpy = BattleStringGetTrainerName(gTrainerBattleOpponent_B, text, multiplayerID);
break;
case B_TXT_TRAINER2_LOSE_TEXT:
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
sub_81A36D0(2, gTrainerBattleOpponent_B);
toCpy = gStringVar4;
}
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
{
sub_81D572C(4, gTrainerBattleOpponent_B);
toCpy = gStringVar4;
}
else
{
2017-12-01 21:25:13 +01:00
toCpy = GetTrainerBLoseText();
}
break;
case B_TXT_TRAINER2_WIN_TEXT:
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
sub_81A36D0(1, gTrainerBattleOpponent_B);
toCpy = gStringVar4;
}
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
{
sub_81D572C(3, gTrainerBattleOpponent_B);
toCpy = gStringVar4;
}
break;
case B_TXT_PARTNER_CLASS:
toCpy = gTrainerClassNames[GetFrontierOpponentClass(gPartnerTrainerId)];
break;
case B_TXT_PARTNER_NAME:
GetFrontierTrainerName(text, gPartnerTrainerId);
toCpy = text;
break;
2018-07-15 18:53:43 +02:00
case B_TXT_ATK_TRAINER_NAME:
switch (GetBattlerPosition(gBattlerAttacker))
{
case B_POSITION_PLAYER_LEFT:
toCpy = gSaveBlock2Ptr->playerName;
break;
case B_POSITION_PLAYER_RIGHT:
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
GetFrontierTrainerName(text, gPartnerTrainerId);
toCpy = text;
}
else
{
toCpy = gSaveBlock2Ptr->playerName;
}
break;
case B_POSITION_OPPONENT_LEFT:
toCpy = BattleStringGetTrainerName(gTrainerBattleOpponent_A, text, multiplayerID);
break;
case B_POSITION_OPPONENT_RIGHT:
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
toCpy = BattleStringGetTrainerName(gTrainerBattleOpponent_B, text, multiplayerID);
else
toCpy = BattleStringGetTrainerName(gTrainerBattleOpponent_A, text, multiplayerID);
break;
}
break;
case B_TXT_ATK_TRAINER_CLASS:
switch (GetBattlerPosition(gBattlerAttacker))
{
case B_POSITION_PLAYER_RIGHT:
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
toCpy = gTrainerClassNames[GetFrontierOpponentClass(gPartnerTrainerId)];
break;
case B_POSITION_OPPONENT_LEFT:
toCpy = BattleStringGetTrainerClass(gTrainerBattleOpponent_A);
break;
case B_POSITION_OPPONENT_RIGHT:
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
toCpy = BattleStringGetTrainerClass(gTrainerBattleOpponent_B);
else
toCpy = BattleStringGetTrainerClass(gTrainerBattleOpponent_A);
break;
}
break;
2018-07-21 12:56:07 +02:00
case B_TXT_ATK_TEAM:
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
toCpy = sText_YourTeam;
else
toCpy = sText_OpposingTeam;
break;
}
2018-07-15 18:53:43 +02:00
if (toCpy != NULL)
{
2018-07-15 18:53:43 +02:00
while (*toCpy != EOS)
{
dst[dstID] = *toCpy;
dstID++;
toCpy++;
}
}
2018-07-15 18:53:43 +02:00
if (*src == B_TXT_TRAINER1_LOSE_TEXT || *src == B_TXT_TRAINER2_LOSE_TEXT
|| *src == B_TXT_TRAINER1_WIN_TEXT || *src == B_TXT_TRAINER2_WIN_TEXT)
{
dst[dstID] = EXT_CTRL_CODE_BEGIN;
dstID++;
dst[dstID] = 9;
dstID++;
}
}
else
{
dst[dstID] = *src;
dstID++;
}
src++;
}
dst[dstID] = *src;
dstID++;
return dstID;
}
static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst)
{
u32 srcID = 1;
u32 value = 0;
u8 text[12];
u16 hword;
*dst = EOS;
while (src[srcID] != B_BUFF_EOS)
{
switch (src[srcID])
{
case B_BUFF_STRING: // battle string
2018-06-30 14:12:17 +02:00
hword = T1_READ_16(&src[srcID + 1]);
StringAppend(dst, gBattleStringsTable[hword - BATTLESTRINGS_ID_ADDER]);
srcID += 3;
break;
case B_BUFF_NUMBER: // int to string
switch (src[srcID + 1])
{
case 1:
value = src[srcID + 3];
break;
case 2:
2018-06-30 14:12:17 +02:00
value = T1_READ_16(&src[srcID + 3]);
break;
case 4:
2018-06-30 14:12:17 +02:00
value = T1_READ_32(&src[srcID + 3]);
break;
}
ConvertIntToDecimalStringN(dst, value, 0, src[srcID + 2]);
srcID += src[srcID + 1] + 3;
break;
case B_BUFF_MOVE: // move name
2018-06-30 14:12:17 +02:00
StringAppend(dst, gMoveNames[T1_READ_16(&src[srcID + 1])]);
srcID += 3;
break;
case B_BUFF_TYPE: // type name
StringAppend(dst, gTypeNames[src[srcID + 1]]);
srcID += 2;
break;
case B_BUFF_MON_NICK_WITH_PREFIX: // poke nick with prefix
2018-02-06 02:46:59 +01:00
if (GetBattlerSide(src[srcID + 1]) == B_SIDE_PLAYER)
{
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
}
else
{
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
2018-02-28 23:50:25 +01:00
StringAppend(dst, sText_FoePkmnPrefix);
else
2018-02-28 23:50:25 +01:00
StringAppend(dst, sText_WildPkmnPrefix);
GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
}
StringGetEnd10(text);
StringAppend(dst, text);
srcID += 3;
break;
case B_BUFF_STAT: // stats
StringAppend(dst, gStatNamesTable[src[srcID + 1]]);
srcID += 2;
break;
case B_BUFF_SPECIES: // species name
2018-06-30 14:12:17 +02:00
GetSpeciesName(dst, T1_READ_16(&src[srcID + 1]));
srcID += 3;
break;
case B_BUFF_MON_NICK: // poke nick without prefix
2018-02-06 02:46:59 +01:00
if (GetBattlerSide(src[srcID + 1]) == B_SIDE_PLAYER)
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
else
GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
StringGetEnd10(dst);
srcID += 3;
break;
2017-11-27 20:03:41 +01:00
case B_BUFF_NEGATIVE_FLAVOR: // flavor table
StringAppend(dst, gPokeblockWasTooXStringTable[src[srcID + 1]]);
srcID += 2;
break;
case B_BUFF_ABILITY: // ability names
StringAppend(dst, gAbilityNames[src[srcID + 1]]);
srcID += 2;
break;
case B_BUFF_ITEM: // item name
2018-06-30 14:12:17 +02:00
hword = T1_READ_16(&src[srcID + 1]);
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
{
if (hword == ITEM_ENIGMA_BERRY)
{
2018-07-22 12:49:49 +02:00
if (gLinkPlayers[gBattleScripting.multiplayerId].id == gPotentialItemEffectBattler)
{
2018-02-08 12:13:29 +01:00
StringCopy(dst, gEnigmaBerries[gPotentialItemEffectBattler].name);
2018-02-28 23:50:25 +01:00
StringAppend(dst, sText_BerrySuffix);
}
else
2018-06-30 14:12:17 +02:00
{
2018-02-28 23:50:25 +01:00
StringAppend(dst, sText_EnigmaBerry);
2018-06-30 14:12:17 +02:00
}
}
else
2018-06-30 14:12:17 +02:00
{
CopyItemName(hword, dst);
2018-06-30 14:12:17 +02:00
}
}
else
2018-06-30 14:12:17 +02:00
{
CopyItemName(hword, dst);
2018-06-30 14:12:17 +02:00
}
srcID += 3;
break;
}
}
}
2017-10-08 14:54:51 +02:00
// Loads one of two text strings into the provided buffer. This is functionally
// unused, since the value loaded into the buffer is not read; it loaded one of
// two particles (either "?" or "?") which works in tandem with ChooseTypeOfMoveUsedString
// below to effect changes in the meaning of the line.
2018-06-30 14:12:17 +02:00
static void ChooseMoveUsedParticle(u8* textBuff)
2017-10-08 14:54:51 +02:00
{
s32 counter = 0;
u32 i = 0;
while (counter != 4)
{
2018-06-30 14:12:17 +02:00
if (sGrammarMoveUsedTable[i] == 0)
2017-10-08 14:54:51 +02:00
counter++;
2018-06-30 15:35:54 +02:00
if (sGrammarMoveUsedTable[i++] == gBattleMsgDataPtr->currentMove)
2017-10-08 14:54:51 +02:00
break;
}
if (counter >= 0)
{
if (counter <= 2)
2018-02-28 23:50:25 +01:00
StringCopy(textBuff, sText_SpaceIs); // is
2017-10-08 14:54:51 +02:00
else if (counter <= 4)
2018-07-24 20:13:02 +02:00
StringCopy(textBuff, sText_ApostropheS); // s
2017-10-08 14:54:51 +02:00
}
}
// Appends "!" to the text buffer `dst`. In the original Japanese this looked
2018-06-30 14:12:17 +02:00
// into the table of moves at sGrammarMoveUsedTable and varied the line accordingly.
2018-02-08 00:00:25 +01:00
//
2018-02-28 23:50:25 +01:00
// sText_ExclamationMark was a plain "!", used for any attack not on the list.
2018-07-24 20:13:02 +02:00
// It resulted in the translation "<NAME>s <ATTACK>!".
2018-02-08 00:00:25 +01:00
//
// sText_ExclamationMark2 was "? ????!". This resulted in the translation
// "<NAME> used <ATTACK>!", which was used for all attacks in English.
2018-02-08 00:00:25 +01:00
//
// sText_ExclamationMark3 was "??!". This was used for those moves whose
// names were verbs, such as Recover, and resulted in translations like "<NAME>
// recovered itself!".
2018-02-08 00:00:25 +01:00
//
// sText_ExclamationMark4 was "? ??!" This resulted in a translation of
// "<NAME> did an <ATTACK>!".
2018-02-08 00:00:25 +01:00
//
// sText_ExclamationMark5 was " ????!" This resulted in a translation of
2018-07-24 20:13:02 +02:00
// "<NAME>s <ATTACK> attack!".
2018-06-30 14:12:17 +02:00
static void ChooseTypeOfMoveUsedString(u8* dst)
2017-10-08 14:54:51 +02:00
{
s32 counter = 0;
s32 i = 0;
while (*dst != EOS)
dst++;
while (counter != 4)
{
2018-06-30 14:12:17 +02:00
if (sGrammarMoveUsedTable[i] == MOVE_NONE)
2017-10-08 14:54:51 +02:00
counter++;
2018-06-30 15:35:54 +02:00
if (sGrammarMoveUsedTable[i++] == gBattleMsgDataPtr->currentMove)
2017-10-08 14:54:51 +02:00
break;
}
switch (counter)
{
case 0:
2018-02-28 23:50:25 +01:00
StringCopy(dst, sText_ExclamationMark);
2017-10-08 14:54:51 +02:00
break;
case 1:
2018-02-28 23:50:25 +01:00
StringCopy(dst, sText_ExclamationMark2);
2017-10-08 14:54:51 +02:00
break;
case 2:
2018-02-28 23:50:25 +01:00
StringCopy(dst, sText_ExclamationMark3);
2017-10-08 14:54:51 +02:00
break;
case 3:
2018-02-28 23:50:25 +01:00
StringCopy(dst, sText_ExclamationMark4);
2017-10-08 14:54:51 +02:00
break;
case 4:
2018-02-28 23:50:25 +01:00
StringCopy(dst, sText_ExclamationMark5);
2017-10-08 14:54:51 +02:00
break;
}
}
2018-06-17 16:48:58 +02:00
void BattlePutTextOnWindow(const u8 *text, u8 windowId)
2017-10-08 14:54:51 +02:00
{
2018-06-17 16:48:58 +02:00
const struct BattleWindowText *textInfo = sBattleTextOnWindowsInfo[gBattleScripting.windowsType];
2018-07-16 20:47:30 +02:00
bool32 copyToVram;
2017-10-08 14:54:51 +02:00
struct TextSubPrinter textSubPrinter;
u8 speed;
2018-06-17 16:48:58 +02:00
if (windowId & 0x80)
2017-10-08 14:54:51 +02:00
{
2018-06-17 16:48:58 +02:00
windowId &= ~(0x80);
2018-07-16 20:47:30 +02:00
copyToVram = FALSE;
2017-10-08 14:54:51 +02:00
}
else
{
2018-06-17 16:48:58 +02:00
FillWindowPixelBuffer(windowId, textInfo[windowId].fillValue);
2018-07-16 20:47:30 +02:00
copyToVram = TRUE;
2017-10-08 14:54:51 +02:00
}
textSubPrinter.current_text_offset = text;
2018-06-17 16:48:58 +02:00
textSubPrinter.windowId = windowId;
textSubPrinter.fontId = textInfo[windowId].fontId;
textSubPrinter.x = textInfo[windowId].x;
textSubPrinter.y = textInfo[windowId].y;
2017-10-08 14:54:51 +02:00
textSubPrinter.currentX = textSubPrinter.x;
textSubPrinter.currentY = textSubPrinter.y;
2018-06-17 16:48:58 +02:00
textSubPrinter.letterSpacing = textInfo[windowId].letterSpacing;
textSubPrinter.lineSpacing = textInfo[windowId].lineSpacing;
2017-10-08 14:54:51 +02:00
textSubPrinter.fontColor_l = 0;
2018-06-17 16:48:58 +02:00
textSubPrinter.fgColor = textInfo[windowId].fgColor;
textSubPrinter.bgColor = textInfo[windowId].bgColor;
textSubPrinter.shadowColor = textInfo[windowId].shadowColor;
2017-10-08 14:54:51 +02:00
if (textSubPrinter.x == 0xFF)
{
2018-06-17 16:48:58 +02:00
u32 width = sub_80397C4(gBattleScripting.windowsType, windowId);
s32 alignX = GetStringCenterAlignXOffsetWithLetterSpacing(textSubPrinter.fontId, textSubPrinter.current_text_offset, width, textSubPrinter.letterSpacing);
textSubPrinter.x = textSubPrinter.currentX = alignX;
2017-10-08 14:54:51 +02:00
}
2018-06-17 16:48:58 +02:00
if (windowId == 0x16)
2017-10-08 14:54:51 +02:00
gTextFlags.flag_1 = 0;
else
gTextFlags.flag_1 = 1;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED))
gTextFlags.flag_2 = 1;
else
gTextFlags.flag_2 = 0;
2018-06-17 16:48:58 +02:00
if (windowId == 0 || windowId == 0x16)
2017-10-08 14:54:51 +02:00
{
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
speed = 1;
else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
2017-11-13 18:07:23 +01:00
speed = sRecordedBattleTextSpeeds[GetTextSpeedInRecordedBattle()];
2017-10-08 14:54:51 +02:00
else
2017-11-18 16:11:34 +01:00
speed = GetPlayerTextSpeed();
2017-10-08 14:54:51 +02:00
gTextFlags.flag_0 = 1;
}
else
{
2018-06-17 16:48:58 +02:00
speed = textInfo[windowId].speed;
2017-10-08 14:54:51 +02:00
gTextFlags.flag_0 = 0;
}
AddTextPrinter(&textSubPrinter, speed, NULL);
2018-07-16 20:47:30 +02:00
if (copyToVram)
2017-10-08 14:54:51 +02:00
{
2018-06-17 16:48:58 +02:00
PutWindowTilemap(windowId);
CopyWindowToVram(windowId, 3);
2017-10-08 14:54:51 +02:00
}
}
void SetPpNumbersPaletteInMoveSelection(void)
{
2018-02-06 02:46:59 +01:00
struct ChooseMoveStruct *chooseMoveStruct = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
2017-10-08 14:54:51 +02:00
const u16 *palPtr = gUnknown_08D85620;
2018-02-06 02:46:59 +01:00
u8 var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[gActiveBattler]],
chooseMoveStruct->maxPp[gMoveSelectionCursor[gActiveBattler]]);
2017-10-08 14:54:51 +02:00
gPlttBufferUnfaded[92] = palPtr[(var * 2) + 0];
gPlttBufferUnfaded[91] = palPtr[(var * 2) + 1];
CpuCopy16(&gPlttBufferUnfaded[92], &gPlttBufferFaded[92], sizeof(u16));
CpuCopy16(&gPlttBufferUnfaded[91], &gPlttBufferFaded[91], sizeof(u16));
}
u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp)
{
if (maxPp == currentPp)
{
return 3;
}
else if (maxPp <= 2)
{
if (currentPp > 1)
return 3;
else
return 2 - currentPp;
}
else if (maxPp <= 7)
{
if (currentPp > 2)
return 3;
else
return 2 - currentPp;
}
else
{
if (currentPp == 0)
return 2;
if (currentPp <= maxPp / 4)
return 1;
if (currentPp > maxPp / 2)
return 3;
}
return 0;
}