2017-10-07 15:15:47 +02:00
# include "global.h"
# include "battle.h"
# include "battle_message.h"
2018-02-08 00:35:13 +01:00
# include "constants/battle_string_ids.h"
2017-12-11 19:27:51 +01:00
# include "constants/moves.h"
2017-10-07 15:15:47 +02:00
# include "text.h"
# include "string_util.h"
2017-12-05 18:55:48 +01:00
# include "constants/items.h"
2018-07-01 11:15:42 +02:00
# include "constants/trainers.h"
2017-10-07 19:59:41 +02:00
# include "event_data.h"
# include "link.h"
# include "item.h"
2017-10-08 14:54:51 +02:00
# include "window.h"
# include "palette.h"
# include "battle_controllers.h"
2017-12-01 21:25:13 +01:00
# include "battle_setup.h"
2018-02-09 01:09:02 +01:00
# include "menu.h"
# include "recorded_battle.h"
# include "international_string_util.h"
2017-10-07 15:15:47 +02:00
2018-06-17 16:48:58 +02:00
struct BattleWindowText
{
u8 fillValue ;
u8 fontId ;
u8 x ;
u8 y ;
u8 letterSpacing ;
u8 lineSpacing ;
u8 speed ;
u8 fgColor ;
u8 bgColor ;
u8 shadowColor ;
} ;
2017-10-08 14:54:51 +02:00
extern u8 gUnknown_0203C7B4 ;
2017-10-07 15:15:47 +02:00
2018-06-30 18:55:34 +02:00
extern const u8 gMoveNames [ MOVES_COUNT ] [ 13 ] ;
2017-10-07 19:59:41 +02:00
extern const u8 gTrainerClassNames [ ] [ 13 ] ;
2017-10-08 14:54:51 +02:00
extern const u16 gUnknown_08D85620 [ ] ;
2017-10-07 15:15:47 +02:00
// strings
extern const u8 gText_PkmnBoxSomeonesPCFull [ ] ;
extern const u8 gText_PkmnBoxLanettesPCFull [ ] ;
extern const u8 gText_PkmnTransferredSomeonesPC [ ] ;
extern const u8 gText_PkmnTransferredLanettesPC [ ] ;
2018-06-30 18:55:34 +02:00
extern u8 GetFrontierBrainTrainerClass ( void ) ; // battle_frontier_2
2017-10-07 19:59:41 +02:00
extern u8 GetFrontierOpponentClass ( u16 trainerId ) ; // battle_tower
extern u8 sub_81D5530 ( u16 trainerId ) ; // pokenav
extern u8 GetEreaderTrainerClassId ( void ) ; // battle_tower
2018-06-30 18:55:34 +02:00
extern void CopyFrontierBrainTrainerName ( u8 * txtPtr ) ; // battle_frontier_2
2017-10-07 19:59:41 +02:00
extern void sub_81D5554 ( u8 * txtPtr , u16 trainerId ) ; // pokenav
extern void GetEreaderTrainerName ( u8 * txtPtr ) ;
extern void sub_81A36D0 ( u8 arg0 , u16 trainerId ) ; // battle_frontier_2
extern void sub_81D572C ( u8 arg0 , u16 trainerId ) ; // pokenav
extern void GetFrontierTrainerName ( u8 * dst , u16 trainerId ) ;
2018-07-24 20:13:02 +02:00
// this 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 " ) ;
static const u8 sText_TryToLearnMove2 [ ] = _ ( " But, {B_BUFF1} can’ t learn \n more than four moves. \ p " ) ;
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? " ) ;
static const u8 sText_AttackMissed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s \n attack missed! " ) ;
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! " ) ;
static const u8 sText_ItDoesntAffect [ ] = _ ( " It doesn’ t affect \n {B_DEF_NAME_WITH_PREFIX}… " ) ;
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 " ) ;
static const u8 sText_CantEscape2 [ ] = _ ( " Can’ t escape! \ p " ) ;
static const u8 sText_AttackerCantEscape [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} can’ t escape! " ) ;
static const u8 sText_HitXTimes [ ] = _ ( " Hit {B_BUFF1} time(s)! " ) ;
static const u8 sText_PkmnFellAsleep [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} \n fell asleep! " ) ;
static const u8 sText_PkmnMadeSleep [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}’ s {B_SCR_ACTIVE_ABILITY} \n made {B_EFF_NAME_WITH_PREFIX} sleep! " ) ;
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! " ) ;
static const u8 sText_PkmnWasntAffected [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} \n wasn’ t affected! " ) ;
static const u8 sText_PkmnWasPoisoned [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} \n was poisoned! " ) ;
static const u8 sText_PkmnPoisonedBy [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}’ s {B_SCR_ACTIVE_ABILITY} \n poisoned {B_EFF_NAME_WITH_PREFIX}! " ) ;
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! " ) ;
static const u8 sText_PkmnBurnedBy [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}’ s {B_SCR_ACTIVE_ABILITY} \n burned {B_EFF_NAME_WITH_PREFIX}! " ) ;
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! " ) ;
static const u8 sText_PkmnFrozenBy [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}’ s {B_SCR_ACTIVE_ABILITY} \n froze {B_EFF_NAME_WITH_PREFIX} solid! " ) ;
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! " ) ;
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! " ) ;
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! " ) ;
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! " ) ;
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! " ) ;
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! " ) ;
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! " ) ;
static const u8 sText_PkmnSqueezedByBind [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was squeezed by \n {B_ATK_NAME_WITH_PREFIX}’ s BIND! " ) ;
static const u8 sText_PkmnTrappedInVortex [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was trapped \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! " ) ;
static const u8 sText_PkmnsXWoreOff [ ] = _ ( " {B_ATK_PREFIX1}’ s {B_BUFF1} \n wore off! " ) ;
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! " ) ;
static const u8 sText_PkmnSappedByLeechSeed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s health is \n sapped by LEECH SEED! " ) ;
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! " ) ;
static const u8 sText_PkmnUproarKeptAwake [ ] = _ ( " But {B_SCR_ACTIVE_NAME_WITH_PREFIX}’ s UPROAR \n kept it awake! " ) ;
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. " ) ;
static const u8 sText_PkmnCantSleepInUproar [ ] = _ ( " But {B_DEF_NAME_WITH_PREFIX} can’ t \n sleep in an UPROAR! " ) ;
static const u8 sText_PkmnStockpiled [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} STOCKPILED \n {B_BUFF1}! " ) ;
static const u8 sText_PkmnCantStockpile [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} can’ t \n STOCKPILE any more! " ) ;
static const u8 sText_PkmnCantSleepInUproar2 [ ] = _ ( " But {B_DEF_NAME_WITH_PREFIX} can’ t \n sleep in an UPROAR! " ) ;
static const u8 sText_UproarKeptPkmnAwake [ ] = _ ( " But the UPROAR kept \n {B_DEF_NAME_WITH_PREFIX} awake! " ) ;
static const u8 sText_PkmnStayedAwakeUsing [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} stayed awake \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 " ) ;
static const u8 sText_PkmnSubstituteFaded [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}’ s \n SUBSTITUTE faded! \ p " ) ;
static const u8 sText_PkmnMustRecharge [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} must \n recharge! " ) ;
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! " ) ;
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! " ) ;
static const u8 sText_PkmnEncoreEnded [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s ENCORE \n ended! " ) ;
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! " ) ;
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! " ) ;
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! " ) ;
static const u8 sText_SpikesScattered [ ] = _ ( " SPIKES were scattered all around \n the opponent’ s side! " ) ;
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}! " ) ;
static const u8 sText_PkmnPerishCountFell [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s PERISH count \n fell to {B_BUFF1}! " ) ;
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! " ) ;
static const u8 sText_PkmnCopiedStatChanges [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} copied \n {B_DEF_NAME_WITH_PREFIX}’ s stat changes! " ) ;
static const u8 sText_PkmnGotFree [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} got free of \n {B_DEF_NAME_WITH_PREFIX}’ s {B_BUFF1}! " ) ;
static const u8 sText_PkmnShedLeechSeed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} shed \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! " ) ;
static const u8 sText_PkmnAttack [ ] = _ ( " {B_BUFF1}’ s attack! " ) ;
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}! " ) ;
static const u8 sText_PkmnStatusNormal [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s status \n returned to normal! " ) ;
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! " ) ;
static const u8 sText_PkmnFellForTaunt [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} fell for \n the TAUNT! " ) ;
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}. " ) ;
static const u8 sText_PkmnCopiedFoe [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} copied \n {B_DEF_NAME_WITH_PREFIX}’ s {B_DEF_ABILITY}! " ) ;
static const u8 sText_PkmnMadeWish [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} made a WISH! " ) ;
static const u8 sText_PkmnWishCameTrue [ ] = _ ( " {B_BUFF1}’ s WISH \n came true! " ) ;
static const u8 sText_PkmnPlantedRoots [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} planted its roots! " ) ;
static const u8 sText_PkmnAbsorbedNutrients [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} absorbed \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! " ) ;
static const u8 sText_PkmnKnockedOff [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} knocked off \n {B_DEF_NAME_WITH_PREFIX}’ s {B_LAST_ITEM}! " ) ;
static const u8 sText_PkmnSwappedAbilities [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} swapped abilities \n with its opponent! " ) ;
static const u8 sText_PkmnSealedOpponentMove [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} sealed the \n opponent’ s move(s)! " ) ;
static const u8 sText_PkmnWantsGrudge [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} wants the \n opponent to bear a GRUDGE! " ) ;
static const u8 sText_PkmnLostPPGrudge [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s {B_BUFF1} lost \n all its PP due to the GRUDGE! " ) ;
static const u8 sText_PkmnShroudedItself [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} shrouded \n itself in {B_CURRENT_MOVE}! " ) ;
static const u8 sText_PkmnMoveBounced [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s {B_CURRENT_MOVE} \n was bounced back by MAGIC COAT! " ) ;
static const u8 sText_PkmnWaitsForTarget [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} waits for a target \n to make a move! " ) ;
static const u8 sText_PkmnSnatchedMove [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} SNATCHED \n {B_SCR_ACTIVE_NAME_WITH_PREFIX}’ s move! " ) ;
static const u8 sText_ElectricityWeakened [ ] = _ ( " Electricity’ s power was \n weakened! " ) ;
static const u8 sText_FireWeakened [ ] = _ ( " Fire’ s power was \n weakened! " ) ;
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! " ) ;
static const u8 sText_ItemsCantBeUsedNow [ ] = _ ( " Items can’ t be used now.{PAUSE 64} " ) ;
static const u8 sText_ForXCommaYZ [ ] = _ ( " For {B_SCR_ACTIVE_NAME_WITH_PREFIX}, \n {B_LAST_ITEM} {B_BUFF1} " ) ;
static const u8 sText_PkmnUsedXToGetPumped [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} used \n {B_LAST_ITEM} to get pumped! " ) ;
static const u8 sText_PkmnLostFocus [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} lost its \n focus and couldn’ t move! " ) ;
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 " ) ;
static const u8 sText_PkmnMoveIsDisabled [ ] = _ ( " {B_ACTIVE_NAME_WITH_PREFIX}’ s {B_CURRENT_MOVE} \n is disabled! \ p " ) ;
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 " ) ;
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! " ) ;
static const u8 sText_PkmnProtectedBy [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was protected \n by {B_DEF_ABILITY}! " ) ;
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}! " ) ;
static const u8 sText_PkmnRestoredHPUsing [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} restored HP \n using its {B_DEF_ABILITY}! " ) ;
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! " ) ;
static const u8 sText_PkmnAnchorsItselfWith [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} anchors \n itself with {B_DEF_ABILITY}! " ) ;
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! " ) ;
static const u8 sText_PkmnHurtsWith [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}’ s {B_DEF_ABILITY} \n hurt {B_ATK_NAME_WITH_PREFIX}! " ) ;
static const u8 sText_PkmnTraced [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED \n {B_BUFF1}’ s {B_BUFF2}! " ) ;
static const u8 sText_PkmnsXPreventsBurns [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX}’ s {B_EFF_ABILITY} \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! " ) ;
static const u8 sText_ItSuckedLiquidOoze [ ] = _ ( " It sucked up the \n LIQUID OOZE! " ) ;
static const u8 sText_PkmnTransformed [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed! " ) ;
static const u8 sText_PkmnsXTookAttack [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}’ s {B_DEF_ABILITY} \n took the attack! " ) ;
2017-10-08 14:54:51 +02:00
const u8 gText_PkmnsXPreventsSwitching [ ] = _ ( " {B_BUFF1}’ s {B_LAST_ABILITY} \n prevents switching! \ p " ) ;
2018-02-28 23:50:25 +01:00
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}! " ) ;
static const u8 sText_StatSharply [ ] = _ ( " sharply " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_StatRose [ ] = _ ( " rose! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_StatHarshly [ ] = _ ( " harshly " ) ;
static const u8 sText_StatFell [ ] = _ ( " fell! " ) ;
static const u8 sText_PkmnsStatChanged [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s {B_BUFF1} \n {B_BUFF2} " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_PkmnsStatChanged2 [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}’ s {B_BUFF1} \n {B_BUFF2} " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_UsingXTheYOfZN [ ] = _ ( " Using {B_LAST_ITEM}, the {B_BUFF1} \n of {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2} " ) ;
static const u8 sText_PkmnsStatChanged3 [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s {B_BUFF1} \n {B_BUFF2} " ) ;
static const u8 sText_PkmnsStatChanged4 [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}’ s {B_BUFF1} \n {B_BUFF2} " ) ;
static const u8 sText_StatsWontIncrease2 [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s stats won’ t \n go any higher! " ) ;
static const u8 sText_StatsWontDecrease2 [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}’ s stats won’ t \n go any lower! " ) ;
static const u8 sText_CriticalHit [ ] = _ ( " A critical hit! " ) ;
static const u8 sText_OneHitKO [ ] = _ ( " It’ s a one-hit KO! " ) ;
static const u8 sText_123Poof [ ] = _ ( " {PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE 0x0038}Poof! \ p " ) ;
static const u8 sText_AndEllipsis [ ] = _ ( " And… \ p " ) ;
static const u8 sText_HMMovesCantBeForgotten [ ] = _ ( " HM moves 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! " ) ;
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! " ) ;
static const u8 sText_PlayerDefeatedLinkTrainer [ ] = _ ( " Player defeated \n {B_20}! " ) ;
static const u8 sText_TwoLinkTrainersDefeated [ ] = _ ( " Player beat {B_20} \n and {B_21}! " ) ;
static const u8 sText_PlayerLostAgainstLinkTrainer [ ] = _ ( " Player lost against \n {B_20}! " ) ;
static const u8 sText_PlayerLostToTwo [ ] = _ ( " Player lost to {B_20} \n and {B_21}! " ) ;
static const u8 sText_PlayerBattledToDrawLinkTrainer [ ] = _ ( " Player battled to a draw against \n {B_20}! " ) ;
static const u8 sText_PlayerBattledToDrawVsTwo [ ] = _ ( " Player battled to a draw against \n {B_20} and {B_21}! " ) ;
static const u8 sText_WildFled [ ] = _ ( " {PLAY_SE 0x0011}{B_20} fled! " ) ;
static const u8 sText_TwoWildFled [ ] = _ ( " {PLAY_SE 0x0011}{B_20} and \n {B_21} fled! " ) ;
static const u8 sText_NoRunningFromTrainers [ ] = _ ( " No! 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 " ) ;
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! " ) ;
static const u8 sText_NoPPLeft [ ] = _ ( " There’ s no PP left for \n this move! \ p " ) ;
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! " ) ;
static const u8 sText_PkmnWontObey [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} won’ t \n obey! " ) ;
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}! " ) ;
static const u8 sText_CantGetCloser [ ] = _ ( " {B_PLAYER_NAME} can’ t get any closer! " ) ;
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}! " ) ;
static const u8 sText_OutOfSafariBalls [ ] = _ ( " {PLAY_SE 0x0049}ANNOUNCER: You’ re out of \n SAFARI BALLS! Game over! \ p " ) ;
static const u8 sText_OpponentMon1Appeared [ ] = _ ( " {B_OPPONENT_MON1_NAME} appeared! \ p " ) ;
static const u8 sText_WildPkmnAppeared [ ] = _ ( " Wild {B_OPPONENT_MON1_NAME} appeared! \ p " ) ;
static const u8 sText_WildPkmnAppeared2 [ ] = _ ( " Wild {B_OPPONENT_MON1_NAME} appeared! \ p " ) ;
static const u8 sText_WildPkmnAppearedPause [ ] = _ ( " Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127} " ) ;
static const u8 sText_TwoWildPkmnAppeared [ ] = _ ( " Wild {B_OPPONENT_MON1_NAME} and \n {B_OPPONENT_MON2_NAME} appeared! \ p " ) ;
static const u8 sText_Trainer1WantsToBattle [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} \n would like to battle! \ p " ) ;
static const u8 sText_LinkTrainerWantsToBattle [ ] = _ ( " {B_20} \n wants to battle! " ) ;
static const u8 sText_TwoLinkTrainersWantToBattle [ ] = _ ( " {B_20} and {B_21} \n want to battle! " ) ;
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}! " ) ;
static const u8 sText_LinkTrainerSentOutPkmn [ ] = _ ( " {B_20} sent out \n {B_OPPONENT_MON1_NAME}! " ) ;
static const u8 sText_LinkTrainerSentOutTwoPkmn [ ] = _ ( " {B_20} sent out \n {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}! " ) ;
static const u8 sText_TwoLinkTrainersSentOutPkmn [ ] = _ ( " {B_20} sent out {B_LINK_OPPONENT_MON1_NAME}! \n {B_21} sent out {B_LINK_OPPONENT_MON2_NAME}! " ) ;
static const u8 sText_LinkTrainerSentOutPkmn2 [ ] = _ ( " {B_20} sent out \n {B_BUFF1}! " ) ;
static const u8 sText_LinkTrainerMultiSentOutPkmn [ ] = _ ( " {B_22} sent out \n {B_BUFF1}! " ) ;
static const u8 sText_GoPkmn [ ] = _ ( " Go! {B_PLAYER_MON1_NAME}! " ) ;
static const u8 sText_GoTwoPkmn [ ] = _ ( " Go! {B_PLAYER_MON1_NAME} and \n {B_PLAYER_MON2_NAME}! " ) ;
static const u8 sText_GoPkmn2 [ ] = _ ( " Go! {B_BUFF1}! " ) ;
static const u8 sText_DoItPkmn [ ] = _ ( " Do it! {B_BUFF1}! " ) ;
static const u8 sText_GoForItPkmn [ ] = _ ( " Go for it, {B_BUFF1}! " ) ;
static const u8 sText_YourFoesWeakGetEmPkmn [ ] = _ ( " Your foe’ s weak! \n Get ’ em, {B_BUFF1}! " ) ;
static const u8 sText_LinkPartnerSentOutPkmnGoPkmn [ ] = _ ( " {B_1F} sent out {B_LINK_PLAYER_MON2_NAME}! \n Go! {B_LINK_PLAYER_MON1_NAME}! " ) ;
static const u8 sText_PkmnThatsEnough [ ] = _ ( " {B_BUFF1}, that’ s enough! \n Come back! " ) ;
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}! " ) ;
static const u8 sText_LinkTrainer1WithdrewPkmn [ ] = _ ( " {B_20} withdrew \n {B_BUFF1}! " ) ;
static const u8 sText_LinkTrainer2WithdrewPkmn [ ] = _ ( " {B_22} withdrew \n {B_BUFF1}! " ) ;
static const u8 sText_WildPkmnPrefix [ ] = _ ( " Wild " ) ;
static const u8 sText_FoePkmnPrefix [ ] = _ ( " Foe " ) ;
static const u8 sText_EmptyString8 [ ] = _ ( " " ) ;
static const u8 sText_FoePkmnPrefix2 [ ] = _ ( " Foe " ) ;
static const u8 sText_AllyPkmnPrefix [ ] = _ ( " Ally " ) ;
static const u8 sText_FoePkmnPrefix3 [ ] = _ ( " Foe " ) ;
static const u8 sText_AllyPkmnPrefix2 [ ] = _ ( " Ally " ) ;
static const u8 sText_FoePkmnPrefix4 [ ] = _ ( " Foe " ) ;
static const u8 sText_AllyPkmnPrefix3 [ ] = _ ( " Ally " ) ;
2018-07-22 18:40:18 +02:00
static const u8 sText_AttackerUsedX [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} used \n {B_BUFF3}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_ExclamationMark [ ] = _ ( " ! " ) ;
static const u8 sText_ExclamationMark2 [ ] = _ ( " ! " ) ;
static const u8 sText_ExclamationMark3 [ ] = _ ( " ! " ) ;
static const u8 sText_ExclamationMark4 [ ] = _ ( " ! " ) ;
static const u8 sText_ExclamationMark5 [ ] = _ ( " ! " ) ;
static const u8 sText_HP2 [ ] = _ ( " HP " ) ;
static const u8 sText_Attack2 [ ] = _ ( " ATTACK " ) ;
static const u8 sText_Defense2 [ ] = _ ( " DEFENSE " ) ;
2018-07-13 23:00:56 +02:00
const u8 gText_Speed [ ] = _ ( " SPEED " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_SpAtk2 [ ] = _ ( " SP. ATK " ) ;
static const u8 sText_SpDef2 [ ] = _ ( " SP. DEF " ) ;
static const u8 sText_Accuracy [ ] = _ ( " accuracy " ) ;
static const u8 sText_Evasiveness [ ] = _ ( " evasiveness " ) ;
2017-10-07 15:15:47 +02:00
const u8 * const gStatNamesTable [ ] =
{
2018-02-28 23:50:25 +01:00
sText_HP2 , sText_Attack2 , sText_Defense2 ,
2018-07-13 23:00:56 +02:00
gText_Speed , sText_SpAtk2 , sText_SpDef2 ,
2018-02-28 23:50:25 +01:00
sText_Accuracy , sText_Evasiveness
2017-10-07 15:15:47 +02:00
} ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PokeblockWasTooSpicy [ ] = _ ( " was too spicy! " ) ;
static const u8 sText_PokeblockWasTooDry [ ] = _ ( " was too dry! " ) ;
static const u8 sText_PokeblockWasTooSweet [ ] = _ ( " was too sweet! " ) ;
static const u8 sText_PokeblockWasTooBitter [ ] = _ ( " was too bitter! " ) ;
static const u8 sText_PokeblockWasTooSour [ ] = _ ( " was too sour! " ) ;
2017-10-07 15:15:47 +02:00
const u8 * const gPokeblockWasTooXStringTable [ ] =
{
2018-02-28 23:50:25 +01:00
sText_PokeblockWasTooSpicy , sText_PokeblockWasTooDry ,
sText_PokeblockWasTooSweet , sText_PokeblockWasTooBitter ,
sText_PokeblockWasTooSour
2017-10-07 15:15:47 +02:00
} ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PlayerUsedItem [ ] = _ ( " {B_PLAYER_NAME} used \n {B_LAST_ITEM}! " ) ;
static const u8 sText_WallyUsedItem [ ] = _ ( " WALLY used \n {B_LAST_ITEM}! " ) ;
static const u8 sText_Trainer1UsedItem [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} \n used {B_LAST_ITEM}! " ) ;
static const u8 sText_TrainerBlockedBall [ ] = _ ( " The TRAINER blocked the BALL! " ) ;
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! " ) ;
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! " ) ;
static const u8 sText_GotchaPkmnCaught [ ] = _ ( " Gotcha! \n {B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM MUS_KACHI22} \ p " ) ;
static const u8 sText_GotchaPkmnCaught2 [ ] = _ ( " Gotcha! \n {B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM MUS_KACHI22}{PAUSE 127} " ) ;
static const u8 sText_GiveNicknameCaptured [ ] = _ ( " Give a nickname to the \n captured {B_OPPONENT_MON1_NAME}? " ) ;
static const u8 sText_PkmnSentToPC [ ] = _ ( " {B_OPPONENT_MON1_NAME} was sent to \n {B_PC_CREATOR_NAME} PC. " ) ;
static const u8 sText_Someones [ ] = _ ( " someone’ s " ) ;
static const u8 sText_Lanettes [ ] = _ ( " LANETTE’ s " ) ;
static const u8 sText_PkmnDataAddedToDex [ ] = _ ( " {B_OPPONENT_MON1_NAME}’ s data was \n added to the POKéDEX. \ p " ) ;
static const u8 sText_ItIsRaining [ ] = _ ( " It is raining. " ) ;
static const u8 sText_SandstormIsRaging [ ] = _ ( " A sandstorm is raging. " ) ;
static const u8 sText_BoxIsFull [ ] = _ ( " The BOX is full! \n You can’ t catch any more! \ p " ) ;
static const u8 sText_EnigmaBerry [ ] = _ ( " ENIGMA BERRY " ) ;
static const u8 sText_BerrySuffix [ ] = _ ( " BERRY " ) ;
static const u8 sText_PkmnsItemCuredParalysis [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}’ s {B_LAST_ITEM} \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! " ) ;
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-02-28 23:50:25 +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}! " ) ;
static const s8 sText_TargetAbilityActivates [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}’ s {B_DEF_ABILITY} activates! " ) ;
static const u8 sText_GravityIntensified [ ] = _ ( " GRAVITY intensified! " ) ;
static const u8 sText_TargetIdentified [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was \n identified! " ) ;
static const u8 sText_TargetWokeUp [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} woke up! " ) ;
static const u8 sText_PkmnStoleAndAteItem [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} stole and \n ate {B_DEF_NAME_WITH_PREFIX}’ s {B_LAST_ITEM}! " ) ;
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} " ) ;
static const u8 sText_PkmnCantUseItemsAnymore [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} can’ t use \n items anymore! " ) ;
static const u8 sText_PkmnFlung [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} flung its \n {B_LAST_ITEM}! " ) ;
static const u8 sText_PkmnPreventedFromHealing [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was prevented \n from healing! " ) ;
static const u8 sText_PkmnSwitchedAtkAndDef [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} switched its \n Attack and Defense! " ) ;
static const u8 sText_PkmnsAbilitySuppressed [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}’ s ability \n was suppressed! " ) ;
static const u8 sText_ShieldedFromCriticalHits [ ] = _ ( " The {B_CURRENT_MOVE} shielded your \n team from critical hits! " ) ;
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-07-15 18:53:43 +02:00
static const u8 sText_PoisonSpikesScattered [ ] = _ ( " Poison Spikes were scattered \n all around the foe’ s team’ s \ pfeet! " ) ;
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! " ) ;
static const u8 sText_PointedStonesFloat [ ] = _ ( " Pointed stones float in the air \n around your foe’ s team! " ) ;
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! " ) ;
static const u8 sText_VanishedInstantly [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} Vanished \n instantly! " ) ;
static const u8 sText_ProtectedTeam [ ] = _ ( " Wide Guard protected your team! " ) ;
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! " ) ;
static const u8 sText_HeldItemsLoseEffects [ ] = _ ( " It created a bizarra area in which \n Pokémon’ s held items lose their effects! " ) ;
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! " ) ;
static const u8 sText_ResetsTargetsStatLevels [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} stat changes \n were removed! " ) ;
static const u8 sText_ProtectsTeamFromPriority [ ] = _ ( " Quick Guard protected your team! " ) ;
static const u8 sText_AllySwitchPosition [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} and \n {B_SCR_ACTIVE_NAME_WITH_PREFIX} switched places! " ) ;
static const u8 sText_RestoreTargetsHealth [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}’ s HP was restored! " ) ;
static const u8 sText_TookPkmnIntoTheSky [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} took \n {B_DEF_NAME_WITH_PREFIX} into the sky! " ) ;
static const u8 sText_FreedFromSkyDrop [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was freed \n from the Sky Drop! " ) ;
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! " ) ;
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! " ) ;
static const u8 sText_MagnetRiseEnds [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s electromagnetism \n wore off! " ) ;
static const u8 sText_HealBlockEnds [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}’ s Heal Block \n wore off! " ) ;
static const u8 sText_TelekinesisEnds [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was freed \n from the telekinesis! " ) ;
2018-07-21 12:56:07 +02:00
static const u8 sText_TailwindEnds [ ] = _ ( " {B_ATK_TEAM}’ s tailwind \n petered out! " ) ;
static const u8 sText_LuckyChantEnds [ ] = _ ( " {B_ATK_TEAM}’ s Lucky Chant \n wore off! " ) ;
2018-07-20 16:39:40 +02:00
static const u8 sText_TrickRoomEnds [ ] = _ ( " The twisted dimensions returned to \n normal! " ) ;
static const u8 sText_WonderRoomEnds [ ] = _ ( " Wonder Room wore off, and \n Defense and Sp. Def stats returned to normal! " ) ;
static const u8 sText_MagicRoomEnds [ ] = _ ( " Magic Room wore off, and \n held items’ effects returned to normal! " ) ;
static const u8 sText_MudSportEnds [ ] = _ ( " The effects of Mud Sport have faded. " ) ;
static const u8 sText_WaterSportEnds [ ] = _ ( " The effects of Water Sport have faded. " ) ;
static const u8 sText_GravityEnds [ ] = _ ( " Gravity returned to normal! " ) ;
static const u8 sText_AquaRingHeal [ ] = _ ( " Aqua Ring restored \n {B_ATK_NAME_WITH_PREFIX}’ s HP! " ) ;
2018-07-22 18:40:18 +02:00
static const u8 sText_TargetAbilityRaisedStat [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}’ s {B_ATK_ABILITY} \n raised its {B_BUFF1}! " ) ;
static const u8 sText_AttackerAbilityRaisedStat [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s {B_ATK_ABILITY} \n raised its {B_BUFF1}! " ) ;
2018-07-24 20:13:02 +02:00
static const u8 sText_AuroraVeilEnds [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}’ s {B_DEF_ABILITY} \n wore off! " ) ;
2018-07-23 22:32:34 +02:00
static const u8 sText_ElectricTerrainEnds [ ] = _ ( " {B_ATK_ABILITY} wore off. " ) ;
static const u8 sText_MistyTerrainEnds [ ] = _ ( " {B_ATK_ABILITY} wore off. " ) ;
static const u8 sText_PsychicTerrainEnds [ ] = _ ( " {B_ATK_ABILITY} wore off. " ) ;
static const u8 sText_GrassyTerrainEnds [ ] = _ ( " {B_ATK_ABILITY} wore off. " ) ;
2018-07-24 20:13:02 +02:00
static const u8 sText_AngryPointActivates [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s {B_ATK_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-07-24 20:13:02 +02: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-07-24 20:13:02 +02: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-07-24 20:13:02 +02:00
static const u8 sText_ForewarnActivates [ ] = _ ( " {B_ATK_ABILITY} alerted the {B_ATK_NAME_WITH_PREFIX} to the \n {B_DEF_NAME_WITH_PREFIX}’ s {B_BUFF1}! " ) ;
static const u8 sText_IceBodyHpGain [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s {B_ATK_ABILITY} \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! " ) ;
static const u8 sText_HarvestBerry [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} harvested its {B_LAST_ITEM}! " ) ;
2018-07-24 20:13:02 +02:00
static const u8 sText_MoxieAtkRise [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}’ s {B_ATK_ABILITY} raised its Attack! " ) ;
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-07-24 20:13:02 +02: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}! " ) ;
static const u8 sText_ToxicSpikesAbsorbed [ ] = _ ( " " ) ;
static const u8 sText_ToxicSpikesPoisoned [ ] = _ ( " " ) ;
2018-07-24 22:09:55 +02:00
static const u8 sText_StickyWebSwitchIn [ ] = _ ( " " ) ;
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-07-21 12:56:07 +02:00
2018-07-15 18:53:43 +02:00
const u8 * const gBattleStringsTable [ BATTLESTRINGS_COUNT ] =
2017-10-07 15:15:47 +02:00
{
2018-03-01 10:12:35 +01:00
sText_Trainer1LoseText , // 12
sText_PkmnGainedEXP , // 13
sText_PkmnGrewToLv , // 14
sText_PkmnLearnedMove , // 15
sText_TryToLearnMove1 , // 16
sText_TryToLearnMove2 , // 17
sText_TryToLearnMove3 , // 18
sText_PkmnForgotMove , // 19
sText_StopLearningMove , // 20
sText_DidNotLearnMove , // 21
sText_PkmnLearnedMove2 , // 22
sText_AttackMissed , // 23
sText_PkmnProtectedItself , // 24
sText_StatsWontIncrease2 , // 25
sText_AvoidedDamage , // 26
sText_ItDoesntAffect , // 27
sText_AttackerFainted , // 28
sText_TargetFainted , // 29
sText_PlayerGotMoney , // 30
sText_PlayerWhiteout , // 31
sText_PlayerWhiteout2 , // 32
sText_PreventsEscape , // 33
sText_HitXTimes , // 34
sText_PkmnFellAsleep , // 35
sText_PkmnMadeSleep , // 36
sText_PkmnAlreadyAsleep , // 37
sText_PkmnAlreadyAsleep2 , // 38
sText_PkmnWasntAffected , // 39
sText_PkmnWasPoisoned , // 40
sText_PkmnPoisonedBy , // 41
sText_PkmnHurtByPoison , // 42
sText_PkmnAlreadyPoisoned , // 43
sText_PkmnBadlyPoisoned , // 44
sText_PkmnEnergyDrained , // 45
sText_PkmnWasBurned , // 46
sText_PkmnBurnedBy , // 47
sText_PkmnHurtByBurn , // 48
sText_PkmnWasFrozen , // 49
sText_PkmnFrozenBy , // 50
sText_PkmnIsFrozen , // 51
sText_PkmnWasDefrosted , // 52
sText_PkmnWasDefrosted2 , // 53
sText_PkmnWasDefrostedBy , // 54
sText_PkmnWasParalyzed , // 55
sText_PkmnWasParalyzedBy , // 56
sText_PkmnIsParalyzed , // 57
sText_PkmnIsAlreadyParalyzed , // 58
sText_PkmnHealedParalysis , // 59
sText_PkmnDreamEaten , // 60
sText_StatsWontIncrease , // 61
sText_StatsWontDecrease , // 62
sText_TeamStoppedWorking , // 63
sText_FoeStoppedWorking , // 64
sText_PkmnIsConfused , // 65
sText_PkmnHealedConfusion , // 66
sText_PkmnWasConfused , // 67
sText_PkmnAlreadyConfused , // 68
sText_PkmnFellInLove , // 69
sText_PkmnInLove , // 70
sText_PkmnImmobilizedByLove , // 71
sText_PkmnBlownAway , // 72
sText_PkmnChangedType , // 73
sText_PkmnFlinched , // 74
sText_PkmnRegainedHealth , // 75
sText_PkmnHPFull , // 76
sText_PkmnRaisedSpDef , // 77
sText_PkmnRaisedDef , // 78
sText_PkmnCoveredByVeil , // 79
sText_PkmnUsedSafeguard , // 80
sText_PkmnSafeguardExpired , // 81
sText_PkmnWentToSleep , // 82
sText_PkmnSleptHealthy , // 83
sText_PkmnWhippedWhirlwind , // 84
sText_PkmnTookSunlight , // 85
sText_PkmnLoweredHead , // 86
sText_PkmnIsGlowing , // 87
sText_PkmnFlewHigh , // 88
sText_PkmnDugHole , // 89
sText_PkmnSqueezedByBind , // 90
sText_PkmnTrappedInVortex , // 91
sText_PkmnWrappedBy , // 92
sText_PkmnClamped , // 93
sText_PkmnHurtBy , // 94
sText_PkmnFreedFrom , // 95
sText_PkmnCrashed , // 96
gText_PkmnShroudedInMist , // 97
sText_PkmnProtectedByMist , // 98
gText_PkmnGettingPumped , // 99
sText_PkmnHitWithRecoil , // 100
sText_PkmnProtectedItself2 , // 101
sText_PkmnBuffetedBySandstorm , // 102
sText_PkmnPeltedByHail , // 103
sText_PkmnSeeded , // 104
sText_PkmnEvadedAttack , // 105
sText_PkmnSappedByLeechSeed , // 106
sText_PkmnFastAsleep , // 107
sText_PkmnWokeUp , // 108
sText_PkmnUproarKeptAwake , // 109
sText_PkmnWokeUpInUproar , // 110
sText_PkmnCausedUproar , // 111
sText_PkmnMakingUproar , // 112
sText_PkmnCalmedDown , // 113
sText_PkmnCantSleepInUproar , // 114
sText_PkmnStockpiled , // 115
sText_PkmnCantStockpile , // 116
sText_PkmnCantSleepInUproar2 , // 117
sText_UproarKeptPkmnAwake , // 118
sText_PkmnStayedAwakeUsing , // 119
sText_PkmnStoringEnergy , // 120
sText_PkmnUnleashedEnergy , // 121
sText_PkmnFatigueConfusion , // 122
sText_PkmnPickedUpItem , // 123
sText_PkmnUnaffected , // 124
sText_PkmnTransformedInto , // 125
sText_PkmnMadeSubstitute , // 126
sText_PkmnHasSubstitute , // 127
sText_SubstituteDamaged , // 128
sText_PkmnSubstituteFaded , // 129
sText_PkmnMustRecharge , // 130
sText_PkmnRageBuilding , // 131
sText_PkmnMoveWasDisabled , // 132
sText_PkmnMoveIsDisabled , // 133
sText_PkmnMoveDisabledNoMore , // 134
sText_PkmnGotEncore , // 135
sText_PkmnEncoreEnded , // 136
sText_PkmnTookAim , // 137
sText_PkmnSketchedMove , // 138
sText_PkmnTryingToTakeFoe , // 139
sText_PkmnTookFoe , // 140
sText_PkmnReducedPP , // 141
sText_PkmnStoleItem , // 142
sText_TargetCantEscapeNow , // 143
sText_PkmnFellIntoNightmare , // 144
sText_PkmnLockedInNightmare , // 145
sText_PkmnLaidCurse , // 146
sText_PkmnAfflictedByCurse , // 147
sText_SpikesScattered , // 148
sText_PkmnHurtBySpikes , // 149
sText_PkmnIdentified , // 150
sText_PkmnPerishCountFell , // 151
sText_PkmnBracedItself , // 152
sText_PkmnEnduredHit , // 153
sText_MagnitudeStrength , // 154
sText_PkmnCutHPMaxedAttack , // 155
sText_PkmnCopiedStatChanges , // 156
sText_PkmnGotFree , // 157
sText_PkmnShedLeechSeed , // 158
sText_PkmnBlewAwaySpikes , // 159
sText_PkmnFledFromBattle , // 160
sText_PkmnForesawAttack , // 161
sText_PkmnTookAttack , // 162
sText_PkmnAttack , // 163
sText_PkmnCenterAttention , // 164
sText_PkmnChargingPower , // 165
sText_NaturePowerTurnedInto , // 166
sText_PkmnStatusNormal , // 167
sText_PkmnHasNoMovesLeft , // 168
sText_PkmnSubjectedToTorment , // 169
sText_PkmnCantUseMoveTorment , // 170
sText_PkmnTighteningFocus , // 171
sText_PkmnFellForTaunt , // 172
sText_PkmnCantUseMoveTaunt , // 173
sText_PkmnReadyToHelp , // 174
sText_PkmnSwitchedItems , // 175
sText_PkmnCopiedFoe , // 176
sText_PkmnMadeWish , // 177
sText_PkmnWishCameTrue , // 178
sText_PkmnPlantedRoots , // 179
sText_PkmnAbsorbedNutrients , // 180
sText_PkmnAnchoredItself , // 181
sText_PkmnWasMadeDrowsy , // 182
sText_PkmnKnockedOff , // 183
sText_PkmnSwappedAbilities , // 184
sText_PkmnSealedOpponentMove , // 185
sText_PkmnCantUseMoveSealed , // 186
sText_PkmnWantsGrudge , // 187
sText_PkmnLostPPGrudge , // 188
sText_PkmnShroudedItself , // 189
sText_PkmnMoveBounced , // 190
sText_PkmnWaitsForTarget , // 191
sText_PkmnSnatchedMove , // 192
sText_PkmnMadeItRain , // 193
sText_PkmnRaisedSpeed , // 194
sText_PkmnProtectedBy , // 195
sText_PkmnPreventsUsage , // 196
sText_PkmnRestoredHPUsing , // 197
sText_PkmnChangedTypeWith , // 198
sText_PkmnPreventsParalysisWith , // 199
sText_PkmnPreventsRomanceWith , // 200
sText_PkmnPreventsPoisoningWith , // 201
sText_PkmnPreventsConfusionWith , // 202
sText_PkmnRaisedFirePowerWith , // 203
sText_PkmnAnchorsItselfWith , // 204
sText_PkmnCutsAttackWith , // 205
sText_PkmnPreventsStatLossWith , // 206
sText_PkmnHurtsWith , // 207
sText_PkmnTraced , // 208
sText_StatSharply , // 209
gText_StatRose , // 210
sText_StatHarshly , // 211
sText_StatFell , // 212
sText_PkmnsStatChanged , // 213
gText_PkmnsStatChanged2 , // 214
sText_PkmnsStatChanged3 , // 215
sText_PkmnsStatChanged4 , // 216
sText_CriticalHit , // 217
sText_OneHitKO , // 218
sText_123Poof , // 219
sText_AndEllipsis , // 220
sText_NotVeryEffective , // 221
sText_SuperEffective , // 222
sText_GotAwaySafely , // 223
sText_WildPkmnFled , // 224
sText_NoRunningFromTrainers , // 225
sText_CantEscape , // 226
sText_DontLeaveBirch , // 227
sText_ButNothingHappened , // 228
sText_ButItFailed , // 229
sText_ItHurtConfusion , // 230
sText_MirrorMoveFailed , // 231
sText_StartedToRain , // 232
sText_DownpourStarted , // 233
sText_RainContinues , // 234
sText_DownpourContinues , // 235
sText_RainStopped , // 236
sText_SandstormBrewed , // 237
sText_SandstormRages , // 238
sText_SandstormSubsided , // 239
sText_SunlightGotBright , // 240
sText_SunlightStrong , // 241
sText_SunlightFaded , // 242
sText_StartedHail , // 243
sText_HailContinues , // 244
sText_HailStopped , // 245
sText_FailedToSpitUp , // 246
sText_FailedToSwallow , // 247
sText_WindBecameHeatWave , // 248
sText_StatChangesGone , // 249
sText_CoinsScattered , // 250
sText_TooWeakForSubstitute , // 251
sText_SharedPain , // 252
sText_BellChimed , // 253
sText_FaintInThree , // 254
sText_NoPPLeft , // 255
sText_ButNoPPLeft , // 256
sText_PlayerUsedItem , // 257
sText_WallyUsedItem , // 258
sText_TrainerBlockedBall , // 259
sText_DontBeAThief , // 260
sText_ItDodgedBall , // 261
sText_YouMissedPkmn , // 262
sText_PkmnBrokeFree , // 263
sText_ItAppearedCaught , // 264
sText_AarghAlmostHadIt , // 265
sText_ShootSoClose , // 266
sText_GotchaPkmnCaught , // 267
sText_GotchaPkmnCaught2 , // 268
sText_GiveNicknameCaptured , // 269
sText_PkmnSentToPC , // 270
sText_PkmnDataAddedToDex , // 271
sText_ItIsRaining , // 272
sText_SandstormIsRaging , // 273
sText_CantEscape2 , // 274
sText_PkmnIgnoresAsleep , // 275
sText_PkmnIgnoredOrders , // 276
sText_PkmnBeganToNap , // 277
sText_PkmnLoafing , // 278
sText_PkmnWontObey , // 279
sText_PkmnTurnedAway , // 280
sText_PkmnPretendNotNotice , // 281
sText_EnemyAboutToSwitchPkmn , // 282
sText_CreptCloser , // 283
sText_CantGetCloser , // 284
sText_PkmnWatchingCarefully , // 285
sText_PkmnCuriousAboutX , // 286
sText_PkmnEnthralledByX , // 287
sText_PkmnIgnoredX , // 288
sText_ThrewPokeblockAtPkmn , // 289
sText_OutOfSafariBalls , // 290
sText_PkmnsItemCuredParalysis , // 291
sText_PkmnsItemCuredPoison , // 292
sText_PkmnsItemHealedBurn , // 293
sText_PkmnsItemDefrostedIt , // 294
sText_PkmnsItemWokeIt , // 295
sText_PkmnsItemSnappedOut , // 296
sText_PkmnsItemCuredProblem , // 297
sText_PkmnsItemRestoredHealth , // 298
sText_PkmnsItemRestoredPP , // 299
sText_PkmnsItemRestoredStatus , // 300
sText_PkmnsItemRestoredHPALittle , // 301
sText_ItemAllowsOnlyYMove , // 302
sText_PkmnHungOnWithX , // 303
gText_EmptyString3 , // 304
sText_PkmnsXPreventsBurns , // 305
sText_PkmnsXBlocksY , // 306
sText_PkmnsXRestoredHPALittle2 , // 307
sText_PkmnsXWhippedUpSandstorm , // 308
sText_PkmnsXPreventsYLoss , // 309
sText_PkmnsXInfatuatedY , // 310
sText_PkmnsXMadeYIneffective , // 311
sText_PkmnsXCuredYProblem , // 312
sText_ItSuckedLiquidOoze , // 313
sText_PkmnTransformed , // 314
sText_ElectricityWeakened , // 315
sText_FireWeakened , // 316
sText_PkmnHidUnderwater , // 317
sText_PkmnSprangUp , // 318
sText_HMMovesCantBeForgotten , // 319
sText_XFoundOneY , // 320
sText_PlayerDefeatedLinkTrainerTrainer1 , // 321
sText_SoothingAroma , // 322
sText_ItemsCantBeUsedNow , // 323
sText_ForXCommaYZ , // 324
sText_UsingXTheYOfZN , // 325
sText_PkmnUsedXToGetPumped , // 326
sText_PkmnsXMadeYUseless , // 327
sText_PkmnTrappedBySandTomb , // 328
sText_EmptyString4 , // 329
sText_ABoosted , // 330
sText_PkmnsXIntensifiedSun , // 331
sText_PkmnMakesGroundMiss , // 332
sText_YouThrowABallNowRight , // 333
sText_PkmnsXTookAttack , // 334
sText_PkmnChoseXAsDestiny , // 335
sText_PkmnLostFocus , // 336
sText_UseNextPkmn , // 337
sText_PkmnFledUsingIts , // 338
sText_PkmnFledUsing , // 339
sText_PkmnWasDraggedOut , // 340
sText_PreventedFromWorking , // 341
sText_PkmnsItemNormalizedStatus , // 342
sText_Trainer1UsedItem , // 343
sText_BoxIsFull , // 344
sText_PkmnAvoidedAttack , // 345
sText_PkmnsXMadeItIneffective , // 346
sText_PkmnsXPreventsFlinching , // 347
sText_PkmnAlreadyHasBurn , // 348
sText_StatsWontDecrease2 , // 349
sText_PkmnsXBlocksY2 , // 350
sText_PkmnsXWoreOff , // 351
sText_PkmnRaisedDefALittle , // 352
sText_PkmnRaisedSpDefALittle , // 353
sText_TheWallShattered , // 354
sText_PkmnsXPreventsYsZ , // 355
sText_PkmnsXCuredItsYProblem , // 356
sText_AttackerCantEscape , // 357
sText_PkmnObtainedX , // 358
sText_PkmnObtainedX2 , // 359
sText_PkmnObtainedXYObtainedZ , // 360
sText_ButNoEffect , // 361
sText_PkmnsXHadNoEffectOnY , // 362
sText_TwoInGameTrainersDefeated , // 363
sText_Trainer2LoseText , // 364
sText_PkmnIncapableOfPower , // 365
sText_GlintAppearsInEye , // 366
sText_PkmnGettingIntoPosition , // 367
sText_PkmnBeganGrowlingDeeply , // 368
sText_PkmnEagerForMore , // 369
sText_DefeatedOpponentByReferee , // 370
sText_LostToOpponentByReferee , // 371
sText_TiedOpponentByReferee , // 372
sText_QuestionForfeitMatch , // 373
sText_ForfeitedMatch , // 374
gText_PkmnTransferredSomeonesPC , // 375
gText_PkmnTransferredLanettesPC , // 376
gText_PkmnBoxSomeonesPCFull , // 377
gText_PkmnBoxLanettesPCFull , // 378
sText_Trainer1WinText , // 379
sText_Trainer2WinText , // 380
2018-07-15 18:53:43 +02:00
// new battle strings
sText_EnduredViaSturdy , // 381
sText_PowerHerbActivation , // 382
sText_HurtByItem , // 383
sText_BadlyPoisonedByItem , // 384
sText_BurnedByItem , // 385
sText_TargetAbilityActivates , // 386
sText_GravityIntensified , // 387
sText_TargetIdentified , // 388
sText_TargetWokeUp , // 389
sText_PkmnStoleAndAteItem , // 390
sText_TailWindBlew , // 391
sText_PkmnWentBack , // 392
sText_PkmnCantUseItemsAnymore , // 393
sText_PkmnFlung , // 394
sText_PkmnPreventedFromHealing , // 395
sText_PkmnSwitchedAtkAndDef , // 396
sText_PkmnsAbilitySuppressed , // 397
sText_ShieldedFromCriticalHits , // 398
sText_SwitchedAtkAndSpAtk , // 399
sText_SwitchedDefAndSpDef , // 400
sText_PkmnAcquiredAbility , // 401
sText_PoisonSpikesScattered , // 402
sText_PkmnSwitchedStatChanges , // 403
sText_PkmnSurroundedWithVeilOfWater , // 404
sText_PkmnLevitatedOnElectromagnetism , // 405
sText_PkmnTwistedDimensions , // 406
sText_PointedStonesFloat , // 407
sText_CloakedInMysticalMoonlight , // 408
sText_TrappedBySwirlingMagma , // 409
sText_VanishedInstantly , // 410
sText_ProtectedTeam , // 411
sText_SharedItsGuard , // 412
sText_SharedItsPower , // 413
sText_SwapsDefAndSpDefOfAllPkmn , // 414
sText_BecameNimble , // 415
sText_HurledIntoTheAir , // 416
sText_HeldItemsLoseEffects , // 417
sText_FellStraightDown , // 418
sText_TransformedIntoWaterType , // 419
sText_PkmnAcquiredSimple , // 420
sText_EmptyString4 , // 421
sText_KindOffer , // 422
sText_ResetsTargetsStatLevels , // 423
sText_ProtectsTeamFromPriority , // 424
sText_AllySwitchPosition , // 425
sText_RestoreTargetsHealth , // 426
sText_TookPkmnIntoTheSky , // 427
sText_FreedFromSkyDrop , // 428
sText_PostponeTargetMove , // 429
sText_ReflectTargetsType , // 430
sText_TransferHeldItem , // 431
2018-07-18 22:07:48 +02:00
sText_EmbargoEnds , // 432
sText_MagnetRiseEnds , // 433
sText_HealBlockEnds , // 434
sText_TelekinesisEnds , // 435
sText_TailwindEnds , // 436
sText_LuckyChantEnds , // 437
sText_TrickRoomEnds , // 438
sText_WonderRoomEnds , // 439
sText_MagicRoomEnds , // 440
sText_MudSportEnds , // 441
sText_WaterSportEnds , // 442
sText_GravityEnds , // 443
sText_AquaRingHeal , // 444
2018-07-21 13:24:20 +02:00
sText_AuroraVeilEnds , // 445
sText_ElectricTerrainEnds , // 446
sText_MistyTerrainEnds , // 447
sText_PsychicTerrainEnds , // 448
sText_GrassyTerrainEnds , // 449
2018-07-22 18:40:18 +02:00
sText_TargetAbilityRaisedStat , // 450
sText_AngryPointActivates , // 451
sText_AttackerAbilityRaisedStat , // 452
sText_PoisonHealHpUp , // 453
2018-07-22 21:05:12 +02:00
sText_BadDreamsDmg , // 454
2018-07-22 22:21:47 +02:00
sText_MoldBreakerEnters ,
sText_TeravoltEnters ,
sText_TurboblazeEnters ,
sText_SlowStartEnters ,
sText_SlowStartEnd ,
sText_SolarPowerHpDrop ,
sText_AftermathDmg ,
sText_AnticipationActivates ,
sText_ForewarnActivates ,
sText_IceBodyHpGain ,
sText_SnowWarningHail ,
sText_FriskActivates ,
sText_UnnerveEnters ,
sText_HarvestBerry ,
sText_MoxieAtkRise ,
sText_MagicBounceActivates ,
sText_ProteanTypeChange ,
sText_SymbiosisItemPass ,
2018-07-24 21:47:00 +02:00
sText_StealthRockDmg ,
sText_ToxicSpikesAbsorbed ,
sText_ToxicSpikesPoisoned ,
2018-07-24 22:09:55 +02:00
sText_StickyWebSwitchIn ,
2018-07-26 20:36:16 +02:00
sText_HealingWishCameTrue ,
sText_HealingWishHealed ,
sText_LunarDanceCameTrue ,
} ;
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 [ ] =
{
STRINGID_PKMNPROTECTEDITSELF2 , STRINGID_PKMNBRACEDITSELF , STRINGID_BUTITFAILED
} ;
const u16 gReflectLightScreenSafeguardStringIds [ ] =
{
STRINGID_BUTITFAILED , STRINGID_PKMNRAISEDDEF , STRINGID_PKMNRAISEDDEFALITTLE ,
STRINGID_PKMNRAISEDSPDEF , STRINGID_PKMNRAISEDSPDEFALITTLE , STRINGID_PKMNCOVEREDBYVEIL
} ;
const u16 gLeechSeedStringIds [ ] =
{
STRINGID_PKMNSEEDED , STRINGID_PKMNEVADEDATTACK ,
2017-10-08 14:54:51 +02:00
STRINGID_ITDOESNTAFFECT , STRINGID_PKMNSAPPEDBYLEECHSEED , STRINGID_ITSUCKEDLIQUIDOOZE ,
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 ,
STRINGID_PKMNFLEWHIGH , STRINGID_PKMNDUGHOLE , STRINGID_PKMNHIDUNDERWATER , STRINGID_PKMNSPRANGUP
} ;
const u16 gWrappedStringIds [ ] =
{
STRINGID_PKMNSQUEEZEDBYBIND , STRINGID_PKMNWRAPPEDBY , STRINGID_PKMNTRAPPEDINVORTEX ,
STRINGID_PKMNCLAMPED , STRINGID_PKMNTRAPPEDINVORTEX , STRINGID_PKMNTRAPPEDBYSANDTOMB
} ;
const u16 gMistUsedStringIds [ ] =
{
STRINGID_PKMNSHROUDEDINMIST , STRINGID_BUTITFAILED
} ;
const u16 gFocusEnergyUsedStringIds [ ] =
{
STRINGID_PKMNGETTINGPUMPED , STRINGID_BUTITFAILED
} ;
const u16 gTransformUsedStringIds [ ] =
{
STRINGID_PKMNTRANSFORMEDINTO , STRINGID_BUTITFAILED
} ;
const u16 gSubsituteUsedStringIds [ ] =
{
STRINGID_PKMNMADESUBSTITUTE , STRINGID_TOOWEAKFORSUBSTITUTE
} ;
const u16 gGotPoisonedStringIds [ ] =
{
STRINGID_PKMNWASPOISONED , STRINGID_PKMNPOISONEDBY
} ;
const u16 gGotParalyzedStringIds [ ] =
{
STRINGID_PKMNWASPARALYZED , STRINGID_PKMNWASPARALYZEDBY
} ;
const u16 gFellAsleepStringIds [ ] =
{
STRINGID_PKMNFELLASLEEP , STRINGID_PKMNMADESLEEP ,
} ;
const u16 gGotBurnedStringIds [ ] =
{
STRINGID_PKMNWASBURNED , STRINGID_PKMNBURNEDBY
} ;
const u16 gGotFrozenStringIds [ ] =
{
STRINGID_PKMNWASFROZEN , STRINGID_PKMNFROZENBY
} ;
const u16 gGotDefrostedStringIds [ ] =
{
STRINGID_PKMNWASDEFROSTED2 , STRINGID_PKMNWASDEFROSTEDBY
} ;
const u16 gKOFailedStringIds [ ] =
{
STRINGID_ATTACKMISSED , STRINGID_PKMNUNAFFECTED
} ;
const u16 gAttractUsedStringIds [ ] =
{
STRINGID_PKMNFELLINLOVE , STRINGID_PKMNSXINFATUATEDY
} ;
const u16 gLeechSeedDrainStringIds [ ] =
{
STRINGID_PKMNENERGYDRAINED , STRINGID_ITSUCKEDLIQUIDOOZE
} ;
const u16 gSportsUsedStringIds [ ] =
{
STRINGID_ELECTRICITYWEAKENED , STRINGID_FIREWEAKENED
} ;
const u16 gPartyStatusHealStringIds [ ] =
{
STRINGID_BELLCHIMED , STRINGID_BELLCHIMED , STRINGID_BELLCHIMED , STRINGID_BELLCHIMED ,
// interesting how there are four instances of the same string
STRINGID_SOOTHINGAROMA
} ;
const u16 gFutureMoveUsedStringIds [ ] =
{
STRINGID_PKMNFORESAWATTACK , STRINGID_PKMNCHOSEXASDESTINY
} ;
const u16 gBallEscapeStringIds [ ] =
{
STRINGID_PKMNBROKEFREE , STRINGID_ITAPPEAREDCAUGHT , STRINGID_AARGHALMOSTHADIT , STRINGID_SHOOTSOCLOSE
} ;
const u16 gWeatherContinuesStringIds [ ] =
{
2017-10-08 14:54:51 +02:00
STRINGID_ITISRAINING , STRINGID_ITISRAINING , STRINGID_ITISRAINING ,
STRINGID_ITISRAINING , STRINGID_ITISRAINING , STRINGID_ITISRAINING ,
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 [ ] =
{
MOVE_BIND , MOVE_WRAP , MOVE_FIRE_SPIN , MOVE_CLAMP , MOVE_WHIRLPOOL , MOVE_SAND_TOMB , 0xFFFF
} ;
2018-07-21 21:58:07 +02:00
const u16 gRoomsStringIds [ ] =
{
STRINGID_PKMNTWISTEDDIMENSIONS , STRINGID_TRICKROOMENDS ,
STRINGID_SWAPSDEFANDSPDEFOFALLPOKEMON , STRINGID_WONDERROOMENDS ,
STRINGID_HELDITEMSLOSEEFFECTS , STRINGID_MAGICROOMENDS ,
STRINGID_EMPTYSTRING3
} ;
2017-10-07 15:15:47 +02:00
const u8 gText_PkmnIsEvolving [ ] = _ ( " What? \n {STR_VAR_1} is evolving! " ) ;
const u8 gText_CongratsPkmnEvolved [ ] = _ ( " Congratulations! Your {STR_VAR_1} \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 " ) ;
static const u8 sText_ApostropheS [ ] = _ ( " ’ s" ) ;
2017-10-07 15:15:47 +02:00
2018-02-28 23:50:25 +01:00
static const u8 sATypeMove_Table [ ] [ 17 ] =
2017-10-07 15:15:47 +02:00
{
_ ( " a NORMAL move " ) ,
_ ( " a FIGHTING move " ) ,
_ ( " a FLYING move " ) ,
_ ( " a POISON move " ) ,
_ ( " a GROUND move " ) ,
_ ( " a ROCK move " ) ,
_ ( " a BUG move " ) ,
_ ( " a GHOST move " ) ,
_ ( " a STEEL move " ) ,
_ ( " a ??? move " ) ,
_ ( " a FIRE move " ) ,
_ ( " a WATER move " ) ,
_ ( " a GRASS move " ) ,
_ ( " an ELECTRIC move " ) ,
_ ( " a PSYCHIC move " ) ,
_ ( " an ICE move " ) ,
_ ( " a DRAGON move " ) ,
_ ( " a DARK move " )
} ;
const u8 gText_BattleTourney [ ] = _ ( " BATTLE TOURNEY " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_Round1 [ ] = _ ( " Round 1 " ) ;
static const u8 sText_Round2 [ ] = _ ( " Round 2 " ) ;
static const u8 sText_Semifinal [ ] = _ ( " Semifinal " ) ;
static const u8 sText_Final [ ] = _ ( " Final " ) ;
2017-10-07 15:15:47 +02:00
const u8 * const gRoundsStringTable [ ] =
{
2018-02-28 23:50:25 +01:00
sText_Round1 ,
sText_Round2 ,
sText_Semifinal ,
sText_Final
2017-10-07 15:15:47 +02:00
} ;
const u8 gText_TheGreatNewHope [ ] = _ ( " The great new hope! \ p " ) ;
const u8 gText_WillChampinshipDreamComeTrue [ ] = _ ( " Will the championship dream come true?! \ p " ) ;
const u8 gText_AFormerChampion [ ] = _ ( " A former CHAMPION! \ p " ) ;
const u8 gText_ThePreviousChampion [ ] = _ ( " The previous CHAMPION! \ p " ) ;
const u8 gText_TheUnbeatenChampion [ ] = _ ( " The unbeaten CHAMPION! \ p " ) ;
const u8 gText_PlayerMon1Name [ ] = _ ( " {B_PLAYER_MON1_NAME} " ) ;
const u8 gText_Vs [ ] = _ ( " VS " ) ;
const u8 gText_OpponentMon1Name [ ] = _ ( " {B_OPPONENT_MON1_NAME} " ) ;
const u8 gText_Mind [ ] = _ ( " Mind " ) ;
const u8 gText_Skill [ ] = _ ( " Skill " ) ;
const u8 gText_Body [ ] = _ ( " Body " ) ;
const u8 gText_Judgement [ ] = _ ( " {B_BUFF1}{CLEAR 13}Judgment{CLEAR 13}{B_BUFF2} " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_TwoTrainersSentPkmn [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent \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! " ) ;
static const u8 sText_GlintAppearsInEye [ ] = _ ( " A glint appears in \n {B_SCR_ACTIVE_NAME_WITH_PREFIX}’ s eyes! " ) ;
static const u8 sText_PkmnGettingIntoPosition [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} is getting into \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! " ) ;
static const u8 sText_RefThatsIt [ ] = _ ( " REFEREE: That’ s it! We will now go to \n judging to determine the winner! " ) ;
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 " ) ;
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 " ) ;
static const u8 sText_RefJudgement3 [ ] = _ ( " REFEREE: Judgment: 3 to 3! \n We have a draw! \ p " ) ;
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! " ) ;
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 ,
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? " ) ;
const u8 gText_BattleRecordedOnPass [ ] = _ ( " {B_PLAYER_NAME}’ s battle result was recorded \n on the FRONTIER PASS. " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_LinkTrainerWantsToBattlePause [ ] = _ ( " {B_20} \n wants to battle!{PAUSE 49} " ) ;
static const u8 sText_TwoLinkTrainersWantToBattlePause [ ] = _ ( " {B_20} and {B_21} \n want to battle!{PAUSE 49} " ) ;
2018-07-21 12:56:07 +02:00
static const u8 sText_YourTeam [ ] = _ ( " Your team " ) ;
static const u8 sText_OpposingTeam [ ] = _ ( " The opposing team " ) ;
2017-10-07 15:15:47 +02:00
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 [ ] =
{
{ // 0
. fillValue = 0xFF ,
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 1 ,
. fgColor = 1 ,
. bgColor = 15 ,
. shadowColor = 6 ,
} ,
{ // 1
. fillValue = 0xFF ,
. fontId = 1 ,
. x = 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 15 ,
. shadowColor = 6 ,
} ,
{ // 2
. fillValue = 0xEE ,
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 3
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 4
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 5
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 6
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 7
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 12 ,
. bgColor = 14 ,
. shadowColor = 11 ,
} ,
{ // 8
. fillValue = 0xEE ,
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 9
. fillValue = 0xEE ,
. fontId = 1 ,
. x = 2 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 12 ,
. bgColor = 14 ,
. shadowColor = 11 ,
} ,
{ // 10
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 11
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 12
. fillValue = 0xEE ,
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 13
. fillValue = 0xEE ,
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 14
. fillValue = 0x0 ,
. fontId = 1 ,
. x = 32 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 2 ,
} ,
{ // 15
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 16
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 17
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 18
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 19
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 20
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 21
. fillValue = 0x0 ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 6 ,
} ,
{ // 22
. fillValue = 0x0 ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 6 ,
} ,
{ // 23
. fillValue = 0x0 ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 6 ,
} ,
2017-10-07 15:15:47 +02:00
} ;
2018-06-17 16:48:58 +02:00
static const struct BattleWindowText sTextOnWindowsInfo_Arena [ ] =
{
{ // 0
. fillValue = 0xFF ,
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 1 ,
. fgColor = 1 ,
. bgColor = 15 ,
. shadowColor = 6 ,
} ,
{ // 1
. fillValue = 0xFF ,
. fontId = 1 ,
. x = 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 15 ,
. shadowColor = 6 ,
} ,
{ // 2
. fillValue = 0xEE ,
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 3
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 4
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 5
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 6
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 7
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 12 ,
. bgColor = 14 ,
. shadowColor = 11 ,
} ,
{ // 8
. fillValue = 0xEE ,
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 9
. fillValue = 0xEE ,
. fontId = 1 ,
. x = 2 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 12 ,
. bgColor = 14 ,
. shadowColor = 11 ,
} ,
{ // 10
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 11
. fillValue = 0xEE ,
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 12
. fillValue = 0xEE ,
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 13
. fillValue = 0xEE ,
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 14
. fillValue = 0x0 ,
. fontId = 1 ,
. x = 32 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 2 ,
} ,
{ // 15
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 16
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 17
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 18
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 19
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 20
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 21
. fillValue = 0xEE ,
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 22
. fillValue = 0x11 ,
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 1 ,
. fgColor = 2 ,
. bgColor = 1 ,
. shadowColor = 3 ,
} ,
2017-10-07 15:15:47 +02:00
} ;
2018-06-17 16:48:58 +02:00
static const struct BattleWindowText * const sBattleTextOnWindowsInfo [ ] =
2017-10-07 15:15:47 +02:00
{
2018-06-17 16:48:58 +02:00
sTextOnWindowsInfo_Normal , sTextOnWindowsInfo_Arena
2017-10-07 15:15:47 +02:00
} ;
2017-10-08 14:54:51 +02:00
static const u8 sRecordedBattleTextSpeeds [ ] = { 8 , 4 , 1 , 0 } ;
2017-10-07 15:15:47 +02:00
2018-06-17 16:48:58 +02:00
// code
2017-10-07 15:15:47 +02:00
void BufferStringBattle ( u16 stringID )
{
s32 i ;
2018-06-17 16:48:58 +02:00
const u8 * stringPtr = NULL ;
2017-10-07 15:15:47 +02:00
2018-06-30 15:35:54 +02:00
gBattleMsgDataPtr = ( struct BattleMsgData * ) ( & gBattleBufferA [ gActiveBattler ] [ 4 ] ) ;
gLastUsedItem = gBattleMsgDataPtr - > lastItem ;
gLastUsedAbility = gBattleMsgDataPtr - > lastAbility ;
gBattleScripting . battler = gBattleMsgDataPtr - > scrActive ;
* ( & gBattleStruct - > field_52 ) = gBattleMsgDataPtr - > unk1605E ;
* ( & gBattleStruct - > hpScale ) = gBattleMsgDataPtr - > hpScale ;
gPotentialItemEffectBattler = gBattleMsgDataPtr - > itemEffectBattler ;
* ( & gBattleStruct - > stringMoveType ) = gBattleMsgDataPtr - > moveType ;
2017-10-07 15:15:47 +02:00
2018-02-06 02:46:59 +01:00
for ( i = 0 ; i < MAX_BATTLERS_COUNT ; i + + )
2017-10-07 15:15:47 +02:00
{
2018-06-30 15:35:54 +02:00
sBattlerAbilities [ i ] = gBattleMsgDataPtr - > abilities [ i ] ;
2017-10-07 15:15:47 +02:00
}
for ( i = 0 ; i < TEXT_BUFF_ARRAY_COUNT ; i + + )
{
2018-06-30 15:35:54 +02:00
gBattleTextBuff1 [ i ] = gBattleMsgDataPtr - > textBuffs [ 0 ] [ i ] ;
gBattleTextBuff2 [ i ] = gBattleMsgDataPtr - > textBuffs [ 1 ] [ i ] ;
gBattleTextBuff3 [ i ] = gBattleMsgDataPtr - > textBuffs [ 2 ] [ i ] ;
2017-10-07 15:15:47 +02:00
}
switch ( stringID )
{
case STRINGID_INTROMSG : // first battle msg
if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER )
{
if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 ) )
{
if ( gBattleTypeFlags & BATTLE_TYPE_x800000 )
{
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoTrainersWantToBattle ;
2017-10-07 15:15:47 +02:00
}
else if ( gBattleTypeFlags & BATTLE_TYPE_MULTI )
{
if ( gBattleTypeFlags & BATTLE_TYPE_RECORDED )
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoLinkTrainersWantToBattlePause ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoLinkTrainersWantToBattle ;
2017-10-07 15:15:47 +02:00
}
else
{
if ( gTrainerBattleOpponent_A = = TRAINER_OPPONENT_C00 )
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1WantsToBattle ;
2017-10-07 15:15:47 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_RECORDED )
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainerWantsToBattlePause ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainerWantsToBattle ;
2017-10-07 15:15:47 +02:00
}
}
else
{
if ( gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER )
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoTrainersWantToBattle ;
2017-10-07 15:15:47 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS )
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoTrainersWantToBattle ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1WantsToBattle ;
2017-10-07 15:15:47 +02:00
}
}
else
{
if ( gBattleTypeFlags & BATTLE_TYPE_LEGENDARY )
2018-02-28 23:50:25 +01:00
stringPtr = sText_WildPkmnAppeared2 ;
2017-10-07 15:15:47 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_DOUBLE ) // interesting, looks like they had something planned for wild double battles
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoWildPkmnAppeared ;
2017-10-07 15:15:47 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL )
2018-02-28 23:50:25 +01:00
stringPtr = sText_WildPkmnAppearedPause ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_WildPkmnAppeared ;
2017-10-07 15:15:47 +02:00
}
break ;
case STRINGID_INTROSENDOUT : // poke first send-out
2018-02-06 02:46:59 +01:00
if ( GetBattlerSide ( gActiveBattler ) = = B_SIDE_PLAYER )
2017-10-07 15:15:47 +02:00
{
if ( gBattleTypeFlags & BATTLE_TYPE_DOUBLE )
{
if ( gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER )
2018-02-28 23:50:25 +01:00
stringPtr = sText_InGamePartnerSentOutZGoN ;
2017-10-07 15:15:47 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS )
2018-02-28 23:50:25 +01:00
stringPtr = sText_GoTwoPkmn ;
2017-10-07 15:15:47 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_MULTI )
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkPartnerSentOutPkmnGoPkmn ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_GoTwoPkmn ;
2017-10-07 15:15:47 +02:00
}
else
{
2018-02-28 23:50:25 +01:00
stringPtr = sText_GoPkmn ;
2017-10-07 15:15:47 +02:00
}
}
else
{
if ( gBattleTypeFlags & BATTLE_TYPE_DOUBLE )
{
if ( gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS )
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoTrainersSentPkmn ;
2017-10-07 15:15:47 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_x800000 )
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoTrainersSentPkmn ;
2017-10-07 15:15:47 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_MULTI )
2018-02-28 23:50:25 +01:00
stringPtr = sText_TwoLinkTrainersSentOutPkmn ;
2017-10-07 15:15:47 +02:00
else if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 ) )
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainerSentOutTwoPkmn ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutTwoPkmn ;
2017-10-07 15:15:47 +02:00
}
else
{
if ( ! ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 ) ) )
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn ;
2017-10-07 15:15:47 +02:00
else if ( gTrainerBattleOpponent_A = = TRAINER_OPPONENT_C00 )
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainerSentOutPkmn ;
2017-10-07 15:15:47 +02:00
}
}
break ;
case STRINGID_RETURNMON : // sending poke to ball msg
2018-02-06 02:46:59 +01:00
if ( GetBattlerSide ( gActiveBattler ) = = B_SIDE_PLAYER )
2017-10-07 15:15:47 +02:00
{
if ( * ( & gBattleStruct - > hpScale ) = = 0 )
2018-02-28 23:50:25 +01:00
stringPtr = sText_PkmnThatsEnough ;
2017-10-07 15:15:47 +02:00
else if ( * ( & gBattleStruct - > hpScale ) = = 1 | | gBattleTypeFlags & BATTLE_TYPE_DOUBLE )
2018-02-28 23:50:25 +01:00
stringPtr = sText_PkmnComeBack ;
2017-10-07 15:15:47 +02:00
else if ( * ( & gBattleStruct - > hpScale ) = = 2 )
2018-02-28 23:50:25 +01:00
stringPtr = sText_PkmnOkComeBack ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_PkmnGoodComeBack ;
2017-10-07 15:15:47 +02:00
}
else
{
2018-07-01 11:15:42 +02:00
if ( gTrainerBattleOpponent_A = = TRAINER_LINK_OPPONENT | | gBattleTypeFlags & BATTLE_TYPE_x2000000 )
2017-10-07 15:15:47 +02:00
{
if ( gBattleTypeFlags & BATTLE_TYPE_MULTI )
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainer2WithdrewPkmn ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainer1WithdrewPkmn ;
2017-10-07 15:15:47 +02:00
}
else
{
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1WithdrewPkmn ;
2017-10-07 15:15:47 +02:00
}
}
break ;
case STRINGID_SWITCHINMON : // switch-in msg
2018-02-06 02:46:59 +01:00
if ( GetBattlerSide ( gBattleScripting . battler ) = = B_SIDE_PLAYER )
2017-10-07 15:15:47 +02:00
{
if ( * ( & gBattleStruct - > hpScale ) = = 0 | | gBattleTypeFlags & BATTLE_TYPE_DOUBLE )
2018-02-28 23:50:25 +01:00
stringPtr = sText_GoPkmn2 ;
2017-10-07 15:15:47 +02:00
else if ( * ( & gBattleStruct - > hpScale ) = = 1 )
2018-02-28 23:50:25 +01:00
stringPtr = sText_DoItPkmn ;
2017-10-07 15:15:47 +02:00
else if ( * ( & gBattleStruct - > hpScale ) = = 2 )
2018-02-28 23:50:25 +01:00
stringPtr = sText_GoForItPkmn ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_YourFoesWeakGetEmPkmn ;
2017-10-07 15:15:47 +02:00
}
else
{
if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 ) )
{
if ( gBattleTypeFlags & BATTLE_TYPE_x800000 )
{
2018-02-06 02:46:59 +01:00
if ( gBattleScripting . battler = = 1 )
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn2 ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer2SentOutPkmn ;
2017-10-07 15:15:47 +02:00
}
else
{
if ( gBattleTypeFlags & BATTLE_TYPE_MULTI )
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainerMultiSentOutPkmn ;
2017-10-07 15:15:47 +02:00
else if ( gTrainerBattleOpponent_A = = TRAINER_OPPONENT_C00 )
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn2 ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_LinkTrainerSentOutPkmn2 ;
2017-10-07 15:15:47 +02:00
}
}
else
{
if ( gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS )
{
2018-02-06 02:46:59 +01:00
if ( gBattleScripting . battler = = 1 )
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn2 ;
2017-10-07 15:15:47 +02:00
else
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer2SentOutPkmn ;
2017-10-07 15:15:47 +02:00
}
else
{
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn2 ;
2017-10-07 15:15:47 +02:00
}
}
}
break ;
case STRINGID_USEDMOVE : // pokemon used a move msg
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 ;
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-07-15 18:53:43 +02:00
static const u8 * BattleStringGetTrainerName ( u16 trainerId , u8 * text , u8 multiplierId )
{
const u8 * toCpy ;
if ( gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE )
{
u32 i ;
for ( i = 0 ; i < ARRAY_COUNT ( gBattleResources - > secretBase - > trainerName ) ; i + + )
text [ i ] = gBattleResources - > secretBase - > trainerName [ i ] ;
text [ i ] = EOS ;
ConvertInternationalString ( text , gBattleResources - > secretBase - > language ) ;
toCpy = text ;
}
else if ( trainerId = = TRAINER_OPPONENT_C00 )
{
toCpy = gLinkPlayers [ multiplierId ^ BIT_SIDE ] . name ;
}
else if ( trainerId = = TRAINER_FRONTIER_BRAIN )
{
CopyFrontierBrainTrainerName ( text ) ;
toCpy = text ;
}
else if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
GetFrontierTrainerName ( text , trainerId ) ;
toCpy = text ;
}
else if ( gBattleTypeFlags & BATTLE_TYPE_x4000000 )
{
sub_81D5554 ( text , trainerId ) ;
toCpy = text ;
}
else if ( gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER )
{
GetEreaderTrainerName ( text ) ;
toCpy = text ;
}
else
{
toCpy = gTrainers [ trainerId ] . trainerName ;
}
return toCpy ;
}
static const u8 * BattleStringGetTrainerClass ( u16 trainerId )
{
const u8 * toCpy ;
if ( gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE )
toCpy = gTrainerClassNames [ GetSecretBaseTrainerClass ( ) ] ;
else if ( trainerId = = TRAINER_OPPONENT_C00 )
toCpy = gTrainerClassNames [ sub_8068BB0 ( ) ] ;
else if ( trainerId = = TRAINER_FRONTIER_BRAIN )
toCpy = gTrainerClassNames [ GetFrontierBrainTrainerClass ( ) ] ;
else if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
toCpy = gTrainerClassNames [ GetFrontierOpponentClass ( trainerId ) ] ;
else if ( gBattleTypeFlags & BATTLE_TYPE_x4000000 )
toCpy = gTrainerClassNames [ sub_81D5530 ( trainerId ) ] ;
else if ( gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER )
toCpy = gTrainerClassNames [ GetEreaderTrainerClassId ( ) ] ;
else
toCpy = gTrainerClassNames [ gTrainers [ trainerId ] . trainerClass ] ;
return toCpy ;
}
2018-03-01 00:59:52 +01:00
u32 BattleStringExpandPlaceholders ( const u8 * src , u8 * dst )
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 ] ;
u8 multiplayerID ;
s32 i ;
if ( gBattleTypeFlags & BATTLE_TYPE_x2000000 )
multiplayerID = gUnknown_0203C7B4 ;
else
multiplayerID = GetMultiplayerId ( ) ;
while ( * src ! = EOS )
{
2018-07-15 18:53:43 +02:00
toCpy = NULL ;
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-02-06 20:48:02 +01:00
GetMonData ( & gPlayerParty [ gBattlerPartyIndexes [ gLinkPlayers [ multiplayerID ] . lp_field_18 ] ] ,
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-02-06 20:48:02 +01:00
GetMonData ( & gEnemyParty [ gBattlerPartyIndexes [ gLinkPlayers [ multiplayerID ] . lp_field_18 ^ 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-02-06 20:48:02 +01:00
GetMonData ( & gPlayerParty [ gBattlerPartyIndexes [ gLinkPlayers [ multiplayerID ] . lp_field_18 ^ 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-02-06 20:48:02 +01:00
GetMonData ( & gEnemyParty [ gBattlerPartyIndexes [ gLinkPlayers [ multiplayerID ] . lp_field_18 ^ 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-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-02-08 12:13:29 +01:00
if ( gLinkPlayers [ gBattleScripting . multiplayerId ] . lp_field_18 = = 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-07-15 18:53:43 +02:00
toCpy = BattleStringGetTrainerClass ( gTrainerBattleOpponent_A ) ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_TRAINER1_NAME : // trainer1 name
2018-07-15 18:53:43 +02:00
toCpy = BattleStringGetTrainerName ( gTrainerBattleOpponent_A , text , multiplayerID ) ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_1E : // link player name?
toCpy = gLinkPlayers [ multiplayerID ] . name ;
break ;
case B_TXT_1F : // link partner name?
2018-02-06 20:48:02 +01:00
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( 2 ^ gLinkPlayers [ multiplayerID ] . lp_field_18 ) ] . name ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_20 : // link opponent 1 name?
2018-02-06 20:48:02 +01:00
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( 1 ^ gLinkPlayers [ multiplayerID ] . lp_field_18 ) ] . name ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_21 : // link opponent 2 name?
2018-02-06 20:48:02 +01:00
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( 3 ^ gLinkPlayers [ multiplayerID ] . lp_field_18 ) ] . name ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_22 : // 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
if ( gBattleTypeFlags & BATTLE_TYPE_RECORDED )
toCpy = gLinkPlayers [ 0 ] . name ;
else
toCpy = gSaveBlock2Ptr - > playerName ;
break ;
case B_TXT_TRAINER1_LOSE_TEXT : // trainerA lose text
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
sub_81A36D0 ( 2 , gTrainerBattleOpponent_A ) ;
toCpy = gStringVar4 ;
}
else if ( gBattleTypeFlags & BATTLE_TYPE_x4000000 )
{
sub_81D572C ( 4 , gTrainerBattleOpponent_A ) ;
toCpy = gStringVar4 ;
}
else
{
2017-12-01 21:25:13 +01:00
toCpy = GetTrainerALoseText ( ) ;
2017-10-07 19:59:41 +02:00
}
break ;
case B_TXT_TRAINER1_WIN_TEXT : // trainerA win text
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
sub_81A36D0 ( 1 , gTrainerBattleOpponent_A ) ;
toCpy = gStringVar4 ;
}
else if ( gBattleTypeFlags & BATTLE_TYPE_x4000000 )
{
sub_81D572C ( 3 , gTrainerBattleOpponent_A ) ;
toCpy = gStringVar4 ;
}
break ;
case B_TXT_26 : // ?
2018-07-15 18:53:43 +02:00
HANDLE_NICKNAME_STRING_CASE ( gBattleScripting . battler , * ( & gBattleStruct - > field_52 ) ) ;
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-07-15 18:53:43 +02:00
toCpy = BattleStringGetTrainerClass ( gTrainerBattleOpponent_B ) ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_TRAINER2_NAME :
2018-07-15 18:53:43 +02:00
toCpy = BattleStringGetTrainerName ( gTrainerBattleOpponent_B , text , multiplayerID ) ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_TRAINER2_LOSE_TEXT :
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
sub_81A36D0 ( 2 , gTrainerBattleOpponent_B ) ;
toCpy = gStringVar4 ;
}
else if ( gBattleTypeFlags & BATTLE_TYPE_x4000000 )
{
sub_81D572C ( 4 , gTrainerBattleOpponent_B ) ;
toCpy = gStringVar4 ;
}
else
{
2017-12-01 21:25:13 +01:00
toCpy = GetTrainerBLoseText ( ) ;
2017-10-07 19:59:41 +02:00
}
break ;
case B_TXT_TRAINER2_WIN_TEXT :
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
sub_81A36D0 ( 1 , gTrainerBattleOpponent_B ) ;
toCpy = gStringVar4 ;
}
else if ( gBattleTypeFlags & BATTLE_TYPE_x4000000 )
{
sub_81D572C ( 3 , gTrainerBattleOpponent_B ) ;
toCpy = gStringVar4 ;
}
break ;
case B_TXT_PARTNER_CLASS :
toCpy = gTrainerClassNames [ GetFrontierOpponentClass ( gPartnerTrainerId ) ] ;
break ;
case B_TXT_PARTNER_NAME :
GetFrontierTrainerName ( text , gPartnerTrainerId ) ;
toCpy = text ;
break ;
2018-07-15 18:53:43 +02:00
case B_TXT_ATK_TRAINER_NAME :
switch ( GetBattlerPosition ( gBattlerAttacker ) )
{
case B_POSITION_PLAYER_LEFT :
toCpy = gSaveBlock2Ptr - > playerName ;
break ;
case B_POSITION_PLAYER_RIGHT :
if ( gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER )
{
GetFrontierTrainerName ( text , gPartnerTrainerId ) ;
toCpy = text ;
}
else
{
toCpy = gSaveBlock2Ptr - > playerName ;
}
break ;
case B_POSITION_OPPONENT_LEFT :
toCpy = BattleStringGetTrainerName ( gTrainerBattleOpponent_A , text , multiplayerID ) ;
break ;
case B_POSITION_OPPONENT_RIGHT :
if ( gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS )
toCpy = BattleStringGetTrainerName ( gTrainerBattleOpponent_B , text , multiplayerID ) ;
else
toCpy = BattleStringGetTrainerName ( gTrainerBattleOpponent_A , text , multiplayerID ) ;
break ;
}
break ;
case B_TXT_ATK_TRAINER_CLASS :
switch ( GetBattlerPosition ( gBattlerAttacker ) )
{
case B_POSITION_PLAYER_RIGHT :
if ( gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER )
toCpy = gTrainerClassNames [ GetFrontierOpponentClass ( gPartnerTrainerId ) ] ;
break ;
case B_POSITION_OPPONENT_LEFT :
toCpy = BattleStringGetTrainerClass ( gTrainerBattleOpponent_A ) ;
break ;
case B_POSITION_OPPONENT_RIGHT :
if ( gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS )
toCpy = BattleStringGetTrainerClass ( gTrainerBattleOpponent_B ) ;
else
toCpy = BattleStringGetTrainerClass ( gTrainerBattleOpponent_A ) ;
break ;
}
break ;
2018-07-21 12:56:07 +02:00
case B_TXT_ATK_TEAM :
if ( GetBattlerSide ( gBattlerAttacker ) = = B_SIDE_PLAYER )
toCpy = sText_YourTeam ;
else
toCpy = sText_OpposingTeam ;
break ;
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-02-08 12:13:29 +01:00
if ( gLinkPlayers [ gBattleScripting . multiplayerId ] . lp_field_18 = = 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 ;
while ( counter ! = 4 )
{
2018-06-30 14:12:17 +02:00
if ( sGrammarMoveUsedTable [ i ] = = 0 )
2017-10-08 14:54:51 +02:00
counter + + ;
2018-06-30 15:35:54 +02:00
if ( sGrammarMoveUsedTable [ i + + ] = = gBattleMsgDataPtr - > currentMove )
2017-10-08 14:54:51 +02:00
break ;
}
if ( counter > = 0 )
{
if ( counter < = 2 )
2018-02-28 23:50:25 +01:00
StringCopy ( textBuff , sText_SpaceIs ) ; // is
2017-10-08 14:54:51 +02:00
else if ( counter < = 4 )
2018-07-24 20:13:02 +02:00
StringCopy ( textBuff , sText_ApostropheS ) ; // ’ s
2017-10-08 14:54:51 +02:00
}
}
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-07-24 20:13:02 +02: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-07-24 20:13:02 +02:00
// "<NAME>’ s <ATTACK> attack!".
2018-06-30 14:12:17 +02:00
static void ChooseTypeOfMoveUsedString ( u8 * dst )
2017-10-08 14:54:51 +02:00
{
s32 counter = 0 ;
s32 i = 0 ;
while ( * dst ! = EOS )
dst + + ;
while ( counter ! = 4 )
{
2018-06-30 14:12:17 +02:00
if ( sGrammarMoveUsedTable [ i ] = = MOVE_NONE )
2017-10-08 14:54:51 +02:00
counter + + ;
2018-06-30 15:35:54 +02:00
if ( sGrammarMoveUsedTable [ i + + ] = = gBattleMsgDataPtr - > currentMove )
2017-10-08 14:54:51 +02:00
break ;
}
switch ( counter )
{
case 0 :
2018-02-28 23:50:25 +01:00
StringCopy ( dst , sText_ExclamationMark ) ;
2017-10-08 14:54:51 +02:00
break ;
case 1 :
2018-02-28 23:50:25 +01:00
StringCopy ( dst , sText_ExclamationMark2 ) ;
2017-10-08 14:54:51 +02:00
break ;
case 2 :
2018-02-28 23:50:25 +01:00
StringCopy ( dst , sText_ExclamationMark3 ) ;
2017-10-08 14:54:51 +02:00
break ;
case 3 :
2018-02-28 23:50:25 +01:00
StringCopy ( dst , sText_ExclamationMark4 ) ;
2017-10-08 14:54:51 +02:00
break ;
case 4 :
2018-02-28 23:50:25 +01:00
StringCopy ( dst , sText_ExclamationMark5 ) ;
2017-10-08 14:54:51 +02:00
break ;
}
}
2018-06-17 16:48:58 +02:00
void BattlePutTextOnWindow ( const u8 * text , u8 windowId )
2017-10-08 14:54:51 +02:00
{
2018-06-17 16:48:58 +02:00
const struct BattleWindowText * textInfo = sBattleTextOnWindowsInfo [ gBattleScripting . windowsType ] ;
2018-07-16 20:47:30 +02:00
bool32 copyToVram ;
2017-10-08 14:54:51 +02:00
struct TextSubPrinter textSubPrinter ;
u8 speed ;
2018-06-17 16:48:58 +02:00
if ( windowId & 0x80 )
2017-10-08 14:54:51 +02:00
{
2018-06-17 16:48:58 +02:00
windowId & = ~ ( 0x80 ) ;
2018-07-16 20:47:30 +02:00
copyToVram = FALSE ;
2017-10-08 14:54:51 +02:00
}
else
{
2018-06-17 16:48:58 +02:00
FillWindowPixelBuffer ( windowId , textInfo [ windowId ] . fillValue ) ;
2018-07-16 20:47:30 +02:00
copyToVram = TRUE ;
2017-10-08 14:54:51 +02:00
}
textSubPrinter . current_text_offset = text ;
2018-06-17 16:48:58 +02:00
textSubPrinter . windowId = windowId ;
textSubPrinter . fontId = textInfo [ windowId ] . fontId ;
textSubPrinter . x = textInfo [ windowId ] . x ;
textSubPrinter . y = textInfo [ windowId ] . y ;
2017-10-08 14:54:51 +02:00
textSubPrinter . currentX = textSubPrinter . x ;
textSubPrinter . currentY = textSubPrinter . y ;
2018-06-17 16:48:58 +02:00
textSubPrinter . letterSpacing = textInfo [ windowId ] . letterSpacing ;
textSubPrinter . lineSpacing = textInfo [ windowId ] . lineSpacing ;
2017-10-08 14:54:51 +02:00
textSubPrinter . fontColor_l = 0 ;
2018-06-17 16:48:58 +02:00
textSubPrinter . fgColor = textInfo [ windowId ] . fgColor ;
textSubPrinter . bgColor = textInfo [ windowId ] . bgColor ;
textSubPrinter . shadowColor = textInfo [ windowId ] . shadowColor ;
2017-10-08 14:54:51 +02:00
if ( textSubPrinter . x = = 0xFF )
{
2018-06-17 16:48:58 +02:00
u32 width = sub_80397C4 ( gBattleScripting . windowsType , windowId ) ;
s32 alignX = GetStringCenterAlignXOffsetWithLetterSpacing ( textSubPrinter . fontId , textSubPrinter . current_text_offset , width , textSubPrinter . letterSpacing ) ;
textSubPrinter . x = textSubPrinter . currentX = alignX ;
2017-10-08 14:54:51 +02:00
}
2018-06-17 16:48:58 +02:00
if ( windowId = = 0x16 )
2017-10-08 14:54:51 +02:00
gTextFlags . flag_1 = 0 ;
else
gTextFlags . flag_1 = 1 ;
if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED ) )
gTextFlags . flag_2 = 1 ;
else
gTextFlags . flag_2 = 0 ;
2018-06-17 16:48:58 +02:00
if ( windowId = = 0 | | windowId = = 0x16 )
2017-10-08 14:54:51 +02:00
{
if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 ) )
speed = 1 ;
else if ( gBattleTypeFlags & BATTLE_TYPE_RECORDED )
2017-11-13 18:07:23 +01:00
speed = sRecordedBattleTextSpeeds [ GetTextSpeedInRecordedBattle ( ) ] ;
2017-10-08 14:54:51 +02:00
else
2017-11-18 16:11:34 +01:00
speed = GetPlayerTextSpeed ( ) ;
2017-10-08 14:54:51 +02:00
gTextFlags . flag_0 = 1 ;
}
else
{
2018-06-17 16:48:58 +02:00
speed = textInfo [ windowId ] . speed ;
2017-10-08 14:54:51 +02:00
gTextFlags . flag_0 = 0 ;
}
AddTextPrinter ( & textSubPrinter , speed , NULL ) ;
2018-07-16 20:47:30 +02:00
if ( copyToVram )
2017-10-08 14:54:51 +02:00
{
2018-06-17 16:48:58 +02:00
PutWindowTilemap ( windowId ) ;
CopyWindowToVram ( windowId , 3 ) ;
2017-10-08 14:54:51 +02:00
}
}
void SetPpNumbersPaletteInMoveSelection ( void )
{
2018-02-06 02:46:59 +01:00
struct ChooseMoveStruct * chooseMoveStruct = ( struct ChooseMoveStruct * ) ( & gBattleBufferA [ gActiveBattler ] [ 4 ] ) ;
2017-10-08 14:54:51 +02:00
const u16 * palPtr = gUnknown_08D85620 ;
2018-02-06 02:46:59 +01:00
u8 var = GetCurrentPpToMaxPpState ( chooseMoveStruct - > currentPp [ gMoveSelectionCursor [ gActiveBattler ] ] ,
chooseMoveStruct - > maxPp [ gMoveSelectionCursor [ gActiveBattler ] ] ) ;
2017-10-08 14:54:51 +02:00
gPlttBufferUnfaded [ 92 ] = palPtr [ ( var * 2 ) + 0 ] ;
gPlttBufferUnfaded [ 91 ] = palPtr [ ( var * 2 ) + 1 ] ;
CpuCopy16 ( & gPlttBufferUnfaded [ 92 ] , & gPlttBufferFaded [ 92 ] , sizeof ( u16 ) ) ;
CpuCopy16 ( & gPlttBufferUnfaded [ 91 ] , & gPlttBufferFaded [ 91 ] , sizeof ( u16 ) ) ;
}
u8 GetCurrentPpToMaxPpState ( u8 currentPp , u8 maxPp )
{
if ( maxPp = = currentPp )
{
return 3 ;
}
else if ( maxPp < = 2 )
{
if ( currentPp > 1 )
return 3 ;
else
return 2 - currentPp ;
}
else if ( maxPp < = 7 )
{
if ( currentPp > 2 )
return 3 ;
else
return 2 - currentPp ;
}
else
{
if ( currentPp = = 0 )
return 2 ;
if ( currentPp < = maxPp / 4 )
return 1 ;
if ( currentPp > maxPp / 2 )
return 3 ;
}
return 0 ;
}