2017-10-07 15:15:47 +02:00
# include "global.h"
# include "battle.h"
2019-03-31 19:15:39 +02:00
# include "battle_anim.h"
2018-11-22 02:10:50 +01:00
# include "battle_controllers.h"
2017-10-07 15:15:47 +02:00
# include "battle_message.h"
2018-11-22 02:10:50 +01:00
# include "battle_setup.h"
# include "battle_tower.h"
2019-04-04 23:53:06 +02:00
# include "data.h"
2017-10-07 19:59:41 +02:00
# include "event_data.h"
2018-11-22 02:10:50 +01:00
# include "frontier_util.h"
# include "international_string_util.h"
2017-10-07 19:59:41 +02:00
# include "item.h"
2018-11-22 02:10:50 +01:00
# include "link.h"
2018-02-09 01:09:02 +01:00
# include "menu.h"
2018-11-22 02:10:50 +01:00
# include "palette.h"
2018-02-09 01:09:02 +01:00
# include "recorded_battle.h"
2018-11-22 02:10:50 +01:00
# include "string_util.h"
2018-12-24 00:02:29 +01:00
# include "strings.h"
2018-11-22 02:10:50 +01:00
# include "text.h"
2019-01-13 20:50:08 +01:00
# include "trainer_hill.h"
2018-11-22 02:10:50 +01:00
# include "window.h"
# include "constants/battle_string_ids.h"
# include "constants/items.h"
# include "constants/moves.h"
2018-11-30 20:46:09 +01:00
# include "constants/species.h"
2018-11-22 02:10:50 +01:00
# include "constants/trainers.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 const u16 gUnknown_08D85620 [ ] ;
2017-10-07 15:15:47 +02:00
// this file's functions
2018-06-30 14:12:17 +02:00
static void ChooseMoveUsedParticle ( u8 * textPtr ) ;
static void ChooseTypeOfMoveUsedString ( u8 * dst ) ;
2017-10-07 19:59:41 +02:00
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 \n LV. {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 \n learn {B_BUFF2}. \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_TryToLearnMove2 [ ] = _ ( " But, {B_BUFF1} can't learn \n more than four moves. \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_TryToLearnMove3 [ ] = _ ( " Delete a move to make \n room 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? " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_AttackMissed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s \n attack missed! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnProtectedItself [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} \n protected itself! " ) ;
static const u8 sText_AvoidedDamage [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} avoided \n damage with {B_DEF_ABILITY}! " ) ;
static const u8 sText_PkmnMakesGroundMiss [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} makes GROUND \n moves miss with {B_DEF_ABILITY}! " ) ;
static const u8 sText_PkmnAvoidedAttack [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} avoided \n the attack! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_ItDoesntAffect [ ] = _ ( " It doesn't affect \n {B_DEF_NAME_WITH_PREFIX}… " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_AttackerFainted [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} \n fainted! \ p " ) ;
static const u8 sText_TargetFainted [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} \n fainted! \ p " ) ;
static const u8 sText_PlayerGotMoney [ ] = _ ( " {B_PLAYER_NAME} got ¥{B_BUFF1} \n for winning! \ p " ) ;
static const u8 sText_PlayerWhiteout [ ] = _ ( " {B_PLAYER_NAME} is out of \n usable 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 \n escape with {B_SCR_ACTIVE_ABILITY}! \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_CantEscape2 [ ] = _ ( " Can't escape! \ p " ) ;
static const u8 sText_AttackerCantEscape [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} can't escape! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_HitXTimes [ ] = _ ( " Hit {B_BUFF1} time(s)! " ) ;
static const u8 sText_PkmnFellAsleep [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} \n fell asleep! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnMadeSleep [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n made {B_EFF_NAME_WITH_PREFIX} sleep! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnAlreadyAsleep [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} is \n already asleep! " ) ;
static const u8 sText_PkmnAlreadyAsleep2 [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is \n already asleep! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnWasntAffected [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} \n wasn't affected! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWasPoisoned [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} \n was poisoned! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnPoisonedBy [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n poisoned {B_EFF_NAME_WITH_PREFIX}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnHurtByPoison [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is hurt \n by poison! " ) ;
static const u8 sText_PkmnAlreadyPoisoned [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} is already \n poisoned. " ) ;
static const u8 sText_PkmnBadlyPoisoned [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} is badly \n poisoned! " ) ;
static const u8 sText_PkmnEnergyDrained [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} had its \n energy drained! " ) ;
static const u8 sText_PkmnWasBurned [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} was burned! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnBurnedBy [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n burned {B_EFF_NAME_WITH_PREFIX}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnHurtByBurn [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is hurt \n by its burn! " ) ;
static const u8 sText_PkmnAlreadyHasBurn [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} already \n has a burn. " ) ;
static const u8 sText_PkmnWasFrozen [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} was \n frozen solid! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnFrozenBy [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n froze {B_EFF_NAME_WITH_PREFIX} solid! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnIsFrozen [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is \n frozen solid! " ) ;
static const u8 sText_PkmnWasDefrosted [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was \n defrosted! " ) ;
static const u8 sText_PkmnWasDefrosted2 [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} was \n defrosted! " ) ;
static const u8 sText_PkmnWasDefrostedBy [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} was \n defrosted by {B_CURRENT_MOVE}! " ) ;
static const u8 sText_PkmnWasParalyzed [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} is paralyzed! \n It may be unable to move! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnWasParalyzedBy [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n paralyzed {B_EFF_NAME_WITH_PREFIX}! \ lIt may be unable to move! " ) ;
static const u8 sText_PkmnIsParalyzed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is paralyzed! \n It can't move! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnIsAlreadyParalyzed [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} is \n already paralyzed! " ) ;
static const u8 sText_PkmnHealedParalysis [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was \n healed of paralysis! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnDreamEaten [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s \n dream was eaten! " ) ;
static const u8 sText_StatsWontIncrease [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} \n won't go higher! " ) ;
static const u8 sText_StatsWontDecrease [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1} \n won't go lower! " ) ;
static const u8 sText_TeamStoppedWorking [ ] = _ ( " Your team's {B_BUFF1} \n stopped working! " ) ;
static const u8 sText_FoeStoppedWorking [ ] = _ ( " The foe's {B_BUFF1} \n stopped working! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnIsConfused [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is \n confused! " ) ;
static const u8 sText_PkmnHealedConfusion [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} snapped \n out of confusion! " ) ;
static const u8 sText_PkmnWasConfused [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} became \n confused! " ) ;
static const u8 sText_PkmnAlreadyConfused [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} is \n already confused! " ) ;
static const u8 sText_PkmnFellInLove [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} \n fell in love! " ) ;
static const u8 sText_PkmnInLove [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is in love \n with {B_SCR_ACTIVE_NAME_WITH_PREFIX}! " ) ;
static const u8 sText_PkmnImmobilizedByLove [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is \n immobilized by love! " ) ;
static const u8 sText_PkmnBlownAway [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was \n blown away! " ) ;
static const u8 sText_PkmnChangedType [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} transformed \n into 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 \n health! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnHPFull [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s \n HP is full! " ) ;
static const u8 sText_PkmnRaisedSpDef [ ] = _ ( " {B_ATK_PREFIX2}'s {B_CURRENT_MOVE} \n raised SP. DEF! " ) ;
static const u8 sText_PkmnRaisedSpDefALittle [ ] = _ ( " {B_ATK_PREFIX2}'s {B_CURRENT_MOVE} \n raised SP. DEF a little! " ) ;
static const u8 sText_PkmnRaisedDef [ ] = _ ( " {B_ATK_PREFIX2}'s {B_CURRENT_MOVE} \n raised DEFENSE! " ) ;
static const u8 sText_PkmnRaisedDefALittle [ ] = _ ( " {B_ATK_PREFIX2}'s {B_CURRENT_MOVE} \n raised DEFENSE a little! " ) ;
static const u8 sText_PkmnCoveredByVeil [ ] = _ ( " {B_ATK_PREFIX2}'s party is covered \n by a veil! " ) ;
static const u8 sText_PkmnUsedSafeguard [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s party is protected \n by SAFEGUARD! " ) ;
static const u8 sText_PkmnSafeguardExpired [ ] = _ ( " {B_ATK_PREFIX3}'s party is no longer \n protected by SAFEGUARD! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWentToSleep [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} went \n to sleep! " ) ;
static const u8 sText_PkmnSleptHealthy [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} slept and \n became healthy! " ) ;
static const u8 sText_PkmnWhippedWhirlwind [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} whipped \n up a whirlwind! " ) ;
static const u8 sText_PkmnTookSunlight [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} took \n in sunlight! " ) ;
static const u8 sText_PkmnLoweredHead [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} lowered \n its head! " ) ;
static const u8 sText_PkmnIsGlowing [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is glowing! " ) ;
static const u8 sText_PkmnFlewHigh [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} flew \n up 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 \n underwater! " ) ;
static const u8 sText_PkmnSprangUp [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} sprang up! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnSqueezedByBind [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was squeezed by \n {B_ATK_NAME_WITH_PREFIX}'s BIND! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnTrappedInVortex [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was trapped \n in the vortex! " ) ;
static const u8 sText_PkmnTrappedBySandTomb [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was trapped \n by 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 \n by {B_BUFF1}! " ) ;
static const u8 sText_PkmnFreedFrom [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} was freed \n from {B_BUFF1}! " ) ;
static const u8 sText_PkmnCrashed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} kept going \n and crashed! " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_PkmnShroudedInMist [ ] = _ ( " {B_ATK_PREFIX2} became \n shrouded in MIST! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnProtectedByMist [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} is protected \n by MIST! " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_PkmnGettingPumped [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is getting \n pumped! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnHitWithRecoil [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is hit \n with recoil! " ) ;
static const u8 sText_PkmnProtectedItself2 [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} protected \n itself! " ) ;
static const u8 sText_PkmnBuffetedBySandstorm [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is buffeted \n by the sandstorm! " ) ;
static const u8 sText_PkmnPeltedByHail [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is pelted \n by HAIL! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnsXWoreOff [ ] = _ ( " {B_ATK_PREFIX1}'s {B_BUFF1} \n wore off! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnSeeded [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was seeded! " ) ;
static const u8 sText_PkmnEvadedAttack [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} evaded \n the attack! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnSappedByLeechSeed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s health is \n sapped by LEECH SEED! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnFastAsleep [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is fast \n asleep. " ) ;
static const u8 sText_PkmnWokeUp [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} woke up! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnUproarKeptAwake [ ] = _ ( " But {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s UPROAR \n kept it awake! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWokeUpInUproar [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} woke up \n in the UPROAR! " ) ;
static const u8 sText_PkmnCausedUproar [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} caused \n an UPROAR! " ) ;
static const u8 sText_PkmnMakingUproar [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is making \n an UPROAR! " ) ;
static const u8 sText_PkmnCalmedDown [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} calmed down. " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnCantSleepInUproar [ ] = _ ( " But {B_DEF_NAME_WITH_PREFIX} can't \n sleep in an UPROAR! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnStockpiled [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} STOCKPILED \n {B_BUFF1}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnCantStockpile [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} can't \n STOCKPILE any more! " ) ;
static const u8 sText_PkmnCantSleepInUproar2 [ ] = _ ( " But {B_DEF_NAME_WITH_PREFIX} can't \n sleep in an UPROAR! " ) ;
2018-02-28 23:50:25 +01:00
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 \n using its {B_DEF_ABILITY}! " ) ;
static const u8 sText_PkmnStoringEnergy [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is storing \n energy! " ) ;
static const u8 sText_PkmnUnleashedEnergy [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} unleashed \n energy! " ) ;
static const u8 sText_PkmnFatigueConfusion [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} became \n confused 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 \n unaffected! " ) ;
static const u8 sText_PkmnTransformedInto [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} transformed \n into {B_BUFF1}! " ) ;
static const u8 sText_PkmnMadeSubstitute [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} made \n a SUBSTITUTE! " ) ;
static const u8 sText_PkmnHasSubstitute [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} already \n has a SUBSTITUTE! " ) ;
static const u8 sText_SubstituteDamaged [ ] = _ ( " The SUBSTITUTE took damage \n for {B_DEF_NAME_WITH_PREFIX}! \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnSubstituteFaded [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s \n SUBSTITUTE faded! \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnMustRecharge [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} must \n recharge! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnRageBuilding [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s RAGE \n is building! " ) ;
static const u8 sText_PkmnMoveWasDisabled [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1} \n was disabled! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnMoveDisabledNoMore [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is disabled \n no more! " ) ;
static const u8 sText_PkmnGotEncore [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} got \n an ENCORE! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnEncoreEnded [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s ENCORE \n ended! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnTookAim [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} took aim \n at {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 \n to take its foe with it! " ) ;
static const u8 sText_PkmnTookFoe [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} took \n {B_ATK_NAME_WITH_PREFIX} with it! " ) ;
2018-12-07 16:41:08 +01:00
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} can't \n escape now! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnFellIntoNightmare [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} fell into \n a NIGHTMARE! " ) ;
static const u8 sText_PkmnLockedInNightmare [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is locked \n in a NIGHTMARE! " ) ;
static const u8 sText_PkmnLaidCurse [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} cut its own HP and \n laid a CURSE on {B_DEF_NAME_WITH_PREFIX}! " ) ;
static const u8 sText_PkmnAfflictedByCurse [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is afflicted \n by the CURSE! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_SpikesScattered [ ] = _ ( " SPIKES were scattered all around \n the opponent's side! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnHurtBySpikes [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt \n by SPIKES! " ) ;
static const u8 sText_PkmnIdentified [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} identified \n {B_DEF_NAME_WITH_PREFIX}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnPerishCountFell [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s PERISH count \n fell to {B_BUFF1}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnBracedItself [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} braced \n itself! " ) ;
static const u8 sText_PkmnEnduredHit [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} ENDURED \n the hit! " ) ;
static const u8 sText_MagnitudeStrength [ ] = _ ( " MAGNITUDE {B_BUFF1}! " ) ;
static const u8 sText_PkmnCutHPMaxedAttack [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} cut its own HP \n and maximized ATTACK! " ) ;
2018-12-07 16:41:08 +01:00
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}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnShedLeechSeed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} shed \n LEECH SEED! " ) ;
static const u8 sText_PkmnBlewAwaySpikes [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} blew away \n SPIKES! " ) ;
static const u8 sText_PkmnFledFromBattle [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} fled from \n battle! " ) ;
static const u8 sText_PkmnForesawAttack [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} foresaw \n an 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! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnAttack [ ] = _ ( " {B_BUFF1}'s attack! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnCenterAttention [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} became the \n center of attention! " ) ;
static const u8 sText_PkmnChargingPower [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} began \n charging power! " ) ;
static const u8 sText_NaturePowerTurnedInto [ ] = _ ( " NATURE POWER turned into \n {B_CURRENT_MOVE}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnStatusNormal [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s status \n returned to normal! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnSubjectedToTorment [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was subjected \n to TORMENT! " ) ;
static const u8 sText_PkmnTighteningFocus [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is tightening \n its focus! " ) ;
2019-03-24 03:45:21 +01:00
static const u8 sText_PkmnFellForTaunt [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} fell for \n the Taunt! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnReadyToHelp [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is ready to \n help {B_DEF_NAME_WITH_PREFIX}! " ) ;
static const u8 sText_PkmnSwitchedItems [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} switched \n items 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}. " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnCopiedFoe [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} copied \n {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnMadeWish [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} made a WISH! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnWishCameTrue [ ] = _ ( " {B_BUFF1}'s WISH \n came true! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnPlantedRoots [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} planted its roots! " ) ;
static const u8 sText_PkmnAbsorbedNutrients [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} absorbed \n nutrients with its roots! " ) ;
static const u8 sText_PkmnAnchoredItself [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} anchored \n itself with its roots! " ) ;
static const u8 sText_PkmnWasMadeDrowsy [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} made \n {B_DEF_NAME_WITH_PREFIX} drowsy! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnKnockedOff [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} knocked off \n {B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnSwappedAbilities [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} swapped abilities \n with its opponent! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnSealedOpponentMove [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} sealed the \n opponent's move(s)! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWantsGrudge [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} wants the \n opponent to bear a GRUDGE! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnLostPPGrudge [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} lost \n all its PP due to the GRUDGE! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnShroudedItself [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} shrouded \n itself in {B_CURRENT_MOVE}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnMoveBounced [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE} \n was bounced back by MAGIC COAT! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWaitsForTarget [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} waits for a target \n to make a move! " ) ;
2018-12-07 16:41:08 +01:00
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 [ ] = _ ( " Electricity's power was \n weakened! " ) ;
static const u8 sText_FireWeakened [ ] = _ ( " Fire's power was \n weakened! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_XFoundOneY [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} found \n one {B_LAST_ITEM}! " ) ;
static const u8 sText_SoothingAroma [ ] = _ ( " A soothing aroma wafted \n through the area! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_ItemsCantBeUsedNow [ ] = _ ( " Items can't be used now.{PAUSE 64} " ) ;
2018-02-28 23:50:25 +01:00
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! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnLostFocus [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} lost its \n focus and couldn't move! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWasDraggedOut [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was \n dragged 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 \n moves left! \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnMoveIsDisabled [ ] = _ ( " {B_ACTIVE_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE} \n is disabled! \ p " ) ;
2019-03-24 03:45:21 +01:00
static const u8 sText_PkmnCantUseMoveTorment [ ] = _ ( " {B_ACTIVE_NAME_WITH_PREFIX} can't use the same \n move in a row due to the Torment! \ p " ) ;
static const u8 sText_PkmnCantUseMoveTaunt [ ] = _ ( " {B_ACTIVE_NAME_WITH_PREFIX} can't use \n {B_CURRENT_MOVE} after the Taunt! \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnCantUseMoveSealed [ ] = _ ( " {B_ACTIVE_NAME_WITH_PREFIX} can't use the \n sealed {B_CURRENT_MOVE}! \ p " ) ;
static const u8 sText_PkmnMadeItRain [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n made it rain! " ) ;
static const u8 sText_PkmnRaisedSpeed [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n raised its SPEED! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnProtectedBy [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was protected \n by {B_DEF_ABILITY}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnPreventsUsage [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n prevents {B_ATK_NAME_WITH_PREFIX} \ lfrom using {B_CURRENT_MOVE}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnRestoredHPUsing [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} restored HP \n using its {B_DEF_ABILITY}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnsXMadeYUseless [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n made {B_CURRENT_MOVE} useless! " ) ;
static const u8 sText_PkmnChangedTypeWith [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n made it the {B_BUFF1} type! " ) ;
static const u8 sText_PkmnPreventsParalysisWith [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n prevents paralysis! " ) ;
static const u8 sText_PkmnPreventsRomanceWith [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n prevents romance! " ) ;
static const u8 sText_PkmnPreventsPoisoningWith [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n prevents poisoning! " ) ;
static const u8 sText_PkmnPreventsConfusionWith [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n prevents confusion! " ) ;
static const u8 sText_PkmnRaisedFirePowerWith [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n raised its FIRE power! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnAnchorsItselfWith [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} anchors \n itself with {B_DEF_ABILITY}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnCutsAttackWith [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n cuts {B_DEF_NAME_WITH_PREFIX}'s ATTACK! " ) ;
static const u8 sText_PkmnPreventsStatLossWith [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n prevents stat loss! " ) ;
2019-03-15 13:54:11 +01:00
static const u8 sText_PkmnHurtsWith [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} was hurt by \n {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}! " ) ;
2018-12-07 16:41:08 +01:00
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} \n prevents burns! " ) ;
static const u8 sText_PkmnsXBlocksY [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n blocks {B_CURRENT_MOVE}! " ) ;
static const u8 sText_PkmnsXBlocksY2 [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n blocks {B_CURRENT_MOVE}! " ) ;
static const u8 sText_PkmnsXRestoredHPALittle2 [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} \n restored its HP a little! " ) ;
static const u8 sText_PkmnsXWhippedUpSandstorm [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n whipped up a sandstorm! " ) ;
static const u8 sText_PkmnsXIntensifiedSun [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n intensified the sun's rays! " ) ;
static const u8 sText_PkmnsXPreventsYLoss [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n prevents {B_BUFF1} loss! " ) ;
static const u8 sText_PkmnsXInfatuatedY [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n infatuated {B_ATK_NAME_WITH_PREFIX}! " ) ;
static const u8 sText_PkmnsXMadeYIneffective [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n made {B_CURRENT_MOVE} ineffective! " ) ;
static const u8 sText_PkmnsXCuredYProblem [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n cured its {B_BUFF1} problem! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_ItSuckedLiquidOoze [ ] = _ ( " It sucked up the \n LIQUID OOZE! " ) ;
static const u8 sText_PkmnTransformed [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnsXTookAttack [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n took the attack! " ) ;
const u8 gText_PkmnsXPreventsSwitching [ ] = _ ( " {B_BUFF1}'s {B_LAST_ABILITY} \n prevents switching! \ p " ) ;
static const u8 sText_PreventedFromWorking [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n prevented {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} \n made it ineffective! " ) ;
static const u8 sText_PkmnsXPreventsFlinching [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY} \n prevents flinching! " ) ;
static const u8 sText_PkmnsXPreventsYsZ [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} \n prevents {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} \n cured its {B_BUFF1} problem! " ) ;
static const u8 sText_PkmnsXHadNoEffectOnY [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n had no effect on {B_EFF_NAME_WITH_PREFIX}! " ) ;
2018-02-28 23:50:25 +01:00
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! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnsStatChanged [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} \n {B_BUFF2} " ) ;
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} \n of {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2} " ) ;
2018-12-07 16:41:08 +01:00
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 won't \n go any higher! " ) ;
static const u8 sText_StatsWontDecrease2 [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s stats won't \n go any lower! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_CriticalHit [ ] = _ ( " A critical hit! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_OneHitKO [ ] = _ ( " It's a one-hit KO! " ) ;
2018-02-28 23:50:25 +01:00
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 " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_HMMovesCantBeForgotten [ ] = _ ( " HM moves can't be \n forgotten now. \ p " ) ;
static const u8 sText_NotVeryEffective [ ] = _ ( " It's not very effective… " ) ;
static const u8 sText_SuperEffective [ ] = _ ( " It's super effective! " ) ;
2018-02-28 23:50:25 +01:00
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 \n using its {B_LAST_ITEM}! \ p " ) ;
static const u8 sText_PkmnFledUsing [ ] = _ ( " {PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled \n using {B_ATK_ABILITY}! \ p " ) ;
static const u8 sText_WildPkmnFled [ ] = _ ( " {PLAY_SE 0x0011}Wild {B_BUFF1} fled! " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_PlayerDefeatedLinkTrainer [ ] = _ ( " Player defeated \n {B_LINK_OPPONENT1_NAME}! " ) ;
static const u8 sText_TwoLinkTrainersDefeated [ ] = _ ( " Player beat {B_LINK_OPPONENT1_NAME} \n and {B_LINK_OPPONENT2_NAME}! " ) ;
static const u8 sText_PlayerLostAgainstLinkTrainer [ ] = _ ( " Player lost against \n {B_LINK_OPPONENT1_NAME}! " ) ;
static const u8 sText_PlayerLostToTwo [ ] = _ ( " Player lost to {B_LINK_OPPONENT1_NAME} \n and {B_LINK_OPPONENT2_NAME}! " ) ;
static const u8 sText_PlayerBattledToDrawLinkTrainer [ ] = _ ( " Player battled to a draw against \n {B_LINK_OPPONENT1_NAME}! " ) ;
static const u8 sText_PlayerBattledToDrawVsTwo [ ] = _ ( " Player battled to a draw against \n {B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}! " ) ;
static const u8 sText_WildFled [ ] = _ ( " {PLAY_SE 0x0011}{B_LINK_OPPONENT1_NAME} fled! " ) ;
static const u8 sText_TwoWildFled [ ] = _ ( " {PLAY_SE 0x0011}{B_LINK_OPPONENT1_NAME} and \n {B_LINK_OPPONENT2_NAME} fled! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_NoRunningFromTrainers [ ] = _ ( " No! There's no running \n from a TRAINER battle! \ p " ) ;
static const u8 sText_CantEscape [ ] = _ ( " Can't escape! \ p " ) ;
static const u8 sText_DontLeaveBirch [ ] = _ ( " PROF. BIRCH: Don't leave me like this! \ p " ) ;
2018-02-28 23:50:25 +01:00
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 \n confusion! " ) ;
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 \n a thing! " ) ;
static const u8 sText_FailedToSwallow [ ] = _ ( " But it failed to SWALLOW \n a thing! " ) ;
static const u8 sText_WindBecameHeatWave [ ] = _ ( " The wind turned into a \n HEAT WAVE! " ) ;
static const u8 sText_StatChangesGone [ ] = _ ( " All stat changes were \n eliminated! " ) ;
static const u8 sText_CoinsScattered [ ] = _ ( " Coins scattered everywhere! " ) ;
static const u8 sText_TooWeakForSubstitute [ ] = _ ( " It was too weak to make \n a SUBSTITUTE! " ) ;
static const u8 sText_SharedPain [ ] = _ ( " The battlers shared \n their pain! " ) ;
static const u8 sText_BellChimed [ ] = _ ( " A bell chimed! " ) ;
static const u8 sText_FaintInThree [ ] = _ ( " All affected POKéMON will \n faint in three turns! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_NoPPLeft [ ] = _ ( " There's no PP left for \n this move! \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_ButNoPPLeft [ ] = _ ( " But there was no PP left \n for the move! " ) ;
static const u8 sText_PkmnIgnoresAsleep [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} ignored \n orders while asleep! " ) ;
static const u8 sText_PkmnIgnoredOrders [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} ignored \n orders! " ) ;
static const u8 sText_PkmnBeganToNap [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} began to nap! " ) ;
static const u8 sText_PkmnLoafing [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is \n loafing around! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnWontObey [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} won't \n obey! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnTurnedAway [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} turned away! " ) ;
static const u8 sText_PkmnPretendNotNotice [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} pretended \n not to notice! " ) ;
static const u8 sText_EnemyAboutToSwitchPkmn [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} is \n about to use {B_BUFF2}. \ pWill {B_PLAYER_NAME} change \n POKé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}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_CantGetCloser [ ] = _ ( " {B_PLAYER_NAME} can't get any closer! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWatchingCarefully [ ] = _ ( " {B_OPPONENT_MON1_NAME} is watching \n carefully! " ) ;
static const u8 sText_PkmnCuriousAboutX [ ] = _ ( " {B_OPPONENT_MON1_NAME} is curious about \n the {B_BUFF1}! " ) ;
static const u8 sText_PkmnEnthralledByX [ ] = _ ( " {B_OPPONENT_MON1_NAME} is enthralled by \n the {B_BUFF1}! " ) ;
static const u8 sText_PkmnIgnoredX [ ] = _ ( " {B_OPPONENT_MON1_NAME} completely ignored \n the {B_BUFF1}! " ) ;
static const u8 sText_ThrewPokeblockAtPkmn [ ] = _ ( " {B_PLAYER_NAME} threw a {POKEBLOCK} \n at the {B_OPPONENT_MON1_NAME}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_OutOfSafariBalls [ ] = _ ( " {PLAY_SE 0x0049}ANNOUNCER: You're out of \n SAFARI BALLS! Game over! \ p " ) ;
2018-02-28 23:50:25 +01:00
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} \n would like to battle! \ p " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_LinkTrainerWantsToBattle [ ] = _ ( " {B_LINK_OPPONENT1_NAME} \n wants to battle! " ) ;
static const u8 sText_TwoLinkTrainersWantToBattle [ ] = _ ( " {B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME} \n want to battle! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_Trainer1SentOutPkmn [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent \n out {B_OPPONENT_MON1_NAME}! " ) ;
static const u8 sText_Trainer1SentOutTwoPkmn [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent \n out {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}! " ) ;
static const u8 sText_Trainer1SentOutPkmn2 [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent \n out {B_BUFF1}! " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_LinkTrainerSentOutPkmn [ ] = _ ( " {B_LINK_OPPONENT1_NAME} sent out \n {B_OPPONENT_MON1_NAME}! " ) ;
static const u8 sText_LinkTrainerSentOutTwoPkmn [ ] = _ ( " {B_LINK_OPPONENT1_NAME} sent out \n {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}! " ) ;
static const u8 sText_TwoLinkTrainersSentOutPkmn [ ] = _ ( " {B_LINK_OPPONENT1_NAME} sent out {B_LINK_OPPONENT_MON1_NAME}! \n {B_LINK_OPPONENT2_NAME} sent out {B_LINK_OPPONENT_MON2_NAME}! " ) ;
static const u8 sText_LinkTrainerSentOutPkmn2 [ ] = _ ( " {B_LINK_OPPONENT1_NAME} sent out \n {B_BUFF1}! " ) ;
static const u8 sText_LinkTrainerMultiSentOutPkmn [ ] = _ ( " {B_LINK_SCR_TRAINER_NAME} sent out \n {B_BUFF1}! " ) ;
2018-02-28 23:50:25 +01:00
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}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_YourFoesWeakGetEmPkmn [ ] = _ ( " Your foe's weak! \n Get 'em, {B_BUFF1}! " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_LinkPartnerSentOutPkmnGoPkmn [ ] = _ ( " {B_LINK_PARTNER_NAME} sent out {B_LINK_PLAYER_MON2_NAME}! \n Go! {B_LINK_PLAYER_MON1_NAME}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnThatsEnough [ ] = _ ( " {B_BUFF1}, that's enough! \n Come back! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnComeBack [ ] = _ ( " {B_BUFF1}, come back! " ) ;
static const u8 sText_PkmnOkComeBack [ ] = _ ( " {B_BUFF1}, OK! \n Come back! " ) ;
static const u8 sText_PkmnGoodComeBack [ ] = _ ( " {B_BUFF1}, good! \n Come back! " ) ;
static const u8 sText_Trainer1WithdrewPkmn [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} \n withdrew {B_BUFF1}! " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_LinkTrainer1WithdrewPkmn [ ] = _ ( " {B_LINK_OPPONENT1_NAME} withdrew \n {B_BUFF1}! " ) ;
static const u8 sText_LinkTrainer2WithdrewPkmn [ ] = _ ( " {B_LINK_SCR_TRAINER_NAME} withdrew \n {B_BUFF1}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_WildPkmnPrefix [ ] = _ ( " Wild " ) ;
static const u8 sText_FoePkmnPrefix [ ] = _ ( " Foe " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_EmptyString8 [ ] = _ ( " " ) ;
2018-02-28 23:50:25 +01:00
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} \n used {B_LAST_ITEM}! " ) ;
static const u8 sText_TrainerBlockedBall [ ] = _ ( " The TRAINER blocked the BALL! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_DontBeAThief [ ] = _ ( " Don't be a thief! " ) ;
static const u8 sText_ItDodgedBall [ ] = _ ( " It dodged the thrown BALL! \n This POKéMON can't be caught! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_YouMissedPkmn [ ] = _ ( " You missed the POKéMON! " ) ;
static const u8 sText_PkmnBrokeFree [ ] = _ ( " Oh, no! \n The POKéMON broke free! " ) ;
static const u8 sText_ItAppearedCaught [ ] = _ ( " Aww! \n It appeared to be caught! " ) ;
static const u8 sText_AarghAlmostHadIt [ ] = _ ( " Aargh! \n Almost had it! " ) ;
static const u8 sText_ShootSoClose [ ] = _ ( " Shoot! \n It was so close, too! " ) ;
2018-10-15 21:19:52 +02:00
static const u8 sText_GotchaPkmnCaught [ ] = _ ( " Gotcha! \n {B_DEF_NAME} was caught!{UNKNOWN_A}{PLAY_BGM MUS_KACHI22} \ p " ) ;
static const u8 sText_GotchaPkmnCaught2 [ ] = _ ( " Gotcha! \n {B_DEF_NAME} was caught!{UNKNOWN_A}{PLAY_BGM MUS_KACHI22}{PAUSE 127} " ) ;
static const u8 sText_GiveNicknameCaptured [ ] = _ ( " Give a nickname to the \n captured {B_DEF_NAME}? " ) ;
static const u8 sText_PkmnSentToPC [ ] = _ ( " {B_DEF_NAME} was sent to \n {B_PC_CREATOR_NAME} PC. " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_Someones [ ] = _ ( " someone's " ) ;
static const u8 sText_Lanettes [ ] = _ ( " LANETTE's " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_PkmnDataAddedToDex [ ] = _ ( " {B_DEF_NAME}'s data was \n added to the POKéDEX. \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_ItIsRaining [ ] = _ ( " It is raining. " ) ;
static const u8 sText_SandstormIsRaging [ ] = _ ( " A sandstorm is raging. " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_BoxIsFull [ ] = _ ( " The BOX is full! \n You can't catch any more! \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_EnigmaBerry [ ] = _ ( " ENIGMA BERRY " ) ;
static const u8 sText_BerrySuffix [ ] = _ ( " BERRY " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnsItemCuredParalysis [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n cured paralysis! " ) ;
static const u8 sText_PkmnsItemCuredPoison [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n cured poison! " ) ;
static const u8 sText_PkmnsItemHealedBurn [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n healed its burn! " ) ;
static const u8 sText_PkmnsItemDefrostedIt [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n defrosted it! " ) ;
static const u8 sText_PkmnsItemWokeIt [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n woke it from its sleep! " ) ;
static const u8 sText_PkmnsItemSnappedOut [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n snapped it out of confusion! " ) ;
static const u8 sText_PkmnsItemCuredProblem [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n cured its {B_BUFF1} problem! " ) ;
static const u8 sText_PkmnsItemNormalizedStatus [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n normalized its status! " ) ;
static const u8 sText_PkmnsItemRestoredHealth [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n restored health! " ) ;
static const u8 sText_PkmnsItemRestoredPP [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n restored {B_BUFF1}'s PP! " ) ;
static const u8 sText_PkmnsItemRestoredStatus [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n restored its status! " ) ;
static const u8 sText_PkmnsItemRestoredHPALittle [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n restored its HP a little! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_ItemAllowsOnlyYMove [ ] = _ ( " {B_LAST_ITEM} allows the \n use of only {B_CURRENT_MOVE}! \ p " ) ;
static const u8 sText_PkmnHungOnWithX [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} hung on \n using its {B_LAST_ITEM}! " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_EmptyString3 [ ] = _ ( " " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_YouThrowABallNowRight [ ] = _ ( " You throw a BALL now, right? \n I… I'll 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 \n the hit using {B_DEF_ABILITY}! " ) ;
static const s8 sText_PowerHerbActivation [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} became fully charged \n due to its {B_LAST_ITEM}! " ) ;
static const s8 sText_HurtByItem [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} was hurt \n by its {B_LAST_ITEM}! " ) ;
static const s8 sText_BadlyPoisonedByItem [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} was badly \n poisoned by the {B_LAST_ITEM}! " ) ;
static const s8 sText_BurnedByItem [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} was burned \n by the {B_LAST_ITEM}! " ) ;
2018-12-07 23:01:14 +01:00
static const s8 sText_TargetAbilityActivates [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} activates! " ) ;
2018-07-15 18:53:43 +02:00
static const u8 sText_GravityIntensified [ ] = _ ( " GRAVITY intensified! " ) ;
static const u8 sText_TargetIdentified [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was \n identified! " ) ;
static const u8 sText_TargetWokeUp [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} woke up! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_PkmnStoleAndAteItem [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} stole and \n ate {B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}! " ) ;
2018-07-15 18:53:43 +02:00
static const u8 sText_TailWindBlew [ ] = _ ( " The tailwind blew from \n behind your team! " ) ;
static const u8 sText_PkmnWentBack [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} went back \n to {B_ATK_TRAINER_CLASS} {B_ATK_TRAINER_NAME} " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_PkmnCantUseItemsAnymore [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} can't use \n items anymore! " ) ;
2018-07-15 18:53:43 +02:00
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 \n from healing! " ) ;
static const u8 sText_PkmnSwitchedAtkAndDef [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} switched its \n Attack and Defense! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_PkmnsAbilitySuppressed [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s ability \n was suppressed! " ) ;
2019-03-02 12:31:07 +01:00
static const u8 sText_ShieldedFromCriticalHits [ ] = _ ( " The {B_CURRENT_MOVE} shielded {B_ATK_TEAM2} \n team from critical hits! " ) ;
2018-07-15 18:53:43 +02:00
static const u8 sText_SwitchedAtkAndSpAtk [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} switched all its \n changes to its Attack and \ pSp. Atk with the target! " ) ;
static const u8 sText_SwitchedDefAndSpDef [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} switched all its \n changes to its Defense and \ pSp. Def with the target! " ) ;
2018-07-23 22:32:34 +02:00
static const u8 sText_PkmnAcquiredAbility [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} acquired \n {B_LAST_ABILITY}! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_PoisonSpikesScattered [ ] = _ ( " Poison Spikes were scattered all \n around the opposing team's feet! " ) ;
2018-07-15 18:53:43 +02:00
static const u8 sText_PkmnSwitchedStatChanges [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} switched stat changes \n with the target! " ) ;
static const u8 sText_PkmnSurroundedWithVeilOfWater [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} surrounded itself \n with a veil of water! " ) ;
static const u8 sText_PkmnLevitatedOnElectromagnetism [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} levitated on \n electromagnetism! " ) ;
static const u8 sText_PkmnTwistedDimensions [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} twisted \n the dimensions! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_PointedStonesFloat [ ] = _ ( " Pointed stones float in the air \n around your foe's team! " ) ;
2018-07-15 18:53:43 +02:00
static const u8 sText_CloakedInMysticalMoonlight [ ] = _ ( " It became cloaked in mystical \n moonlight! " ) ;
static const u8 sText_TrappedBySwirlingMagma [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} became \n trapped by swirling magma! " ) ;
2018-12-08 16:19:50 +01:00
static const u8 sText_VanishedInstantly [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} vanished \n instantly! " ) ;
2019-03-02 12:31:07 +01:00
static const u8 sText_ProtectedTeam [ ] = _ ( " {B_CURRENT_MOVE} protected \n {B_ATK_TEAM2} team! " ) ;
2018-07-15 18:53:43 +02:00
static const u8 sText_SharedItsGuard [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} shared its \n guard with the target! " ) ;
static const u8 sText_SharedItsPower [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} shared its \n power with the target! " ) ;
static const u8 sText_SwapsDefAndSpDefOfAllPkmn [ ] = _ ( " It created a bizarre area in which \n the 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 \n into the air! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_HeldItemsLoseEffects [ ] = _ ( " It created a bizarra area in which \n Pokémon's held items lose their effects! " ) ;
2018-07-15 18:53:43 +02:00
static const u8 sText_FellStraightDown [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} fell \n straight down! " ) ;
static const u8 sText_TransformedIntoWaterType [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} transformed \n into the water type! " ) ;
static const u8 sText_PkmnAcquiredSimple [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} acquired \n Simple! " ) ;
static const u8 sText_KindOffer [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} \n took the kind offer! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_ResetsTargetsStatLevels [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s stat changes \n were removed! " ) ;
2018-07-15 18:53:43 +02:00
static const u8 sText_AllySwitchPosition [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} and \n {B_SCR_ACTIVE_NAME_WITH_PREFIX} switched places! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_RestoreTargetsHealth [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s HP was restored! " ) ;
2018-07-15 18:53:43 +02:00
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 \n from the Sky Drop! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_PostponeTargetMove [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s move \n was postponed! " ) ;
static const u8 sText_ReflectTargetsType [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s type \n changed to match the {B_DEF_NAME_WITH_PREFIX}'s! " ) ;
2018-07-15 18:53:43 +02:00
static const u8 sText_TransferHeldItem [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} recieved {B_LAST_ITEM} \n from {B_ATK_NAME_WITH_PREFIX} " ) ;
2018-07-20 16:39:40 +02:00
static const u8 sText_EmbargoEnds [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}can \n use items again! " ) ;
2019-03-24 03:45:21 +01:00
static const u8 sText_Electromagnetism [ ] = _ ( " electromagnetism " ) ;
static const u8 sText_BufferEnds [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} \n wore off! " ) ;
2018-07-30 20:41:16 +02:00
static const u8 sText_TelekinesisEnds [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} was freed \n from the telekinesis! " ) ;
2019-03-02 12:31:07 +01:00
static const u8 sText_TailwindEnds [ ] = _ ( " {B_ATK_TEAM1} team's tailwind \n petered out! " ) ;
static const u8 sText_LuckyChantEnds [ ] = _ ( " {B_ATK_TEAM1} 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 \n normal! " ) ;
static const u8 sText_WonderRoomEnds [ ] = _ ( " Wonder Room wore off, and \n Defense and Sp. Def stats returned to normal! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_MagicRoomEnds [ ] = _ ( " Magic Room wore off, and \n held items' effects returned to normal! " ) ;
2018-07-20 16:39:40 +02:00
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! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_AquaRingHeal [ ] = _ ( " Aqua Ring restored \n {B_ATK_NAME_WITH_PREFIX}'s HP! " ) ;
static const u8 sText_TargetAbilityRaisedStat [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n raised its {B_BUFF1}! " ) ;
static const u8 sText_TargetAbilityLoweredStat [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n lowered its {B_BUFF1}! " ) ;
static const u8 sText_AttackerAbilityRaisedStat [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} \n raised its {B_BUFF1}! " ) ;
static const u8 sText_AuroraVeilEnds [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n wore off! " ) ;
2019-03-02 23:54:08 +01:00
static const u8 sText_ElectricTerrainEnds [ ] = _ ( " The electricity disappeared \n from the battlefield. " ) ;
static const u8 sText_MistyTerrainEnds [ ] = _ ( " The mist disappeared \n from the battlefield. " ) ;
static const u8 sText_PsychicTerrainEnds [ ] = _ ( " The weirdness disappeared \n from the battlefield. " ) ;
static const u8 sText_GrassyTerrainEnds [ ] = _ ( " The grass disappeared \n from the battlefield. " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_AngryPointActivates [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} maxed \n its attack! " ) ;
2018-07-23 22:32:34 +02:00
static const u8 sText_PoisonHealHpUp [ ] = _ ( " The poisoning healed {B_ATK_NAME_WITH_PREFIX} \n a little bit! " ) ;
static const u8 sText_BadDreamsDmg [ ] = _ ( " The {B_DEF_NAME_WITH_PREFIX} is tormented \n by {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-12-07 23:01:14 +01:00
static const u8 sText_SlowStartEnters [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} can't get it going! " ) ;
2018-07-23 22:32:34 +02:00
static const u8 sText_SlowStartEnd [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} finally got its act together! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_SolarPowerHpDrop [ ] = _ ( " The {B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} \n takes its toll! " ) ;
2018-07-23 22:32:34 +02:00
static const u8 sText_AftermathDmg [ ] = _ ( " The {B_DEF_NAME_WITH_PREFIX} \n suffers the {B_DEF_ABILITY}! " ) ;
static const u8 sText_AnticipationActivates [ ] = _ ( " The {B_ATK_NAME_WITH_PREFIX} shuddered in {B_ATK_ABILITY}! " ) ;
2018-12-07 23:01:14 +01: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} \n healed it a little bit! " ) ;
2018-07-23 22:32:34 +02:00
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 \n found 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 \n its {B_LAST_ITEM}! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_MoxieAtkRise [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} raised its Attack! " ) ;
2018-07-23 22:32:34 +02:00
static const u8 sText_MagicBounceActivates [ ] = _ ( " The {B_DEF_NAME_WITH_PREFIX} bounced the \n {B_ATK_NAME_WITH_PREFIX} back! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_ProteanTypeChange [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} transformed \n it into the {B_BUFF1} type! " ) ;
2018-07-23 22:32:34 +02:00
static const u8 sText_SymbiosisItemPass [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} passed its {B_LAST_ITEM} \n to {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}! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_ToxicSpikesAbsorbed [ ] = _ ( " The poison spikes disappeared \n from around the opposing team's feet! " ) ;
2018-07-27 11:55:55 +02:00
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 \n caught in a Sticky Web! " ) ;
2018-07-26 20:36:16 +02:00
static const u8 sText_HealingWishCameTrue [ ] = _ ( " The healing wish came true \n for {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 \n in mystical moonlight! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_CursedBodyDisabled [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} was disabled \n by {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}! " ) ;
2018-07-26 21:56:23 +02:00
static const u8 sText_AttackerAquiredAbility [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} acquired {B_LAST_ABILITY}! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_TargetStatWontGoHigher [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1} \n won't go higher! " ) ;
static const u8 sText_PkmnMoveBouncedViaAbility [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE} was \n bounced 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}! " ) ;
2018-08-02 20:32:13 +02:00
static const u8 sText_NotDoneYet [ ] = _ ( " This move effect is not done yet! \ p " ) ;
2018-08-04 22:23:07 +02:00
static const u8 sText_PkmnBlewAwayToxicSpikes [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} blew away \n TOXIC SPIKES! " ) ;
static const u8 sText_PkmnBlewAwayStickyWeb [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} blew away \n STICKY WEB! " ) ;
static const u8 sText_PkmnBlewAwayStealthRock [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} blew away \n STEALTH ROCK! " ) ;
2019-04-05 12:43:44 +02:00
static const u8 sText_StickyWebUsed [ ] = _ ( " A sticky web spreads out on the \n ground around {B_DEF_TEAM2} team! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_QuashSuccess [ ] = _ ( " The opposing {B_ATK_NAME_WITH_PREFIX}'s move was postponed! " ) ;
Update battle_message.c
Added strings for Sticky Web, Quash, Ion Deluge, Topsy-Turby, Misty Terrain, Grassy Terrain, Electric Terrain, Psychic Terrain, Electrify, Assault Vest, Gravity and Heal Block.
2018-08-11 18:53:10 +02:00
static const u8 sText_IonDelugeOn [ ] = _ ( " A deluge of ions showers \n the battlefield! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_TopsyTurvySwitchedStats [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s stat changes were \n all reversed! " ) ;
Update battle_message.c
Added strings for Sticky Web, Quash, Ion Deluge, Topsy-Turby, Misty Terrain, Grassy Terrain, Electric Terrain, Psychic Terrain, Electrify, Assault Vest, Gravity and Heal Block.
2018-08-11 18:53:10 +02:00
static const u8 sText_TerrainBecomesMisty [ ] = _ ( " Mist swirled about \n the battlefield! " ) ;
static const u8 sText_TerrainBecomesGrassy [ ] = _ ( " Grass grew to cover \n the battlefield! " ) ;
static const u8 sText_TerrainBecomesElectric [ ] = _ ( " An electric current runs across \n the battlefield! " ) ;
static const u8 sText_TerrainBecomesPsychic [ ] = _ ( " The battlefield got weird! " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_TargetElectrified [ ] = _ ( " The opposing {B_ATK_NAME_WITH_PREFIX}'s moves \n have been electrified! " ) ;
Update battle_message.c
Added strings for Sticky Web, Quash, Ion Deluge, Topsy-Turby, Misty Terrain, Grassy Terrain, Electric Terrain, Psychic Terrain, Electrify, Assault Vest, Gravity and Heal Block.
2018-08-11 18:53:10 +02:00
static const u8 sText_AssaultVestDoesntAllow [ ] = _ ( " The effects of the {B_LAST_ITEM} prevent status \n moves from being used! \ p " ) ;
2019-02-22 23:48:28 +01:00
static const u8 sText_GravityPreventsUsage [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} can't use {B_CURRENT_MOVE} \n because of gravity! \ p " ) ;
2019-03-24 03:45:21 +01:00
static const u8 sText_HealBlockPreventsUsage [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} was \n prevented from healing! \ p " ) ;
2018-12-07 23:01:14 +01:00
static const u8 sText_MegaEvoReacting [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ITEM} is reacting \n to {B_ATK_TRAINER_NAME}'s Mega Ring! " ) ;
2018-09-16 18:55:32 +02:00
static const u8 sText_MegaEvoEvolved [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} has Mega \n Evolved into Mega {B_BUFF1}! " ) ;
2018-09-22 12:20:33 +02:00
static const u8 sText_drastically [ ] = _ ( " drastically " ) ;
static const u8 sText_severely [ ] = _ ( " severely " ) ;
static const u8 sText_Infestation [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} has been afflicted \n with an infestation by {B_ATK_NAME_WITH_PREFIX}! " ) ;
2018-09-29 15:43:56 +02:00
static const u8 sText_NoEffectOnTarget [ ] = _ ( " It had no effect \n on {B_DEF_NAME_WITH_PREFIX}! " ) ;
2018-09-29 18:40:14 +02:00
static const u8 sText_BurstingFlames [ ] = _ ( " The bursting flames \n hit {B_SCR_ACTIVE_NAME_WITH_PREFIX}! " ) ;
2018-09-30 12:27:51 +02:00
static const u8 sText_BestowItemGiving [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} received {B_LAST_ITEM} \n from {B_ATK_NAME_WITH_PREFIX}! " ) ;
2018-11-17 12:10:24 +01:00
static const u8 sText_ThirdTypeAdded [ ] = _ ( " {B_BUFF1} type was added to \n {B_DEF_NAME_WITH_PREFIX}! " ) ;
2018-11-24 19:37:10 +01:00
static const u8 sText_FellForFeint [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} fell for \n the feint! " ) ;
2018-11-30 22:12:18 +01:00
static const u8 sText_PokemonCannotUseMove [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} cannot \n use {B_CURRENT_MOVE}! " ) ;
2018-12-03 12:50:32 +01:00
static const u8 sText_CoveredInPowder [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} is covered in powder! " ) ;
2019-02-01 14:17:24 +01:00
static const u8 sText_PowderExplodes [ ] = _ ( " When the flame touched the powder \n on the Pokémon, it exploded! " ) ;
static const u8 sText_BelchCantUse [ ] = _ ( " Belch cannot be used! \ p " ) ;
2019-02-14 12:15:53 +01:00
static const u8 sText_SpectralThiefSteal [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} stole the target's \n boosted stats! " ) ;
2019-02-22 23:48:28 +01:00
static const u8 sText_GravityGrounding [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} can't stay airborne \n because of gravity! " ) ;
2019-02-28 15:02:54 +01:00
static const u8 sText_MistyTerrainPreventsStatus [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} surrounds itself \n with a protective mist! " ) ;
static const u8 sText_GrassyTerrainHeals [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is healed \n by the grassy terrain! " ) ;
static const u8 sText_ElectricTerrainPreventsSleep [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} surrounds itself \n with electrified terrain! " ) ;
static const u8 sText_PsychicTerrainPreventsPriority [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} surrounds itself \n with psychic terrain! " ) ;
2019-03-08 10:16:54 +01:00
static const u8 sText_SafetyGooglesProtected [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} is not affected \n thanks to its {B_LAST_ITEM}! " ) ;
2019-03-31 21:38:58 +02:00
static const u8 sText_FlowerVeilProtected [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} surrounded itself \n with a veil of petals! " ) ;
2019-03-31 22:02:39 +02:00
static const u8 sText_SweetVeilProtected [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} surrounded itself \n with a veil of sweetness! " ) ;
2019-04-01 11:42:37 +02:00
static const u8 sText_AromaVeilProtected [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} is protected \n by an aromatic veil! " ) ;
2019-04-03 21:33:37 +02:00
static const u8 sText_CelebrateMessage [ ] = _ ( " Congratulations, {B_PLAYER_NAME}! " ) ;
2018-07-31 23:09:47 +02:00
2018-07-15 18:53:43 +02:00
const u8 * const gBattleStringsTable [ BATTLESTRINGS_COUNT ] =
2017-10-07 15:15:47 +02:00
{
2019-04-03 21:33:37 +02:00
[ STRINGID_CELEBRATEMESSAGE - 12 ] = sText_CelebrateMessage ,
2019-04-01 11:42:37 +02:00
[ STRINGID_AROMAVEILPROTECTED - 12 ] = sText_AromaVeilProtected ,
2019-03-31 22:02:39 +02:00
[ STRINGID_SWEETVEILPROTECTED - 12 ] = sText_SweetVeilProtected ,
2019-03-31 21:38:58 +02:00
[ STRINGID_FLOWERVEILPROTECTED - 12 ] = sText_FlowerVeilProtected ,
2019-03-08 10:16:54 +01:00
[ STRINGID_SAFETYGOOGLESPROTECTED - 12 ] = sText_SafetyGooglesProtected ,
2019-02-14 12:15:53 +01:00
[ STRINGID_SPECTRALTHIEFSTEAL - 12 ] = sText_SpectralThiefSteal ,
2019-02-01 14:17:24 +01:00
[ STRINGID_BELCHCANTSELECT - 12 ] = sText_BelchCantUse ,
2018-12-08 07:10:30 +01:00
[ STRINGID_TRAINER1LOSETEXT - 12 ] = sText_Trainer1LoseText ,
[ STRINGID_PKMNGAINEDEXP - 12 ] = sText_PkmnGainedEXP ,
[ STRINGID_PKMNGREWTOLV - 12 ] = sText_PkmnGrewToLv ,
[ STRINGID_PKMNLEARNEDMOVE - 12 ] = sText_PkmnLearnedMove ,
[ STRINGID_TRYTOLEARNMOVE1 - 12 ] = sText_TryToLearnMove1 ,
[ STRINGID_TRYTOLEARNMOVE2 - 12 ] = sText_TryToLearnMove2 ,
[ STRINGID_TRYTOLEARNMOVE3 - 12 ] = sText_TryToLearnMove3 ,
[ STRINGID_PKMNFORGOTMOVE - 12 ] = sText_PkmnForgotMove ,
[ STRINGID_STOPLEARNINGMOVE - 12 ] = sText_StopLearningMove ,
[ STRINGID_DIDNOTLEARNMOVE - 12 ] = sText_DidNotLearnMove ,
[ STRINGID_PKMNLEARNEDMOVE2 - 12 ] = sText_PkmnLearnedMove2 ,
[ STRINGID_ATTACKMISSED - 12 ] = sText_AttackMissed ,
[ STRINGID_PKMNPROTECTEDITSELF - 12 ] = sText_PkmnProtectedItself ,
[ STRINGID_STATSWONTINCREASE2 - 12 ] = sText_StatsWontIncrease2 ,
[ STRINGID_AVOIDEDDAMAGE - 12 ] = sText_AvoidedDamage ,
[ STRINGID_ITDOESNTAFFECT - 12 ] = sText_ItDoesntAffect ,
[ STRINGID_ATTACKERFAINTED - 12 ] = sText_AttackerFainted ,
[ STRINGID_TARGETFAINTED - 12 ] = sText_TargetFainted ,
[ STRINGID_PLAYERGOTMONEY - 12 ] = sText_PlayerGotMoney ,
[ STRINGID_PLAYERWHITEOUT - 12 ] = sText_PlayerWhiteout ,
[ STRINGID_PLAYERWHITEOUT2 - 12 ] = sText_PlayerWhiteout2 ,
[ STRINGID_PREVENTSESCAPE - 12 ] = sText_PreventsEscape ,
[ STRINGID_HITXTIMES - 12 ] = sText_HitXTimes ,
[ STRINGID_PKMNFELLASLEEP - 12 ] = sText_PkmnFellAsleep ,
[ STRINGID_PKMNMADESLEEP - 12 ] = sText_PkmnMadeSleep ,
[ STRINGID_PKMNALREADYASLEEP - 12 ] = sText_PkmnAlreadyAsleep ,
[ STRINGID_PKMNALREADYASLEEP2 - 12 ] = sText_PkmnAlreadyAsleep2 ,
[ STRINGID_PKMNWASNTAFFECTED - 12 ] = sText_PkmnWasntAffected ,
[ STRINGID_PKMNWASPOISONED - 12 ] = sText_PkmnWasPoisoned ,
[ STRINGID_PKMNPOISONEDBY - 12 ] = sText_PkmnPoisonedBy ,
[ STRINGID_PKMNHURTBYPOISON - 12 ] = sText_PkmnHurtByPoison ,
[ STRINGID_PKMNALREADYPOISONED - 12 ] = sText_PkmnAlreadyPoisoned ,
[ STRINGID_PKMNBADLYPOISONED - 12 ] = sText_PkmnBadlyPoisoned ,
[ STRINGID_PKMNENERGYDRAINED - 12 ] = sText_PkmnEnergyDrained ,
[ STRINGID_PKMNWASBURNED - 12 ] = sText_PkmnWasBurned ,
[ STRINGID_PKMNBURNEDBY - 12 ] = sText_PkmnBurnedBy ,
[ STRINGID_PKMNHURTBYBURN - 12 ] = sText_PkmnHurtByBurn ,
[ STRINGID_PKMNWASFROZEN - 12 ] = sText_PkmnWasFrozen ,
[ STRINGID_PKMNFROZENBY - 12 ] = sText_PkmnFrozenBy ,
[ STRINGID_PKMNISFROZEN - 12 ] = sText_PkmnIsFrozen ,
[ STRINGID_PKMNWASDEFROSTED - 12 ] = sText_PkmnWasDefrosted ,
[ STRINGID_PKMNWASDEFROSTED2 - 12 ] = sText_PkmnWasDefrosted2 ,
[ STRINGID_PKMNWASDEFROSTEDBY - 12 ] = sText_PkmnWasDefrostedBy ,
[ STRINGID_PKMNWASPARALYZED - 12 ] = sText_PkmnWasParalyzed ,
[ STRINGID_PKMNWASPARALYZEDBY - 12 ] = sText_PkmnWasParalyzedBy ,
[ STRINGID_PKMNISPARALYZED - 12 ] = sText_PkmnIsParalyzed ,
[ STRINGID_PKMNISALREADYPARALYZED - 12 ] = sText_PkmnIsAlreadyParalyzed ,
[ STRINGID_PKMNHEALEDPARALYSIS - 12 ] = sText_PkmnHealedParalysis ,
[ STRINGID_PKMNDREAMEATEN - 12 ] = sText_PkmnDreamEaten ,
[ STRINGID_STATSWONTINCREASE - 12 ] = sText_StatsWontIncrease ,
[ STRINGID_STATSWONTDECREASE - 12 ] = sText_StatsWontDecrease ,
[ STRINGID_TEAMSTOPPEDWORKING - 12 ] = sText_TeamStoppedWorking ,
[ STRINGID_FOESTOPPEDWORKING - 12 ] = sText_FoeStoppedWorking ,
[ STRINGID_PKMNISCONFUSED - 12 ] = sText_PkmnIsConfused ,
[ STRINGID_PKMNHEALEDCONFUSION - 12 ] = sText_PkmnHealedConfusion ,
[ STRINGID_PKMNWASCONFUSED - 12 ] = sText_PkmnWasConfused ,
[ STRINGID_PKMNALREADYCONFUSED - 12 ] = sText_PkmnAlreadyConfused ,
[ STRINGID_PKMNFELLINLOVE - 12 ] = sText_PkmnFellInLove ,
[ STRINGID_PKMNINLOVE - 12 ] = sText_PkmnInLove ,
[ STRINGID_PKMNIMMOBILIZEDBYLOVE - 12 ] = sText_PkmnImmobilizedByLove ,
[ STRINGID_PKMNBLOWNAWAY - 12 ] = sText_PkmnBlownAway ,
[ STRINGID_PKMNCHANGEDTYPE - 12 ] = sText_PkmnChangedType ,
[ STRINGID_PKMNFLINCHED - 12 ] = sText_PkmnFlinched ,
[ STRINGID_PKMNREGAINEDHEALTH - 12 ] = sText_PkmnRegainedHealth ,
[ STRINGID_PKMNHPFULL - 12 ] = sText_PkmnHPFull ,
[ STRINGID_PKMNRAISEDSPDEF - 12 ] = sText_PkmnRaisedSpDef ,
[ STRINGID_PKMNRAISEDDEF - 12 ] = sText_PkmnRaisedDef ,
[ STRINGID_PKMNCOVEREDBYVEIL - 12 ] = sText_PkmnCoveredByVeil ,
[ STRINGID_PKMNUSEDSAFEGUARD - 12 ] = sText_PkmnUsedSafeguard ,
[ STRINGID_PKMNSAFEGUARDEXPIRED - 12 ] = sText_PkmnSafeguardExpired ,
[ STRINGID_PKMNWENTTOSLEEP - 12 ] = sText_PkmnWentToSleep ,
[ STRINGID_PKMNSLEPTHEALTHY - 12 ] = sText_PkmnSleptHealthy ,
[ STRINGID_PKMNWHIPPEDWHIRLWIND - 12 ] = sText_PkmnWhippedWhirlwind ,
[ STRINGID_PKMNTOOKSUNLIGHT - 12 ] = sText_PkmnTookSunlight ,
[ STRINGID_PKMNLOWEREDHEAD - 12 ] = sText_PkmnLoweredHead ,
[ STRINGID_PKMNISGLOWING - 12 ] = sText_PkmnIsGlowing ,
[ STRINGID_PKMNFLEWHIGH - 12 ] = sText_PkmnFlewHigh ,
[ STRINGID_PKMNDUGHOLE - 12 ] = sText_PkmnDugHole ,
[ STRINGID_PKMNSQUEEZEDBYBIND - 12 ] = sText_PkmnSqueezedByBind ,
[ STRINGID_PKMNTRAPPEDINVORTEX - 12 ] = sText_PkmnTrappedInVortex ,
[ STRINGID_PKMNWRAPPEDBY - 12 ] = sText_PkmnWrappedBy ,
[ STRINGID_PKMNCLAMPED - 12 ] = sText_PkmnClamped ,
[ STRINGID_PKMNHURTBY - 12 ] = sText_PkmnHurtBy ,
[ STRINGID_PKMNFREEDFROM - 12 ] = sText_PkmnFreedFrom ,
[ STRINGID_PKMNCRASHED - 12 ] = sText_PkmnCrashed ,
[ STRINGID_PKMNSHROUDEDINMIST - 12 ] = gText_PkmnShroudedInMist ,
[ STRINGID_PKMNPROTECTEDBYMIST - 12 ] = sText_PkmnProtectedByMist ,
[ STRINGID_PKMNGETTINGPUMPED - 12 ] = gText_PkmnGettingPumped ,
[ STRINGID_PKMNHITWITHRECOIL - 12 ] = sText_PkmnHitWithRecoil ,
[ STRINGID_PKMNPROTECTEDITSELF2 - 12 ] = sText_PkmnProtectedItself2 ,
[ STRINGID_PKMNBUFFETEDBYSANDSTORM - 12 ] = sText_PkmnBuffetedBySandstorm ,
[ STRINGID_PKMNPELTEDBYHAIL - 12 ] = sText_PkmnPeltedByHail ,
[ STRINGID_PKMNSEEDED - 12 ] = sText_PkmnSeeded ,
[ STRINGID_PKMNEVADEDATTACK - 12 ] = sText_PkmnEvadedAttack ,
[ STRINGID_PKMNSAPPEDBYLEECHSEED - 12 ] = sText_PkmnSappedByLeechSeed ,
[ STRINGID_PKMNFASTASLEEP - 12 ] = sText_PkmnFastAsleep ,
[ STRINGID_PKMNWOKEUP - 12 ] = sText_PkmnWokeUp ,
[ STRINGID_PKMNUPROARKEPTAWAKE - 12 ] = sText_PkmnUproarKeptAwake ,
[ STRINGID_PKMNWOKEUPINUPROAR - 12 ] = sText_PkmnWokeUpInUproar ,
[ STRINGID_PKMNCAUSEDUPROAR - 12 ] = sText_PkmnCausedUproar ,
[ STRINGID_PKMNMAKINGUPROAR - 12 ] = sText_PkmnMakingUproar ,
[ STRINGID_PKMNCALMEDDOWN - 12 ] = sText_PkmnCalmedDown ,
[ STRINGID_PKMNCANTSLEEPINUPROAR - 12 ] = sText_PkmnCantSleepInUproar ,
[ STRINGID_PKMNSTOCKPILED - 12 ] = sText_PkmnStockpiled ,
[ STRINGID_PKMNCANTSTOCKPILE - 12 ] = sText_PkmnCantStockpile ,
[ STRINGID_PKMNCANTSLEEPINUPROAR2 - 12 ] = sText_PkmnCantSleepInUproar2 ,
[ STRINGID_UPROARKEPTPKMNAWAKE - 12 ] = sText_UproarKeptPkmnAwake ,
[ STRINGID_PKMNSTAYEDAWAKEUSING - 12 ] = sText_PkmnStayedAwakeUsing ,
[ STRINGID_PKMNSTORINGENERGY - 12 ] = sText_PkmnStoringEnergy ,
[ STRINGID_PKMNUNLEASHEDENERGY - 12 ] = sText_PkmnUnleashedEnergy ,
[ STRINGID_PKMNFATIGUECONFUSION - 12 ] = sText_PkmnFatigueConfusion ,
[ STRINGID_PKMNPICKEDUPITEM - 12 ] = sText_PkmnPickedUpItem ,
[ STRINGID_PKMNUNAFFECTED - 12 ] = sText_PkmnUnaffected ,
[ STRINGID_PKMNTRANSFORMEDINTO - 12 ] = sText_PkmnTransformedInto ,
[ STRINGID_PKMNMADESUBSTITUTE - 12 ] = sText_PkmnMadeSubstitute ,
[ STRINGID_PKMNHASSUBSTITUTE - 12 ] = sText_PkmnHasSubstitute ,
[ STRINGID_SUBSTITUTEDAMAGED - 12 ] = sText_SubstituteDamaged ,
[ STRINGID_PKMNSUBSTITUTEFADED - 12 ] = sText_PkmnSubstituteFaded ,
[ STRINGID_PKMNMUSTRECHARGE - 12 ] = sText_PkmnMustRecharge ,
[ STRINGID_PKMNRAGEBUILDING - 12 ] = sText_PkmnRageBuilding ,
[ STRINGID_PKMNMOVEWASDISABLED - 12 ] = sText_PkmnMoveWasDisabled ,
[ STRINGID_PKMNMOVEISDISABLED - 12 ] = sText_PkmnMoveIsDisabled ,
[ STRINGID_PKMNMOVEDISABLEDNOMORE - 12 ] = sText_PkmnMoveDisabledNoMore ,
[ STRINGID_PKMNGOTENCORE - 12 ] = sText_PkmnGotEncore ,
[ STRINGID_PKMNENCOREENDED - 12 ] = sText_PkmnEncoreEnded ,
[ STRINGID_PKMNTOOKAIM - 12 ] = sText_PkmnTookAim ,
[ STRINGID_PKMNSKETCHEDMOVE - 12 ] = sText_PkmnSketchedMove ,
[ STRINGID_PKMNTRYINGTOTAKEFOE - 12 ] = sText_PkmnTryingToTakeFoe ,
[ STRINGID_PKMNTOOKFOE - 12 ] = sText_PkmnTookFoe ,
[ STRINGID_PKMNREDUCEDPP - 12 ] = sText_PkmnReducedPP ,
[ STRINGID_PKMNSTOLEITEM - 12 ] = sText_PkmnStoleItem ,
[ STRINGID_TARGETCANTESCAPENOW - 12 ] = sText_TargetCantEscapeNow ,
[ STRINGID_PKMNFELLINTONIGHTMARE - 12 ] = sText_PkmnFellIntoNightmare ,
[ STRINGID_PKMNLOCKEDINNIGHTMARE - 12 ] = sText_PkmnLockedInNightmare ,
[ STRINGID_PKMNLAIDCURSE - 12 ] = sText_PkmnLaidCurse ,
[ STRINGID_PKMNAFFLICTEDBYCURSE - 12 ] = sText_PkmnAfflictedByCurse ,
[ STRINGID_SPIKESSCATTERED - 12 ] = sText_SpikesScattered ,
[ STRINGID_PKMNHURTBYSPIKES - 12 ] = sText_PkmnHurtBySpikes ,
[ STRINGID_PKMNIDENTIFIED - 12 ] = sText_PkmnIdentified ,
[ STRINGID_PKMNPERISHCOUNTFELL - 12 ] = sText_PkmnPerishCountFell ,
[ STRINGID_PKMNBRACEDITSELF - 12 ] = sText_PkmnBracedItself ,
[ STRINGID_PKMNENDUREDHIT - 12 ] = sText_PkmnEnduredHit ,
[ STRINGID_MAGNITUDESTRENGTH - 12 ] = sText_MagnitudeStrength ,
[ STRINGID_PKMNCUTHPMAXEDATTACK - 12 ] = sText_PkmnCutHPMaxedAttack ,
[ STRINGID_PKMNCOPIEDSTATCHANGES - 12 ] = sText_PkmnCopiedStatChanges ,
[ STRINGID_PKMNGOTFREE - 12 ] = sText_PkmnGotFree ,
[ STRINGID_PKMNSHEDLEECHSEED - 12 ] = sText_PkmnShedLeechSeed ,
[ STRINGID_PKMNBLEWAWAYSPIKES - 12 ] = sText_PkmnBlewAwaySpikes ,
[ STRINGID_PKMNFLEDFROMBATTLE - 12 ] = sText_PkmnFledFromBattle ,
[ STRINGID_PKMNFORESAWATTACK - 12 ] = sText_PkmnForesawAttack ,
[ STRINGID_PKMNTOOKATTACK - 12 ] = sText_PkmnTookAttack ,
[ STRINGID_PKMNATTACK - 12 ] = sText_PkmnAttack ,
[ STRINGID_PKMNCENTERATTENTION - 12 ] = sText_PkmnCenterAttention ,
[ STRINGID_PKMNCHARGINGPOWER - 12 ] = sText_PkmnChargingPower ,
[ STRINGID_NATUREPOWERTURNEDINTO - 12 ] = sText_NaturePowerTurnedInto ,
[ STRINGID_PKMNSTATUSNORMAL - 12 ] = sText_PkmnStatusNormal ,
[ STRINGID_PKMNHASNOMOVESLEFT - 12 ] = sText_PkmnHasNoMovesLeft ,
[ STRINGID_PKMNSUBJECTEDTOTORMENT - 12 ] = sText_PkmnSubjectedToTorment ,
[ STRINGID_PKMNCANTUSEMOVETORMENT - 12 ] = sText_PkmnCantUseMoveTorment ,
[ STRINGID_PKMNTIGHTENINGFOCUS - 12 ] = sText_PkmnTighteningFocus ,
[ STRINGID_PKMNFELLFORTAUNT - 12 ] = sText_PkmnFellForTaunt ,
[ STRINGID_PKMNCANTUSEMOVETAUNT - 12 ] = sText_PkmnCantUseMoveTaunt ,
[ STRINGID_PKMNREADYTOHELP - 12 ] = sText_PkmnReadyToHelp ,
[ STRINGID_PKMNSWITCHEDITEMS - 12 ] = sText_PkmnSwitchedItems ,
[ STRINGID_PKMNCOPIEDFOE - 12 ] = sText_PkmnCopiedFoe ,
[ STRINGID_PKMNMADEWISH - 12 ] = sText_PkmnMadeWish ,
[ STRINGID_PKMNWISHCAMETRUE - 12 ] = sText_PkmnWishCameTrue ,
[ STRINGID_PKMNPLANTEDROOTS - 12 ] = sText_PkmnPlantedRoots ,
[ STRINGID_PKMNABSORBEDNUTRIENTS - 12 ] = sText_PkmnAbsorbedNutrients ,
[ STRINGID_PKMNANCHOREDITSELF - 12 ] = sText_PkmnAnchoredItself ,
[ STRINGID_PKMNWASMADEDROWSY - 12 ] = sText_PkmnWasMadeDrowsy ,
[ STRINGID_PKMNKNOCKEDOFF - 12 ] = sText_PkmnKnockedOff ,
[ STRINGID_PKMNSWAPPEDABILITIES - 12 ] = sText_PkmnSwappedAbilities ,
[ STRINGID_PKMNSEALEDOPPONENTMOVE - 12 ] = sText_PkmnSealedOpponentMove ,
[ STRINGID_PKMNCANTUSEMOVESEALED - 12 ] = sText_PkmnCantUseMoveSealed ,
[ STRINGID_PKMNWANTSGRUDGE - 12 ] = sText_PkmnWantsGrudge ,
[ STRINGID_PKMNLOSTPPGRUDGE - 12 ] = sText_PkmnLostPPGrudge ,
[ STRINGID_PKMNSHROUDEDITSELF - 12 ] = sText_PkmnShroudedItself ,
[ STRINGID_PKMNMOVEBOUNCED - 12 ] = sText_PkmnMoveBounced ,
[ STRINGID_PKMNWAITSFORTARGET - 12 ] = sText_PkmnWaitsForTarget ,
[ STRINGID_PKMNSNATCHEDMOVE - 12 ] = sText_PkmnSnatchedMove ,
[ STRINGID_PKMNMADEITRAIN - 12 ] = sText_PkmnMadeItRain ,
[ STRINGID_PKMNRAISEDSPEED - 12 ] = sText_PkmnRaisedSpeed ,
[ STRINGID_PKMNPROTECTEDBY - 12 ] = sText_PkmnProtectedBy ,
[ STRINGID_PKMNPREVENTSUSAGE - 12 ] = sText_PkmnPreventsUsage ,
[ STRINGID_PKMNRESTOREDHPUSING - 12 ] = sText_PkmnRestoredHPUsing ,
[ STRINGID_PKMNCHANGEDTYPEWITH - 12 ] = sText_PkmnChangedTypeWith ,
[ STRINGID_PKMNPREVENTSPARALYSISWITH - 12 ] = sText_PkmnPreventsParalysisWith ,
[ STRINGID_PKMNPREVENTSROMANCEWITH - 12 ] = sText_PkmnPreventsRomanceWith ,
[ STRINGID_PKMNPREVENTSPOISONINGWITH - 12 ] = sText_PkmnPreventsPoisoningWith ,
[ STRINGID_PKMNPREVENTSCONFUSIONWITH - 12 ] = sText_PkmnPreventsConfusionWith ,
[ STRINGID_PKMNRAISEDFIREPOWERWITH - 12 ] = sText_PkmnRaisedFirePowerWith ,
[ STRINGID_PKMNANCHORSITSELFWITH - 12 ] = sText_PkmnAnchorsItselfWith ,
[ STRINGID_PKMNCUTSATTACKWITH - 12 ] = sText_PkmnCutsAttackWith ,
[ STRINGID_PKMNPREVENTSSTATLOSSWITH - 12 ] = sText_PkmnPreventsStatLossWith ,
[ STRINGID_PKMNHURTSWITH - 12 ] = sText_PkmnHurtsWith ,
[ STRINGID_PKMNTRACED - 12 ] = sText_PkmnTraced ,
[ STRINGID_STATSHARPLY - 12 ] = sText_StatSharply ,
[ STRINGID_STATROSE - 12 ] = gText_StatRose ,
[ STRINGID_STATHARSHLY - 12 ] = sText_StatHarshly ,
[ STRINGID_STATFELL - 12 ] = sText_StatFell ,
[ STRINGID_PKMNSSTATCHANGED - 12 ] = sText_PkmnsStatChanged ,
[ STRINGID_PKMNSSTATCHANGED2 - 12 ] = gText_PkmnsStatChanged2 ,
[ STRINGID_PKMNSSTATCHANGED3 - 12 ] = sText_PkmnsStatChanged3 ,
[ STRINGID_PKMNSSTATCHANGED4 - 12 ] = sText_PkmnsStatChanged4 ,
[ STRINGID_CRITICALHIT - 12 ] = sText_CriticalHit ,
[ STRINGID_ONEHITKO - 12 ] = sText_OneHitKO ,
[ STRINGID_123POOF - 12 ] = sText_123Poof ,
[ STRINGID_ANDELLIPSIS - 12 ] = sText_AndEllipsis ,
[ STRINGID_NOTVERYEFFECTIVE - 12 ] = sText_NotVeryEffective ,
[ STRINGID_SUPEREFFECTIVE - 12 ] = sText_SuperEffective ,
[ STRINGID_GOTAWAYSAFELY - 12 ] = sText_GotAwaySafely ,
[ STRINGID_WILDPKMNFLED - 12 ] = sText_WildPkmnFled ,
[ STRINGID_NORUNNINGFROMTRAINERS - 12 ] = sText_NoRunningFromTrainers ,
[ STRINGID_CANTESCAPE - 12 ] = sText_CantEscape ,
[ STRINGID_DONTLEAVEBIRCH - 12 ] = sText_DontLeaveBirch ,
[ STRINGID_BUTNOTHINGHAPPENED - 12 ] = sText_ButNothingHappened ,
[ STRINGID_BUTITFAILED - 12 ] = sText_ButItFailed ,
[ STRINGID_ITHURTCONFUSION - 12 ] = sText_ItHurtConfusion ,
[ STRINGID_MIRRORMOVEFAILED - 12 ] = sText_MirrorMoveFailed ,
[ STRINGID_STARTEDTORAIN - 12 ] = sText_StartedToRain ,
[ STRINGID_DOWNPOURSTARTED - 12 ] = sText_DownpourStarted ,
[ STRINGID_RAINCONTINUES - 12 ] = sText_RainContinues ,
[ STRINGID_DOWNPOURCONTINUES - 12 ] = sText_DownpourContinues ,
[ STRINGID_RAINSTOPPED - 12 ] = sText_RainStopped ,
[ STRINGID_SANDSTORMBREWED - 12 ] = sText_SandstormBrewed ,
[ STRINGID_SANDSTORMRAGES - 12 ] = sText_SandstormRages ,
[ STRINGID_SANDSTORMSUBSIDED - 12 ] = sText_SandstormSubsided ,
[ STRINGID_SUNLIGHTGOTBRIGHT - 12 ] = sText_SunlightGotBright ,
[ STRINGID_SUNLIGHTSTRONG - 12 ] = sText_SunlightStrong ,
[ STRINGID_SUNLIGHTFADED - 12 ] = sText_SunlightFaded ,
[ STRINGID_STARTEDHAIL - 12 ] = sText_StartedHail ,
[ STRINGID_HAILCONTINUES - 12 ] = sText_HailContinues ,
[ STRINGID_HAILSTOPPED - 12 ] = sText_HailStopped ,
[ STRINGID_FAILEDTOSPITUP - 12 ] = sText_FailedToSpitUp ,
[ STRINGID_FAILEDTOSWALLOW - 12 ] = sText_FailedToSwallow ,
[ STRINGID_WINDBECAMEHEATWAVE - 12 ] = sText_WindBecameHeatWave ,
[ STRINGID_STATCHANGESGONE - 12 ] = sText_StatChangesGone ,
[ STRINGID_COINSSCATTERED - 12 ] = sText_CoinsScattered ,
[ STRINGID_TOOWEAKFORSUBSTITUTE - 12 ] = sText_TooWeakForSubstitute ,
[ STRINGID_SHAREDPAIN - 12 ] = sText_SharedPain ,
[ STRINGID_BELLCHIMED - 12 ] = sText_BellChimed ,
[ STRINGID_FAINTINTHREE - 12 ] = sText_FaintInThree ,
[ STRINGID_NOPPLEFT - 12 ] = sText_NoPPLeft ,
[ STRINGID_BUTNOPPLEFT - 12 ] = sText_ButNoPPLeft ,
[ STRINGID_PLAYERUSEDITEM - 12 ] = sText_PlayerUsedItem ,
[ STRINGID_WALLYUSEDITEM - 12 ] = sText_WallyUsedItem ,
[ STRINGID_TRAINERBLOCKEDBALL - 12 ] = sText_TrainerBlockedBall ,
[ STRINGID_DONTBEATHIEF - 12 ] = sText_DontBeAThief ,
[ STRINGID_ITDODGEDBALL - 12 ] = sText_ItDodgedBall ,
[ STRINGID_YOUMISSEDPKMN - 12 ] = sText_YouMissedPkmn ,
[ STRINGID_PKMNBROKEFREE - 12 ] = sText_PkmnBrokeFree ,
[ STRINGID_ITAPPEAREDCAUGHT - 12 ] = sText_ItAppearedCaught ,
[ STRINGID_AARGHALMOSTHADIT - 12 ] = sText_AarghAlmostHadIt ,
[ STRINGID_SHOOTSOCLOSE - 12 ] = sText_ShootSoClose ,
[ STRINGID_GOTCHAPKMNCAUGHT - 12 ] = sText_GotchaPkmnCaught ,
[ STRINGID_GOTCHAPKMNCAUGHT2 - 12 ] = sText_GotchaPkmnCaught2 ,
[ STRINGID_GIVENICKNAMECAPTURED - 12 ] = sText_GiveNicknameCaptured ,
[ STRINGID_PKMNSENTTOPC - 12 ] = sText_PkmnSentToPC ,
[ STRINGID_PKMNDATAADDEDTODEX - 12 ] = sText_PkmnDataAddedToDex ,
[ STRINGID_ITISRAINING - 12 ] = sText_ItIsRaining ,
[ STRINGID_SANDSTORMISRAGING - 12 ] = sText_SandstormIsRaging ,
[ STRINGID_CANTESCAPE2 - 12 ] = sText_CantEscape2 ,
[ STRINGID_PKMNIGNORESASLEEP - 12 ] = sText_PkmnIgnoresAsleep ,
[ STRINGID_PKMNIGNOREDORDERS - 12 ] = sText_PkmnIgnoredOrders ,
[ STRINGID_PKMNBEGANTONAP - 12 ] = sText_PkmnBeganToNap ,
[ STRINGID_PKMNLOAFING - 12 ] = sText_PkmnLoafing ,
[ STRINGID_PKMNWONTOBEY - 12 ] = sText_PkmnWontObey ,
[ STRINGID_PKMNTURNEDAWAY - 12 ] = sText_PkmnTurnedAway ,
[ STRINGID_PKMNPRETENDNOTNOTICE - 12 ] = sText_PkmnPretendNotNotice ,
[ STRINGID_ENEMYABOUTTOSWITCHPKMN - 12 ] = sText_EnemyAboutToSwitchPkmn ,
[ STRINGID_CREPTCLOSER - 12 ] = sText_CreptCloser ,
[ STRINGID_CANTGETCLOSER - 12 ] = sText_CantGetCloser ,
[ STRINGID_PKMNWATCHINGCAREFULLY - 12 ] = sText_PkmnWatchingCarefully ,
[ STRINGID_PKMNCURIOUSABOUTX - 12 ] = sText_PkmnCuriousAboutX ,
[ STRINGID_PKMNENTHRALLEDBYX - 12 ] = sText_PkmnEnthralledByX ,
[ STRINGID_PKMNIGNOREDX - 12 ] = sText_PkmnIgnoredX ,
[ STRINGID_THREWPOKEBLOCKATPKMN - 12 ] = sText_ThrewPokeblockAtPkmn ,
[ STRINGID_OUTOFSAFARIBALLS - 12 ] = sText_OutOfSafariBalls ,
[ STRINGID_PKMNSITEMCUREDPARALYSIS - 12 ] = sText_PkmnsItemCuredParalysis ,
[ STRINGID_PKMNSITEMCUREDPOISON - 12 ] = sText_PkmnsItemCuredPoison ,
[ STRINGID_PKMNSITEMHEALEDBURN - 12 ] = sText_PkmnsItemHealedBurn ,
[ STRINGID_PKMNSITEMDEFROSTEDIT - 12 ] = sText_PkmnsItemDefrostedIt ,
[ STRINGID_PKMNSITEMWOKEIT - 12 ] = sText_PkmnsItemWokeIt ,
[ STRINGID_PKMNSITEMSNAPPEDOUT - 12 ] = sText_PkmnsItemSnappedOut ,
[ STRINGID_PKMNSITEMCUREDPROBLEM - 12 ] = sText_PkmnsItemCuredProblem ,
[ STRINGID_PKMNSITEMRESTOREDHEALTH - 12 ] = sText_PkmnsItemRestoredHealth ,
[ STRINGID_PKMNSITEMRESTOREDPP - 12 ] = sText_PkmnsItemRestoredPP ,
[ STRINGID_PKMNSITEMRESTOREDSTATUS - 12 ] = sText_PkmnsItemRestoredStatus ,
[ STRINGID_PKMNSITEMRESTOREDHPALITTLE - 12 ] = sText_PkmnsItemRestoredHPALittle ,
[ STRINGID_ITEMALLOWSONLYYMOVE - 12 ] = sText_ItemAllowsOnlyYMove ,
[ STRINGID_PKMNHUNGONWITHX - 12 ] = sText_PkmnHungOnWithX ,
[ STRINGID_EMPTYSTRING3 - 12 ] = gText_EmptyString3 ,
[ STRINGID_PKMNSXPREVENTSBURNS - 12 ] = sText_PkmnsXPreventsBurns ,
[ STRINGID_PKMNSXBLOCKSY - 12 ] = sText_PkmnsXBlocksY ,
[ STRINGID_PKMNSXRESTOREDHPALITTLE2 - 12 ] = sText_PkmnsXRestoredHPALittle2 ,
[ STRINGID_PKMNSXWHIPPEDUPSANDSTORM - 12 ] = sText_PkmnsXWhippedUpSandstorm ,
[ STRINGID_PKMNSXPREVENTSYLOSS - 12 ] = sText_PkmnsXPreventsYLoss ,
[ STRINGID_PKMNSXINFATUATEDY - 12 ] = sText_PkmnsXInfatuatedY ,
[ STRINGID_PKMNSXMADEYINEFFECTIVE - 12 ] = sText_PkmnsXMadeYIneffective ,
[ STRINGID_PKMNSXCUREDYPROBLEM - 12 ] = sText_PkmnsXCuredYProblem ,
[ STRINGID_ITSUCKEDLIQUIDOOZE - 12 ] = sText_ItSuckedLiquidOoze ,
[ STRINGID_PKMNTRANSFORMED - 12 ] = sText_PkmnTransformed ,
[ STRINGID_ELECTRICITYWEAKENED - 12 ] = sText_ElectricityWeakened ,
[ STRINGID_FIREWEAKENED - 12 ] = sText_FireWeakened ,
[ STRINGID_PKMNHIDUNDERWATER - 12 ] = sText_PkmnHidUnderwater ,
[ STRINGID_PKMNSPRANGUP - 12 ] = sText_PkmnSprangUp ,
[ STRINGID_HMMOVESCANTBEFORGOTTEN - 12 ] = sText_HMMovesCantBeForgotten ,
[ STRINGID_XFOUNDONEY - 12 ] = sText_XFoundOneY ,
[ STRINGID_PLAYERDEFEATEDTRAINER1 - 12 ] = sText_PlayerDefeatedLinkTrainerTrainer1 ,
[ STRINGID_SOOTHINGAROMA - 12 ] = sText_SoothingAroma ,
[ STRINGID_ITEMSCANTBEUSEDNOW - 12 ] = sText_ItemsCantBeUsedNow ,
[ STRINGID_FORXCOMMAYZ - 12 ] = sText_ForXCommaYZ ,
[ STRINGID_USINGXTHEYOFZN - 12 ] = sText_UsingXTheYOfZN ,
[ STRINGID_PKMNUSEDXTOGETPUMPED - 12 ] = sText_PkmnUsedXToGetPumped ,
[ STRINGID_PKMNSXMADEYUSELESS - 12 ] = sText_PkmnsXMadeYUseless ,
[ STRINGID_PKMNTRAPPEDBYSANDTOMB - 12 ] = sText_PkmnTrappedBySandTomb ,
[ STRINGID_EMPTYSTRING4 - 12 ] = sText_EmptyString4 ,
[ STRINGID_ABOOSTED - 12 ] = sText_ABoosted ,
[ STRINGID_PKMNSXINTENSIFIEDSUN - 12 ] = sText_PkmnsXIntensifiedSun ,
[ STRINGID_PKMNMAKESGROUNDMISS - 12 ] = sText_PkmnMakesGroundMiss ,
[ STRINGID_YOUTHROWABALLNOWRIGHT - 12 ] = sText_YouThrowABallNowRight ,
[ STRINGID_PKMNSXTOOKATTACK - 12 ] = sText_PkmnsXTookAttack ,
[ STRINGID_PKMNCHOSEXASDESTINY - 12 ] = sText_PkmnChoseXAsDestiny ,
[ STRINGID_PKMNLOSTFOCUS - 12 ] = sText_PkmnLostFocus ,
[ STRINGID_USENEXTPKMN - 12 ] = sText_UseNextPkmn ,
[ STRINGID_PKMNFLEDUSINGITS - 12 ] = sText_PkmnFledUsingIts ,
[ STRINGID_PKMNFLEDUSING - 12 ] = sText_PkmnFledUsing ,
[ STRINGID_PKMNWASDRAGGEDOUT - 12 ] = sText_PkmnWasDraggedOut ,
[ STRINGID_PREVENTEDFROMWORKING - 12 ] = sText_PreventedFromWorking ,
[ STRINGID_PKMNSITEMNORMALIZEDSTATUS - 12 ] = sText_PkmnsItemNormalizedStatus ,
[ STRINGID_TRAINER1USEDITEM - 12 ] = sText_Trainer1UsedItem ,
[ STRINGID_BOXISFULL - 12 ] = sText_BoxIsFull ,
[ STRINGID_PKMNAVOIDEDATTACK - 12 ] = sText_PkmnAvoidedAttack ,
[ STRINGID_PKMNSXMADEITINEFFECTIVE - 12 ] = sText_PkmnsXMadeItIneffective ,
[ STRINGID_PKMNSXPREVENTSFLINCHING - 12 ] = sText_PkmnsXPreventsFlinching ,
[ STRINGID_PKMNALREADYHASBURN - 12 ] = sText_PkmnAlreadyHasBurn ,
[ STRINGID_STATSWONTDECREASE2 - 12 ] = sText_StatsWontDecrease2 ,
[ STRINGID_PKMNSXBLOCKSY2 - 12 ] = sText_PkmnsXBlocksY2 ,
[ STRINGID_PKMNSXWOREOFF - 12 ] = sText_PkmnsXWoreOff ,
[ STRINGID_PKMNRAISEDDEFALITTLE - 12 ] = sText_PkmnRaisedDefALittle ,
[ STRINGID_PKMNRAISEDSPDEFALITTLE - 12 ] = sText_PkmnRaisedSpDefALittle ,
[ STRINGID_THEWALLSHATTERED - 12 ] = sText_TheWallShattered ,
[ STRINGID_PKMNSXPREVENTSYSZ - 12 ] = sText_PkmnsXPreventsYsZ ,
[ STRINGID_PKMNSXCUREDITSYPROBLEM - 12 ] = sText_PkmnsXCuredItsYProblem ,
[ STRINGID_ATTACKERCANTESCAPE - 12 ] = sText_AttackerCantEscape ,
[ STRINGID_PKMNOBTAINEDX - 12 ] = sText_PkmnObtainedX ,
[ STRINGID_PKMNOBTAINEDX2 - 12 ] = sText_PkmnObtainedX2 ,
[ STRINGID_PKMNOBTAINEDXYOBTAINEDZ - 12 ] = sText_PkmnObtainedXYObtainedZ ,
[ STRINGID_BUTNOEFFECT - 12 ] = sText_ButNoEffect ,
[ STRINGID_PKMNSXHADNOEFFECTONY - 12 ] = sText_PkmnsXHadNoEffectOnY ,
[ STRINGID_TWOENEMIESDEFEATED - 12 ] = sText_TwoInGameTrainersDefeated ,
[ STRINGID_TRAINER2LOSETEXT - 12 ] = sText_Trainer2LoseText ,
[ STRINGID_PKMNINCAPABLEOFPOWER - 12 ] = sText_PkmnIncapableOfPower ,
[ STRINGID_GLINTAPPEARSINEYE - 12 ] = sText_GlintAppearsInEye ,
[ STRINGID_PKMNGETTINGINTOPOSITION - 12 ] = sText_PkmnGettingIntoPosition ,
[ STRINGID_PKMNBEGANGROWLINGDEEPLY - 12 ] = sText_PkmnBeganGrowlingDeeply ,
[ STRINGID_PKMNEAGERFORMORE - 12 ] = sText_PkmnEagerForMore ,
[ STRINGID_DEFEATEDOPPONENTBYREFEREE - 12 ] = sText_DefeatedOpponentByReferee ,
[ STRINGID_LOSTTOOPPONENTBYREFEREE - 12 ] = sText_LostToOpponentByReferee ,
[ STRINGID_TIEDOPPONENTBYREFEREE - 12 ] = sText_TiedOpponentByReferee ,
[ STRINGID_QUESTIONFORFEITMATCH - 12 ] = sText_QuestionForfeitMatch ,
[ STRINGID_FORFEITEDMATCH - 12 ] = sText_ForfeitedMatch ,
[ STRINGID_PKMNTRANSFERREDSOMEONESPC - 12 ] = gText_PkmnTransferredSomeonesPC ,
[ STRINGID_PKMNTRANSFERREDLANETTESPC - 12 ] = gText_PkmnTransferredLanettesPC ,
[ STRINGID_PKMNBOXSOMEONESPCFULL - 12 ] = gText_PkmnBoxSomeonesPCFull ,
[ STRINGID_PKMNBOXLANETTESPCFULL - 12 ] = gText_PkmnBoxLanettesPCFull ,
[ STRINGID_TRAINER1WINTEXT - 12 ] = sText_Trainer1WinText ,
[ STRINGID_TRAINER2WINTEXT - 12 ] = sText_Trainer2WinText ,
2018-12-09 13:12:02 +01:00
[ STRINGID_ENDUREDSTURDY - 12 ] = sText_EnduredViaSturdy ,
[ STRINGID_POWERHERB - 12 ] = sText_PowerHerbActivation ,
[ STRINGID_HURTBYITEM - 12 ] = sText_HurtByItem ,
[ STRINGID_PSNBYITEM - 12 ] = sText_BadlyPoisonedByItem ,
[ STRINGID_BRNBYITEM - 12 ] = sText_BurnedByItem ,
[ STRINGID_DEFABILITYIN - 12 ] = sText_TargetAbilityActivates ,
[ STRINGID_GRAVITYINTENSIFIED - 12 ] = sText_GravityIntensified ,
[ STRINGID_TARGETIDENTIFIED - 12 ] = sText_TargetIdentified ,
[ STRINGID_TARGETWOKEUP - 12 ] = sText_TargetWokeUp ,
[ STRINGID_PKMNSTOLEANDATEITEM - 12 ] = sText_PkmnStoleAndAteItem ,
[ STRINGID_TAILWINDBLEW - 12 ] = sText_TailWindBlew ,
[ STRINGID_PKMNWENTBACK - 12 ] = sText_PkmnWentBack ,
[ STRINGID_PKMNCANTUSEITEMSANYMORE - 12 ] = sText_PkmnCantUseItemsAnymore ,
[ STRINGID_PKMNFLUNG - 12 ] = sText_PkmnFlung ,
[ STRINGID_PKMNPREVENTEDFROMHEALING - 12 ] = sText_PkmnPreventedFromHealing ,
[ STRINGID_PKMNSWITCHEDATKANDDEF - 12 ] = sText_PkmnSwitchedAtkAndDef ,
[ STRINGID_PKMNSABILITYSUPPRESSED - 12 ] = sText_PkmnsAbilitySuppressed ,
[ STRINGID_SHIELDEDFROMCRITICALHITS - 12 ] = sText_ShieldedFromCriticalHits ,
[ STRINGID_SWITCHEDATKANDSPATK - 12 ] = sText_SwitchedAtkAndSpAtk ,
[ STRINGID_SWITCHEDDEFANDSPDEF - 12 ] = sText_SwitchedDefAndSpDef ,
[ STRINGID_PKMNACQUIREDABILITY - 12 ] = sText_PkmnAcquiredAbility ,
[ STRINGID_POISONSPIKESSCATTERED - 12 ] = sText_PoisonSpikesScattered ,
[ STRINGID_PKMNSWITCHEDSTATCHANGES - 12 ] = sText_PkmnSwitchedStatChanges ,
[ STRINGID_PKMNSURROUNDEDWITHVEILOFWATER - 12 ] = sText_PkmnSurroundedWithVeilOfWater ,
[ STRINGID_PKMNLEVITATEDONELECTROMAGNETISM - 12 ] = sText_PkmnLevitatedOnElectromagnetism ,
[ STRINGID_PKMNTWISTEDDIMENSIONS - 12 ] = sText_PkmnTwistedDimensions ,
[ STRINGID_POINTEDSTONESFLOAT - 12 ] = sText_PointedStonesFloat ,
[ STRINGID_CLOAKEDINMYSTICALMOONLIGHT - 12 ] = sText_CloakedInMysticalMoonlight ,
[ STRINGID_TRAPPERBYSWIRLINGMAGMA - 12 ] = sText_TrappedBySwirlingMagma ,
[ STRINGID_VANISHEDINSTANTLY - 12 ] = sText_VanishedInstantly ,
[ STRINGID_PROTECTEDTEAM - 12 ] = sText_ProtectedTeam ,
[ STRINGID_SHAREDITSGUARD - 12 ] = sText_SharedItsGuard ,
[ STRINGID_SHAREDITSPOWER - 12 ] = sText_SharedItsPower ,
[ STRINGID_SWAPSDEFANDSPDEFOFALLPOKEMON - 12 ] = sText_SwapsDefAndSpDefOfAllPkmn ,
[ STRINGID_BECAMENIMBLE - 12 ] = sText_BecameNimble ,
[ STRINGID_HURLEDINTOTHEAIR - 12 ] = sText_HurledIntoTheAir ,
[ STRINGID_HELDITEMSLOSEEFFECTS - 12 ] = sText_HeldItemsLoseEffects ,
[ STRINGID_FELLSTRAIGHTDOWN - 12 ] = sText_FellStraightDown ,
[ STRINGID_TRANSFORMEDINTOWATERTYPE - 12 ] = sText_TransformedIntoWaterType ,
[ STRINGID_PKMNACQUIREDSIMPLE - 12 ] = sText_PkmnAcquiredSimple ,
[ STRINGID_EMPTYSTRING5 - 12 ] = sText_EmptyString4 ,
[ STRINGID_KINDOFFER - 12 ] = sText_KindOffer ,
[ STRINGID_RESETSTARGETSSTATLEVELS - 12 ] = sText_ResetsTargetsStatLevels ,
[ STRINGID_EMPTYSTRING6 - 12 ] = sText_EmptyString4 ,
[ STRINGID_ALLYSWITCHPOSITION - 12 ] = sText_AllySwitchPosition ,
[ STRINGID_RESTORETARGETSHEALTH - 12 ] = sText_RestoreTargetsHealth ,
[ STRINGID_TOOKPJMNINTOTHESKY - 12 ] = sText_TookPkmnIntoTheSky ,
[ STRINGID_FREEDFROMSKYDROP - 12 ] = sText_FreedFromSkyDrop ,
[ STRINGID_POSTPONETARGETMOVE - 12 ] = sText_PostponeTargetMove ,
[ STRINGID_REFLECTTARGETSTYPE - 12 ] = sText_ReflectTargetsType ,
[ STRINGID_TRANSFERHELDITEM - 12 ] = sText_TransferHeldItem ,
[ STRINGID_EMBARGOENDS - 12 ] = sText_EmbargoEnds ,
2019-03-24 03:45:21 +01:00
[ STRINGID_ELECTROMAGNETISM - 12 ] = sText_Electromagnetism ,
[ STRINGID_BUFFERENDS - 12 ] = sText_BufferEnds ,
2018-12-09 13:12:02 +01:00
[ STRINGID_TELEKINESISENDS - 12 ] = sText_TelekinesisEnds ,
[ STRINGID_TAILWINDENDS - 12 ] = sText_TailwindEnds ,
[ STRINGID_LUCKYCHANTENDS - 12 ] = sText_LuckyChantEnds ,
[ STRINGID_TRICKROOMENDS - 12 ] = sText_TrickRoomEnds ,
[ STRINGID_WONDERROOMENDS - 12 ] = sText_WonderRoomEnds ,
[ STRINGID_MAGICROOMENDS - 12 ] = sText_MagicRoomEnds ,
[ STRINGID_MUDSPORTENDS - 12 ] = sText_MudSportEnds ,
[ STRINGID_WATERSPORTENDS - 12 ] = sText_WaterSportEnds ,
[ STRINGID_GRAVITYENDS - 12 ] = sText_GravityEnds ,
[ STRINGID_AQUARINGHEAL - 12 ] = sText_AquaRingHeal ,
[ STRINGID_AURORAVEILENDS - 12 ] = sText_AuroraVeilEnds ,
[ STRINGID_ELECTRICTERRAINENDS - 12 ] = sText_ElectricTerrainEnds ,
[ STRINGID_MISTYTERRAINENDS - 12 ] = sText_MistyTerrainEnds ,
[ STRINGID_PSYCHICTERRAINENDS - 12 ] = sText_PsychicTerrainEnds ,
[ STRINGID_GRASSYTERRAINENDS - 12 ] = sText_GrassyTerrainEnds ,
[ STRINGID_TARGETABILITYSTATRAISE - 12 ] = sText_TargetAbilityRaisedStat ,
[ STRINGID_ANGRYPOINTACTIVATES - 12 ] = sText_AngryPointActivates ,
[ STRINGID_ATTACKERABILITYSTATRAISE - 12 ] = sText_AttackerAbilityRaisedStat ,
[ STRINGID_POISONHEALHPUP - 12 ] = sText_PoisonHealHpUp ,
[ STRINGID_BADDREAMSDMG - 12 ] = sText_BadDreamsDmg ,
[ STRINGID_MOLDBREAKERENTERS - 12 ] = sText_MoldBreakerEnters ,
[ STRINGID_TERAVOLTENTERS - 12 ] = sText_TeravoltEnters ,
[ STRINGID_TURBOBLAZEENTERS - 12 ] = sText_TurboblazeEnters ,
[ STRINGID_SLOWSTARTENTERS - 12 ] = sText_SlowStartEnters ,
[ STRINGID_SLOWSTARTEND - 12 ] = sText_SlowStartEnd ,
[ STRINGID_SOLARPOWERHPDROP - 12 ] = sText_SolarPowerHpDrop ,
[ STRINGID_AFTERMATHDMG - 12 ] = sText_AftermathDmg ,
[ STRINGID_ANTICIPATIONACTIVATES - 12 ] = sText_AnticipationActivates ,
[ STRINGID_FOREWARNACTIVATES - 12 ] = sText_ForewarnActivates ,
[ STRINGID_ICEBODYHPGAIN - 12 ] = sText_IceBodyHpGain ,
[ STRINGID_SNOWWARNINGHAIL - 12 ] = sText_SnowWarningHail ,
[ STRINGID_FRISKACTIVATES - 12 ] = sText_FriskActivates ,
[ STRINGID_UNNERVEENTERS - 12 ] = sText_UnnerveEnters ,
[ STRINGID_HARVESTBERRY - 12 ] = sText_HarvestBerry ,
[ STRINGID_MOXIEATKRISE - 12 ] = sText_MoxieAtkRise ,
[ STRINGID_MAGICBOUNCEACTIVATES - 12 ] = sText_MagicBounceActivates ,
[ STRINGID_PROTEANTYPECHANGE - 12 ] = sText_ProteanTypeChange ,
[ STRINGID_SYMBIOSISITEMPASS - 12 ] = sText_SymbiosisItemPass ,
[ STRINGID_STEALTHROCKDMG - 12 ] = sText_StealthRockDmg ,
[ STRINGID_TOXICSPIKESABSORBED - 12 ] = sText_ToxicSpikesAbsorbed ,
[ STRINGID_TOXICSPIKESPOISONED - 12 ] = sText_ToxicSpikesPoisoned ,
[ STRINGID_STICKYWEBSWITCHIN - 12 ] = sText_StickyWebSwitchIn ,
[ STRINGID_HEALINGWISHCAMETRUE - 12 ] = sText_HealingWishCameTrue ,
[ STRINGID_HEALINGWISHHEALED - 12 ] = sText_HealingWishHealed ,
[ STRINGID_LUNARDANCECAMETRUE - 12 ] = sText_LunarDanceCameTrue ,
[ STRINGID_CUSEDBODYDISABLED - 12 ] = sText_CursedBodyDisabled ,
[ STRINGID_ATTACKERACQUIREDABILITY - 12 ] = sText_AttackerAquiredAbility ,
[ STRINGID_TARGETABILITYSTATLOWER - 12 ] = sText_TargetAbilityLoweredStat ,
[ STRINGID_TARGETSTATWONTGOHIGHER - 12 ] = sText_TargetStatWontGoHigher ,
[ STRINGID_PKMNMOVEBOUNCEDABILITY - 12 ] = sText_PkmnMoveBouncedViaAbility ,
[ STRINGID_IMPOSTERTRANSFORM - 12 ] = sText_ImposterTransform ,
[ STRINGID_ASSAULTVESTDOESNTALLOW - 12 ] = sText_AssaultVestDoesntAllow ,
[ STRINGID_GRAVITYPREVENTSUSAGE - 12 ] = sText_GravityPreventsUsage ,
[ STRINGID_HEALBLOCKPREVENTSUSAGE - 12 ] = sText_HealBlockPreventsUsage ,
[ STRINGID_NOTDONEYET - 12 ] = sText_NotDoneYet ,
[ STRINGID_STICKYWEBUSED - 12 ] = sText_StickyWebUsed ,
[ STRINGID_QUASHSUCCESS - 12 ] = sText_QuashSuccess ,
[ STRINGID_PKMNBLEWAWAYTOXICSPIKES - 12 ] = sText_PkmnBlewAwayToxicSpikes ,
[ STRINGID_PKMNBLEWAWAYSTICKYWEB - 12 ] = sText_PkmnBlewAwayStickyWeb ,
[ STRINGID_PKMNBLEWAWAYSTEALTHROCK - 12 ] = sText_PkmnBlewAwayStealthRock ,
[ STRINGID_IONDELUGEON - 12 ] = sText_IonDelugeOn ,
[ STRINGID_TOPSYTURVYSWITCHEDSTATS - 12 ] = sText_TopsyTurvySwitchedStats ,
[ STRINGID_TERRAINBECOMESMISTY - 12 ] = sText_TerrainBecomesMisty ,
[ STRINGID_TERRAINBECOMESGRASSY - 12 ] = sText_TerrainBecomesGrassy ,
[ STRINGID_TERRAINBECOMESELECTRIC - 12 ] = sText_TerrainBecomesElectric ,
[ STRINGID_TERRAINBECOMESPSYCHIC - 12 ] = sText_TerrainBecomesPsychic ,
[ STRINGID_TARGETELECTRIFIED - 12 ] = sText_TargetElectrified ,
[ STRINGID_MEGAEVOREACTING - 12 ] = sText_MegaEvoReacting ,
[ STRINGID_MEGAEVOEVOLVED - 12 ] = sText_MegaEvoEvolved ,
[ STRINGID_DRASTICALLY - 12 ] = sText_drastically ,
[ STRINGID_SEVERELY - 12 ] = sText_severely ,
[ STRINGID_INFESTATION - 12 ] = sText_Infestation ,
[ STRINGID_NOEFFECTONTARGET - 12 ] = sText_NoEffectOnTarget ,
[ STRINGID_BURSTINGFLAMESHIT - 12 ] = sText_BurstingFlames ,
[ STRINGID_BESTOWITEMGIVING - 12 ] = sText_BestowItemGiving ,
[ STRINGID_THIRDTYPEADDED - 12 ] = sText_ThirdTypeAdded ,
[ STRINGID_FELLFORFEINT - 12 ] = sText_FellForFeint ,
[ STRINGID_POKEMONCANNOTUSEMOVE - 12 ] = sText_PokemonCannotUseMove ,
[ STRINGID_COVEREDINPOWDER - 12 ] = sText_CoveredInPowder ,
[ STRINGID_POWDEREXPLODES - 12 ] = sText_PowderExplodes ,
2019-02-22 23:48:28 +01:00
[ STRINGID_GRAVITYGROUNDING - 12 ] = sText_GravityGrounding ,
2019-02-28 15:02:54 +01:00
[ STRINGID_MISTYTERRAINPREVENTS - 12 ] = sText_MistyTerrainPreventsStatus ,
[ STRINGID_GRASSYTERRAINHEALS - 12 ] = sText_GrassyTerrainHeals ,
[ STRINGID_ELECTRICTERRAINPREVENTS - 12 ] = sText_ElectricTerrainPreventsSleep ,
[ STRINGID_PSYCHICTERRAINPREVENTS - 12 ] = sText_PsychicTerrainPreventsPriority ,
2018-08-05 12:43:57 +02:00
} ;
const u16 gTerrainStringIds [ ] =
{
STRINGID_TERRAINBECOMESMISTY , STRINGID_TERRAINBECOMESGRASSY , STRINGID_TERRAINBECOMESELECTRIC , STRINGID_TERRAINBECOMESPSYCHIC
2018-07-28 10:41:20 +02:00
} ;
2019-02-28 15:02:54 +01:00
const u16 gTerrainPreventsStringIds [ ] =
{
STRINGID_MISTYTERRAINPREVENTS , STRINGID_ELECTRICTERRAINPREVENTS , STRINGID_PSYCHICTERRAINPREVENTS
} ;
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
} ;
2017-11-26 00:33:40 +01:00
const u16 gSandStormHailEndStringIds [ ] =
2017-10-07 15:15:47 +02:00
{
2017-11-26 00:33:40 +01:00
STRINGID_SANDSTORMSUBSIDED , STRINGID_HAILSTOPPED
} ;
const u16 gRainContinuesStringIds [ ] =
{
STRINGID_RAINCONTINUES , STRINGID_DOWNPOURCONTINUES , STRINGID_RAINSTOPPED
} ;
const u16 gProtectLikeUsedStringIds [ ] =
{
2018-10-06 15:50:35 +02:00
STRINGID_PKMNPROTECTEDITSELF2 , STRINGID_PKMNBRACEDITSELF , STRINGID_BUTITFAILED , STRINGID_PROTECTEDTEAM ,
2017-11-26 00:33:40 +01:00
} ;
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 ,
2017-11-26 00:33:40 +01:00
} ;
const u16 gRestUsedStringIds [ ] =
{
STRINGID_PKMNWENTTOSLEEP , STRINGID_PKMNSLEPTHEALTHY
} ;
2017-11-26 17:26:11 +01:00
const u16 gUproarOverTurnStringIds [ ] =
2017-11-26 00:33:40 +01:00
{
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 ,
2018-12-08 16:19:50 +01:00
STRINGID_PKMNFLEWHIGH , STRINGID_PKMNDUGHOLE , STRINGID_PKMNHIDUNDERWATER , STRINGID_PKMNSPRANGUP , STRINGID_VANISHEDINSTANTLY
2017-11-26 00:33:40 +01:00
} ;
const u16 gWrappedStringIds [ ] =
{
STRINGID_PKMNSQUEEZEDBYBIND , STRINGID_PKMNWRAPPEDBY , STRINGID_PKMNTRAPPEDINVORTEX ,
2018-09-22 12:20:33 +02:00
STRINGID_PKMNCLAMPED , STRINGID_PKMNTRAPPEDINVORTEX , STRINGID_PKMNTRAPPEDBYSANDTOMB ,
STRINGID_INFESTATION ,
2017-11-26 00:33:40 +01:00
} ;
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 ,
2017-11-26 00:33:40 +01:00
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 ,
2017-11-26 00:33:40 +01:00
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 [ ] =
{
2018-09-22 12:20:33 +02:00
MOVE_BIND , MOVE_WRAP , MOVE_FIRE_SPIN , MOVE_CLAMP , MOVE_WHIRLPOOL , MOVE_SAND_TOMB , MOVE_INFESTATION , 0xFFFF
2017-10-07 15:15:47 +02:00
} ;
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
} ;
2018-09-29 18:40:14 +02:00
const u16 gStatusConditionsStringIds [ ] =
{
STRINGID_PKMNWASPOISONED , STRINGID_PKMNBADLYPOISONED , STRINGID_PKMNWASBURNED , STRINGID_PKMNWASPARALYZED , STRINGID_PKMNFELLASLEEP
} ;
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} \n evolved into {STR_VAR_2}!{UNKNOWN_A} \ p " ) ;
const u8 gText_PkmnStoppedEvolving [ ] = _ ( " Huh? {STR_VAR_1} \n stopped evolving! \ p " ) ;
const u8 gText_EllipsisQuestionMark [ ] = _ ( " ……? \ p " ) ;
2017-10-07 19:59:41 +02:00
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 \n WALLY do? " ) ;
const u8 gText_LinkStandby [ ] = _ ( " {PAUSE 16}Link standby… " ) ;
const u8 gText_BattleMenu [ ] = _ ( " FIGHT{CLEAR_TO 56}BAG \n POKéMON{CLEAR_TO 56}RUN " ) ;
const u8 gText_SafariZoneMenu [ ] = _ ( " BALL{CLEAR_TO 56}{POKEBLOCK} \n GO 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 \n TYPE/ " ) ;
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 \n be forgotten? " ) ;
const u8 gText_BattleYesNoChoice [ ] = _ ( " {PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Yes \n No " ) ;
const u8 gText_BattleSwitchWhich [ ] = _ ( " {PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Switch \n which? " ) ;
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 " ) ;
2018-12-07 16:41:08 +01:00
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 " ) ,
2018-08-02 20:32:13 +02:00
_ ( " 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
2018-08-15 23:04:46 +02:00
const u8 * const gRoundsStringTable [ ] =
2017-10-07 15:15:47 +02:00
{
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 \n out {B_OPPONENT_MON1_NAME}! \ p{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent \n out {B_OPPONENT_MON2_NAME}! " ) ;
static const u8 sText_Trainer2SentOutPkmn [ ] = _ ( " {B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent \n out {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 \n out {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 \n of using its power! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_GlintAppearsInEye [ ] = _ ( " A glint appears in \n {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s eyes! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnGettingIntoPosition [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} is getting into \n position! " ) ;
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
2017-11-26 00:33:40 +01:00
const u16 gStringIds_85CCF0A [ ] =
2017-10-07 15:15:47 +02:00
{
2017-11-26 00:33:40 +01: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 \n 3 turns, we will go to judging! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_RefThatsIt [ ] = _ ( " REFEREE: That's it! We will now go to \n judging to determine the winner! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_RefJudgeMind [ ] = _ ( " REFEREE: Judging category 1, Mind! \n The POKéMON showing the most guts! \ p " ) ;
static const u8 sText_RefJudgeSkill [ ] = _ ( " REFEREE: Judging category 2, Skill! \n The POKéMON using moves the best! \ p " ) ;
static const u8 sText_RefJudgeBody [ ] = _ ( " REFEREE: Judging category 3, Body! \n The POKéMON with the most vitality! \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_RefJudgement1 [ ] = _ ( " REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}! \n The winner is {B_PLAYER_NAME}'s {B_PLAYER_MON1_NAME}! \ p " ) ;
static const u8 sText_RefJudgement2 [ ] = _ ( " REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}! \n The winner is {B_TRAINER1_NAME}'s {B_OPPONENT_MON1_NAME}! \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_RefJudgement3 [ ] = _ ( " REFEREE: Judgment: 3 to 3! \n We have a draw! \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_DefeatedOpponentByReferee [ ] = _ ( " {B_PLAYER_MON1_NAME} defeated the opponent \n {B_OPPONENT_MON1_NAME} in a REFEREE's decision! " ) ;
static const u8 sText_LostToOpponentByReferee [ ] = _ ( " {B_PLAYER_MON1_NAME} lost to the opponent \n {B_OPPONENT_MON1_NAME} in a REFEREE's decision! " ) ;
static const u8 sText_TiedOpponentByReferee [ ] = _ ( " {B_PLAYER_MON1_NAME} tied the opponent \n {B_OPPONENT_MON1_NAME} in a REFEREE's decision! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_RefCommenceBattle [ ] = _ ( " REFEREE: {B_PLAYER_MON1_NAME} VS {B_OPPONENT_MON1_NAME}! \n Commence battling! " ) ;
2017-10-07 15:15:47 +02:00
const u8 * const gRefereeStringsTable [ ] =
{
2018-02-28 23:50:25 +01:00
sText_RefIfNothingIsDecided ,
2018-12-05 15:31:01 +01:00
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 \n and 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 \n on your FRONTIER PASS? " ) ;
2018-12-07 16:41:08 +01:00
const u8 gText_BattleRecordedOnPass [ ] = _ ( " {B_PLAYER_NAME}'s battle result was recorded \n on the FRONTIER PASS. " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_LinkTrainerWantsToBattlePause [ ] = _ ( " {B_LINK_OPPONENT1_NAME} \n wants to battle!{PAUSE 49} " ) ;
static const u8 sText_TwoLinkTrainersWantToBattlePause [ ] = _ ( " {B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME} \n want to battle!{PAUSE 49} " ) ;
2019-03-02 12:31:07 +01:00
static const u8 sText_Your1 [ ] = _ ( " Your " ) ;
static const u8 sText_Opposing1 [ ] = _ ( " The opposing " ) ;
static const u8 sText_Your2 [ ] = _ ( " your " ) ;
static const u8 sText_Opposing2 [ ] = _ ( " the opposing " ) ;
2017-10-07 15:15:47 +02:00
2018-01-17 20:33:23 +01: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 ,
2018-01-17 20:33:23 +01:00
MOVE_IRON_DEFENSE , MOVE_BOUNCE , 0 ,
2017-10-08 14:54:51 +02:00
MOVE_TELEPORT , MOVE_RECOVER , MOVE_BIDE , MOVE_AMNESIA ,
2018-01-17 20:33:23 +01:00
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 ,
2018-01-17 20:33:23 +01:00
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 ,
2018-01-17 20:33:23 +01:00
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 [ ] =
{
2018-11-22 02:10:50 +01:00
// The corresponding WindowTemplate is gStandardBattleWindowTemplates[] within src/battle_bg.c
2018-12-05 15:31:01 +01:00
{ // 0 Standard battle message
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xF ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 1 ,
. fgColor = 1 ,
. bgColor = 15 ,
. shadowColor = 6 ,
} ,
{ // 1 "What will (pokemon) do?"
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xF ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 15 ,
. shadowColor = 6 ,
} ,
{ // 2 "Fight/Pokemon/Bag/Run"
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 3 Top left move
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 4 Top right move
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 5 Bottom left move
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 6 Bottom right move
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 7 "PP"
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 12 ,
. bgColor = 14 ,
. shadowColor = 11 ,
} ,
{ // 8
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 9 PP remaining
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 2 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 12 ,
. bgColor = 14 ,
. shadowColor = 11 ,
} ,
{ // 10 "type"
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 11 "switch which?"
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 12 "gText_BattleYesNoChoice"
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 13
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 14
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0 ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 32 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 2 ,
} ,
{ // 15
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 16
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 17
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 18
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 19
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 20
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 21
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0 ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 6 ,
} ,
{ // 22
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0 ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 6 ,
} ,
{ // 23
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0x0 ) ,
2018-12-05 15:31:01 +01:00
. 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 [ ] =
{
2018-12-05 15:31:01 +01:00
{ // 0
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xF ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 1 ,
. fgColor = 1 ,
. bgColor = 15 ,
. shadowColor = 6 ,
} ,
{ // 1
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xF ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 15 ,
. shadowColor = 6 ,
} ,
{ // 2
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 3
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 4
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 5
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 6
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 7
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 12 ,
. bgColor = 14 ,
. shadowColor = 11 ,
} ,
{ // 8
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 9
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 2 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 12 ,
. bgColor = 14 ,
. shadowColor = 11 ,
} ,
{ // 10
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 11
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 12
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 13
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 14
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0 ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 32 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 2 ,
} ,
{ // 15
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 16
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 17
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 18
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 19
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 20
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 21
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 22
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0x1 ) ,
2018-12-05 15:31:01 +01:00
. 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
2019-01-05 16:00:57 +01:00
gBattleMsgDataPtr = ( struct BattleMsgData * ) ( & gBattleResources - > bufferA [ gActiveBattler ] [ 4 ] ) ;
2018-06-30 15:35:54 +02:00
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
{
2019-01-27 20:54:34 +01:00
if ( BATTLE_TWO_VS_ONE_OPPONENT )
stringPtr = sText_Trainer1WantsToBattle ;
else if ( gBattleTypeFlags & ( BATTLE_TYPE_MULTI | 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 )
{
2019-01-27 20:54:34 +01:00
if ( BATTLE_TWO_VS_ONE_OPPONENT )
stringPtr = sText_Trainer1SentOutTwoPkmn ;
else 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
2018-06-30 18:55:34 +02:00
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 ;
2018-11-03 01:17:16 +01:00
case STRINGID_TRAINERSLIDE :
stringPtr = gBattleStruct - > trainerSlideMsg ;
break ;
2017-10-07 15:15:47 +02:00
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 ) ;
}
2017-10-07 19:59:41 +02:00
u32 BattleStringExpandPlaceholdersToDisplayedString ( const u8 * src )
{
BattleStringExpandPlaceholders ( src , gDisplayedStringBattle ) ;
}
2018-03-01 00:59:52 +01:00
static const u8 * TryGetStatusString ( u8 * src )
2017-10-07 19:59:41 +02:00
{
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 ) \
2017-10-07 19:59:41 +02:00
{ \
if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER ) \
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix ; \
2017-10-07 19:59:41 +02:00
else \
2018-02-28 23:50:25 +01:00
toCpy = sText_WildPkmnPrefix ; \
2017-10-07 19:59:41 +02:00
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-09-20 17:22:16 +02:00
static const u8 * BattleStringGetOpponentNameByTrainerId ( u16 trainerId , u8 * text , u8 multiplayerId , u8 battlerId )
2018-07-15 18:53:43 +02:00
{
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 )
{
2018-09-20 11:23:12 +02:00
toCpy = gLinkPlayers [ multiplayerId ^ BIT_SIDE ] . name ;
}
2018-09-20 17:22:16 +02:00
else if ( trainerId = = TRAINER_LINK_OPPONENT )
2018-09-20 11:23:12 +02:00
{
2018-09-20 17:22:16 +02:00
if ( gBattleTypeFlags & BATTLE_TYPE_MULTI )
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( battlerId ) ] . name ;
else
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( battlerId ) & BIT_SIDE ] . name ;
2018-07-15 18:53:43 +02:00
}
else if ( trainerId = = TRAINER_FRONTIER_BRAIN )
{
CopyFrontierBrainTrainerName ( text ) ;
toCpy = text ;
}
else if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
GetFrontierTrainerName ( text , trainerId ) ;
toCpy = text ;
}
2018-09-22 00:22:13 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
2018-07-15 18:53:43 +02:00
{
2018-09-22 00:22:13 +02:00
GetTrainerHillTrainerName ( text , trainerId ) ;
2018-07-15 18:53:43 +02:00
toCpy = text ;
}
else if ( gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER )
{
GetEreaderTrainerName ( text ) ;
toCpy = text ;
}
else
{
toCpy = gTrainers [ trainerId ] . trainerName ;
}
return toCpy ;
}
2018-09-20 17:22:16 +02:00
static const u8 * BattleStringGetOpponentName ( u8 * text , u8 multiplayerId , u8 battlerId )
{
const u8 * toCpy ;
switch ( GetBattlerPosition ( battlerId ) )
{
case B_POSITION_OPPONENT_LEFT :
toCpy = BattleStringGetOpponentNameByTrainerId ( gTrainerBattleOpponent_A , text , multiplayerId , battlerId ) ;
break ;
case B_POSITION_OPPONENT_RIGHT :
2019-01-27 20:54:34 +01:00
if ( gBattleTypeFlags & ( BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_MULTI ) & & ! BATTLE_TWO_VS_ONE_OPPONENT )
2018-09-20 17:22:16 +02:00
toCpy = BattleStringGetOpponentNameByTrainerId ( gTrainerBattleOpponent_B , text , multiplayerId , battlerId ) ;
else
toCpy = BattleStringGetOpponentNameByTrainerId ( gTrainerBattleOpponent_A , text , multiplayerId , battlerId ) ;
break ;
}
return toCpy ;
}
static const u8 * BattleStringGetPlayerName ( u8 * text , u8 battlerId )
{
const u8 * toCpy ;
switch ( GetBattlerPosition ( battlerId ) )
{
case B_POSITION_PLAYER_LEFT :
if ( gBattleTypeFlags & BATTLE_TYPE_RECORDED )
toCpy = gLinkPlayers [ 0 ] . name ;
else
toCpy = gSaveBlock2Ptr - > playerName ;
break ;
case B_POSITION_PLAYER_RIGHT :
2018-11-24 01:02:02 +01:00
if ( gBattleTypeFlags & BATTLE_TYPE_LINK & & gBattleTypeFlags & ( BATTLE_TYPE_RECORDED | BATTLE_TYPE_MULTI ) )
2018-09-20 17:22:16 +02:00
{
toCpy = gLinkPlayers [ 2 ] . name ;
}
else if ( gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER )
{
GetFrontierTrainerName ( text , gPartnerTrainerId ) ;
toCpy = text ;
}
else
{
toCpy = gSaveBlock2Ptr - > playerName ;
}
break ;
}
return toCpy ;
}
static const u8 * BattleStringGetTrainerName ( u8 * text , u8 multiplayerId , u8 battlerId )
{
if ( GetBattlerSide ( battlerId ) = = B_SIDE_PLAYER )
return BattleStringGetPlayerName ( text , battlerId ) ;
else
return BattleStringGetOpponentName ( text , multiplayerId , battlerId ) ;
}
static const u8 * BattleStringGetOpponentClassByTrainerId ( u16 trainerId )
2018-07-15 18:53:43 +02:00
{
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 ) ] ;
2018-09-22 00:22:13 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
toCpy = gTrainerClassNames [ GetTrainerHillOpponentClass ( trainerId ) ] ;
2018-07-15 18:53:43 +02:00
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 )
2017-10-07 19:59:41 +02:00
{
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 ;
2017-10-07 19:59:41 +02:00
u8 text [ 30 ] ;
2018-09-20 11:23:12 +02:00
u8 multiplayerId ;
2017-10-07 19:59:41 +02:00
s32 i ;
if ( gBattleTypeFlags & BATTLE_TYPE_x2000000 )
2018-09-20 11:23:12 +02:00
multiplayerId = gUnknown_0203C7B4 ;
2017-10-07 19:59:41 +02:00
else
2018-09-20 11:23:12 +02:00
multiplayerId = GetMultiplayerId ( ) ;
2017-10-07 19:59:41 +02:00
while ( * src ! = EOS )
{
2018-07-15 18:53:43 +02:00
toCpy = NULL ;
2017-10-07 19:59:41 +02:00
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 ) ] ] ,
2017-10-07 19:59:41 +02:00
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 ) ] ] ,
2017-10-07 19:59:41 +02:00
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 ) ] ] ,
2017-10-07 19:59:41 +02:00
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 ) ] ] ,
2017-10-07 19:59:41 +02:00
MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
case B_TXT_LINK_PLAYER_MON1_NAME : // link first player poke name
2018-09-20 11:23:12 +02:00
GetMonData ( & gPlayerParty [ gBattlerPartyIndexes [ gLinkPlayers [ multiplayerId ] . id ] ] ,
2017-10-07 19:59:41 +02:00
MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
case B_TXT_LINK_OPPONENT_MON1_NAME : // link first opponent poke name
2018-09-20 11:23:12 +02:00
GetMonData ( & gEnemyParty [ gBattlerPartyIndexes [ gLinkPlayers [ multiplayerId ] . id ^ 1 ] ] ,
2017-10-07 19:59:41 +02:00
MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
case B_TXT_LINK_PLAYER_MON2_NAME : // link second player poke name
2018-09-20 11:23:12 +02:00
GetMonData ( & gPlayerParty [ gBattlerPartyIndexes [ gLinkPlayers [ multiplayerId ] . id ^ 2 ] ] ,
2017-10-07 19:59:41 +02:00
MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
case B_TXT_LINK_OPPONENT_MON2_NAME : // link second opponent poke name
2018-09-20 11:23:12 +02:00
GetMonData ( & gEnemyParty [ gBattlerPartyIndexes [ gLinkPlayers [ multiplayerId ] . id ^ 3 ] ] ,
2017-10-07 19:59:41 +02:00
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 ) ) ] )
2017-10-07 19:59:41 +02:00
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 ) ;
2017-10-07 19:59:41 +02:00
else
2018-02-06 23:09:39 +01:00
GetMonData ( & gEnemyParty [ gBattlerPartyIndexes [ GetBattlerAtPosition ( GET_BATTLER_SIDE ( gBattlerAttacker ) ) + 2 ] ] , MON_DATA_NICKNAME , text ) ;
2017-10-07 19:59:41 +02:00
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 ] )
2017-10-07 19:59:41 +02:00
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 ] )
2017-10-07 19:59:41 +02:00
break ;
2018-10-15 21:19:52 +02:00
case B_TXT_DEF_NAME : // target name
if ( GetBattlerSide ( gBattlerTarget ) = = B_SIDE_PLAYER )
GetMonData ( & gPlayerParty [ gBattlerPartyIndexes [ gBattlerTarget ] ] , MON_DATA_NICKNAME , text ) ;
else
GetMonData ( & gEnemyParty [ gBattlerPartyIndexes [ gBattlerTarget ] ] , MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
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 ] )
2017-10-07 19:59:41 +02:00
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 ] )
2017-10-07 19:59:41 +02:00
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 ] )
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_CURRENT_MOVE : // current move name
2018-06-30 18:55:34 +02:00
if ( gBattleMsgDataPtr - > currentMove > = MOVES_COUNT )
2018-02-28 23:50:25 +01:00
toCpy = sATypeMove_Table [ gBattleStruct - > stringMoveType ] ;
2017-10-07 19:59:41 +02:00
else
2018-06-30 15:35:54 +02:00
toCpy = gMoveNames [ gBattleMsgDataPtr - > currentMove ] ;
2017-10-07 19:59:41 +02:00
break ;
2017-11-26 14:17:02 +01:00
case B_TXT_LAST_MOVE : // originally used move name
2018-06-30 18:55:34 +02:00
if ( gBattleMsgDataPtr - > originallyUsedMove > = MOVES_COUNT )
2018-02-28 23:50:25 +01:00
toCpy = sATypeMove_Table [ gBattleStruct - > stringMoveType ] ;
2017-10-07 19:59:41 +02:00
else
2018-06-30 15:35:54 +02:00
toCpy = gMoveNames [ gBattleMsgDataPtr - > originallyUsedMove ] ;
2017-10-07 19:59:41 +02:00
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 ) ) )
2017-10-07 19:59:41 +02:00
{
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 ) ;
2017-10-07 19:59:41 +02:00
toCpy = text ;
}
else
{
2018-02-28 23:50:25 +01:00
toCpy = sText_EnigmaBerry ;
2017-10-07 19:59:41 +02:00
}
}
else
{
2018-07-22 12:49:49 +02:00
if ( gLinkPlayers [ gBattleScripting . multiplayerId ] . id = = gPotentialItemEffectBattler )
2017-10-07 19:59:41 +02:00
{
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 ) ;
2017-10-07 19:59:41 +02:00
toCpy = text ;
}
else
2018-02-28 23:50:25 +01:00
toCpy = sText_EnigmaBerry ;
2017-10-07 19:59:41 +02:00
}
}
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 ] ] ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_DEF_ABILITY : // target ability
2018-06-30 15:35:54 +02:00
toCpy = gAbilityNames [ sBattlerAbilities [ gBattlerTarget ] ] ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_SCR_ACTIVE_ABILITY : // scripting active ability
2018-06-30 15:35:54 +02:00
toCpy = gAbilityNames [ sBattlerAbilities [ gBattleScripting . battler ] ] ;
2017-10-07 19:59:41 +02:00
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 ] ] ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_TRAINER1_CLASS : // trainer class name
2018-09-20 17:22:16 +02:00
toCpy = BattleStringGetOpponentClassByTrainerId ( gTrainerBattleOpponent_A ) ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_TRAINER1_NAME : // trainer1 name
2018-09-20 17:22:16 +02:00
toCpy = BattleStringGetOpponentNameByTrainerId ( gTrainerBattleOpponent_A , text , multiplayerId , GetBattlerAtPosition ( B_POSITION_OPPONENT_LEFT ) ) ;
2017-10-07 19:59:41 +02:00
break ;
2018-09-20 11:55:35 +02:00
case B_TXT_LINK_PLAYER_NAME : // link player name
2018-09-20 11:23:12 +02:00
toCpy = gLinkPlayers [ multiplayerId ] . name ;
2017-10-07 19:59:41 +02:00
break ;
2018-09-20 11:55:35 +02:00
case B_TXT_LINK_PARTNER_NAME : // link partner name
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( BATTLE_PARTNER ( gLinkPlayers [ multiplayerId ] . id ) ) ] . name ;
2017-10-07 19:59:41 +02:00
break ;
2018-09-20 11:55:35 +02:00
case B_TXT_LINK_OPPONENT1_NAME : // link opponent 1 name
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( BATTLE_OPPOSITE ( gLinkPlayers [ multiplayerId ] . id ) ) ] . name ;
2017-10-07 19:59:41 +02:00
break ;
2018-09-20 11:55:35 +02:00
case B_TXT_LINK_OPPONENT2_NAME : // link opponent 2 name
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( BATTLE_PARTNER ( BATTLE_OPPOSITE ( gLinkPlayers [ multiplayerId ] . id ) ) ) ] . name ;
2017-10-07 19:59:41 +02:00
break ;
2018-09-20 11:55:35 +02:00
case B_TXT_LINK_SCR_TRAINER_NAME : // link scripting active name
2018-02-06 20:48:02 +01:00
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( gBattleScripting . battler ) ] . name ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_PLAYER_NAME : // player name
2018-09-20 17:22:16 +02:00
toCpy = BattleStringGetPlayerName ( text , GetBattlerAtPosition ( B_POSITION_PLAYER_LEFT ) ) ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_TRAINER1_LOSE_TEXT : // trainerA lose text
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
2018-10-27 21:01:35 +02:00
CopyFrontierTrainerText ( FRONTIER_PLAYER_WON_TEXT , gTrainerBattleOpponent_A ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
2018-09-20 22:00:00 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
2017-10-07 19:59:41 +02:00
{
2018-09-20 22:00:00 +02:00
CopyTrainerHillTrainerText ( 4 , gTrainerBattleOpponent_A ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
else
{
2017-12-01 21:25:13 +01:00
toCpy = GetTrainerALoseText ( ) ;
2017-10-07 19:59:41 +02:00
}
break ;
case B_TXT_TRAINER1_WIN_TEXT : // trainerA win text
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
2018-10-27 21:01:35 +02:00
CopyFrontierTrainerText ( FRONTIER_PLAYER_LOST_TEXT , gTrainerBattleOpponent_A ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
2018-09-20 22:00:00 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
2017-10-07 19:59:41 +02:00
{
2018-09-20 22:00:00 +02:00
CopyTrainerHillTrainerText ( 3 , gTrainerBattleOpponent_A ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
break ;
case B_TXT_26 : // ?
2018-07-15 18:53:43 +02:00
HANDLE_NICKNAME_STRING_CASE ( gBattleScripting . battler , * ( & gBattleStruct - > field_52 ) ) ;
2017-10-07 19:59:41 +02:00
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 ;
2017-10-07 19:59:41 +02:00
else
2018-02-28 23:50:25 +01:00
toCpy = sText_Someones ;
2017-10-07 19:59:41 +02:00
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 ;
2017-10-07 19:59:41 +02:00
else
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix3 ;
2017-10-07 19:59:41 +02:00
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 ;
2017-10-07 19:59:41 +02:00
else
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix3 ;
2017-10-07 19:59:41 +02:00
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 ;
2017-10-07 19:59:41 +02:00
else
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix2 ;
2017-10-07 19:59:41 +02:00
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 ;
2017-10-07 19:59:41 +02:00
else
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix2 ;
2017-10-07 19:59:41 +02:00
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 ;
2017-10-07 19:59:41 +02:00
else
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix4 ;
2017-10-07 19:59:41 +02:00
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 ;
2017-10-07 19:59:41 +02:00
else
2018-02-28 23:50:25 +01:00
toCpy = sText_FoePkmnPrefix4 ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_TRAINER2_CLASS :
2018-09-20 17:22:16 +02:00
toCpy = BattleStringGetOpponentClassByTrainerId ( gTrainerBattleOpponent_B ) ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_TRAINER2_NAME :
2018-09-20 17:22:16 +02:00
toCpy = BattleStringGetOpponentNameByTrainerId ( gTrainerBattleOpponent_B , text , multiplayerId , GetBattlerAtPosition ( B_POSITION_OPPONENT_RIGHT ) ) ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_TRAINER2_LOSE_TEXT :
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
2018-10-27 21:01:35 +02:00
CopyFrontierTrainerText ( FRONTIER_PLAYER_WON_TEXT , gTrainerBattleOpponent_B ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
2018-09-20 22:00:00 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
2017-10-07 19:59:41 +02:00
{
2018-09-20 22:00:00 +02:00
CopyTrainerHillTrainerText ( 4 , gTrainerBattleOpponent_B ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
else
{
2017-12-01 21:25:13 +01:00
toCpy = GetTrainerBLoseText ( ) ;
2017-10-07 19:59:41 +02:00
}
break ;
case B_TXT_TRAINER2_WIN_TEXT :
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
2018-10-27 21:01:35 +02:00
CopyFrontierTrainerText ( FRONTIER_PLAYER_LOST_TEXT , gTrainerBattleOpponent_B ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
2018-09-20 22:00:00 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
2017-10-07 19:59:41 +02:00
{
2018-09-20 22:00:00 +02:00
CopyTrainerHillTrainerText ( 3 , gTrainerBattleOpponent_B ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
break ;
case B_TXT_PARTNER_CLASS :
toCpy = gTrainerClassNames [ GetFrontierOpponentClass ( gPartnerTrainerId ) ] ;
break ;
case B_TXT_PARTNER_NAME :
2018-09-20 17:22:16 +02:00
toCpy = BattleStringGetPlayerName ( text , GetBattlerAtPosition ( B_POSITION_PLAYER_RIGHT ) ) ;
2017-10-07 19:59:41 +02:00
break ;
2018-07-15 18:53:43 +02:00
case B_TXT_ATK_TRAINER_NAME :
2018-09-20 17:22:16 +02:00
toCpy = BattleStringGetTrainerName ( text , multiplayerId , gBattlerAttacker ) ;
2018-07-15 18:53:43 +02:00
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 :
2018-09-20 17:22:16 +02:00
toCpy = BattleStringGetOpponentClassByTrainerId ( gTrainerBattleOpponent_A ) ;
2018-07-15 18:53:43 +02:00
break ;
case B_POSITION_OPPONENT_RIGHT :
2019-01-27 20:54:34 +01:00
if ( gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS & & ! BATTLE_TWO_VS_ONE_OPPONENT )
2018-09-20 17:22:16 +02:00
toCpy = BattleStringGetOpponentClassByTrainerId ( gTrainerBattleOpponent_B ) ;
2018-07-15 18:53:43 +02:00
else
2018-09-20 17:22:16 +02:00
toCpy = BattleStringGetOpponentClassByTrainerId ( gTrainerBattleOpponent_A ) ;
2018-07-15 18:53:43 +02:00
break ;
}
break ;
2019-03-02 12:31:07 +01:00
case B_TXT_ATK_TEAM1 :
2018-07-21 12:56:07 +02:00
if ( GetBattlerSide ( gBattlerAttacker ) = = B_SIDE_PLAYER )
2019-03-02 12:31:07 +01:00
toCpy = sText_Your1 ;
2018-07-21 12:56:07 +02:00
else
2019-03-02 12:31:07 +01:00
toCpy = sText_Opposing1 ;
break ;
case B_TXT_ATK_TEAM2 :
if ( GetBattlerSide ( gBattlerAttacker ) = = B_SIDE_PLAYER )
toCpy = sText_Your2 ;
else
toCpy = sText_Opposing2 ;
2019-04-05 12:43:44 +02:00
break ;
case B_TXT_DEF_TEAM1 :
if ( GetBattlerSide ( gBattlerTarget ) = = B_SIDE_PLAYER )
toCpy = sText_Your1 ;
else
toCpy = sText_Opposing1 ;
break ;
case B_TXT_DEF_TEAM2 :
if ( GetBattlerSide ( gBattlerTarget ) = = B_SIDE_PLAYER )
toCpy = sText_Your2 ;
else
toCpy = sText_Opposing2 ;
2018-07-21 12:56:07 +02:00
break ;
2017-10-07 19:59:41 +02:00
}
2018-07-15 18:53:43 +02:00
if ( toCpy ! = NULL )
2017-10-07 19:59:41 +02:00
{
2018-07-15 18:53:43 +02:00
while ( * toCpy ! = EOS )
{
dst [ dstID ] = * toCpy ;
dstID + + ;
toCpy + + ;
}
2017-10-07 19:59:41 +02:00
}
2018-07-15 18:53:43 +02:00
2017-10-07 19:59:41 +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 ] ) ;
2017-10-07 19:59:41 +02:00
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 ] ) ;
2017-10-07 19:59:41 +02:00
break ;
case 4 :
2018-06-30 14:12:17 +02:00
value = T1_READ_32 ( & src [ srcID + 3 ] ) ;
2017-10-07 19:59:41 +02:00
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 ] ) ] ) ;
2017-10-07 19:59:41 +02:00
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 )
2017-10-07 19:59:41 +02:00
{
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 ) ;
2017-10-07 19:59:41 +02:00
else
2018-02-28 23:50:25 +01:00
StringAppend ( dst , sText_WildPkmnPrefix ) ;
2017-10-07 19:59:41 +02:00
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 ] ) ) ;
2017-10-07 19:59:41 +02:00
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 )
2017-10-07 19:59:41 +02:00
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
2017-10-07 19:59:41 +02:00
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 ] ) ;
2017-10-07 19:59:41 +02:00
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 )
2017-10-07 19:59:41 +02:00
{
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 ) ;
2017-10-07 19:59:41 +02:00
}
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
}
2017-10-07 19:59:41 +02:00
}
else
2018-06-30 14:12:17 +02:00
{
2017-10-07 19:59:41 +02:00
CopyItemName ( hword , dst ) ;
2018-06-30 14:12:17 +02:00
}
2017-10-07 19:59:41 +02:00
}
else
2018-06-30 14:12:17 +02:00
{
2017-10-07 19:59:41 +02:00
CopyItemName ( hword , dst ) ;
2018-06-30 14:12:17 +02:00
}
2017-10-07 19:59:41 +02:00
srcID + = 3 ;
break ;
}
}
}
2017-10-08 14:54:51 +02:00
2018-01-17 20:33:23 +01: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
2018-07-23 22:32:34 +02:00
// two particles (either "?" or "?") which works in tandem with ChooseTypeOfMoveUsedString
2018-01-17 20:33:23 +01:00
// 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 ;
2018-12-25 18:50:15 +01:00
while ( counter ! = MAX_MON_MOVES )
2017-10-08 14:54:51 +02:00
{
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
2018-12-25 18:50:15 +01:00
else if ( counter < = MAX_MON_MOVES )
2018-02-28 23:50:25 +01:00
StringCopy ( textBuff , sText_ApostropheS ) ; // 's
2017-10-08 14:54:51 +02:00
}
}
2018-01-17 20:33:23 +01: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-01-17 20:33:23 +01:00
// It resulted in the translation "<NAME>'s <ATTACK>!".
2018-02-08 00:00:25 +01:00
//
2018-07-23 22:32:34 +02:00
// sText_ExclamationMark2 was "? ????!". This resulted in the translation
2018-01-17 20:33:23 +01:00
// "<NAME> used <ATTACK>!", which was used for all attacks in English.
2018-02-08 00:00:25 +01:00
//
2018-07-23 22:32:34 +02:00
// sText_ExclamationMark3 was "??!". This was used for those moves whose
2018-01-17 20:33:23 +01:00
// names were verbs, such as Recover, and resulted in translations like "<NAME>
// recovered itself!".
2018-02-08 00:00:25 +01:00
//
2018-07-23 22:32:34 +02:00
// sText_ExclamationMark4 was "? ??!" This resulted in a translation of
2018-01-17 20:33:23 +01:00
// "<NAME> did an <ATTACK>!".
2018-02-08 00:00:25 +01:00
//
2018-07-23 22:32:34 +02:00
// sText_ExclamationMark5 was " ????!" This resulted in a translation of
2018-01-17 20:33:23 +01: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 + + ;
2018-12-25 18:50:15 +01:00
while ( counter ! = MAX_MON_MOVES )
2017-10-08 14:54:51 +02:00
{
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 ;
2018-11-06 17:44:48 +01:00
struct TextPrinterTemplate printerTemplate ;
2017-10-08 14:54:51 +02:00
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
}
2018-11-06 17:44:48 +01:00
printerTemplate . currentChar = text ;
printerTemplate . windowId = windowId ;
printerTemplate . fontId = textInfo [ windowId ] . fontId ;
printerTemplate . x = textInfo [ windowId ] . x ;
printerTemplate . y = textInfo [ windowId ] . y ;
printerTemplate . currentX = printerTemplate . x ;
printerTemplate . currentY = printerTemplate . y ;
printerTemplate . letterSpacing = textInfo [ windowId ] . letterSpacing ;
printerTemplate . lineSpacing = textInfo [ windowId ] . lineSpacing ;
2018-11-06 18:30:21 +01:00
printerTemplate . unk = 0 ;
2018-11-06 17:44:48 +01:00
printerTemplate . fgColor = textInfo [ windowId ] . fgColor ;
printerTemplate . bgColor = textInfo [ windowId ] . bgColor ;
printerTemplate . shadowColor = textInfo [ windowId ] . shadowColor ;
if ( printerTemplate . x = = 0xFF )
2017-10-08 14:54:51 +02:00
{
2018-06-17 16:48:58 +02:00
u32 width = sub_80397C4 ( gBattleScripting . windowsType , windowId ) ;
2018-11-06 17:44:48 +01:00
s32 alignX = GetStringCenterAlignXOffsetWithLetterSpacing ( printerTemplate . fontId , printerTemplate . currentChar , width , printerTemplate . letterSpacing ) ;
printerTemplate . x = printerTemplate . currentX = alignX ;
2017-10-08 14:54:51 +02:00
}
2018-06-17 16:48:58 +02:00
if ( windowId = = 0x16 )
2018-11-06 18:30:21 +01:00
gTextFlags . useAlternateDownArrow = 0 ;
2017-10-08 14:54:51 +02:00
else
2018-11-06 18:30:21 +01:00
gTextFlags . useAlternateDownArrow = 1 ;
2017-10-08 14:54:51 +02:00
if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED ) )
2018-11-06 18:30:21 +01:00
gTextFlags . autoScroll = 1 ;
2017-10-08 14:54:51 +02:00
else
2018-11-06 18:30:21 +01:00
gTextFlags . autoScroll = 0 ;
2017-10-08 14:54:51 +02:00
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
2018-11-06 18:30:21 +01:00
speed = GetPlayerTextSpeedDelay ( ) ;
2017-10-08 14:54:51 +02:00
2018-11-06 17:44:48 +01:00
gTextFlags . canABSpeedUpPrint = 1 ;
2017-10-08 14:54:51 +02:00
}
else
{
2018-06-17 16:48:58 +02:00
speed = textInfo [ windowId ] . speed ;
2018-11-06 17:44:48 +01:00
gTextFlags . canABSpeedUpPrint = 0 ;
2017-10-08 14:54:51 +02:00
}
2018-11-06 17:44:48 +01:00
AddTextPrinter ( & printerTemplate , speed , NULL ) ;
2017-10-08 14:54:51 +02:00
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 )
{
2019-01-05 16:00:57 +01:00
struct ChooseMoveStruct * chooseMoveStruct = ( struct ChooseMoveStruct * ) ( & gBattleResources - > bufferA [ 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 ;
}
2018-11-03 01:17:16 +01:00
struct TrainerSlide
{
u16 trainerId ;
const u8 * msgLastSwitchIn ;
const u8 * msgLastLowHp ;
const u8 * msgFirstDown ;
} ;
static const struct TrainerSlide sTrainerSlides [ ] =
{
{ 0x291 , sText_AarghAlmostHadIt , sText_BoxIsFull , sText_123Poof } ,
} ;
static u32 GetEnemyMonCount ( bool32 onlyAlive )
{
u32 i , count = 0 ;
for ( i = 0 ; i < PARTY_SIZE ; i + + )
{
u32 species = GetMonData ( & gEnemyParty [ i ] , MON_DATA_SPECIES2 , NULL ) ;
if ( species ! = SPECIES_NONE
& & species ! = SPECIES_EGG
& & ( ! onlyAlive | | GetMonData ( & gEnemyParty [ i ] , MON_DATA_HP , NULL ) ) )
count + + ;
}
return count ;
}
static bool32 IsBattlerHpLow ( u32 battler )
{
if ( ( gBattleMons [ battler ] . hp * 100 ) / gBattleMons [ battler ] . maxHP < 25 )
return TRUE ;
else
return FALSE ;
}
bool32 ShouldDoTrainerSlide ( u32 battlerId , u32 trainerId , u32 which )
{
s32 i ;
if ( ! ( gBattleTypeFlags & BATTLE_TYPE_TRAINER ) | | GetBattlerSide ( battlerId ) ! = B_SIDE_OPPONENT )
return FALSE ;
for ( i = 0 ; i < ARRAY_COUNT ( sTrainerSlides ) ; i + + )
{
if ( trainerId = = sTrainerSlides [ i ] . trainerId )
{
gBattleScripting . battler = battlerId ;
switch ( which )
{
case TRAINER_SLIDE_LAST_SWITCHIN :
if ( sTrainerSlides [ i ] . msgLastSwitchIn ! = NULL & & GetEnemyMonCount ( TRUE ) = = 1 )
{
gBattleStruct - > trainerSlideMsg = sTrainerSlides [ i ] . msgLastSwitchIn ;
return TRUE ;
}
break ;
case TRAINER_SLIDE_LAST_LOW_HP :
if ( sTrainerSlides [ i ] . msgLastLowHp ! = NULL
& & GetEnemyMonCount ( TRUE ) = = 1
& & IsBattlerHpLow ( battlerId )
& & ! gBattleStruct - > trainerSlideLowHpMsgDone )
{
gBattleStruct - > trainerSlideLowHpMsgDone = TRUE ;
gBattleStruct - > trainerSlideMsg = sTrainerSlides [ i ] . msgLastLowHp ;
return TRUE ;
}
break ;
case TRAINER_SLIDE_FIRST_DOWN :
if ( sTrainerSlides [ i ] . msgFirstDown ! = NULL & & GetEnemyMonCount ( TRUE ) = = GetEnemyMonCount ( FALSE ) - 1 )
{
gBattleStruct - > trainerSlideMsg = sTrainerSlides [ i ] . msgFirstDown ;
return TRUE ;
}
break ;
}
break ;
}
}
return FALSE ;
}