2017-10-07 15:15:47 +02:00
# include "global.h"
# include "battle.h"
2019-03-31 19:15:39 +02:00
# include "battle_anim.h"
2018-11-22 02:10:50 +01:00
# include "battle_controllers.h"
2017-10-07 15:15:47 +02:00
# include "battle_message.h"
2018-11-22 02:10:50 +01:00
# include "battle_setup.h"
# include "battle_tower.h"
2019-04-04 23:53:06 +02:00
# include "data.h"
2017-10-07 19:59:41 +02:00
# include "event_data.h"
2018-11-22 02:10:50 +01:00
# include "frontier_util.h"
# include "international_string_util.h"
2017-10-07 19:59:41 +02:00
# include "item.h"
2018-11-22 02:10:50 +01:00
# include "link.h"
2018-02-09 01:09:02 +01:00
# include "menu.h"
2018-11-22 02:10:50 +01:00
# include "palette.h"
2018-02-09 01:09:02 +01:00
# include "recorded_battle.h"
2018-11-22 02:10:50 +01:00
# include "string_util.h"
2018-12-24 00:02:29 +01:00
# include "strings.h"
2018-11-22 02:10:50 +01:00
# include "text.h"
2019-01-13 20:50:08 +01:00
# include "trainer_hill.h"
2018-11-22 02:10:50 +01:00
# include "window.h"
2020-07-21 19:29:51 +02:00
# include "constants/battle_dome.h"
2018-11-22 02:10:50 +01:00
# include "constants/battle_string_ids.h"
2020-07-21 19:29:51 +02:00
# include "constants/berry.h"
2019-11-10 02:40:25 +01:00
# include "constants/frontier_util.h"
2018-11-22 02:10:50 +01:00
# include "constants/items.h"
# include "constants/moves.h"
# include "constants/trainers.h"
2019-11-13 22:10:05 +01:00
# include "constants/trainer_hill.h"
2020-07-21 19:29:51 +02:00
# include "constants/weather.h"
2017-10-07 15:15:47 +02:00
2018-06-17 16:48:58 +02:00
struct BattleWindowText
{
u8 fillValue ;
u8 fontId ;
u8 x ;
u8 y ;
u8 letterSpacing ;
u8 lineSpacing ;
u8 speed ;
u8 fgColor ;
u8 bgColor ;
u8 shadowColor ;
} ;
2017-10-08 14:54:51 +02:00
extern const u16 gUnknown_08D85620 [ ] ;
2017-10-07 15:15:47 +02:00
// this file's functions
2018-06-30 14:12:17 +02:00
static void ChooseMoveUsedParticle ( u8 * textPtr ) ;
static void ChooseTypeOfMoveUsedString ( u8 * dst ) ;
2017-10-07 19:59:41 +02:00
static void ExpandBattleTextBuffPlaceholders ( const u8 * src , u8 * dst ) ;
2017-10-07 15:15:47 +02:00
2018-06-30 15:35:54 +02:00
// EWRAM vars
static EWRAM_DATA u8 sBattlerAbilities [ MAX_BATTLERS_COUNT ] = { 0 } ;
EWRAM_DATA struct BattleMsgData * gBattleMsgDataPtr = NULL ;
2017-10-07 15:15:47 +02:00
// const rom data
2017-10-08 14:54:51 +02:00
// todo: make some of those names less vague: attacker/target vs pkmn, etc.
2017-10-07 15:15:47 +02:00
2018-02-28 23:50:25 +01:00
static const u8 sText_Trainer1LoseText [ ] = _ ( " {B_TRAINER1_LOSE_TEXT} " ) ;
static const u8 sText_PkmnGainedEXP [ ] = _ ( " {B_BUFF1} gained{B_BUFF2} \n {B_BUFF3} EXP. Points! \ p " ) ;
static const u8 sText_EmptyString4 [ ] = _ ( " " ) ;
static const u8 sText_ABoosted [ ] = _ ( " a boosted " ) ;
2020-05-27 01:37:46 +02:00
static const u8 sText_PkmnGrewToLv [ ] = _ ( " {B_BUFF1} grew to \n LV. {B_BUFF2}!{WAIT_SE} \ p " ) ;
static const u8 sText_PkmnLearnedMove [ ] = _ ( " {B_BUFF1} learned \n {B_BUFF2}!{WAIT_SE} \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_TryToLearnMove1 [ ] = _ ( " {B_BUFF1} is trying to \n learn {B_BUFF2}. \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_TryToLearnMove2 [ ] = _ ( " But, {B_BUFF1} can't learn \n more than four moves. \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_TryToLearnMove3 [ ] = _ ( " Delete a move to make \n room for {B_BUFF2}? " ) ;
static const u8 sText_PkmnForgotMove [ ] = _ ( " {B_BUFF1} forgot \n {B_BUFF2}. \ p " ) ;
static const u8 sText_StopLearningMove [ ] = _ ( " {PAUSE 32}Stop learning \n {B_BUFF2}? " ) ;
static const u8 sText_DidNotLearnMove [ ] = _ ( " {B_BUFF1} did not learn \n {B_BUFF2}. \ p " ) ;
static const u8 sText_UseNextPkmn [ ] = _ ( " Use next POKéMON? " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_AttackMissed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s \n attack missed! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnProtectedItself [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} \n protected itself! " ) ;
static const u8 sText_AvoidedDamage [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} avoided \n damage with {B_DEF_ABILITY}! " ) ;
static const u8 sText_PkmnMakesGroundMiss [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} makes GROUND \n moves miss with {B_DEF_ABILITY}! " ) ;
static const u8 sText_PkmnAvoidedAttack [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} avoided \n the attack! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_ItDoesntAffect [ ] = _ ( " It doesn't affect \n {B_DEF_NAME_WITH_PREFIX}… " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_AttackerFainted [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} \n fainted! \ p " ) ;
static const u8 sText_TargetFainted [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} \n fainted! \ p " ) ;
static const u8 sText_PlayerGotMoney [ ] = _ ( " {B_PLAYER_NAME} got ¥{B_BUFF1} \n for winning! \ p " ) ;
static const u8 sText_PlayerWhiteout [ ] = _ ( " {B_PLAYER_NAME} is out of \n usable POKéMON! \ p " ) ;
static const u8 sText_PlayerWhiteout2 [ ] = _ ( " {B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS} " ) ;
static const u8 sText_PreventsEscape [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents \n escape with {B_SCR_ACTIVE_ABILITY}! \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_CantEscape2 [ ] = _ ( " Can't escape! \ p " ) ;
static const u8 sText_AttackerCantEscape [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} can't escape! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_HitXTimes [ ] = _ ( " Hit {B_BUFF1} time(s)! " ) ;
static const u8 sText_PkmnFellAsleep [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} \n fell asleep! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnMadeSleep [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n made {B_EFF_NAME_WITH_PREFIX} sleep! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnAlreadyAsleep [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} is \n already asleep! " ) ;
static const u8 sText_PkmnAlreadyAsleep2 [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is \n already asleep! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnWasntAffected [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} \n wasn't affected! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWasPoisoned [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} \n was poisoned! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnPoisonedBy [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n poisoned {B_EFF_NAME_WITH_PREFIX}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnHurtByPoison [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is hurt \n by poison! " ) ;
static const u8 sText_PkmnAlreadyPoisoned [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} is already \n poisoned. " ) ;
static const u8 sText_PkmnBadlyPoisoned [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} is badly \n poisoned! " ) ;
static const u8 sText_PkmnEnergyDrained [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} had its \n energy drained! " ) ;
static const u8 sText_PkmnWasBurned [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} was burned! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnBurnedBy [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n burned {B_EFF_NAME_WITH_PREFIX}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnHurtByBurn [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is hurt \n by its burn! " ) ;
static const u8 sText_PkmnAlreadyHasBurn [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} already \n has a burn. " ) ;
static const u8 sText_PkmnWasFrozen [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} was \n frozen solid! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnFrozenBy [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n froze {B_EFF_NAME_WITH_PREFIX} solid! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnIsFrozen [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is \n frozen solid! " ) ;
static const u8 sText_PkmnWasDefrosted [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was \n defrosted! " ) ;
static const u8 sText_PkmnWasDefrosted2 [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} was \n defrosted! " ) ;
static const u8 sText_PkmnWasDefrostedBy [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} was \n defrosted by {B_CURRENT_MOVE}! " ) ;
static const u8 sText_PkmnWasParalyzed [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} is paralyzed! \n It may be unable to move! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnWasParalyzedBy [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n paralyzed {B_EFF_NAME_WITH_PREFIX}! \ lIt may be unable to move! " ) ;
static const u8 sText_PkmnIsParalyzed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is paralyzed! \n It can't move! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnIsAlreadyParalyzed [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} is \n already paralyzed! " ) ;
static const u8 sText_PkmnHealedParalysis [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was \n healed of paralysis! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnDreamEaten [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s \n dream was eaten! " ) ;
static const u8 sText_StatsWontIncrease [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} \n won't go higher! " ) ;
static const u8 sText_StatsWontDecrease [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1} \n won't go lower! " ) ;
static const u8 sText_TeamStoppedWorking [ ] = _ ( " Your team's {B_BUFF1} \n stopped working! " ) ;
static const u8 sText_FoeStoppedWorking [ ] = _ ( " The foe's {B_BUFF1} \n stopped working! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnIsConfused [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is \n confused! " ) ;
static const u8 sText_PkmnHealedConfusion [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} snapped \n out of confusion! " ) ;
static const u8 sText_PkmnWasConfused [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX} became \n confused! " ) ;
static const u8 sText_PkmnAlreadyConfused [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} is \n already confused! " ) ;
static const u8 sText_PkmnFellInLove [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} \n fell in love! " ) ;
static const u8 sText_PkmnInLove [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is in love \n with {B_SCR_ACTIVE_NAME_WITH_PREFIX}! " ) ;
static const u8 sText_PkmnImmobilizedByLove [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is \n immobilized by love! " ) ;
static const u8 sText_PkmnBlownAway [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was \n blown away! " ) ;
static const u8 sText_PkmnChangedType [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} transformed \n into the {B_BUFF1} type! " ) ;
static const u8 sText_PkmnFlinched [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} flinched! " ) ;
static const u8 sText_PkmnRegainedHealth [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} regained \n health! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnHPFull [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s \n HP is full! " ) ;
static const u8 sText_PkmnRaisedSpDef [ ] = _ ( " {B_ATK_PREFIX2}'s {B_CURRENT_MOVE} \n raised SP. DEF! " ) ;
static const u8 sText_PkmnRaisedSpDefALittle [ ] = _ ( " {B_ATK_PREFIX2}'s {B_CURRENT_MOVE} \n raised SP. DEF a little! " ) ;
static const u8 sText_PkmnRaisedDef [ ] = _ ( " {B_ATK_PREFIX2}'s {B_CURRENT_MOVE} \n raised DEFENSE! " ) ;
static const u8 sText_PkmnRaisedDefALittle [ ] = _ ( " {B_ATK_PREFIX2}'s {B_CURRENT_MOVE} \n raised DEFENSE a little! " ) ;
static const u8 sText_PkmnCoveredByVeil [ ] = _ ( " {B_ATK_PREFIX2}'s party is covered \n by a veil! " ) ;
static const u8 sText_PkmnUsedSafeguard [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s party is protected \n by SAFEGUARD! " ) ;
static const u8 sText_PkmnSafeguardExpired [ ] = _ ( " {B_ATK_PREFIX3}'s party is no longer \n protected by SAFEGUARD! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWentToSleep [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} went \n to sleep! " ) ;
static const u8 sText_PkmnSleptHealthy [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} slept and \n became healthy! " ) ;
static const u8 sText_PkmnWhippedWhirlwind [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} whipped \n up a whirlwind! " ) ;
static const u8 sText_PkmnTookSunlight [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} took \n in sunlight! " ) ;
static const u8 sText_PkmnLoweredHead [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} lowered \n its head! " ) ;
static const u8 sText_PkmnIsGlowing [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is glowing! " ) ;
static const u8 sText_PkmnFlewHigh [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} flew \n up high! " ) ;
static const u8 sText_PkmnDugHole [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} dug a hole! " ) ;
static const u8 sText_PkmnHidUnderwater [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} hid \n underwater! " ) ;
static const u8 sText_PkmnSprangUp [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} sprang up! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnSqueezedByBind [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was squeezed by \n {B_ATK_NAME_WITH_PREFIX}'s BIND! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnTrappedInVortex [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was trapped \n in the vortex! " ) ;
static const u8 sText_PkmnTrappedBySandTomb [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was trapped \n by SAND TOMB! " ) ;
static const u8 sText_PkmnWrappedBy [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was WRAPPED by \n {B_ATK_NAME_WITH_PREFIX}! " ) ;
static const u8 sText_PkmnClamped [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} CLAMPED \n {B_DEF_NAME_WITH_PREFIX}! " ) ;
static const u8 sText_PkmnHurtBy [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is hurt \n by {B_BUFF1}! " ) ;
static const u8 sText_PkmnFreedFrom [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} was freed \n from {B_BUFF1}! " ) ;
static const u8 sText_PkmnCrashed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} kept going \n and crashed! " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_PkmnShroudedInMist [ ] = _ ( " {B_ATK_PREFIX2} became \n shrouded in MIST! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnProtectedByMist [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} is protected \n by MIST! " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_PkmnGettingPumped [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is getting \n pumped! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnHitWithRecoil [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is hit \n with recoil! " ) ;
static const u8 sText_PkmnProtectedItself2 [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} protected \n itself! " ) ;
static const u8 sText_PkmnBuffetedBySandstorm [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is buffeted \n by the sandstorm! " ) ;
static const u8 sText_PkmnPeltedByHail [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is pelted \n by HAIL! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnsXWoreOff [ ] = _ ( " {B_ATK_PREFIX1}'s {B_BUFF1} \n wore off! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnSeeded [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was seeded! " ) ;
static const u8 sText_PkmnEvadedAttack [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} evaded \n the attack! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnSappedByLeechSeed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s health is \n sapped by LEECH SEED! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnFastAsleep [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is fast \n asleep. " ) ;
static const u8 sText_PkmnWokeUp [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} woke up! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnUproarKeptAwake [ ] = _ ( " But {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s UPROAR \n kept it awake! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWokeUpInUproar [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} woke up \n in the UPROAR! " ) ;
static const u8 sText_PkmnCausedUproar [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} caused \n an UPROAR! " ) ;
static const u8 sText_PkmnMakingUproar [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is making \n an UPROAR! " ) ;
static const u8 sText_PkmnCalmedDown [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} calmed down. " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnCantSleepInUproar [ ] = _ ( " But {B_DEF_NAME_WITH_PREFIX} can't \n sleep in an UPROAR! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnStockpiled [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} STOCKPILED \n {B_BUFF1}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnCantStockpile [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} can't \n STOCKPILE any more! " ) ;
static const u8 sText_PkmnCantSleepInUproar2 [ ] = _ ( " But {B_DEF_NAME_WITH_PREFIX} can't \n sleep in an UPROAR! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_UproarKeptPkmnAwake [ ] = _ ( " But the UPROAR kept \n {B_DEF_NAME_WITH_PREFIX} awake! " ) ;
static const u8 sText_PkmnStayedAwakeUsing [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} stayed awake \n using its {B_DEF_ABILITY}! " ) ;
static const u8 sText_PkmnStoringEnergy [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is storing \n energy! " ) ;
static const u8 sText_PkmnUnleashedEnergy [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} unleashed \n energy! " ) ;
static const u8 sText_PkmnFatigueConfusion [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} became \n confused due to fatigue! " ) ;
2021-01-11 14:49:31 +01:00
static const u8 sText_PlayerPickedUpMoney [ ] = _ ( " {B_PLAYER_NAME} picked up \n ¥{B_BUFF1}! \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnUnaffected [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} is \n unaffected! " ) ;
static const u8 sText_PkmnTransformedInto [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} transformed \n into {B_BUFF1}! " ) ;
static const u8 sText_PkmnMadeSubstitute [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} made \n a SUBSTITUTE! " ) ;
static const u8 sText_PkmnHasSubstitute [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} already \n has a SUBSTITUTE! " ) ;
static const u8 sText_SubstituteDamaged [ ] = _ ( " The SUBSTITUTE took damage \n for {B_DEF_NAME_WITH_PREFIX}! \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnSubstituteFaded [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s \n SUBSTITUTE faded! \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnMustRecharge [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} must \n recharge! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnRageBuilding [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s RAGE \n is building! " ) ;
static const u8 sText_PkmnMoveWasDisabled [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1} \n was disabled! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnMoveDisabledNoMore [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is disabled \n no more! " ) ;
static const u8 sText_PkmnGotEncore [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} got \n an ENCORE! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnEncoreEnded [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s ENCORE \n ended! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnTookAim [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} took aim \n at {B_DEF_NAME_WITH_PREFIX}! " ) ;
static const u8 sText_PkmnSketchedMove [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} SKETCHED \n {B_BUFF1}! " ) ;
static const u8 sText_PkmnTryingToTakeFoe [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is trying \n to take its foe with it! " ) ;
static const u8 sText_PkmnTookFoe [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} took \n {B_ATK_NAME_WITH_PREFIX} with it! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnReducedPP [ ] = _ ( " Reduced {B_DEF_NAME_WITH_PREFIX}'s \n {B_BUFF1} by {B_BUFF2}! " ) ;
static const u8 sText_PkmnStoleItem [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} stole \n {B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}! " ) ;
static const u8 sText_TargetCantEscapeNow [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} can't \n escape now! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnFellIntoNightmare [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} fell into \n a NIGHTMARE! " ) ;
static const u8 sText_PkmnLockedInNightmare [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is locked \n in a NIGHTMARE! " ) ;
static const u8 sText_PkmnLaidCurse [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} cut its own HP and \n laid a CURSE on {B_DEF_NAME_WITH_PREFIX}! " ) ;
static const u8 sText_PkmnAfflictedByCurse [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is afflicted \n by the CURSE! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_SpikesScattered [ ] = _ ( " SPIKES were scattered all around \n the opponent's side! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnHurtBySpikes [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt \n by SPIKES! " ) ;
static const u8 sText_PkmnIdentified [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} identified \n {B_DEF_NAME_WITH_PREFIX}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnPerishCountFell [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s PERISH count \n fell to {B_BUFF1}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnBracedItself [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} braced \n itself! " ) ;
static const u8 sText_PkmnEnduredHit [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} ENDURED \n the hit! " ) ;
static const u8 sText_MagnitudeStrength [ ] = _ ( " MAGNITUDE {B_BUFF1}! " ) ;
static const u8 sText_PkmnCutHPMaxedAttack [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} cut its own HP \n and maximized ATTACK! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnCopiedStatChanges [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} copied \n {B_DEF_NAME_WITH_PREFIX}'s stat changes! " ) ;
static const u8 sText_PkmnGotFree [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} got free of \n {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnShedLeechSeed [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} shed \n LEECH SEED! " ) ;
static const u8 sText_PkmnBlewAwaySpikes [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} blew away \n SPIKES! " ) ;
static const u8 sText_PkmnFledFromBattle [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} fled from \n battle! " ) ;
static const u8 sText_PkmnForesawAttack [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} foresaw \n an attack! " ) ;
static const u8 sText_PkmnTookAttack [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} took the \n {B_BUFF1} attack! " ) ;
static const u8 sText_PkmnChoseXAsDestiny [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} chose \n {B_CURRENT_MOVE} as its destiny! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnAttack [ ] = _ ( " {B_BUFF1}'s attack! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnCenterAttention [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} became the \n center of attention! " ) ;
static const u8 sText_PkmnChargingPower [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} began \n charging power! " ) ;
static const u8 sText_NaturePowerTurnedInto [ ] = _ ( " NATURE POWER turned into \n {B_CURRENT_MOVE}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnStatusNormal [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s status \n returned to normal! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnSubjectedToTorment [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was subjected \n to TORMENT! " ) ;
static const u8 sText_PkmnTighteningFocus [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is tightening \n its focus! " ) ;
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}. " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnCopiedFoe [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} copied \n {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnMadeWish [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} made a WISH! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnWishCameTrue [ ] = _ ( " {B_BUFF1}'s WISH \n came true! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnPlantedRoots [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} planted its roots! " ) ;
static const u8 sText_PkmnAbsorbedNutrients [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} absorbed \n nutrients with its roots! " ) ;
static const u8 sText_PkmnAnchoredItself [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} anchored \n itself with its roots! " ) ;
static const u8 sText_PkmnWasMadeDrowsy [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} made \n {B_DEF_NAME_WITH_PREFIX} drowsy! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnKnockedOff [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} knocked off \n {B_DEF_NAME_WITH_PREFIX}'s {B_LAST_ITEM}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnSwappedAbilities [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} swapped abilities \n with its opponent! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnSealedOpponentMove [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} sealed the \n opponent's move(s)! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWantsGrudge [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} wants the \n opponent to bear a GRUDGE! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnLostPPGrudge [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} lost \n all its PP due to the GRUDGE! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnShroudedItself [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} shrouded \n itself in {B_CURRENT_MOVE}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnMoveBounced [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE} \n was bounced back by MAGIC COAT! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWaitsForTarget [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} waits for a target \n to make a move! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnSnatchedMove [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} SNATCHED \n {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s move! " ) ;
static const u8 sText_ElectricityWeakened [ ] = _ ( " Electricity's power was \n weakened! " ) ;
static const u8 sText_FireWeakened [ ] = _ ( " Fire's power was \n weakened! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_XFoundOneY [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} found \n one {B_LAST_ITEM}! " ) ;
static const u8 sText_SoothingAroma [ ] = _ ( " A soothing aroma wafted \n through the area! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_ItemsCantBeUsedNow [ ] = _ ( " Items can't be used now.{PAUSE 64} " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_ForXCommaYZ [ ] = _ ( " For {B_SCR_ACTIVE_NAME_WITH_PREFIX}, \n {B_LAST_ITEM} {B_BUFF1} " ) ;
static const u8 sText_PkmnUsedXToGetPumped [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} used \n {B_LAST_ITEM} to get pumped! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnLostFocus [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} lost its \n focus and couldn't move! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWasDraggedOut [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was \n dragged out! \ p " ) ;
static const u8 sText_TheWallShattered [ ] = _ ( " The wall shattered! " ) ;
static const u8 sText_ButNoEffect [ ] = _ ( " But it had no effect! " ) ;
static const u8 sText_PkmnHasNoMovesLeft [ ] = _ ( " {B_ACTIVE_NAME_WITH_PREFIX} has no \n moves left! \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnMoveIsDisabled [ ] = _ ( " {B_ACTIVE_NAME_WITH_PREFIX}'s {B_CURRENT_MOVE} \n is disabled! \ p " ) ;
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! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnProtectedBy [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} was protected \n by {B_DEF_ABILITY}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnPreventsUsage [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n prevents {B_ATK_NAME_WITH_PREFIX} \ lfrom using {B_CURRENT_MOVE}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnRestoredHPUsing [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} restored HP \n using its {B_DEF_ABILITY}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnsXMadeYUseless [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n made {B_CURRENT_MOVE} useless! " ) ;
static const u8 sText_PkmnChangedTypeWith [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n made it the {B_BUFF1} type! " ) ;
static const u8 sText_PkmnPreventsParalysisWith [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n prevents paralysis! " ) ;
static const u8 sText_PkmnPreventsRomanceWith [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n prevents romance! " ) ;
static const u8 sText_PkmnPreventsPoisoningWith [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n prevents poisoning! " ) ;
static const u8 sText_PkmnPreventsConfusionWith [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n prevents confusion! " ) ;
static const u8 sText_PkmnRaisedFirePowerWith [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n raised its FIRE power! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnAnchorsItselfWith [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} anchors \n itself with {B_DEF_ABILITY}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnCutsAttackWith [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n cuts {B_DEF_NAME_WITH_PREFIX}'s ATTACK! " ) ;
static const u8 sText_PkmnPreventsStatLossWith [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n prevents stat loss! " ) ;
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! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_ItSuckedLiquidOoze [ ] = _ ( " It sucked up the \n LIQUID OOZE! " ) ;
static const u8 sText_PkmnTransformed [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnsXTookAttack [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n took the attack! " ) ;
const u8 gText_PkmnsXPreventsSwitching [ ] = _ ( " {B_BUFF1}'s {B_LAST_ABILITY} \n prevents switching! \ p " ) ;
static const u8 sText_PreventedFromWorking [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} \n prevented {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s \ l{B_BUFF1} from working! " ) ;
static const u8 sText_PkmnsXMadeItIneffective [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n made it ineffective! " ) ;
static const u8 sText_PkmnsXPreventsFlinching [ ] = _ ( " {B_EFF_NAME_WITH_PREFIX}'s {B_EFF_ABILITY} \n prevents flinching! " ) ;
static const u8 sText_PkmnsXPreventsYsZ [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_ATK_ABILITY} \n prevents {B_DEF_NAME_WITH_PREFIX}'s \ l{B_DEF_ABILITY} from working! " ) ;
static const u8 sText_PkmnsXCuredItsYProblem [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n cured its {B_BUFF1} problem! " ) ;
static const u8 sText_PkmnsXHadNoEffectOnY [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_SCR_ACTIVE_ABILITY} \n had no effect on {B_EFF_NAME_WITH_PREFIX}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_StatSharply [ ] = _ ( " sharply " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_StatRose [ ] = _ ( " rose! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_StatHarshly [ ] = _ ( " harshly " ) ;
static const u8 sText_StatFell [ ] = _ ( " fell! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnsStatChanged [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} \n {B_BUFF2} " ) ;
const u8 gText_PkmnsStatChanged2 [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1} \n {B_BUFF2} " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_UsingXTheYOfZN [ ] = _ ( " Using {B_LAST_ITEM}, the {B_BUFF1} \n of {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2} " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnsStatChanged3 [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} \n {B_BUFF2} " ) ;
static const u8 sText_PkmnsStatChanged4 [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1} \n {B_BUFF2} " ) ;
static const u8 sText_StatsWontIncrease2 [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX}'s stats won't \n go any higher! " ) ;
static const u8 sText_StatsWontDecrease2 [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX}'s stats won't \n go any lower! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_CriticalHit [ ] = _ ( " A critical hit! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_OneHitKO [ ] = _ ( " It's a one-hit KO! " ) ;
2020-08-21 00:02:00 +02:00
static const u8 sText_123Poof [ ] = _ ( " {PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE SE_BALL_BOUNCE_1}Poof! \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_AndEllipsis [ ] = _ ( " And… \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_HMMovesCantBeForgotten [ ] = _ ( " HM moves can't be \n forgotten now. \ p " ) ;
static const u8 sText_NotVeryEffective [ ] = _ ( " It's not very effective… " ) ;
static const u8 sText_SuperEffective [ ] = _ ( " It's super effective! " ) ;
2020-08-21 00:02:00 +02:00
static const u8 sText_GotAwaySafely [ ] = _ ( " {PLAY_SE SE_FLEE}Got away safely! \ p " ) ;
static const u8 sText_PkmnFledUsingIts [ ] = _ ( " {PLAY_SE SE_FLEE}{B_ATK_NAME_WITH_PREFIX} fled \n using its {B_LAST_ITEM}! \ p " ) ;
static const u8 sText_PkmnFledUsing [ ] = _ ( " {PLAY_SE SE_FLEE}{B_ATK_NAME_WITH_PREFIX} fled \n using {B_ATK_ABILITY}! \ p " ) ;
static const u8 sText_WildPkmnFled [ ] = _ ( " {PLAY_SE SE_FLEE}Wild {B_BUFF1} fled! " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_PlayerDefeatedLinkTrainer [ ] = _ ( " Player defeated \n {B_LINK_OPPONENT1_NAME}! " ) ;
static const u8 sText_TwoLinkTrainersDefeated [ ] = _ ( " Player beat {B_LINK_OPPONENT1_NAME} \n and {B_LINK_OPPONENT2_NAME}! " ) ;
static const u8 sText_PlayerLostAgainstLinkTrainer [ ] = _ ( " Player lost against \n {B_LINK_OPPONENT1_NAME}! " ) ;
static const u8 sText_PlayerLostToTwo [ ] = _ ( " Player lost to {B_LINK_OPPONENT1_NAME} \n and {B_LINK_OPPONENT2_NAME}! " ) ;
static const u8 sText_PlayerBattledToDrawLinkTrainer [ ] = _ ( " Player battled to a draw against \n {B_LINK_OPPONENT1_NAME}! " ) ;
static const u8 sText_PlayerBattledToDrawVsTwo [ ] = _ ( " Player battled to a draw against \n {B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}! " ) ;
2020-08-21 00:02:00 +02:00
static const u8 sText_WildFled [ ] = _ ( " {PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME} fled! " ) ;
static const u8 sText_TwoWildFled [ ] = _ ( " {PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME} and \n {B_LINK_OPPONENT2_NAME} fled! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_NoRunningFromTrainers [ ] = _ ( " No! There's no running \n from a TRAINER battle! \ p " ) ;
static const u8 sText_CantEscape [ ] = _ ( " Can't escape! \ p " ) ;
static const u8 sText_DontLeaveBirch [ ] = _ ( " PROF. BIRCH: Don't leave me like this! \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_ButNothingHappened [ ] = _ ( " But nothing happened! " ) ;
static const u8 sText_ButItFailed [ ] = _ ( " But it failed! " ) ;
static const u8 sText_ItHurtConfusion [ ] = _ ( " It hurt itself in its \n confusion! " ) ;
static const u8 sText_MirrorMoveFailed [ ] = _ ( " The MIRROR MOVE failed! " ) ;
static const u8 sText_StartedToRain [ ] = _ ( " It started to rain! " ) ;
2021-01-10 23:26:00 +01:00
static const u8 sText_DownpourStarted [ ] = _ ( " A downpour started! " ) ; // corresponds to DownpourText in pokegold and pokecrystal and is used by Rain Dance in GSC
2018-02-28 23:50:25 +01:00
static const u8 sText_RainContinues [ ] = _ ( " Rain continues to fall. " ) ;
2021-01-10 23:26:00 +01:00
static const u8 sText_DownpourContinues [ ] = _ ( " The downpour continues. " ) ; // unused
2018-02-28 23:50:25 +01:00
static const u8 sText_RainStopped [ ] = _ ( " The rain stopped. " ) ;
static const u8 sText_SandstormBrewed [ ] = _ ( " A sandstorm brewed! " ) ;
static const u8 sText_SandstormRages [ ] = _ ( " The sandstorm rages. " ) ;
static const u8 sText_SandstormSubsided [ ] = _ ( " The sandstorm subsided. " ) ;
static const u8 sText_SunlightGotBright [ ] = _ ( " The sunlight got bright! " ) ;
static const u8 sText_SunlightStrong [ ] = _ ( " The sunlight is strong. " ) ;
static const u8 sText_SunlightFaded [ ] = _ ( " The sunlight faded. " ) ;
static const u8 sText_StartedHail [ ] = _ ( " It started to hail! " ) ;
static const u8 sText_HailContinues [ ] = _ ( " Hail continues to fall. " ) ;
static const u8 sText_HailStopped [ ] = _ ( " The hail stopped. " ) ;
static const u8 sText_FailedToSpitUp [ ] = _ ( " But it failed to SPIT UP \n a thing! " ) ;
static const u8 sText_FailedToSwallow [ ] = _ ( " But it failed to SWALLOW \n a thing! " ) ;
static const u8 sText_WindBecameHeatWave [ ] = _ ( " The wind turned into a \n HEAT WAVE! " ) ;
static const u8 sText_StatChangesGone [ ] = _ ( " All stat changes were \n eliminated! " ) ;
static const u8 sText_CoinsScattered [ ] = _ ( " Coins scattered everywhere! " ) ;
static const u8 sText_TooWeakForSubstitute [ ] = _ ( " It was too weak to make \n a SUBSTITUTE! " ) ;
static const u8 sText_SharedPain [ ] = _ ( " The battlers shared \n their pain! " ) ;
static const u8 sText_BellChimed [ ] = _ ( " A bell chimed! " ) ;
static const u8 sText_FaintInThree [ ] = _ ( " All affected POKéMON will \n faint in three turns! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_NoPPLeft [ ] = _ ( " There's no PP left for \n this move! \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_ButNoPPLeft [ ] = _ ( " But there was no PP left \n for the move! " ) ;
static const u8 sText_PkmnIgnoresAsleep [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} ignored \n orders while asleep! " ) ;
static const u8 sText_PkmnIgnoredOrders [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} ignored \n orders! " ) ;
static const u8 sText_PkmnBeganToNap [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} began to nap! " ) ;
static const u8 sText_PkmnLoafing [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} is \n loafing around! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnWontObey [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} won't \n obey! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnTurnedAway [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} turned away! " ) ;
static const u8 sText_PkmnPretendNotNotice [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} pretended \n not to notice! " ) ;
static const u8 sText_EnemyAboutToSwitchPkmn [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} is \n about to use {B_BUFF2}. \ pWill {B_PLAYER_NAME} change \n POKéMON? " ) ;
static const u8 sText_PkmnLearnedMove2 [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} learned \n {B_BUFF1}! " ) ;
static const u8 sText_PlayerDefeatedLinkTrainerTrainer1 [ ] = _ ( " Player defeated \n {B_TRAINER1_CLASS} {B_TRAINER1_NAME}! \ p " ) ;
static const u8 sText_CreptCloser [ ] = _ ( " {B_PLAYER_NAME} crept closer to \n {B_OPPONENT_MON1_NAME}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_CantGetCloser [ ] = _ ( " {B_PLAYER_NAME} can't get any closer! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnWatchingCarefully [ ] = _ ( " {B_OPPONENT_MON1_NAME} is watching \n carefully! " ) ;
static const u8 sText_PkmnCuriousAboutX [ ] = _ ( " {B_OPPONENT_MON1_NAME} is curious about \n the {B_BUFF1}! " ) ;
static const u8 sText_PkmnEnthralledByX [ ] = _ ( " {B_OPPONENT_MON1_NAME} is enthralled by \n the {B_BUFF1}! " ) ;
static const u8 sText_PkmnIgnoredX [ ] = _ ( " {B_OPPONENT_MON1_NAME} completely ignored \n the {B_BUFF1}! " ) ;
static const u8 sText_ThrewPokeblockAtPkmn [ ] = _ ( " {B_PLAYER_NAME} threw a {POKEBLOCK} \n at the {B_OPPONENT_MON1_NAME}! " ) ;
2020-08-21 00:02:00 +02:00
static const u8 sText_OutOfSafariBalls [ ] = _ ( " {PLAY_SE SE_DING_DONG}ANNOUNCER: You're out of \n SAFARI BALLS! Game over! \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_OpponentMon1Appeared [ ] = _ ( " {B_OPPONENT_MON1_NAME} appeared! \ p " ) ;
static const u8 sText_WildPkmnAppeared [ ] = _ ( " Wild {B_OPPONENT_MON1_NAME} appeared! \ p " ) ;
static const u8 sText_WildPkmnAppeared2 [ ] = _ ( " Wild {B_OPPONENT_MON1_NAME} appeared! \ p " ) ;
static const u8 sText_WildPkmnAppearedPause [ ] = _ ( " Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127} " ) ;
static const u8 sText_TwoWildPkmnAppeared [ ] = _ ( " Wild {B_OPPONENT_MON1_NAME} and \n {B_OPPONENT_MON2_NAME} appeared! \ p " ) ;
static const u8 sText_Trainer1WantsToBattle [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} \n would like to battle! \ p " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_LinkTrainerWantsToBattle [ ] = _ ( " {B_LINK_OPPONENT1_NAME} \n wants to battle! " ) ;
static const u8 sText_TwoLinkTrainersWantToBattle [ ] = _ ( " {B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME} \n want to battle! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_Trainer1SentOutPkmn [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent \n out {B_OPPONENT_MON1_NAME}! " ) ;
static const u8 sText_Trainer1SentOutTwoPkmn [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent \n out {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}! " ) ;
static const u8 sText_Trainer1SentOutPkmn2 [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent \n out {B_BUFF1}! " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_LinkTrainerSentOutPkmn [ ] = _ ( " {B_LINK_OPPONENT1_NAME} sent out \n {B_OPPONENT_MON1_NAME}! " ) ;
static const u8 sText_LinkTrainerSentOutTwoPkmn [ ] = _ ( " {B_LINK_OPPONENT1_NAME} sent out \n {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}! " ) ;
static const u8 sText_TwoLinkTrainersSentOutPkmn [ ] = _ ( " {B_LINK_OPPONENT1_NAME} sent out {B_LINK_OPPONENT_MON1_NAME}! \n {B_LINK_OPPONENT2_NAME} sent out {B_LINK_OPPONENT_MON2_NAME}! " ) ;
static const u8 sText_LinkTrainerSentOutPkmn2 [ ] = _ ( " {B_LINK_OPPONENT1_NAME} sent out \n {B_BUFF1}! " ) ;
static const u8 sText_LinkTrainerMultiSentOutPkmn [ ] = _ ( " {B_LINK_SCR_TRAINER_NAME} sent out \n {B_BUFF1}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_GoPkmn [ ] = _ ( " Go! {B_PLAYER_MON1_NAME}! " ) ;
static const u8 sText_GoTwoPkmn [ ] = _ ( " Go! {B_PLAYER_MON1_NAME} and \n {B_PLAYER_MON2_NAME}! " ) ;
static const u8 sText_GoPkmn2 [ ] = _ ( " Go! {B_BUFF1}! " ) ;
static const u8 sText_DoItPkmn [ ] = _ ( " Do it! {B_BUFF1}! " ) ;
static const u8 sText_GoForItPkmn [ ] = _ ( " Go for it, {B_BUFF1}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_YourFoesWeakGetEmPkmn [ ] = _ ( " Your foe's weak! \n Get 'em, {B_BUFF1}! " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_LinkPartnerSentOutPkmnGoPkmn [ ] = _ ( " {B_LINK_PARTNER_NAME} sent out {B_LINK_PLAYER_MON2_NAME}! \n Go! {B_LINK_PLAYER_MON1_NAME}! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnThatsEnough [ ] = _ ( " {B_BUFF1}, that's enough! \n Come back! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnComeBack [ ] = _ ( " {B_BUFF1}, come back! " ) ;
static const u8 sText_PkmnOkComeBack [ ] = _ ( " {B_BUFF1}, OK! \n Come back! " ) ;
static const u8 sText_PkmnGoodComeBack [ ] = _ ( " {B_BUFF1}, good! \n Come back! " ) ;
static const u8 sText_Trainer1WithdrewPkmn [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} \n withdrew {B_BUFF1}! " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_LinkTrainer1WithdrewPkmn [ ] = _ ( " {B_LINK_OPPONENT1_NAME} withdrew \n {B_BUFF1}! " ) ;
static const u8 sText_LinkTrainer2WithdrewPkmn [ ] = _ ( " {B_LINK_SCR_TRAINER_NAME} withdrew \n {B_BUFF1}! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_WildPkmnPrefix [ ] = _ ( " Wild " ) ;
static const u8 sText_FoePkmnPrefix [ ] = _ ( " Foe " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_EmptyString8 [ ] = _ ( " " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_FoePkmnPrefix2 [ ] = _ ( " Foe " ) ;
static const u8 sText_AllyPkmnPrefix [ ] = _ ( " Ally " ) ;
static const u8 sText_FoePkmnPrefix3 [ ] = _ ( " Foe " ) ;
static const u8 sText_AllyPkmnPrefix2 [ ] = _ ( " Ally " ) ;
static const u8 sText_FoePkmnPrefix4 [ ] = _ ( " Foe " ) ;
static const u8 sText_AllyPkmnPrefix3 [ ] = _ ( " Ally " ) ;
static const u8 sText_AttackerUsedX [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} used \n {B_BUFF2} " ) ;
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 " ) ;
static const u8 sText_Speed [ ] = _ ( " SPEED " ) ;
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
2020-07-21 19:29:51 +02:00
const u8 * const gStatNamesTable [ NUM_BATTLE_STATS ] =
2017-10-07 15:15:47 +02:00
{
2020-08-05 02:33:05 +02:00
[ STAT_HP ] = sText_HP2 ,
[ STAT_ATK ] = sText_Attack2 ,
2020-07-21 19:29:51 +02:00
[ STAT_DEF ] = sText_Defense2 ,
2020-08-05 02:33:05 +02:00
[ STAT_SPEED ] = sText_Speed ,
[ STAT_SPATK ] = sText_SpAtk2 ,
2020-07-21 19:29:51 +02:00
[ STAT_SPDEF ] = sText_SpDef2 ,
2020-08-05 02:33:05 +02:00
[ STAT_ACC ] = sText_Accuracy ,
[ STAT_EVASION ] = 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
2020-07-21 19:29:51 +02:00
const u8 * const gPokeblockWasTooXStringTable [ FLAVOR_COUNT ] =
2017-10-07 15:15:47 +02:00
{
2020-08-05 02:33:05 +02:00
[ FLAVOR_SPICY ] = sText_PokeblockWasTooSpicy ,
2020-07-21 19:29:51 +02:00
[ FLAVOR_DRY ] = sText_PokeblockWasTooDry ,
2020-08-05 02:33:05 +02:00
[ FLAVOR_SWEET ] = sText_PokeblockWasTooSweet ,
2020-07-21 19:29:51 +02:00
[ FLAVOR_BITTER ] = sText_PokeblockWasTooBitter ,
[ FLAVOR_SOUR ] = sText_PokeblockWasTooSour
2017-10-07 15:15:47 +02:00
} ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PlayerUsedItem [ ] = _ ( " {B_PLAYER_NAME} used \n {B_LAST_ITEM}! " ) ;
static const u8 sText_WallyUsedItem [ ] = _ ( " WALLY used \n {B_LAST_ITEM}! " ) ;
static const u8 sText_Trainer1UsedItem [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} \n used {B_LAST_ITEM}! " ) ;
static const u8 sText_TrainerBlockedBall [ ] = _ ( " The TRAINER blocked the BALL! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_DontBeAThief [ ] = _ ( " Don't be a thief! " ) ;
static const u8 sText_ItDodgedBall [ ] = _ ( " It dodged the thrown BALL! \n This POKéMON can't be caught! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_YouMissedPkmn [ ] = _ ( " You missed the POKéMON! " ) ;
static const u8 sText_PkmnBrokeFree [ ] = _ ( " Oh, no! \n The POKéMON broke free! " ) ;
static const u8 sText_ItAppearedCaught [ ] = _ ( " Aww! \n It appeared to be caught! " ) ;
static const u8 sText_AarghAlmostHadIt [ ] = _ ( " Aargh! \n Almost had it! " ) ;
static const u8 sText_ShootSoClose [ ] = _ ( " Shoot! \n It was so close, too! " ) ;
2020-08-21 00:02:00 +02:00
static const u8 sText_GotchaPkmnCaught [ ] = _ ( " Gotcha! \n {B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT} \ p " ) ;
static const u8 sText_GotchaPkmnCaught2 [ ] = _ ( " Gotcha! \n {B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}{PAUSE 127} " ) ;
2018-02-28 23:50:25 +01:00
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. " ) ;
2018-12-07 16:41:08 +01:00
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 " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_ItIsRaining [ ] = _ ( " It is raining. " ) ;
static const u8 sText_SandstormIsRaging [ ] = _ ( " A sandstorm is raging. " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_BoxIsFull [ ] = _ ( " The BOX is full! \n You can't catch any more! \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_EnigmaBerry [ ] = _ ( " ENIGMA BERRY " ) ;
static const u8 sText_BerrySuffix [ ] = _ ( " BERRY " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_PkmnsItemCuredParalysis [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n cured paralysis! " ) ;
static const u8 sText_PkmnsItemCuredPoison [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n cured poison! " ) ;
static const u8 sText_PkmnsItemHealedBurn [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n healed its burn! " ) ;
static const u8 sText_PkmnsItemDefrostedIt [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n defrosted it! " ) ;
static const u8 sText_PkmnsItemWokeIt [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n woke it from its sleep! " ) ;
static const u8 sText_PkmnsItemSnappedOut [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n snapped it out of confusion! " ) ;
static const u8 sText_PkmnsItemCuredProblem [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n cured its {B_BUFF1} problem! " ) ;
static const u8 sText_PkmnsItemNormalizedStatus [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n normalized its status! " ) ;
static const u8 sText_PkmnsItemRestoredHealth [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n restored health! " ) ;
static const u8 sText_PkmnsItemRestoredPP [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n restored {B_BUFF1}'s PP! " ) ;
static const u8 sText_PkmnsItemRestoredStatus [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n restored its status! " ) ;
static const u8 sText_PkmnsItemRestoredHPALittle [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s {B_LAST_ITEM} \n restored its HP a little! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_ItemAllowsOnlyYMove [ ] = _ ( " {B_LAST_ITEM} allows the \n use of only {B_CURRENT_MOVE}! \ p " ) ;
static const u8 sText_PkmnHungOnWithX [ ] = _ ( " {B_DEF_NAME_WITH_PREFIX} hung on \n using its {B_LAST_ITEM}! " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_EmptyString3 [ ] = _ ( " " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_YouThrowABallNowRight [ ] = _ ( " You throw a BALL now, right? \n I… I'll do my best! " ) ;
2017-10-07 15:15:47 +02:00
// early declaration of strings
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnIncapableOfPower [ ] ;
static const u8 sText_GlintAppearsInEye [ ] ;
static const u8 sText_PkmnGettingIntoPosition [ ] ;
static const u8 sText_PkmnBeganGrowlingDeeply [ ] ;
static const u8 sText_PkmnEagerForMore [ ] ;
static const u8 sText_DefeatedOpponentByReferee [ ] ;
static const u8 sText_LostToOpponentByReferee [ ] ;
static const u8 sText_TiedOpponentByReferee [ ] ;
static const u8 sText_QuestionForfeitMatch [ ] ;
static const u8 sText_ForfeitedMatch [ ] ;
static const u8 sText_Trainer1WinText [ ] ;
static const u8 sText_Trainer2WinText [ ] ;
static const u8 sText_TwoInGameTrainersDefeated [ ] ;
static const u8 sText_Trainer2LoseText [ ] ;
2017-10-07 15:15:47 +02:00
const u8 * const gBattleStringsTable [ BATTLESTRINGS_COUNT ] =
{
2018-12-08 07:10:30 +01:00
[ STRINGID_TRAINER1LOSETEXT - 12 ] = sText_Trainer1LoseText ,
[ STRINGID_PKMNGAINEDEXP - 12 ] = sText_PkmnGainedEXP ,
[ STRINGID_PKMNGREWTOLV - 12 ] = sText_PkmnGrewToLv ,
[ STRINGID_PKMNLEARNEDMOVE - 12 ] = sText_PkmnLearnedMove ,
[ STRINGID_TRYTOLEARNMOVE1 - 12 ] = sText_TryToLearnMove1 ,
[ STRINGID_TRYTOLEARNMOVE2 - 12 ] = sText_TryToLearnMove2 ,
[ STRINGID_TRYTOLEARNMOVE3 - 12 ] = sText_TryToLearnMove3 ,
[ STRINGID_PKMNFORGOTMOVE - 12 ] = sText_PkmnForgotMove ,
[ STRINGID_STOPLEARNINGMOVE - 12 ] = sText_StopLearningMove ,
[ STRINGID_DIDNOTLEARNMOVE - 12 ] = sText_DidNotLearnMove ,
[ STRINGID_PKMNLEARNEDMOVE2 - 12 ] = sText_PkmnLearnedMove2 ,
[ STRINGID_ATTACKMISSED - 12 ] = sText_AttackMissed ,
[ STRINGID_PKMNPROTECTEDITSELF - 12 ] = sText_PkmnProtectedItself ,
[ STRINGID_STATSWONTINCREASE2 - 12 ] = sText_StatsWontIncrease2 ,
[ STRINGID_AVOIDEDDAMAGE - 12 ] = sText_AvoidedDamage ,
[ STRINGID_ITDOESNTAFFECT - 12 ] = sText_ItDoesntAffect ,
[ STRINGID_ATTACKERFAINTED - 12 ] = sText_AttackerFainted ,
[ STRINGID_TARGETFAINTED - 12 ] = sText_TargetFainted ,
[ STRINGID_PLAYERGOTMONEY - 12 ] = sText_PlayerGotMoney ,
[ STRINGID_PLAYERWHITEOUT - 12 ] = sText_PlayerWhiteout ,
[ STRINGID_PLAYERWHITEOUT2 - 12 ] = sText_PlayerWhiteout2 ,
[ STRINGID_PREVENTSESCAPE - 12 ] = sText_PreventsEscape ,
[ STRINGID_HITXTIMES - 12 ] = sText_HitXTimes ,
[ STRINGID_PKMNFELLASLEEP - 12 ] = sText_PkmnFellAsleep ,
[ STRINGID_PKMNMADESLEEP - 12 ] = sText_PkmnMadeSleep ,
[ STRINGID_PKMNALREADYASLEEP - 12 ] = sText_PkmnAlreadyAsleep ,
[ STRINGID_PKMNALREADYASLEEP2 - 12 ] = sText_PkmnAlreadyAsleep2 ,
[ STRINGID_PKMNWASNTAFFECTED - 12 ] = sText_PkmnWasntAffected ,
[ STRINGID_PKMNWASPOISONED - 12 ] = sText_PkmnWasPoisoned ,
[ STRINGID_PKMNPOISONEDBY - 12 ] = sText_PkmnPoisonedBy ,
[ STRINGID_PKMNHURTBYPOISON - 12 ] = sText_PkmnHurtByPoison ,
[ STRINGID_PKMNALREADYPOISONED - 12 ] = sText_PkmnAlreadyPoisoned ,
[ STRINGID_PKMNBADLYPOISONED - 12 ] = sText_PkmnBadlyPoisoned ,
[ STRINGID_PKMNENERGYDRAINED - 12 ] = sText_PkmnEnergyDrained ,
[ STRINGID_PKMNWASBURNED - 12 ] = sText_PkmnWasBurned ,
[ STRINGID_PKMNBURNEDBY - 12 ] = sText_PkmnBurnedBy ,
[ STRINGID_PKMNHURTBYBURN - 12 ] = sText_PkmnHurtByBurn ,
[ STRINGID_PKMNWASFROZEN - 12 ] = sText_PkmnWasFrozen ,
[ STRINGID_PKMNFROZENBY - 12 ] = sText_PkmnFrozenBy ,
[ STRINGID_PKMNISFROZEN - 12 ] = sText_PkmnIsFrozen ,
[ STRINGID_PKMNWASDEFROSTED - 12 ] = sText_PkmnWasDefrosted ,
[ STRINGID_PKMNWASDEFROSTED2 - 12 ] = sText_PkmnWasDefrosted2 ,
[ STRINGID_PKMNWASDEFROSTEDBY - 12 ] = sText_PkmnWasDefrostedBy ,
[ STRINGID_PKMNWASPARALYZED - 12 ] = sText_PkmnWasParalyzed ,
[ STRINGID_PKMNWASPARALYZEDBY - 12 ] = sText_PkmnWasParalyzedBy ,
[ STRINGID_PKMNISPARALYZED - 12 ] = sText_PkmnIsParalyzed ,
[ STRINGID_PKMNISALREADYPARALYZED - 12 ] = sText_PkmnIsAlreadyParalyzed ,
[ STRINGID_PKMNHEALEDPARALYSIS - 12 ] = sText_PkmnHealedParalysis ,
[ STRINGID_PKMNDREAMEATEN - 12 ] = sText_PkmnDreamEaten ,
[ STRINGID_STATSWONTINCREASE - 12 ] = sText_StatsWontIncrease ,
[ STRINGID_STATSWONTDECREASE - 12 ] = sText_StatsWontDecrease ,
[ STRINGID_TEAMSTOPPEDWORKING - 12 ] = sText_TeamStoppedWorking ,
[ STRINGID_FOESTOPPEDWORKING - 12 ] = sText_FoeStoppedWorking ,
[ STRINGID_PKMNISCONFUSED - 12 ] = sText_PkmnIsConfused ,
[ STRINGID_PKMNHEALEDCONFUSION - 12 ] = sText_PkmnHealedConfusion ,
[ STRINGID_PKMNWASCONFUSED - 12 ] = sText_PkmnWasConfused ,
[ STRINGID_PKMNALREADYCONFUSED - 12 ] = sText_PkmnAlreadyConfused ,
[ STRINGID_PKMNFELLINLOVE - 12 ] = sText_PkmnFellInLove ,
[ STRINGID_PKMNINLOVE - 12 ] = sText_PkmnInLove ,
[ STRINGID_PKMNIMMOBILIZEDBYLOVE - 12 ] = sText_PkmnImmobilizedByLove ,
[ STRINGID_PKMNBLOWNAWAY - 12 ] = sText_PkmnBlownAway ,
[ STRINGID_PKMNCHANGEDTYPE - 12 ] = sText_PkmnChangedType ,
[ STRINGID_PKMNFLINCHED - 12 ] = sText_PkmnFlinched ,
[ STRINGID_PKMNREGAINEDHEALTH - 12 ] = sText_PkmnRegainedHealth ,
[ STRINGID_PKMNHPFULL - 12 ] = sText_PkmnHPFull ,
[ STRINGID_PKMNRAISEDSPDEF - 12 ] = sText_PkmnRaisedSpDef ,
[ STRINGID_PKMNRAISEDDEF - 12 ] = sText_PkmnRaisedDef ,
[ STRINGID_PKMNCOVEREDBYVEIL - 12 ] = sText_PkmnCoveredByVeil ,
[ STRINGID_PKMNUSEDSAFEGUARD - 12 ] = sText_PkmnUsedSafeguard ,
[ STRINGID_PKMNSAFEGUARDEXPIRED - 12 ] = sText_PkmnSafeguardExpired ,
[ STRINGID_PKMNWENTTOSLEEP - 12 ] = sText_PkmnWentToSleep ,
[ STRINGID_PKMNSLEPTHEALTHY - 12 ] = sText_PkmnSleptHealthy ,
[ STRINGID_PKMNWHIPPEDWHIRLWIND - 12 ] = sText_PkmnWhippedWhirlwind ,
[ STRINGID_PKMNTOOKSUNLIGHT - 12 ] = sText_PkmnTookSunlight ,
[ STRINGID_PKMNLOWEREDHEAD - 12 ] = sText_PkmnLoweredHead ,
[ STRINGID_PKMNISGLOWING - 12 ] = sText_PkmnIsGlowing ,
[ STRINGID_PKMNFLEWHIGH - 12 ] = sText_PkmnFlewHigh ,
[ STRINGID_PKMNDUGHOLE - 12 ] = sText_PkmnDugHole ,
[ STRINGID_PKMNSQUEEZEDBYBIND - 12 ] = sText_PkmnSqueezedByBind ,
[ STRINGID_PKMNTRAPPEDINVORTEX - 12 ] = sText_PkmnTrappedInVortex ,
[ STRINGID_PKMNWRAPPEDBY - 12 ] = sText_PkmnWrappedBy ,
[ STRINGID_PKMNCLAMPED - 12 ] = sText_PkmnClamped ,
[ STRINGID_PKMNHURTBY - 12 ] = sText_PkmnHurtBy ,
[ STRINGID_PKMNFREEDFROM - 12 ] = sText_PkmnFreedFrom ,
[ STRINGID_PKMNCRASHED - 12 ] = sText_PkmnCrashed ,
[ STRINGID_PKMNSHROUDEDINMIST - 12 ] = gText_PkmnShroudedInMist ,
[ STRINGID_PKMNPROTECTEDBYMIST - 12 ] = sText_PkmnProtectedByMist ,
[ STRINGID_PKMNGETTINGPUMPED - 12 ] = gText_PkmnGettingPumped ,
[ STRINGID_PKMNHITWITHRECOIL - 12 ] = sText_PkmnHitWithRecoil ,
[ STRINGID_PKMNPROTECTEDITSELF2 - 12 ] = sText_PkmnProtectedItself2 ,
[ STRINGID_PKMNBUFFETEDBYSANDSTORM - 12 ] = sText_PkmnBuffetedBySandstorm ,
[ STRINGID_PKMNPELTEDBYHAIL - 12 ] = sText_PkmnPeltedByHail ,
[ STRINGID_PKMNSEEDED - 12 ] = sText_PkmnSeeded ,
[ STRINGID_PKMNEVADEDATTACK - 12 ] = sText_PkmnEvadedAttack ,
[ STRINGID_PKMNSAPPEDBYLEECHSEED - 12 ] = sText_PkmnSappedByLeechSeed ,
[ STRINGID_PKMNFASTASLEEP - 12 ] = sText_PkmnFastAsleep ,
[ STRINGID_PKMNWOKEUP - 12 ] = sText_PkmnWokeUp ,
[ STRINGID_PKMNUPROARKEPTAWAKE - 12 ] = sText_PkmnUproarKeptAwake ,
[ STRINGID_PKMNWOKEUPINUPROAR - 12 ] = sText_PkmnWokeUpInUproar ,
[ STRINGID_PKMNCAUSEDUPROAR - 12 ] = sText_PkmnCausedUproar ,
[ STRINGID_PKMNMAKINGUPROAR - 12 ] = sText_PkmnMakingUproar ,
[ STRINGID_PKMNCALMEDDOWN - 12 ] = sText_PkmnCalmedDown ,
[ STRINGID_PKMNCANTSLEEPINUPROAR - 12 ] = sText_PkmnCantSleepInUproar ,
[ STRINGID_PKMNSTOCKPILED - 12 ] = sText_PkmnStockpiled ,
[ STRINGID_PKMNCANTSTOCKPILE - 12 ] = sText_PkmnCantStockpile ,
[ STRINGID_PKMNCANTSLEEPINUPROAR2 - 12 ] = sText_PkmnCantSleepInUproar2 ,
[ STRINGID_UPROARKEPTPKMNAWAKE - 12 ] = sText_UproarKeptPkmnAwake ,
[ STRINGID_PKMNSTAYEDAWAKEUSING - 12 ] = sText_PkmnStayedAwakeUsing ,
[ STRINGID_PKMNSTORINGENERGY - 12 ] = sText_PkmnStoringEnergy ,
[ STRINGID_PKMNUNLEASHEDENERGY - 12 ] = sText_PkmnUnleashedEnergy ,
[ STRINGID_PKMNFATIGUECONFUSION - 12 ] = sText_PkmnFatigueConfusion ,
2021-01-11 14:49:31 +01:00
[ STRINGID_PLAYERPICKEDUPMONEY - 12 ] = sText_PlayerPickedUpMoney ,
2018-12-08 07:10:30 +01:00
[ STRINGID_PKMNUNAFFECTED - 12 ] = sText_PkmnUnaffected ,
[ STRINGID_PKMNTRANSFORMEDINTO - 12 ] = sText_PkmnTransformedInto ,
[ STRINGID_PKMNMADESUBSTITUTE - 12 ] = sText_PkmnMadeSubstitute ,
[ STRINGID_PKMNHASSUBSTITUTE - 12 ] = sText_PkmnHasSubstitute ,
[ STRINGID_SUBSTITUTEDAMAGED - 12 ] = sText_SubstituteDamaged ,
[ STRINGID_PKMNSUBSTITUTEFADED - 12 ] = sText_PkmnSubstituteFaded ,
[ STRINGID_PKMNMUSTRECHARGE - 12 ] = sText_PkmnMustRecharge ,
[ STRINGID_PKMNRAGEBUILDING - 12 ] = sText_PkmnRageBuilding ,
[ STRINGID_PKMNMOVEWASDISABLED - 12 ] = sText_PkmnMoveWasDisabled ,
[ STRINGID_PKMNMOVEISDISABLED - 12 ] = sText_PkmnMoveIsDisabled ,
[ STRINGID_PKMNMOVEDISABLEDNOMORE - 12 ] = sText_PkmnMoveDisabledNoMore ,
[ STRINGID_PKMNGOTENCORE - 12 ] = sText_PkmnGotEncore ,
[ STRINGID_PKMNENCOREENDED - 12 ] = sText_PkmnEncoreEnded ,
[ STRINGID_PKMNTOOKAIM - 12 ] = sText_PkmnTookAim ,
[ STRINGID_PKMNSKETCHEDMOVE - 12 ] = sText_PkmnSketchedMove ,
[ STRINGID_PKMNTRYINGTOTAKEFOE - 12 ] = sText_PkmnTryingToTakeFoe ,
[ STRINGID_PKMNTOOKFOE - 12 ] = sText_PkmnTookFoe ,
[ STRINGID_PKMNREDUCEDPP - 12 ] = sText_PkmnReducedPP ,
[ STRINGID_PKMNSTOLEITEM - 12 ] = sText_PkmnStoleItem ,
[ STRINGID_TARGETCANTESCAPENOW - 12 ] = sText_TargetCantEscapeNow ,
[ STRINGID_PKMNFELLINTONIGHTMARE - 12 ] = sText_PkmnFellIntoNightmare ,
[ STRINGID_PKMNLOCKEDINNIGHTMARE - 12 ] = sText_PkmnLockedInNightmare ,
[ STRINGID_PKMNLAIDCURSE - 12 ] = sText_PkmnLaidCurse ,
[ STRINGID_PKMNAFFLICTEDBYCURSE - 12 ] = sText_PkmnAfflictedByCurse ,
[ STRINGID_SPIKESSCATTERED - 12 ] = sText_SpikesScattered ,
[ STRINGID_PKMNHURTBYSPIKES - 12 ] = sText_PkmnHurtBySpikes ,
[ STRINGID_PKMNIDENTIFIED - 12 ] = sText_PkmnIdentified ,
[ STRINGID_PKMNPERISHCOUNTFELL - 12 ] = sText_PkmnPerishCountFell ,
[ STRINGID_PKMNBRACEDITSELF - 12 ] = sText_PkmnBracedItself ,
[ STRINGID_PKMNENDUREDHIT - 12 ] = sText_PkmnEnduredHit ,
[ STRINGID_MAGNITUDESTRENGTH - 12 ] = sText_MagnitudeStrength ,
[ STRINGID_PKMNCUTHPMAXEDATTACK - 12 ] = sText_PkmnCutHPMaxedAttack ,
[ STRINGID_PKMNCOPIEDSTATCHANGES - 12 ] = sText_PkmnCopiedStatChanges ,
[ STRINGID_PKMNGOTFREE - 12 ] = sText_PkmnGotFree ,
[ STRINGID_PKMNSHEDLEECHSEED - 12 ] = sText_PkmnShedLeechSeed ,
[ STRINGID_PKMNBLEWAWAYSPIKES - 12 ] = sText_PkmnBlewAwaySpikes ,
[ STRINGID_PKMNFLEDFROMBATTLE - 12 ] = sText_PkmnFledFromBattle ,
[ STRINGID_PKMNFORESAWATTACK - 12 ] = sText_PkmnForesawAttack ,
[ STRINGID_PKMNTOOKATTACK - 12 ] = sText_PkmnTookAttack ,
[ STRINGID_PKMNATTACK - 12 ] = sText_PkmnAttack ,
[ STRINGID_PKMNCENTERATTENTION - 12 ] = sText_PkmnCenterAttention ,
[ STRINGID_PKMNCHARGINGPOWER - 12 ] = sText_PkmnChargingPower ,
[ STRINGID_NATUREPOWERTURNEDINTO - 12 ] = sText_NaturePowerTurnedInto ,
[ STRINGID_PKMNSTATUSNORMAL - 12 ] = sText_PkmnStatusNormal ,
[ STRINGID_PKMNHASNOMOVESLEFT - 12 ] = sText_PkmnHasNoMovesLeft ,
[ STRINGID_PKMNSUBJECTEDTOTORMENT - 12 ] = sText_PkmnSubjectedToTorment ,
[ STRINGID_PKMNCANTUSEMOVETORMENT - 12 ] = sText_PkmnCantUseMoveTorment ,
[ STRINGID_PKMNTIGHTENINGFOCUS - 12 ] = sText_PkmnTighteningFocus ,
[ STRINGID_PKMNFELLFORTAUNT - 12 ] = sText_PkmnFellForTaunt ,
[ STRINGID_PKMNCANTUSEMOVETAUNT - 12 ] = sText_PkmnCantUseMoveTaunt ,
[ STRINGID_PKMNREADYTOHELP - 12 ] = sText_PkmnReadyToHelp ,
[ STRINGID_PKMNSWITCHEDITEMS - 12 ] = sText_PkmnSwitchedItems ,
[ STRINGID_PKMNCOPIEDFOE - 12 ] = sText_PkmnCopiedFoe ,
[ STRINGID_PKMNMADEWISH - 12 ] = sText_PkmnMadeWish ,
[ STRINGID_PKMNWISHCAMETRUE - 12 ] = sText_PkmnWishCameTrue ,
[ STRINGID_PKMNPLANTEDROOTS - 12 ] = sText_PkmnPlantedRoots ,
[ STRINGID_PKMNABSORBEDNUTRIENTS - 12 ] = sText_PkmnAbsorbedNutrients ,
[ STRINGID_PKMNANCHOREDITSELF - 12 ] = sText_PkmnAnchoredItself ,
[ STRINGID_PKMNWASMADEDROWSY - 12 ] = sText_PkmnWasMadeDrowsy ,
[ STRINGID_PKMNKNOCKEDOFF - 12 ] = sText_PkmnKnockedOff ,
[ STRINGID_PKMNSWAPPEDABILITIES - 12 ] = sText_PkmnSwappedAbilities ,
[ STRINGID_PKMNSEALEDOPPONENTMOVE - 12 ] = sText_PkmnSealedOpponentMove ,
[ STRINGID_PKMNCANTUSEMOVESEALED - 12 ] = sText_PkmnCantUseMoveSealed ,
[ STRINGID_PKMNWANTSGRUDGE - 12 ] = sText_PkmnWantsGrudge ,
[ STRINGID_PKMNLOSTPPGRUDGE - 12 ] = sText_PkmnLostPPGrudge ,
[ STRINGID_PKMNSHROUDEDITSELF - 12 ] = sText_PkmnShroudedItself ,
[ STRINGID_PKMNMOVEBOUNCED - 12 ] = sText_PkmnMoveBounced ,
[ STRINGID_PKMNWAITSFORTARGET - 12 ] = sText_PkmnWaitsForTarget ,
[ STRINGID_PKMNSNATCHEDMOVE - 12 ] = sText_PkmnSnatchedMove ,
[ STRINGID_PKMNMADEITRAIN - 12 ] = sText_PkmnMadeItRain ,
[ STRINGID_PKMNRAISEDSPEED - 12 ] = sText_PkmnRaisedSpeed ,
[ STRINGID_PKMNPROTECTEDBY - 12 ] = sText_PkmnProtectedBy ,
[ STRINGID_PKMNPREVENTSUSAGE - 12 ] = sText_PkmnPreventsUsage ,
[ STRINGID_PKMNRESTOREDHPUSING - 12 ] = sText_PkmnRestoredHPUsing ,
[ STRINGID_PKMNCHANGEDTYPEWITH - 12 ] = sText_PkmnChangedTypeWith ,
[ STRINGID_PKMNPREVENTSPARALYSISWITH - 12 ] = sText_PkmnPreventsParalysisWith ,
[ STRINGID_PKMNPREVENTSROMANCEWITH - 12 ] = sText_PkmnPreventsRomanceWith ,
[ STRINGID_PKMNPREVENTSPOISONINGWITH - 12 ] = sText_PkmnPreventsPoisoningWith ,
[ STRINGID_PKMNPREVENTSCONFUSIONWITH - 12 ] = sText_PkmnPreventsConfusionWith ,
[ STRINGID_PKMNRAISEDFIREPOWERWITH - 12 ] = sText_PkmnRaisedFirePowerWith ,
[ STRINGID_PKMNANCHORSITSELFWITH - 12 ] = sText_PkmnAnchorsItselfWith ,
[ STRINGID_PKMNCUTSATTACKWITH - 12 ] = sText_PkmnCutsAttackWith ,
[ STRINGID_PKMNPREVENTSSTATLOSSWITH - 12 ] = sText_PkmnPreventsStatLossWith ,
[ STRINGID_PKMNHURTSWITH - 12 ] = sText_PkmnHurtsWith ,
[ STRINGID_PKMNTRACED - 12 ] = sText_PkmnTraced ,
[ STRINGID_STATSHARPLY - 12 ] = sText_StatSharply ,
[ STRINGID_STATROSE - 12 ] = gText_StatRose ,
[ STRINGID_STATHARSHLY - 12 ] = sText_StatHarshly ,
[ STRINGID_STATFELL - 12 ] = sText_StatFell ,
[ STRINGID_PKMNSSTATCHANGED - 12 ] = sText_PkmnsStatChanged ,
[ STRINGID_PKMNSSTATCHANGED2 - 12 ] = gText_PkmnsStatChanged2 ,
[ STRINGID_PKMNSSTATCHANGED3 - 12 ] = sText_PkmnsStatChanged3 ,
[ STRINGID_PKMNSSTATCHANGED4 - 12 ] = sText_PkmnsStatChanged4 ,
[ STRINGID_CRITICALHIT - 12 ] = sText_CriticalHit ,
[ STRINGID_ONEHITKO - 12 ] = sText_OneHitKO ,
[ STRINGID_123POOF - 12 ] = sText_123Poof ,
[ STRINGID_ANDELLIPSIS - 12 ] = sText_AndEllipsis ,
[ STRINGID_NOTVERYEFFECTIVE - 12 ] = sText_NotVeryEffective ,
[ STRINGID_SUPEREFFECTIVE - 12 ] = sText_SuperEffective ,
[ STRINGID_GOTAWAYSAFELY - 12 ] = sText_GotAwaySafely ,
[ STRINGID_WILDPKMNFLED - 12 ] = sText_WildPkmnFled ,
[ STRINGID_NORUNNINGFROMTRAINERS - 12 ] = sText_NoRunningFromTrainers ,
[ STRINGID_CANTESCAPE - 12 ] = sText_CantEscape ,
[ STRINGID_DONTLEAVEBIRCH - 12 ] = sText_DontLeaveBirch ,
[ STRINGID_BUTNOTHINGHAPPENED - 12 ] = sText_ButNothingHappened ,
[ STRINGID_BUTITFAILED - 12 ] = sText_ButItFailed ,
[ STRINGID_ITHURTCONFUSION - 12 ] = sText_ItHurtConfusion ,
[ STRINGID_MIRRORMOVEFAILED - 12 ] = sText_MirrorMoveFailed ,
[ STRINGID_STARTEDTORAIN - 12 ] = sText_StartedToRain ,
[ STRINGID_DOWNPOURSTARTED - 12 ] = sText_DownpourStarted ,
[ STRINGID_RAINCONTINUES - 12 ] = sText_RainContinues ,
[ STRINGID_DOWNPOURCONTINUES - 12 ] = sText_DownpourContinues ,
[ STRINGID_RAINSTOPPED - 12 ] = sText_RainStopped ,
[ STRINGID_SANDSTORMBREWED - 12 ] = sText_SandstormBrewed ,
[ STRINGID_SANDSTORMRAGES - 12 ] = sText_SandstormRages ,
[ STRINGID_SANDSTORMSUBSIDED - 12 ] = sText_SandstormSubsided ,
[ STRINGID_SUNLIGHTGOTBRIGHT - 12 ] = sText_SunlightGotBright ,
[ STRINGID_SUNLIGHTSTRONG - 12 ] = sText_SunlightStrong ,
[ STRINGID_SUNLIGHTFADED - 12 ] = sText_SunlightFaded ,
[ STRINGID_STARTEDHAIL - 12 ] = sText_StartedHail ,
[ STRINGID_HAILCONTINUES - 12 ] = sText_HailContinues ,
[ STRINGID_HAILSTOPPED - 12 ] = sText_HailStopped ,
[ STRINGID_FAILEDTOSPITUP - 12 ] = sText_FailedToSpitUp ,
[ STRINGID_FAILEDTOSWALLOW - 12 ] = sText_FailedToSwallow ,
[ STRINGID_WINDBECAMEHEATWAVE - 12 ] = sText_WindBecameHeatWave ,
[ STRINGID_STATCHANGESGONE - 12 ] = sText_StatChangesGone ,
[ STRINGID_COINSSCATTERED - 12 ] = sText_CoinsScattered ,
[ STRINGID_TOOWEAKFORSUBSTITUTE - 12 ] = sText_TooWeakForSubstitute ,
[ STRINGID_SHAREDPAIN - 12 ] = sText_SharedPain ,
[ STRINGID_BELLCHIMED - 12 ] = sText_BellChimed ,
[ STRINGID_FAINTINTHREE - 12 ] = sText_FaintInThree ,
[ STRINGID_NOPPLEFT - 12 ] = sText_NoPPLeft ,
[ STRINGID_BUTNOPPLEFT - 12 ] = sText_ButNoPPLeft ,
[ STRINGID_PLAYERUSEDITEM - 12 ] = sText_PlayerUsedItem ,
[ STRINGID_WALLYUSEDITEM - 12 ] = sText_WallyUsedItem ,
[ STRINGID_TRAINERBLOCKEDBALL - 12 ] = sText_TrainerBlockedBall ,
[ STRINGID_DONTBEATHIEF - 12 ] = sText_DontBeAThief ,
[ STRINGID_ITDODGEDBALL - 12 ] = sText_ItDodgedBall ,
[ STRINGID_YOUMISSEDPKMN - 12 ] = sText_YouMissedPkmn ,
[ STRINGID_PKMNBROKEFREE - 12 ] = sText_PkmnBrokeFree ,
[ STRINGID_ITAPPEAREDCAUGHT - 12 ] = sText_ItAppearedCaught ,
[ STRINGID_AARGHALMOSTHADIT - 12 ] = sText_AarghAlmostHadIt ,
[ STRINGID_SHOOTSOCLOSE - 12 ] = sText_ShootSoClose ,
[ STRINGID_GOTCHAPKMNCAUGHT - 12 ] = sText_GotchaPkmnCaught ,
[ STRINGID_GOTCHAPKMNCAUGHT2 - 12 ] = sText_GotchaPkmnCaught2 ,
[ STRINGID_GIVENICKNAMECAPTURED - 12 ] = sText_GiveNicknameCaptured ,
[ STRINGID_PKMNSENTTOPC - 12 ] = sText_PkmnSentToPC ,
[ STRINGID_PKMNDATAADDEDTODEX - 12 ] = sText_PkmnDataAddedToDex ,
[ STRINGID_ITISRAINING - 12 ] = sText_ItIsRaining ,
[ STRINGID_SANDSTORMISRAGING - 12 ] = sText_SandstormIsRaging ,
[ STRINGID_CANTESCAPE2 - 12 ] = sText_CantEscape2 ,
[ STRINGID_PKMNIGNORESASLEEP - 12 ] = sText_PkmnIgnoresAsleep ,
[ STRINGID_PKMNIGNOREDORDERS - 12 ] = sText_PkmnIgnoredOrders ,
[ STRINGID_PKMNBEGANTONAP - 12 ] = sText_PkmnBeganToNap ,
[ STRINGID_PKMNLOAFING - 12 ] = sText_PkmnLoafing ,
[ STRINGID_PKMNWONTOBEY - 12 ] = sText_PkmnWontObey ,
[ STRINGID_PKMNTURNEDAWAY - 12 ] = sText_PkmnTurnedAway ,
[ STRINGID_PKMNPRETENDNOTNOTICE - 12 ] = sText_PkmnPretendNotNotice ,
[ STRINGID_ENEMYABOUTTOSWITCHPKMN - 12 ] = sText_EnemyAboutToSwitchPkmn ,
[ STRINGID_CREPTCLOSER - 12 ] = sText_CreptCloser ,
[ STRINGID_CANTGETCLOSER - 12 ] = sText_CantGetCloser ,
[ STRINGID_PKMNWATCHINGCAREFULLY - 12 ] = sText_PkmnWatchingCarefully ,
[ STRINGID_PKMNCURIOUSABOUTX - 12 ] = sText_PkmnCuriousAboutX ,
[ STRINGID_PKMNENTHRALLEDBYX - 12 ] = sText_PkmnEnthralledByX ,
[ STRINGID_PKMNIGNOREDX - 12 ] = sText_PkmnIgnoredX ,
[ STRINGID_THREWPOKEBLOCKATPKMN - 12 ] = sText_ThrewPokeblockAtPkmn ,
[ STRINGID_OUTOFSAFARIBALLS - 12 ] = sText_OutOfSafariBalls ,
[ STRINGID_PKMNSITEMCUREDPARALYSIS - 12 ] = sText_PkmnsItemCuredParalysis ,
[ STRINGID_PKMNSITEMCUREDPOISON - 12 ] = sText_PkmnsItemCuredPoison ,
[ STRINGID_PKMNSITEMHEALEDBURN - 12 ] = sText_PkmnsItemHealedBurn ,
[ STRINGID_PKMNSITEMDEFROSTEDIT - 12 ] = sText_PkmnsItemDefrostedIt ,
[ STRINGID_PKMNSITEMWOKEIT - 12 ] = sText_PkmnsItemWokeIt ,
[ STRINGID_PKMNSITEMSNAPPEDOUT - 12 ] = sText_PkmnsItemSnappedOut ,
[ STRINGID_PKMNSITEMCUREDPROBLEM - 12 ] = sText_PkmnsItemCuredProblem ,
[ STRINGID_PKMNSITEMRESTOREDHEALTH - 12 ] = sText_PkmnsItemRestoredHealth ,
[ STRINGID_PKMNSITEMRESTOREDPP - 12 ] = sText_PkmnsItemRestoredPP ,
[ STRINGID_PKMNSITEMRESTOREDSTATUS - 12 ] = sText_PkmnsItemRestoredStatus ,
[ STRINGID_PKMNSITEMRESTOREDHPALITTLE - 12 ] = sText_PkmnsItemRestoredHPALittle ,
[ STRINGID_ITEMALLOWSONLYYMOVE - 12 ] = sText_ItemAllowsOnlyYMove ,
[ STRINGID_PKMNHUNGONWITHX - 12 ] = sText_PkmnHungOnWithX ,
[ STRINGID_EMPTYSTRING3 - 12 ] = gText_EmptyString3 ,
[ STRINGID_PKMNSXPREVENTSBURNS - 12 ] = sText_PkmnsXPreventsBurns ,
[ STRINGID_PKMNSXBLOCKSY - 12 ] = sText_PkmnsXBlocksY ,
[ STRINGID_PKMNSXRESTOREDHPALITTLE2 - 12 ] = sText_PkmnsXRestoredHPALittle2 ,
[ STRINGID_PKMNSXWHIPPEDUPSANDSTORM - 12 ] = sText_PkmnsXWhippedUpSandstorm ,
[ STRINGID_PKMNSXPREVENTSYLOSS - 12 ] = sText_PkmnsXPreventsYLoss ,
[ STRINGID_PKMNSXINFATUATEDY - 12 ] = sText_PkmnsXInfatuatedY ,
[ STRINGID_PKMNSXMADEYINEFFECTIVE - 12 ] = sText_PkmnsXMadeYIneffective ,
[ STRINGID_PKMNSXCUREDYPROBLEM - 12 ] = sText_PkmnsXCuredYProblem ,
[ STRINGID_ITSUCKEDLIQUIDOOZE - 12 ] = sText_ItSuckedLiquidOoze ,
[ STRINGID_PKMNTRANSFORMED - 12 ] = sText_PkmnTransformed ,
[ STRINGID_ELECTRICITYWEAKENED - 12 ] = sText_ElectricityWeakened ,
[ STRINGID_FIREWEAKENED - 12 ] = sText_FireWeakened ,
[ STRINGID_PKMNHIDUNDERWATER - 12 ] = sText_PkmnHidUnderwater ,
[ STRINGID_PKMNSPRANGUP - 12 ] = sText_PkmnSprangUp ,
[ STRINGID_HMMOVESCANTBEFORGOTTEN - 12 ] = sText_HMMovesCantBeForgotten ,
[ STRINGID_XFOUNDONEY - 12 ] = sText_XFoundOneY ,
[ STRINGID_PLAYERDEFEATEDTRAINER1 - 12 ] = sText_PlayerDefeatedLinkTrainerTrainer1 ,
[ STRINGID_SOOTHINGAROMA - 12 ] = sText_SoothingAroma ,
[ STRINGID_ITEMSCANTBEUSEDNOW - 12 ] = sText_ItemsCantBeUsedNow ,
[ STRINGID_FORXCOMMAYZ - 12 ] = sText_ForXCommaYZ ,
[ STRINGID_USINGXTHEYOFZN - 12 ] = sText_UsingXTheYOfZN ,
[ STRINGID_PKMNUSEDXTOGETPUMPED - 12 ] = sText_PkmnUsedXToGetPumped ,
[ STRINGID_PKMNSXMADEYUSELESS - 12 ] = sText_PkmnsXMadeYUseless ,
[ STRINGID_PKMNTRAPPEDBYSANDTOMB - 12 ] = sText_PkmnTrappedBySandTomb ,
[ STRINGID_EMPTYSTRING4 - 12 ] = sText_EmptyString4 ,
[ STRINGID_ABOOSTED - 12 ] = sText_ABoosted ,
[ STRINGID_PKMNSXINTENSIFIEDSUN - 12 ] = sText_PkmnsXIntensifiedSun ,
[ STRINGID_PKMNMAKESGROUNDMISS - 12 ] = sText_PkmnMakesGroundMiss ,
[ STRINGID_YOUTHROWABALLNOWRIGHT - 12 ] = sText_YouThrowABallNowRight ,
[ STRINGID_PKMNSXTOOKATTACK - 12 ] = sText_PkmnsXTookAttack ,
[ STRINGID_PKMNCHOSEXASDESTINY - 12 ] = sText_PkmnChoseXAsDestiny ,
[ STRINGID_PKMNLOSTFOCUS - 12 ] = sText_PkmnLostFocus ,
[ STRINGID_USENEXTPKMN - 12 ] = sText_UseNextPkmn ,
[ STRINGID_PKMNFLEDUSINGITS - 12 ] = sText_PkmnFledUsingIts ,
[ STRINGID_PKMNFLEDUSING - 12 ] = sText_PkmnFledUsing ,
[ STRINGID_PKMNWASDRAGGEDOUT - 12 ] = sText_PkmnWasDraggedOut ,
[ STRINGID_PREVENTEDFROMWORKING - 12 ] = sText_PreventedFromWorking ,
[ STRINGID_PKMNSITEMNORMALIZEDSTATUS - 12 ] = sText_PkmnsItemNormalizedStatus ,
[ STRINGID_TRAINER1USEDITEM - 12 ] = sText_Trainer1UsedItem ,
[ STRINGID_BOXISFULL - 12 ] = sText_BoxIsFull ,
[ STRINGID_PKMNAVOIDEDATTACK - 12 ] = sText_PkmnAvoidedAttack ,
[ STRINGID_PKMNSXMADEITINEFFECTIVE - 12 ] = sText_PkmnsXMadeItIneffective ,
[ STRINGID_PKMNSXPREVENTSFLINCHING - 12 ] = sText_PkmnsXPreventsFlinching ,
[ STRINGID_PKMNALREADYHASBURN - 12 ] = sText_PkmnAlreadyHasBurn ,
[ STRINGID_STATSWONTDECREASE2 - 12 ] = sText_StatsWontDecrease2 ,
[ STRINGID_PKMNSXBLOCKSY2 - 12 ] = sText_PkmnsXBlocksY2 ,
[ STRINGID_PKMNSXWOREOFF - 12 ] = sText_PkmnsXWoreOff ,
[ STRINGID_PKMNRAISEDDEFALITTLE - 12 ] = sText_PkmnRaisedDefALittle ,
[ STRINGID_PKMNRAISEDSPDEFALITTLE - 12 ] = sText_PkmnRaisedSpDefALittle ,
[ STRINGID_THEWALLSHATTERED - 12 ] = sText_TheWallShattered ,
[ STRINGID_PKMNSXPREVENTSYSZ - 12 ] = sText_PkmnsXPreventsYsZ ,
[ STRINGID_PKMNSXCUREDITSYPROBLEM - 12 ] = sText_PkmnsXCuredItsYProblem ,
[ STRINGID_ATTACKERCANTESCAPE - 12 ] = sText_AttackerCantEscape ,
[ STRINGID_PKMNOBTAINEDX - 12 ] = sText_PkmnObtainedX ,
[ STRINGID_PKMNOBTAINEDX2 - 12 ] = sText_PkmnObtainedX2 ,
[ STRINGID_PKMNOBTAINEDXYOBTAINEDZ - 12 ] = sText_PkmnObtainedXYObtainedZ ,
[ STRINGID_BUTNOEFFECT - 12 ] = sText_ButNoEffect ,
[ STRINGID_PKMNSXHADNOEFFECTONY - 12 ] = sText_PkmnsXHadNoEffectOnY ,
[ STRINGID_TWOENEMIESDEFEATED - 12 ] = sText_TwoInGameTrainersDefeated ,
[ STRINGID_TRAINER2LOSETEXT - 12 ] = sText_Trainer2LoseText ,
[ STRINGID_PKMNINCAPABLEOFPOWER - 12 ] = sText_PkmnIncapableOfPower ,
[ STRINGID_GLINTAPPEARSINEYE - 12 ] = sText_GlintAppearsInEye ,
[ STRINGID_PKMNGETTINGINTOPOSITION - 12 ] = sText_PkmnGettingIntoPosition ,
[ STRINGID_PKMNBEGANGROWLINGDEEPLY - 12 ] = sText_PkmnBeganGrowlingDeeply ,
[ STRINGID_PKMNEAGERFORMORE - 12 ] = sText_PkmnEagerForMore ,
[ STRINGID_DEFEATEDOPPONENTBYREFEREE - 12 ] = sText_DefeatedOpponentByReferee ,
[ STRINGID_LOSTTOOPPONENTBYREFEREE - 12 ] = sText_LostToOpponentByReferee ,
[ STRINGID_TIEDOPPONENTBYREFEREE - 12 ] = sText_TiedOpponentByReferee ,
[ STRINGID_QUESTIONFORFEITMATCH - 12 ] = sText_QuestionForfeitMatch ,
[ STRINGID_FORFEITEDMATCH - 12 ] = sText_ForfeitedMatch ,
[ STRINGID_PKMNTRANSFERREDSOMEONESPC - 12 ] = gText_PkmnTransferredSomeonesPC ,
[ STRINGID_PKMNTRANSFERREDLANETTESPC - 12 ] = gText_PkmnTransferredLanettesPC ,
2019-10-23 00:07:08 +02:00
[ STRINGID_PKMNBOXSOMEONESPCFULL - 12 ] = gText_PkmnTransferredSomeonesPCBoxFull ,
[ STRINGID_PKMNBOXLANETTESPCFULL - 12 ] = gText_PkmnTransferredLanettesPCBoxFull ,
2018-12-08 07:10:30 +01:00
[ STRINGID_TRAINER1WINTEXT - 12 ] = sText_Trainer1WinText ,
[ STRINGID_TRAINER2WINTEXT - 12 ] = sText_Trainer2WinText ,
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
} ;
2020-07-21 19:29:51 +02:00
// Index read from sTWOTURN_STRINGID
2017-11-26 00:33:40 +01:00
const u16 gFirstTurnOfTwoStringIds [ ] =
{
2020-07-21 19:29:51 +02:00
STRINGID_PKMNWHIPPEDWHIRLWIND , // MOVE_RAZOR_WIND
STRINGID_PKMNTOOKSUNLIGHT , // MOVE_SOLAR_BEAM
STRINGID_PKMNLOWEREDHEAD , // MOVE_SKULL_BASH
STRINGID_PKMNISGLOWING , // MOVE_SKY_ATTACK
STRINGID_PKMNFLEWHIGH , // MOVE_FLY
STRINGID_PKMNDUGHOLE , // MOVE_DIG
STRINGID_PKMNHIDUNDERWATER , // MOVE_DIVE
STRINGID_PKMNSPRANGUP // MOVE_BOUNCE
2017-11-26 00:33:40 +01:00
} ;
2020-07-21 19:29:51 +02:00
// Index copied from move's index in gTrappingMoves
2017-11-26 00:33:40 +01:00
const u16 gWrappedStringIds [ ] =
{
2020-07-21 19:29:51 +02:00
STRINGID_PKMNSQUEEZEDBYBIND , // MOVE_BIND
STRINGID_PKMNWRAPPEDBY , // MOVE_WRAP
STRINGID_PKMNTRAPPEDINVORTEX , // MOVE_FIRE_SPIN
STRINGID_PKMNCLAMPED , // MOVE_CLAMP
STRINGID_PKMNTRAPPEDINVORTEX , // MOVE_WHIRLPOOL
STRINGID_PKMNTRAPPEDBYSANDTOMB // MOVE_SAND_TOMB
2017-11-26 00:33:40 +01:00
} ;
const u16 gMistUsedStringIds [ ] =
{
STRINGID_PKMNSHROUDEDINMIST , STRINGID_BUTITFAILED
} ;
const u16 gFocusEnergyUsedStringIds [ ] =
{
STRINGID_PKMNGETTINGPUMPED , STRINGID_BUTITFAILED
} ;
const u16 gTransformUsedStringIds [ ] =
{
STRINGID_PKMNTRANSFORMEDINTO , STRINGID_BUTITFAILED
} ;
const u16 gSubsituteUsedStringIds [ ] =
{
STRINGID_PKMNMADESUBSTITUTE , STRINGID_TOOWEAKFORSUBSTITUTE
} ;
const u16 gGotPoisonedStringIds [ ] =
{
STRINGID_PKMNWASPOISONED , STRINGID_PKMNPOISONEDBY
} ;
const u16 gGotParalyzedStringIds [ ] =
{
STRINGID_PKMNWASPARALYZED , STRINGID_PKMNWASPARALYZEDBY
} ;
const u16 gFellAsleepStringIds [ ] =
{
STRINGID_PKMNFELLASLEEP , STRINGID_PKMNMADESLEEP ,
} ;
const u16 gGotBurnedStringIds [ ] =
{
STRINGID_PKMNWASBURNED , STRINGID_PKMNBURNEDBY
} ;
const u16 gGotFrozenStringIds [ ] =
{
STRINGID_PKMNWASFROZEN , STRINGID_PKMNFROZENBY
} ;
const u16 gGotDefrostedStringIds [ ] =
{
STRINGID_PKMNWASDEFROSTED2 , STRINGID_PKMNWASDEFROSTEDBY
} ;
const u16 gKOFailedStringIds [ ] =
{
STRINGID_ATTACKMISSED , STRINGID_PKMNUNAFFECTED
} ;
const u16 gAttractUsedStringIds [ ] =
{
STRINGID_PKMNFELLINLOVE , STRINGID_PKMNSXINFATUATEDY
} ;
const u16 gLeechSeedDrainStringIds [ ] =
{
STRINGID_PKMNENERGYDRAINED , STRINGID_ITSUCKEDLIQUIDOOZE
} ;
const u16 gSportsUsedStringIds [ ] =
{
STRINGID_ELECTRICITYWEAKENED , STRINGID_FIREWEAKENED
} ;
const u16 gPartyStatusHealStringIds [ ] =
{
STRINGID_BELLCHIMED , STRINGID_BELLCHIMED , STRINGID_BELLCHIMED , STRINGID_BELLCHIMED ,
// interesting how there are four instances of the same string
STRINGID_SOOTHINGAROMA
} ;
const u16 gFutureMoveUsedStringIds [ ] =
{
STRINGID_PKMNFORESAWATTACK , STRINGID_PKMNCHOSEXASDESTINY
} ;
const u16 gBallEscapeStringIds [ ] =
{
STRINGID_PKMNBROKEFREE , STRINGID_ITAPPEAREDCAUGHT , STRINGID_AARGHALMOSTHADIT , STRINGID_SHOOTSOCLOSE
} ;
2020-07-21 19:29:51 +02:00
// Overworld weathers that don't have an associated battle weather default to "It is raining."
const u16 gWeatherStartsStringIds [ ] =
2017-11-26 00:33:40 +01:00
{
2020-07-21 19:29:51 +02:00
[ WEATHER_NONE ] = STRINGID_ITISRAINING ,
[ WEATHER_SUNNY_CLOUDS ] = STRINGID_ITISRAINING ,
[ WEATHER_SUNNY ] = STRINGID_ITISRAINING ,
[ WEATHER_RAIN ] = STRINGID_ITISRAINING ,
[ WEATHER_SNOW ] = STRINGID_ITISRAINING ,
[ WEATHER_RAIN_THUNDERSTORM ] = STRINGID_ITISRAINING ,
[ WEATHER_FOG_HORIZONTAL ] = STRINGID_ITISRAINING ,
[ WEATHER_VOLCANIC_ASH ] = STRINGID_ITISRAINING ,
[ WEATHER_SANDSTORM ] = STRINGID_SANDSTORMISRAGING ,
[ WEATHER_FOG_DIAGONAL ] = STRINGID_ITISRAINING ,
[ WEATHER_UNDERWATER ] = STRINGID_ITISRAINING ,
[ WEATHER_SHADE ] = STRINGID_ITISRAINING ,
[ WEATHER_DROUGHT ] = STRINGID_SUNLIGHTSTRONG ,
[ WEATHER_DOWNPOUR ] = STRINGID_ITISRAINING ,
[ WEATHER_UNDERWATER_BUBBLES ] = STRINGID_ITISRAINING ,
[ WEATHER_ABNORMAL ] = STRINGID_ITISRAINING
2017-11-26 00:33:40 +01:00
} ;
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 [ ] =
{
2020-07-21 19:29:51 +02:00
MOVE_BIND ,
MOVE_WRAP ,
MOVE_FIRE_SPIN ,
MOVE_CLAMP ,
MOVE_WHIRLPOOL ,
MOVE_SAND_TOMB ,
0xFFFF
2017-10-07 15:15:47 +02:00
} ;
const u8 gText_PkmnIsEvolving [ ] = _ ( " What? \n {STR_VAR_1} is evolving! " ) ;
2020-05-27 01:37:46 +02:00
const u8 gText_CongratsPkmnEvolved [ ] = _ ( " Congratulations! Your {STR_VAR_1} \n evolved into {STR_VAR_2}!{WAIT_SE} \ p " ) ;
2017-10-07 15:15:47 +02:00
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-02-28 23:50:25 +01:00
static const u8 sText_HP [ ] = _ ( " HP " ) ;
static const u8 sText_Attack [ ] = _ ( " ATTACK " ) ;
static const u8 sText_Defense [ ] = _ ( " DEFENSE " ) ;
static const u8 sText_SpAtk [ ] = _ ( " SP. ATK " ) ;
static const u8 sText_SpDef [ ] = _ ( " SP. DEF " ) ;
2017-10-07 15:15:47 +02:00
const u8 * const gStatNamesTable2 [ ] =
{
2018-02-28 23:50:25 +01:00
sText_HP , sText_SpAtk , sText_Attack ,
sText_SpDef , sText_Defense , sText_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 [ ] = _ ( " " ) ;
2019-11-24 22:58:40 +01:00
const u8 gText_LineBreak [ ] = _ ( " \ l " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_NewLine [ ] = _ ( " \n " ) ;
const u8 gText_Are [ ] = _ ( " are " ) ;
const u8 gText_Are2 [ ] = _ ( " are " ) ;
const u8 gText_BadEgg [ ] = _ ( " Bad EGG " ) ;
2018-03-01 00:59:52 +01:00
const u8 gText_BattleWallyName [ ] = _ ( " WALLY " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_Win [ ] = _ ( " {HIGHLIGHT TRANSPARENT}Win " ) ;
const u8 gText_Loss [ ] = _ ( " {HIGHLIGHT TRANSPARENT}Loss " ) ;
const u8 gText_Draw [ ] = _ ( " {HIGHLIGHT TRANSPARENT}Draw " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_SpaceIs [ ] = _ ( " is " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_ApostropheS [ ] = _ ( " 's " ) ;
2017-10-07 15:15:47 +02:00
2020-07-21 19:29:51 +02:00
// For displaying names of invalid moves
static const u8 sATypeMove_Table [ ] [ NUMBER_OF_MON_TYPES - 1 ] =
2017-10-07 15:15:47 +02:00
{
2020-07-21 19:29:51 +02:00
[ TYPE_NORMAL ] = _ ( " a NORMAL move " ) ,
[ TYPE_FIGHTING ] = _ ( " a FIGHTING move " ) ,
[ TYPE_FLYING ] = _ ( " a FLYING move " ) ,
[ TYPE_POISON ] = _ ( " a POISON move " ) ,
[ TYPE_GROUND ] = _ ( " a GROUND move " ) ,
[ TYPE_ROCK ] = _ ( " a ROCK move " ) ,
[ TYPE_BUG ] = _ ( " a BUG move " ) ,
[ TYPE_GHOST ] = _ ( " a GHOST move " ) ,
[ TYPE_STEEL ] = _ ( " a STEEL move " ) ,
[ TYPE_MYSTERY ] = _ ( " a ??? move " ) ,
[ TYPE_FIRE ] = _ ( " a FIRE move " ) ,
[ TYPE_WATER ] = _ ( " a WATER move " ) ,
[ TYPE_GRASS ] = _ ( " a GRASS move " ) ,
[ TYPE_ELECTRIC ] = _ ( " an ELECTRIC move " ) ,
[ TYPE_PSYCHIC ] = _ ( " a PSYCHIC move " ) ,
[ TYPE_ICE ] = _ ( " an ICE move " ) ,
[ TYPE_DRAGON ] = _ ( " a DRAGON move " ) ,
[ TYPE_DARK ] = _ ( " a DARK move " )
2017-10-07 15:15:47 +02:00
} ;
const u8 gText_BattleTourney [ ] = _ ( " BATTLE TOURNEY " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_Round1 [ ] = _ ( " Round 1 " ) ;
static const u8 sText_Round2 [ ] = _ ( " Round 2 " ) ;
static const u8 sText_Semifinal [ ] = _ ( " Semifinal " ) ;
static const u8 sText_Final [ ] = _ ( " Final " ) ;
2017-10-07 15:15:47 +02:00
2020-07-21 19:29:51 +02:00
const u8 * const gRoundsStringTable [ DOME_ROUNDS_COUNT ] =
2017-10-07 15:15:47 +02:00
{
2020-07-21 19:29:51 +02:00
[ DOME_ROUND1 ] = sText_Round1 ,
[ DOME_ROUND2 ] = sText_Round2 ,
[ DOME_SEMIFINAL ] = sText_Semifinal ,
[ DOME_FINAL ] = sText_Final
2017-10-07 15:15:47 +02:00
} ;
const u8 gText_TheGreatNewHope [ ] = _ ( " The great new hope! \ p " ) ;
2020-08-18 23:51:51 +02:00
const u8 gText_WillChampionshipDreamComeTrue [ ] = _ ( " Will the championship dream come true?! \ p " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_AFormerChampion [ ] = _ ( " A former CHAMPION! \ p " ) ;
const u8 gText_ThePreviousChampion [ ] = _ ( " The previous CHAMPION! \ p " ) ;
const u8 gText_TheUnbeatenChampion [ ] = _ ( " The unbeaten CHAMPION! \ p " ) ;
const u8 gText_PlayerMon1Name [ ] = _ ( " {B_PLAYER_MON1_NAME} " ) ;
const u8 gText_Vs [ ] = _ ( " VS " ) ;
const u8 gText_OpponentMon1Name [ ] = _ ( " {B_OPPONENT_MON1_NAME} " ) ;
const u8 gText_Mind [ ] = _ ( " Mind " ) ;
const u8 gText_Skill [ ] = _ ( " Skill " ) ;
const u8 gText_Body [ ] = _ ( " Body " ) ;
const u8 gText_Judgement [ ] = _ ( " {B_BUFF1}{CLEAR 13}Judgment{CLEAR 13}{B_BUFF2} " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_TwoTrainersSentPkmn [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent \n out {B_OPPONENT_MON1_NAME}! \ p{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent \n out {B_OPPONENT_MON2_NAME}! " ) ;
static const u8 sText_Trainer2SentOutPkmn [ ] = _ ( " {B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent \n out {B_BUFF1}! " ) ;
static const u8 sText_TwoTrainersWantToBattle [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} and \n {B_TRAINER2_CLASS} {B_TRAINER2_NAME} \ lwant to battle! \ p " ) ;
static const u8 sText_InGamePartnerSentOutZGoN [ ] = _ ( " {B_PARTNER_CLASS} {B_PARTNER_NAME} sent \n out {B_PLAYER_MON2_NAME}! \ lGo, {B_PLAYER_MON1_NAME}! " ) ;
static const u8 sText_TwoInGameTrainersDefeated [ ] = _ ( " {B_TRAINER1_CLASS} {B_TRAINER1_NAME} and \n {B_TRAINER2_CLASS} {B_TRAINER2_NAME} \ lwere defeated! \ p " ) ;
static const u8 sText_Trainer2LoseText [ ] = _ ( " {B_TRAINER2_LOSE_TEXT} " ) ;
static const u8 sText_PkmnIncapableOfPower [ ] = _ ( " {B_ATK_NAME_WITH_PREFIX} appears incapable \n of using its power! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_GlintAppearsInEye [ ] = _ ( " A glint appears in \n {B_SCR_ACTIVE_NAME_WITH_PREFIX}'s eyes! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PkmnGettingIntoPosition [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} is getting into \n position! " ) ;
static const u8 sText_PkmnBeganGrowlingDeeply [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} began growling deeply! " ) ;
static const u8 sText_PkmnEagerForMore [ ] = _ ( " {B_SCR_ACTIVE_NAME_WITH_PREFIX} is eager for more! " ) ;
2017-10-07 15:15:47 +02:00
2020-07-17 02:12:12 +02:00
const u16 gBattlePalaceFlavorTextTable [ ] =
2017-10-07 15:15:47 +02:00
{
2020-07-17 02:12:12 +02:00
STRINGID_GLINTAPPEARSINEYE ,
STRINGID_PKMNGETTINGINTOPOSITION ,
STRINGID_PKMNBEGANGROWLINGDEEPLY ,
STRINGID_PKMNEAGERFORMORE
2017-10-07 15:15:47 +02:00
} ;
2018-02-28 23:50:25 +01:00
static const u8 sText_RefIfNothingIsDecided [ ] = _ ( " REFEREE: If nothing is decided in \n 3 turns, we will go to judging! " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_RefThatsIt [ ] = _ ( " REFEREE: That's it! We will now go to \n judging to determine the winner! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_RefJudgeMind [ ] = _ ( " REFEREE: Judging category 1, Mind! \n The POKéMON showing the most guts! \ p " ) ;
static const u8 sText_RefJudgeSkill [ ] = _ ( " REFEREE: Judging category 2, Skill! \n The POKéMON using moves the best! \ p " ) ;
static const u8 sText_RefJudgeBody [ ] = _ ( " REFEREE: Judging category 3, Body! \n The POKéMON with the most vitality! \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_RefJudgement1 [ ] = _ ( " REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}! \n The winner is {B_PLAYER_NAME}'s {B_PLAYER_MON1_NAME}! \ p " ) ;
static const u8 sText_RefJudgement2 [ ] = _ ( " REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}! \n The winner is {B_TRAINER1_NAME}'s {B_OPPONENT_MON1_NAME}! \ p " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_RefJudgement3 [ ] = _ ( " REFEREE: Judgment: 3 to 3! \n We have a draw! \ p " ) ;
2018-12-07 16:41:08 +01:00
static const u8 sText_DefeatedOpponentByReferee [ ] = _ ( " {B_PLAYER_MON1_NAME} defeated the opponent \n {B_OPPONENT_MON1_NAME} in a REFEREE's decision! " ) ;
static const u8 sText_LostToOpponentByReferee [ ] = _ ( " {B_PLAYER_MON1_NAME} lost to the opponent \n {B_OPPONENT_MON1_NAME} in a REFEREE's decision! " ) ;
static const u8 sText_TiedOpponentByReferee [ ] = _ ( " {B_PLAYER_MON1_NAME} tied the opponent \n {B_OPPONENT_MON1_NAME} in a REFEREE's decision! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_RefCommenceBattle [ ] = _ ( " REFEREE: {B_PLAYER_MON1_NAME} VS {B_OPPONENT_MON1_NAME}! \n Commence battling! " ) ;
2017-10-07 15:15:47 +02:00
const u8 * const gRefereeStringsTable [ ] =
{
2018-02-28 23:50:25 +01:00
sText_RefIfNothingIsDecided ,
2018-12-05 15:31:01 +01:00
sText_RefThatsIt ,
sText_RefJudgeMind ,
sText_RefJudgeSkill ,
sText_RefJudgeBody ,
sText_RefJudgement1 ,
sText_RefJudgement2 ,
sText_RefJudgement3 ,
sText_RefCommenceBattle ,
2017-10-07 15:15:47 +02:00
} ;
2018-02-28 23:50:25 +01:00
static const u8 sText_QuestionForfeitMatch [ ] = _ ( " Would you like to forfeit the match \n and quit now? " ) ;
static const u8 sText_ForfeitedMatch [ ] = _ ( " {B_PLAYER_NAME} forfeited the match! " ) ;
static const u8 sText_Trainer1WinText [ ] = _ ( " {B_TRAINER1_WIN_TEXT} " ) ;
static const u8 sText_Trainer2WinText [ ] = _ ( " {B_TRAINER2_WIN_TEXT} " ) ;
2020-08-21 00:02:00 +02:00
static const u8 sText_Trainer1Fled [ ] = _ ( " {PLAY_SE SE_FLEE}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled! " ) ;
2018-02-28 23:50:25 +01:00
static const u8 sText_PlayerLostAgainstTrainer1 [ ] = _ ( " Player lost against \n {B_TRAINER1_CLASS} {B_TRAINER1_NAME}! " ) ;
static const u8 sText_PlayerBattledToDrawTrainer1 [ ] = _ ( " Player battled to a draw against \n {B_TRAINER1_CLASS} {B_TRAINER1_NAME}! " ) ;
2017-10-07 15:15:47 +02:00
const u8 gText_RecordBattleToPass [ ] = _ ( " Would you like to record your battle \n on your FRONTIER PASS? " ) ;
2018-12-07 16:41:08 +01:00
const u8 gText_BattleRecordedOnPass [ ] = _ ( " {B_PLAYER_NAME}'s battle result was recorded \n on the FRONTIER PASS. " ) ;
2018-09-20 11:55:35 +02:00
static const u8 sText_LinkTrainerWantsToBattlePause [ ] = _ ( " {B_LINK_OPPONENT1_NAME} \n wants to battle!{PAUSE 49} " ) ;
static const u8 sText_TwoLinkTrainersWantToBattlePause [ ] = _ ( " {B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME} \n want to battle!{PAUSE 49} " ) ;
2017-10-07 15:15:47 +02:00
2018-01-17 20:33:23 +01:00
// This is four lists of moves which use a different attack string in Japanese
2018-06-30 14:12:17 +02:00
// to the default. See the documentation for ChooseTypeOfMoveUsedString for more detail.
static const u16 sGrammarMoveUsedTable [ ] =
2017-10-07 15:15:47 +02:00
{
2017-10-08 14:54:51 +02:00
MOVE_SWORDS_DANCE , MOVE_STRENGTH , MOVE_GROWTH ,
MOVE_HARDEN , MOVE_MINIMIZE , MOVE_SMOKESCREEN ,
MOVE_WITHDRAW , MOVE_DEFENSE_CURL , MOVE_EGG_BOMB ,
MOVE_SMOG , MOVE_BONE_CLUB , MOVE_FLASH , MOVE_SPLASH ,
MOVE_ACID_ARMOR , MOVE_BONEMERANG , MOVE_REST , MOVE_SHARPEN ,
MOVE_SUBSTITUTE , MOVE_MIND_READER , MOVE_SNORE ,
MOVE_PROTECT , MOVE_SPIKES , MOVE_ENDURE , MOVE_ROLLOUT ,
MOVE_SWAGGER , MOVE_SLEEP_TALK , MOVE_HIDDEN_POWER ,
MOVE_PSYCH_UP , MOVE_EXTREME_SPEED , MOVE_FOLLOW_ME ,
MOVE_TRICK , MOVE_ASSIST , MOVE_INGRAIN , MOVE_KNOCK_OFF ,
MOVE_CAMOUFLAGE , MOVE_ASTONISH , MOVE_ODOR_SLEUTH ,
MOVE_GRASS_WHISTLE , MOVE_SHEER_COLD , MOVE_MUDDY_WATER ,
2018-01-17 20:33:23 +01:00
MOVE_IRON_DEFENSE , MOVE_BOUNCE , 0 ,
2017-10-08 14:54:51 +02:00
MOVE_TELEPORT , MOVE_RECOVER , MOVE_BIDE , MOVE_AMNESIA ,
2018-01-17 20:33:23 +01:00
MOVE_FLAIL , MOVE_TAUNT , MOVE_BULK_UP , 0 ,
2017-10-08 14:54:51 +02:00
MOVE_MEDITATE , MOVE_AGILITY , MOVE_MIMIC , MOVE_DOUBLE_TEAM ,
MOVE_BARRAGE , MOVE_TRANSFORM , MOVE_STRUGGLE , MOVE_SCARY_FACE ,
MOVE_CHARGE , MOVE_WISH , MOVE_BRICK_BREAK , MOVE_YAWN ,
MOVE_FEATHER_DANCE , MOVE_TEETER_DANCE , MOVE_MUD_SPORT ,
2018-01-17 20:33:23 +01:00
MOVE_FAKE_TEARS , MOVE_WATER_SPORT , MOVE_CALM_MIND , 0 ,
2017-10-08 14:54:51 +02:00
MOVE_POUND , MOVE_SCRATCH , MOVE_VICE_GRIP ,
MOVE_WING_ATTACK , MOVE_FLY , MOVE_BIND , MOVE_SLAM ,
MOVE_HORN_ATTACK , MOVE_WRAP , MOVE_THRASH , MOVE_TAIL_WHIP ,
MOVE_LEER , MOVE_BITE , MOVE_GROWL , MOVE_ROAR ,
MOVE_SING , MOVE_PECK , MOVE_ABSORB , MOVE_STRING_SHOT ,
MOVE_EARTHQUAKE , MOVE_FISSURE , MOVE_DIG , MOVE_TOXIC ,
MOVE_SCREECH , MOVE_METRONOME , MOVE_LICK , MOVE_CLAMP ,
MOVE_CONSTRICT , MOVE_POISON_GAS , MOVE_BUBBLE ,
MOVE_SLASH , MOVE_SPIDER_WEB , MOVE_NIGHTMARE , MOVE_CURSE ,
MOVE_FORESIGHT , MOVE_CHARM , MOVE_ATTRACT , MOVE_ROCK_SMASH ,
MOVE_UPROAR , MOVE_SPIT_UP , MOVE_SWALLOW , MOVE_TORMENT ,
MOVE_FLATTER , MOVE_ROLE_PLAY , MOVE_ENDEAVOR , MOVE_TICKLE ,
2018-01-17 20:33:23 +01:00
MOVE_COVET , 0
2017-10-07 15:15:47 +02:00
} ;
2017-10-08 14:54:51 +02:00
static const u8 sDummyWeirdStatusString [ ] = { EOS , EOS , EOS , EOS , EOS , EOS , EOS , EOS , 0 , 0 } ;
2017-10-07 15:15:47 +02:00
2018-06-17 16:48:58 +02:00
static const struct BattleWindowText sTextOnWindowsInfo_Normal [ ] =
{
2018-11-22 02:10:50 +01:00
// The corresponding WindowTemplate is gStandardBattleWindowTemplates[] within src/battle_bg.c
2018-12-05 15:31:01 +01:00
{ // 0 Standard battle message
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xF ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 1 ,
. fgColor = 1 ,
. bgColor = 15 ,
. shadowColor = 6 ,
} ,
{ // 1 "What will (pokemon) do?"
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xF ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 15 ,
. shadowColor = 6 ,
} ,
{ // 2 "Fight/Pokemon/Bag/Run"
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 3 Top left move
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 4 Top right move
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 5 Bottom left move
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 6 Bottom right move
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 7 "PP"
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 12 ,
. bgColor = 14 ,
. shadowColor = 11 ,
} ,
{ // 8
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 9 PP remaining
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 2 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 12 ,
. bgColor = 14 ,
. shadowColor = 11 ,
} ,
{ // 10 "type"
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 11 "switch which?"
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 12 "gText_BattleYesNoChoice"
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 13
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 14
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0 ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 32 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 2 ,
} ,
{ // 15
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 16
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 17
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 18
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 19
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 20
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 21
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0 ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 6 ,
} ,
{ // 22
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0 ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 6 ,
} ,
{ // 23
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0x0 ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 6 ,
} ,
2017-10-07 15:15:47 +02:00
} ;
2018-06-17 16:48:58 +02:00
static const struct BattleWindowText sTextOnWindowsInfo_Arena [ ] =
{
2018-12-05 15:31:01 +01:00
{ // 0
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xF ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 1 ,
. fgColor = 1 ,
. bgColor = 15 ,
. shadowColor = 6 ,
} ,
{ // 1
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xF ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 15 ,
. shadowColor = 6 ,
} ,
{ // 2
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 3
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 4
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 5
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 6
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 7
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 12 ,
. bgColor = 14 ,
. shadowColor = 11 ,
} ,
{ // 8
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 9
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 2 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 12 ,
. bgColor = 14 ,
. shadowColor = 11 ,
} ,
{ // 10
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 11
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 7 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 12
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 13
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 14
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0 ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 32 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 0 ,
. shadowColor = 2 ,
} ,
{ // 15
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 1 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 16
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 17
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 18
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 19
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 20
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 21
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0xE ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = - 1 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 0 ,
. fgColor = 13 ,
. bgColor = 14 ,
. shadowColor = 15 ,
} ,
{ // 22
2019-03-02 23:25:39 +01:00
. fillValue = PIXEL_FILL ( 0x1 ) ,
2018-12-05 15:31:01 +01:00
. fontId = 1 ,
. x = 0 ,
. y = 1 ,
. letterSpacing = 0 ,
. lineSpacing = 0 ,
. speed = 1 ,
. fgColor = 2 ,
. bgColor = 1 ,
. shadowColor = 3 ,
} ,
2017-10-07 15:15:47 +02:00
} ;
2018-06-17 16:48:58 +02:00
static const struct BattleWindowText * const sBattleTextOnWindowsInfo [ ] =
2017-10-07 15:15:47 +02:00
{
2018-06-17 16:48:58 +02:00
sTextOnWindowsInfo_Normal , sTextOnWindowsInfo_Arena
2017-10-07 15:15:47 +02:00
} ;
2017-10-08 14:54:51 +02:00
static const u8 sRecordedBattleTextSpeeds [ ] = { 8 , 4 , 1 , 0 } ;
2017-10-07 15:15:47 +02:00
2018-06-17 16:48:58 +02:00
// code
2017-10-07 15:15:47 +02:00
void BufferStringBattle ( u16 stringID )
{
s32 i ;
2018-06-17 16:48:58 +02:00
const u8 * stringPtr = NULL ;
2017-10-07 15:15:47 +02:00
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 )
{
2021-01-13 21:17:32 +01:00
if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK ) )
2017-10-07 15:15:47 +02:00
{
2021-01-13 21:17:32 +01:00
if ( gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI )
2017-10-07 15:15:47 +02:00
{
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
{
2020-06-03 21:28:29 +02:00
if ( gTrainerBattleOpponent_A = = TRAINER_UNION_ROOM )
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 ;
2021-01-13 21:17:32 +01:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI )
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 ;
2021-01-13 21:17:32 +01:00
else if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK ) )
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
{
2021-01-13 21:17:32 +01:00
if ( ! ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK ) ) )
2018-02-28 23:50:25 +01:00
stringPtr = sText_Trainer1SentOutPkmn ;
2020-06-03 21:28:29 +02:00
else if ( gTrainerBattleOpponent_A = = TRAINER_UNION_ROOM )
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
{
2021-01-13 21:17:32 +01:00
if ( gTrainerBattleOpponent_A = = TRAINER_LINK_OPPONENT | | gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK )
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
{
2021-01-13 21:17:32 +01:00
if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK ) )
2017-10-07 15:15:47 +02:00
{
2021-01-13 21:17:32 +01:00
if ( gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI )
2017-10-07 15:15:47 +02:00
{
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 ;
2020-06-03 21:28:29 +02:00
else if ( gTrainerBattleOpponent_A = = TRAINER_UNION_ROOM )
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 14:12:17 +02:00
ChooseMoveUsedParticle ( gBattleTextBuff1 ) ; // buff1 doesn't appear in the string, leftover from japanese move names
2017-10-07 15:15:47 +02:00
2018-06-30 18:55:34 +02:00
if ( gBattleMsgDataPtr - > currentMove > = MOVES_COUNT )
2018-02-28 23:50:25 +01:00
StringCopy ( gBattleTextBuff2 , sATypeMove_Table [ * ( & gBattleStruct - > stringMoveType ) ] ) ;
2017-10-07 15:15:47 +02:00
else
2018-06-30 15:35:54 +02:00
StringCopy ( gBattleTextBuff2 , gMoveNames [ gBattleMsgDataPtr - > currentMove ] ) ;
2017-10-07 15:15:47 +02:00
2018-06-30 14:12:17 +02:00
ChooseTypeOfMoveUsedString ( gBattleTextBuff2 ) ;
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 :
2021-01-13 21:17:32 +01:00
if ( gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI )
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 ;
}
}
2020-06-03 21:28:29 +02:00
else if ( gTrainerBattleOpponent_A = = TRAINER_UNION_ROOM )
2017-10-07 15:15:47 +02:00
{
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 + + )
{
2020-09-17 01:27:55 +02:00
if ( * src = = EOS ) break ; // one line required to match -g
2017-10-07 19:59:41 +02:00
* 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-03-01 00:59:52 +01:00
u32 BattleStringExpandPlaceholders ( const u8 * src , u8 * dst )
2017-10-07 19:59:41 +02:00
{
u32 dstID = 0 ; // if they used dstID, why not use srcID as well?
2018-03-01 00:59:52 +01:00
const u8 * toCpy = NULL ;
2017-10-07 19:59:41 +02:00
u8 text [ 30 ] ;
2018-09-20 11:55:35 +02:00
u8 multiplayerId ;
2017-10-07 19:59:41 +02:00
s32 i ;
2021-01-13 21:17:32 +01:00
if ( gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK )
multiplayerId = gRecordedBattleMultiplayerId ;
2017-10-07 19:59:41 +02:00
else
2018-09-20 11:55:35 +02:00
multiplayerId = GetMultiplayerId ( ) ;
2017-10-07 19:59:41 +02:00
while ( * src ! = EOS )
{
if ( * src = = PLACEHOLDER_BEGIN )
{
src + + ;
switch ( * src )
{
case B_TXT_BUFF1 :
if ( gBattleTextBuff1 [ 0 ] = = B_BUFF_PLACEHOLDER_BEGIN )
{
ExpandBattleTextBuffPlaceholders ( gBattleTextBuff1 , gStringVar1 ) ;
toCpy = gStringVar1 ;
}
else
{
toCpy = TryGetStatusString ( gBattleTextBuff1 ) ;
if ( toCpy = = NULL )
toCpy = gBattleTextBuff1 ;
}
break ;
case B_TXT_BUFF2 :
if ( gBattleTextBuff2 [ 0 ] = = B_BUFF_PLACEHOLDER_BEGIN )
{
ExpandBattleTextBuffPlaceholders ( gBattleTextBuff2 , gStringVar2 ) ;
toCpy = gStringVar2 ;
}
else
toCpy = gBattleTextBuff2 ;
break ;
case B_TXT_BUFF3 :
if ( gBattleTextBuff3 [ 0 ] = = B_BUFF_PLACEHOLDER_BEGIN )
{
ExpandBattleTextBuffPlaceholders ( gBattleTextBuff3 , gStringVar3 ) ;
toCpy = gStringVar3 ;
}
else
toCpy = gBattleTextBuff3 ;
break ;
case B_TXT_COPY_VAR_1 :
toCpy = gStringVar1 ;
break ;
case B_TXT_COPY_VAR_2 :
toCpy = gStringVar2 ;
break ;
case B_TXT_COPY_VAR_3 :
toCpy = gStringVar3 ;
break ;
case B_TXT_PLAYER_MON1_NAME : // first player poke name
2018-02-06 20:48:02 +01:00
GetMonData ( & gPlayerParty [ gBattlerPartyIndexes [ GetBattlerAtPosition ( B_POSITION_PLAYER_LEFT ) ] ] ,
2017-10-07 19:59:41 +02:00
MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
case B_TXT_OPPONENT_MON1_NAME : // first enemy poke name
2018-02-06 20:48:02 +01:00
GetMonData ( & gEnemyParty [ gBattlerPartyIndexes [ GetBattlerAtPosition ( B_POSITION_OPPONENT_LEFT ) ] ] ,
2017-10-07 19:59:41 +02:00
MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
case B_TXT_PLAYER_MON2_NAME : // second player poke name
2018-02-06 20:48:02 +01:00
GetMonData ( & gPlayerParty [ gBattlerPartyIndexes [ GetBattlerAtPosition ( B_POSITION_PLAYER_RIGHT ) ] ] ,
2017-10-07 19:59:41 +02:00
MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
case B_TXT_OPPONENT_MON2_NAME : // second enemy poke name
2018-02-06 20:48:02 +01:00
GetMonData ( & gEnemyParty [ gBattlerPartyIndexes [ GetBattlerAtPosition ( B_POSITION_OPPONENT_RIGHT ) ] ] ,
2017-10-07 19:59:41 +02:00
MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
case B_TXT_LINK_PLAYER_MON1_NAME : // link first player poke name
2018-09-20 11:55:35 +02:00
GetMonData ( & gPlayerParty [ gBattlerPartyIndexes [ gLinkPlayers [ multiplayerId ] . id ] ] ,
2017-10-07 19:59:41 +02:00
MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
case B_TXT_LINK_OPPONENT_MON1_NAME : // link first opponent poke name
2018-09-20 11:55:35 +02:00
GetMonData ( & gEnemyParty [ gBattlerPartyIndexes [ gLinkPlayers [ multiplayerId ] . id ^ 1 ] ] ,
2017-10-07 19:59:41 +02:00
MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
case B_TXT_LINK_PLAYER_MON2_NAME : // link second player poke name
2018-09-20 11:55:35 +02:00
GetMonData ( & gPlayerParty [ gBattlerPartyIndexes [ gLinkPlayers [ multiplayerId ] . id ^ 2 ] ] ,
2017-10-07 19:59:41 +02:00
MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
case B_TXT_LINK_OPPONENT_MON2_NAME : // link second opponent poke name
2018-09-20 11:55:35 +02:00
GetMonData ( & gEnemyParty [ gBattlerPartyIndexes [ gLinkPlayers [ multiplayerId ] . id ^ 3 ] ] ,
2017-10-07 19:59:41 +02:00
MON_DATA_NICKNAME , text ) ;
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
2018-03-01 00:59:52 +01:00
case B_TXT_ATK_NAME_WITH_PREFIX_MON1 : // attacker name with prefix, only battlerId 0/1
2018-02-06 23:09:39 +01:00
HANDLE_NICKNAME_STRING_CASE ( gBattlerAttacker ,
gBattlerPartyIndexes [ GetBattlerAtPosition ( GET_BATTLER_SIDE ( gBattlerAttacker ) ) ] )
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_ATK_PARTNER_NAME : // attacker partner name
2018-02-06 23:09:39 +01:00
if ( GetBattlerSide ( gBattlerAttacker ) = = B_SIDE_PLAYER )
GetMonData ( & gPlayerParty [ gBattlerPartyIndexes [ GetBattlerAtPosition ( GET_BATTLER_SIDE ( gBattlerAttacker ) ) + 2 ] ] , MON_DATA_NICKNAME , text ) ;
2017-10-07 19:59:41 +02:00
else
2018-02-06 23:09:39 +01:00
GetMonData ( & gEnemyParty [ gBattlerPartyIndexes [ GetBattlerAtPosition ( GET_BATTLER_SIDE ( gBattlerAttacker ) ) + 2 ] ] , MON_DATA_NICKNAME , text ) ;
2017-10-07 19:59:41 +02:00
StringGetEnd10 ( text ) ;
toCpy = text ;
break ;
case B_TXT_ATK_NAME_WITH_PREFIX : // attacker name with prefix
2018-02-06 23:09:39 +01:00
HANDLE_NICKNAME_STRING_CASE ( gBattlerAttacker , gBattlerPartyIndexes [ gBattlerAttacker ] )
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_DEF_NAME_WITH_PREFIX : // target name with prefix
2018-02-06 23:09:39 +01:00
HANDLE_NICKNAME_STRING_CASE ( gBattlerTarget , gBattlerPartyIndexes [ gBattlerTarget ] )
2017-10-07 19:59:41 +02:00
break ;
2018-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
2021-01-13 21:17:32 +01:00
if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK ) )
2017-10-07 19:59:41 +02:00
{
if ( gLastUsedItem = = ITEM_ENIGMA_BERRY )
{
if ( ! ( gBattleTypeFlags & BATTLE_TYPE_MULTI ) )
{
2018-02-08 12:13:29 +01:00
if ( ( gBattleScripting . multiplayerId ! = 0 & & ( gPotentialItemEffectBattler & BIT_SIDE ) )
| | ( gBattleScripting . multiplayerId = = 0 & & ! ( gPotentialItemEffectBattler & BIT_SIDE ) ) )
2017-10-07 19:59:41 +02:00
{
2018-02-08 12:13:29 +01:00
StringCopy ( text , gEnigmaBerries [ gPotentialItemEffectBattler ] . name ) ;
2018-02-28 23:50:25 +01:00
StringAppend ( text , sText_BerrySuffix ) ;
2017-10-07 19:59:41 +02:00
toCpy = text ;
}
else
{
2018-02-28 23:50:25 +01:00
toCpy = sText_EnigmaBerry ;
2017-10-07 19:59:41 +02:00
}
}
else
{
2018-07-22 12:49:49 +02:00
if ( gLinkPlayers [ gBattleScripting . multiplayerId ] . id = = gPotentialItemEffectBattler )
2017-10-07 19:59:41 +02:00
{
2018-02-08 12:13:29 +01:00
StringCopy ( text , gEnigmaBerries [ gPotentialItemEffectBattler ] . name ) ;
2018-02-28 23:50:25 +01:00
StringAppend ( text , sText_BerrySuffix ) ;
2017-10-07 19:59:41 +02:00
toCpy = text ;
}
else
2018-02-28 23:50:25 +01:00
toCpy = sText_EnigmaBerry ;
2017-10-07 19:59:41 +02:00
}
}
else
{
CopyItemName ( gLastUsedItem , text ) ;
toCpy = text ;
}
}
else
{
CopyItemName ( gLastUsedItem , text ) ;
toCpy = text ;
}
break ;
case B_TXT_LAST_ABILITY : // last used ability
toCpy = gAbilityNames [ gLastUsedAbility ] ;
break ;
case B_TXT_ATK_ABILITY : // attacker ability
2018-06-30 15:35:54 +02:00
toCpy = gAbilityNames [ sBattlerAbilities [ gBattlerAttacker ] ] ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_DEF_ABILITY : // target ability
2018-06-30 15:35:54 +02:00
toCpy = gAbilityNames [ sBattlerAbilities [ gBattlerTarget ] ] ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_SCR_ACTIVE_ABILITY : // scripting active ability
2018-06-30 15:35:54 +02:00
toCpy = gAbilityNames [ sBattlerAbilities [ gBattleScripting . battler ] ] ;
2017-10-07 19:59:41 +02:00
break ;
2018-03-01 00:59:52 +01:00
case B_TXT_EFF_ABILITY : // effect battlerId ability
2018-06-30 15:35:54 +02:00
toCpy = gAbilityNames [ sBattlerAbilities [ gEffectBattler ] ] ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_TRAINER1_CLASS : // trainer class name
if ( gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE )
2018-02-11 17:35:01 +01:00
toCpy = gTrainerClassNames [ GetSecretBaseTrainerClass ( ) ] ;
2020-06-03 21:28:29 +02:00
else if ( gTrainerBattleOpponent_A = = TRAINER_UNION_ROOM )
toCpy = gTrainerClassNames [ GetUnionRoomTrainerClass ( ) ] ;
2018-06-30 18:55:34 +02:00
else if ( gTrainerBattleOpponent_A = = TRAINER_FRONTIER_BRAIN )
toCpy = gTrainerClassNames [ GetFrontierBrainTrainerClass ( ) ] ;
2017-10-07 19:59:41 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
toCpy = gTrainerClassNames [ GetFrontierOpponentClass ( gTrainerBattleOpponent_A ) ] ;
2018-09-20 22:00:00 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
toCpy = gTrainerClassNames [ GetTrainerHillOpponentClass ( gTrainerBattleOpponent_A ) ] ;
2017-10-07 19:59:41 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER )
toCpy = gTrainerClassNames [ GetEreaderTrainerClassId ( ) ] ;
else
toCpy = gTrainerClassNames [ gTrainers [ gTrainerBattleOpponent_A ] . trainerClass ] ;
break ;
case B_TXT_TRAINER1_NAME : // trainer1 name
if ( gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE )
{
for ( i = 0 ; i < ( s32 ) ARRAY_COUNT ( gBattleResources - > secretBase - > trainerName ) ; i + + )
text [ i ] = gBattleResources - > secretBase - > trainerName [ i ] ;
text [ i ] = EOS ;
ConvertInternationalString ( text , gBattleResources - > secretBase - > language ) ;
toCpy = text ;
}
2020-06-03 21:28:29 +02:00
else if ( gTrainerBattleOpponent_A = = TRAINER_UNION_ROOM )
2017-10-07 19:59:41 +02:00
{
2018-09-20 11:55:35 +02:00
toCpy = gLinkPlayers [ multiplayerId ^ BIT_SIDE ] . name ;
2017-10-07 19:59:41 +02:00
}
2018-06-30 18:55:34 +02:00
else if ( gTrainerBattleOpponent_A = = TRAINER_FRONTIER_BRAIN )
2017-10-07 19:59:41 +02:00
{
2018-06-30 18:55:34 +02:00
CopyFrontierBrainTrainerName ( text ) ;
2017-10-07 19:59:41 +02:00
toCpy = text ;
}
else if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
GetFrontierTrainerName ( text , gTrainerBattleOpponent_A ) ;
toCpy = text ;
}
2018-09-20 22:00:00 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
2017-10-07 19:59:41 +02:00
{
2018-09-20 22:00:00 +02:00
GetTrainerHillTrainerName ( text , gTrainerBattleOpponent_A ) ;
2017-10-07 19:59:41 +02:00
toCpy = text ;
}
else if ( gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER )
{
GetEreaderTrainerName ( text ) ;
toCpy = text ;
}
else
{
toCpy = gTrainers [ gTrainerBattleOpponent_A ] . trainerName ;
}
break ;
2018-09-20 11:55:35 +02:00
case B_TXT_LINK_PLAYER_NAME : // link player name
toCpy = gLinkPlayers [ multiplayerId ] . name ;
2017-10-07 19:59:41 +02:00
break ;
2018-09-20 11:55:35 +02:00
case B_TXT_LINK_PARTNER_NAME : // link partner name
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( BATTLE_PARTNER ( gLinkPlayers [ multiplayerId ] . id ) ) ] . name ;
2017-10-07 19:59:41 +02:00
break ;
2018-09-20 11:55:35 +02:00
case B_TXT_LINK_OPPONENT1_NAME : // link opponent 1 name
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( BATTLE_OPPOSITE ( gLinkPlayers [ multiplayerId ] . id ) ) ] . name ;
2017-10-07 19:59:41 +02:00
break ;
2018-09-20 11:55:35 +02:00
case B_TXT_LINK_OPPONENT2_NAME : // link opponent 2 name
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( BATTLE_PARTNER ( BATTLE_OPPOSITE ( gLinkPlayers [ multiplayerId ] . id ) ) ) ] . name ;
2017-10-07 19:59:41 +02:00
break ;
2018-09-20 11:55:35 +02:00
case B_TXT_LINK_SCR_TRAINER_NAME : // link scripting active name
2018-02-06 20:48:02 +01:00
toCpy = gLinkPlayers [ GetBattlerMultiplayerId ( gBattleScripting . battler ) ] . name ;
2017-10-07 19:59:41 +02:00
break ;
case B_TXT_PLAYER_NAME : // player name
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 )
{
2018-10-27 21:01:35 +02:00
CopyFrontierTrainerText ( FRONTIER_PLAYER_WON_TEXT , gTrainerBattleOpponent_A ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
2018-09-20 22:00:00 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
2017-10-07 19:59:41 +02:00
{
2019-11-13 22:10:05 +01:00
CopyTrainerHillTrainerText ( TRAINER_HILL_TEXT_PLAYER_WON , gTrainerBattleOpponent_A ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
else
{
2017-12-01 21:25:13 +01:00
toCpy = GetTrainerALoseText ( ) ;
2017-10-07 19:59:41 +02:00
}
break ;
case B_TXT_TRAINER1_WIN_TEXT : // trainerA win text
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
2018-10-27 21:01:35 +02:00
CopyFrontierTrainerText ( FRONTIER_PLAYER_LOST_TEXT , gTrainerBattleOpponent_A ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
2018-09-20 22:00:00 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
2017-10-07 19:59:41 +02:00
{
2019-11-13 22:10:05 +01:00
CopyTrainerHillTrainerText ( TRAINER_HILL_TEXT_PLAYER_LOST , gTrainerBattleOpponent_A ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
break ;
case B_TXT_26 : // ?
2018-02-06 02:46:59 +01: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 :
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
toCpy = gTrainerClassNames [ GetFrontierOpponentClass ( gTrainerBattleOpponent_B ) ] ;
2018-09-20 22:00:00 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
toCpy = gTrainerClassNames [ GetTrainerHillOpponentClass ( gTrainerBattleOpponent_B ) ] ;
2017-10-07 19:59:41 +02:00
else
toCpy = gTrainerClassNames [ gTrainers [ gTrainerBattleOpponent_B ] . trainerClass ] ;
break ;
case B_TXT_TRAINER2_NAME :
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
GetFrontierTrainerName ( text , gTrainerBattleOpponent_B ) ;
toCpy = text ;
}
2018-09-20 22:00:00 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
2017-10-07 19:59:41 +02:00
{
2018-09-20 22:00:00 +02:00
GetTrainerHillTrainerName ( text , gTrainerBattleOpponent_B ) ;
2017-10-07 19:59:41 +02:00
toCpy = text ;
}
else
{
toCpy = gTrainers [ gTrainerBattleOpponent_B ] . trainerName ;
}
break ;
case B_TXT_TRAINER2_LOSE_TEXT :
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
2018-10-27 21:01:35 +02:00
CopyFrontierTrainerText ( FRONTIER_PLAYER_WON_TEXT , gTrainerBattleOpponent_B ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
2018-09-20 22:00:00 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
2017-10-07 19:59:41 +02:00
{
2019-11-13 22:10:05 +01:00
CopyTrainerHillTrainerText ( TRAINER_HILL_TEXT_PLAYER_WON , gTrainerBattleOpponent_B ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
else
{
2017-12-01 21:25:13 +01:00
toCpy = GetTrainerBLoseText ( ) ;
2017-10-07 19:59:41 +02:00
}
break ;
case B_TXT_TRAINER2_WIN_TEXT :
if ( gBattleTypeFlags & BATTLE_TYPE_FRONTIER )
{
2018-10-27 21:01:35 +02:00
CopyFrontierTrainerText ( FRONTIER_PLAYER_LOST_TEXT , gTrainerBattleOpponent_B ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
2018-09-20 22:00:00 +02:00
else if ( gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL )
2017-10-07 19:59:41 +02:00
{
2019-11-13 22:10:05 +01:00
CopyTrainerHillTrainerText ( TRAINER_HILL_TEXT_PLAYER_LOST , gTrainerBattleOpponent_B ) ;
2017-10-07 19:59:41 +02:00
toCpy = gStringVar4 ;
}
break ;
case B_TXT_PARTNER_CLASS :
toCpy = gTrainerClassNames [ GetFrontierOpponentClass ( gPartnerTrainerId ) ] ;
break ;
case B_TXT_PARTNER_NAME :
GetFrontierTrainerName ( text , gPartnerTrainerId ) ;
toCpy = text ;
break ;
}
// missing if (toCpy != NULL) check
while ( * toCpy ! = EOS )
{
dst [ dstID ] = * toCpy ;
dstID + + ;
toCpy + + ;
}
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 + + ;
2020-08-11 05:50:49 +02:00
dst [ dstID ] = EXT_CTRL_CODE_PAUSE_UNTIL_PRESS ;
2017-10-07 19:59:41 +02:00
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 ;
}
2019-09-30 21:43:44 +02:00
ConvertIntToDecimalStringN ( dst , value , STR_CONV_MODE_LEFT_ALIGN , src [ srcID + 2 ] ) ;
2017-10-07 19:59:41 +02:00
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 ] ) ;
2021-01-13 21:17:32 +01:00
if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK ) )
2017-10-07 19:59:41 +02:00
{
if ( hword = = ITEM_ENIGMA_BERRY )
{
2018-07-22 12:49:49 +02:00
if ( gLinkPlayers [ gBattleScripting . multiplayerId ] . id = = gPotentialItemEffectBattler )
2017-10-07 19:59:41 +02:00
{
2018-02-08 12:13:29 +01:00
StringCopy ( dst , gEnigmaBerries [ gPotentialItemEffectBattler ] . name ) ;
2018-02-28 23:50:25 +01:00
StringAppend ( dst , sText_BerrySuffix ) ;
2017-10-07 19:59:41 +02:00
}
else
2018-06-30 14:12:17 +02:00
{
2018-02-28 23:50:25 +01:00
StringAppend ( dst , sText_EnigmaBerry ) ;
2018-06-30 14:12:17 +02:00
}
2017-10-07 19:59:41 +02:00
}
else
2018-06-30 14:12:17 +02:00
{
2017-10-07 19:59:41 +02:00
CopyItemName ( hword , dst ) ;
2018-06-30 14:12:17 +02:00
}
2017-10-07 19:59:41 +02:00
}
else
2018-06-30 14:12:17 +02:00
{
2017-10-07 19:59:41 +02:00
CopyItemName ( hword , dst ) ;
2018-06-30 14:12:17 +02:00
}
2017-10-07 19:59:41 +02:00
srcID + = 3 ;
break ;
}
}
}
2017-10-08 14:54:51 +02:00
2018-01-17 20:33:23 +01:00
// Loads one of two text strings into the provided buffer. This is functionally
// unused, since the value loaded into the buffer is not read; it loaded one of
2018-06-30 14:12:17 +02:00
// two particles (either "は" or "の") which works in tandem with ChooseTypeOfMoveUsedString
2018-01-17 20:33:23 +01:00
// below to effect changes in the meaning of the line.
2018-06-30 14:12:17 +02:00
static void ChooseMoveUsedParticle ( u8 * textBuff )
2017-10-08 14:54:51 +02:00
{
s32 counter = 0 ;
u32 i = 0 ;
2018-12-25 18:50:15 +01:00
while ( counter ! = MAX_MON_MOVES )
2017-10-08 14:54:51 +02:00
{
2018-06-30 14:12:17 +02:00
if ( sGrammarMoveUsedTable [ i ] = = 0 )
2017-10-08 14:54:51 +02:00
counter + + ;
2018-06-30 15:35:54 +02:00
if ( sGrammarMoveUsedTable [ i + + ] = = gBattleMsgDataPtr - > currentMove )
2017-10-08 14:54:51 +02:00
break ;
}
if ( counter > = 0 )
{
if ( counter < = 2 )
2018-02-28 23:50:25 +01:00
StringCopy ( textBuff , sText_SpaceIs ) ; // is
2018-12-25 18:50:15 +01:00
else if ( counter < = MAX_MON_MOVES )
2018-02-28 23:50:25 +01:00
StringCopy ( textBuff , sText_ApostropheS ) ; // 's
2017-10-08 14:54:51 +02:00
}
}
2018-01-17 20:33:23 +01:00
// Appends "!" to the text buffer `dst`. In the original Japanese this looked
2018-06-30 14:12:17 +02:00
// into the table of moves at sGrammarMoveUsedTable and varied the line accordingly.
2018-02-08 00:00:25 +01:00
//
2018-02-28 23:50:25 +01:00
// sText_ExclamationMark was a plain "!", used for any attack not on the list.
2018-01-17 20:33:23 +01:00
// It resulted in the translation "<NAME>'s <ATTACK>!".
2018-02-08 00:00:25 +01:00
//
2018-02-28 23:50:25 +01: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-02-28 23:50:25 +01: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-02-28 23:50:25 +01: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-02-28 23:50:25 +01:00
// sText_ExclamationMark5 was " こうげき!" This resulted in a translation of
2018-01-17 20:33:23 +01:00
// "<NAME>'s <ATTACK> attack!".
2018-06-30 14:12:17 +02:00
static void ChooseTypeOfMoveUsedString ( u8 * dst )
2017-10-08 14:54:51 +02:00
{
s32 counter = 0 ;
s32 i = 0 ;
while ( * dst ! = EOS )
dst + + ;
2018-12-25 18:50:15 +01:00
while ( counter ! = MAX_MON_MOVES )
2017-10-08 14:54:51 +02:00
{
2018-06-30 14:12:17 +02:00
if ( sGrammarMoveUsedTable [ i ] = = MOVE_NONE )
2017-10-08 14:54:51 +02:00
counter + + ;
2018-06-30 15:35:54 +02:00
if ( sGrammarMoveUsedTable [ i + + ] = = gBattleMsgDataPtr - > currentMove )
2017-10-08 14:54:51 +02:00
break ;
}
switch ( counter )
{
case 0 :
2018-02-28 23:50:25 +01:00
StringCopy ( dst , sText_ExclamationMark ) ;
2017-10-08 14:54:51 +02:00
break ;
case 1 :
2018-02-28 23:50:25 +01:00
StringCopy ( dst , sText_ExclamationMark2 ) ;
2017-10-08 14:54:51 +02:00
break ;
case 2 :
2018-02-28 23:50:25 +01:00
StringCopy ( dst , sText_ExclamationMark3 ) ;
2017-10-08 14:54:51 +02:00
break ;
case 3 :
2018-02-28 23:50:25 +01:00
StringCopy ( dst , sText_ExclamationMark4 ) ;
2017-10-08 14:54:51 +02:00
break ;
case 4 :
2018-02-28 23:50:25 +01:00
StringCopy ( dst , sText_ExclamationMark5 ) ;
2017-10-08 14:54:51 +02:00
break ;
}
}
2018-06-17 16:48:58 +02:00
void BattlePutTextOnWindow ( const u8 * text , u8 windowId )
2017-10-08 14:54:51 +02:00
{
2018-06-17 16:48:58 +02:00
const struct BattleWindowText * textInfo = sBattleTextOnWindowsInfo [ gBattleScripting . windowsType ] ;
2018-07-16 20:47:30 +02:00
bool32 copyToVram ;
2018-11-06 17:44:48 +01:00
struct TextPrinterTemplate printerTemplate ;
2017-10-08 14:54:51 +02:00
u8 speed ;
2018-06-17 16:48:58 +02:00
if ( windowId & 0x80 )
2017-10-08 14:54:51 +02:00
{
2018-06-17 16:48:58 +02:00
windowId & = ~ ( 0x80 ) ;
2018-07-16 20:47:30 +02:00
copyToVram = FALSE ;
2017-10-08 14:54:51 +02:00
}
else
{
2018-06-17 16:48:58 +02:00
FillWindowPixelBuffer ( windowId , textInfo [ windowId ] . fillValue ) ;
2018-07-16 20:47:30 +02:00
copyToVram = TRUE ;
2017-10-08 14:54:51 +02:00
}
2018-11-06 17:44:48 +01:00
printerTemplate . currentChar = text ;
printerTemplate . windowId = windowId ;
printerTemplate . fontId = textInfo [ windowId ] . fontId ;
printerTemplate . x = textInfo [ windowId ] . x ;
printerTemplate . y = textInfo [ windowId ] . y ;
printerTemplate . currentX = printerTemplate . x ;
printerTemplate . currentY = printerTemplate . y ;
printerTemplate . letterSpacing = textInfo [ windowId ] . letterSpacing ;
printerTemplate . lineSpacing = textInfo [ windowId ] . lineSpacing ;
Undo PokeCodec's PRs
This commit undoes most of PokeCodec's PRs after the debate in chat. Some
harmless or completely superseded PRs have been left alone, as there is not
much benefit in attempting to undo them.
Reverts #1104, #1108, #1115, #1118, #1119, #1124, #1126, #1127, #1132, #1136,
#1137, #1139, #1140, #1144, #1148, #1149, #1150, #1153, #1155, #1177, #1179,
#1180, #1181, #1182 and #1183.
2020-09-13 09:22:50 +02:00
printerTemplate . unk = 0 ;
2018-11-06 17:44:48 +01:00
printerTemplate . fgColor = textInfo [ windowId ] . fgColor ;
printerTemplate . bgColor = textInfo [ windowId ] . bgColor ;
printerTemplate . shadowColor = textInfo [ windowId ] . shadowColor ;
2018-12-05 15:31:01 +01:00
if ( printerTemplate . x = = 0xFF )
2017-10-08 14:54:51 +02:00
{
2018-06-17 16:48:58 +02:00
u32 width = sub_80397C4 ( gBattleScripting . windowsType , windowId ) ;
2018-11-06 17:44:48 +01:00
s32 alignX = GetStringCenterAlignXOffsetWithLetterSpacing ( printerTemplate . fontId , printerTemplate . currentChar , width , printerTemplate . letterSpacing ) ;
printerTemplate . x = printerTemplate . currentX = alignX ;
2017-10-08 14:54:51 +02:00
}
2018-06-17 16:48:58 +02:00
if ( windowId = = 0x16 )
2018-11-06 18:30:21 +01:00
gTextFlags . useAlternateDownArrow = 0 ;
2017-10-08 14:54:51 +02:00
else
2018-11-06 18:30:21 +01:00
gTextFlags . useAlternateDownArrow = 1 ;
2017-10-08 14:54:51 +02:00
if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED ) )
2018-11-06 18:30:21 +01:00
gTextFlags . autoScroll = 1 ;
2017-10-08 14:54:51 +02:00
else
2018-11-06 18:30:21 +01:00
gTextFlags . autoScroll = 0 ;
2017-10-08 14:54:51 +02:00
2018-06-17 16:48:58 +02:00
if ( windowId = = 0 | | windowId = = 0x16 )
2017-10-08 14:54:51 +02:00
{
2021-01-13 21:17:32 +01:00
if ( gBattleTypeFlags & ( BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK ) )
2017-10-08 14:54:51 +02:00
speed = 1 ;
else if ( gBattleTypeFlags & BATTLE_TYPE_RECORDED )
2017-11-13 18:07:23 +01:00
speed = sRecordedBattleTextSpeeds [ GetTextSpeedInRecordedBattle ( ) ] ;
2017-10-08 14:54:51 +02:00
else
2018-11-06 18:30:21 +01:00
speed = GetPlayerTextSpeedDelay ( ) ;
2017-10-08 14:54:51 +02:00
2018-11-06 17:44:48 +01:00
gTextFlags . canABSpeedUpPrint = 1 ;
2017-10-08 14:54:51 +02:00
}
else
{
2018-06-17 16:48:58 +02:00
speed = textInfo [ windowId ] . speed ;
2018-11-06 17:44:48 +01:00
gTextFlags . canABSpeedUpPrint = 0 ;
2017-10-08 14:54:51 +02:00
}
2018-11-06 17:44:48 +01:00
AddTextPrinter ( & printerTemplate , speed , NULL ) ;
2017-10-08 14:54:51 +02:00
2018-07-16 20:47:30 +02:00
if ( copyToVram )
2017-10-08 14:54:51 +02:00
{
2018-06-17 16:48:58 +02:00
PutWindowTilemap ( windowId ) ;
CopyWindowToVram ( windowId , 3 ) ;
2017-10-08 14:54:51 +02:00
}
}
void SetPpNumbersPaletteInMoveSelection ( void )
{
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 ;
}