3562 lines
198 KiB
C
3562 lines
198 KiB
C
#include "global.h"
|
||
#include "battle.h"
|
||
#include "battle_anim.h"
|
||
#include "battle_controllers.h"
|
||
#include "battle_message.h"
|
||
#include "battle_setup.h"
|
||
#include "battle_tower.h"
|
||
#include "battle_z_move.h"
|
||
#include "data.h"
|
||
#include "event_data.h"
|
||
#include "frontier_util.h"
|
||
#include "graphics.h"
|
||
#include "international_string_util.h"
|
||
#include "item.h"
|
||
#include "link.h"
|
||
#include "menu.h"
|
||
#include "palette.h"
|
||
#include "recorded_battle.h"
|
||
#include "string_util.h"
|
||
#include "strings.h"
|
||
#include "test_runner.h"
|
||
#include "text.h"
|
||
#include "trainer_hill.h"
|
||
#include "trainer_slide.h"
|
||
#include "window.h"
|
||
#include "line_break.h"
|
||
#include "constants/abilities.h"
|
||
#include "constants/battle_dome.h"
|
||
#include "constants/battle_string_ids.h"
|
||
#include "constants/frontier_util.h"
|
||
#include "constants/items.h"
|
||
#include "constants/moves.h"
|
||
#include "constants/opponents.h"
|
||
#include "constants/species.h"
|
||
#include "constants/trainers.h"
|
||
#include "constants/trainer_hill.h"
|
||
#include "constants/weather.h"
|
||
|
||
struct BattleWindowText
|
||
{
|
||
u8 fillValue;
|
||
u8 fontId;
|
||
u8 x;
|
||
u8 y;
|
||
u8 letterSpacing;
|
||
u8 lineSpacing;
|
||
u8 speed;
|
||
u8 fgColor;
|
||
u8 bgColor;
|
||
u8 shadowColor;
|
||
};
|
||
|
||
#if TESTING
|
||
EWRAM_DATA u16 sBattlerAbilities[MAX_BATTLERS_COUNT] = {0};
|
||
#else
|
||
static EWRAM_DATA u16 sBattlerAbilities[MAX_BATTLERS_COUNT] = {0};
|
||
#endif
|
||
EWRAM_DATA struct BattleMsgData *gBattleMsgDataPtr = NULL;
|
||
|
||
// todo: make some of those names less vague: attacker/target vs pkmn, etc.
|
||
|
||
static const u8 sText_EmptyString4[] = _("");
|
||
|
||
const u8 gText_PkmnShroudedInMist[] = _("{B_ATK_TEAM1}被\n白雾包围了!");
|
||
const u8 gText_PkmnGettingPumped[] = _("{B_DEF_NAME_WITH_PREFIX}\n现在干劲十足!");
|
||
const u8 gText_PkmnsXPreventsSwitching[] = _("因{B_BUFF1}的{B_LAST_ABILITY}\n而无法进行替换!\p");
|
||
const u8 gText_StatSharply[] = _("大幅");
|
||
const u8 gText_StatRose[] = _("提高了!");
|
||
const u8 gText_StatFell[] = _("降低了!");
|
||
const u8 gText_DefendersStatRose[] = _("{B_DEF_NAME_WITH_PREFIX}的\n{B_BUFF1}{B_BUFF2}");
|
||
static const u8 sText_GotAwaySafely[] = _("{PLAY_SE SE_FLEE}顺利逃走了!\p");
|
||
static const u8 sText_PlayerDefeatedLinkTrainer[] = _("战胜了\n{B_LINK_OPPONENT1_NAME}!");
|
||
static const u8 sText_TwoLinkTrainersDefeated[] = _("战胜了\n{B_LINK_OPPONENT1_NAME}和{B_LINK_OPPONENT2_NAME}!");
|
||
static const u8 sText_PlayerLostAgainstLinkTrainer[] = _("被{B_LINK_OPPONENT1_NAME}\n打败了!");
|
||
static const u8 sText_PlayerLostToTwo[] = _("被{B_LINK_OPPONENT1_NAME}和{B_LINK_OPPONENT2_NAME}\n打败了!");
|
||
static const u8 sText_PlayerBattledToDrawLinkTrainer[] = _("和{B_LINK_OPPONENT1_NAME}\n打成了平局!");
|
||
static const u8 sText_PlayerBattledToDrawVsTwo[] = _("与{B_LINK_OPPONENT1_NAME}和{B_LINK_OPPONENT2_NAME}\n打成了平局!");
|
||
static const u8 sText_WildFled[] = _("{PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME}逃走了!"); //not in gen 5+, replaced with match was forfeited text
|
||
static const u8 sText_TwoWildFled[] = _("{PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME}和\n{B_LINK_OPPONENT2_NAME}逃走了!"); //not in gen 5+, replaced with match was forfeited text
|
||
static const u8 sText_PlayerDefeatedLinkTrainerTrainer1[] = _("战胜了\n{B_TRAINER1_NAME_WITH_CLASS}!\p");
|
||
static const u8 sText_OpponentMon1Appeared[] = _("{B_OPPONENT_MON1_NAME}出现了!\p");
|
||
static const u8 sText_WildPkmnAppeared[] = _("{B_OPPONENT_MON1_NAME}扑过来了!\p");
|
||
static const u8 sText_LegendaryPkmnAppeared[] = _("{B_OPPONENT_MON1_NAME}出现了!\p");
|
||
static const u8 sText_WildPkmnAppearedPause[] = _("{B_OPPONENT_MON1_NAME}扑过来了!{PAUSE 127}");
|
||
static const u8 sText_TwoWildPkmnAppeared[] = _("{B_OPPONENT_MON1_NAME}和{B_OPPONENT_MON2_NAME}\n扑过来了!\p");
|
||
static const u8 sText_Trainer1WantsToBattle[] = _("{B_TRAINER1_NAME_WITH_CLASS}\n前来挑战了!\p");
|
||
static const u8 sText_LinkTrainerWantsToBattle[] = _("{B_LINK_OPPONENT1_NAME}\n前来挑战了!");
|
||
static const u8 sText_TwoLinkTrainersWantToBattle[] = _("{B_LINK_OPPONENT1_NAME}和{B_LINK_OPPONENT2_NAME}\n前来挑战了!");
|
||
static const u8 sText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_NAME_WITH_CLASS}\n派出了{B_OPPONENT_MON1_NAME}!");
|
||
static const u8 sText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_NAME_WITH_CLASS}\n派出了{B_OPPONENT_MON1_NAME}和{B_OPPONENT_MON2_NAME}!");
|
||
static const u8 sText_Trainer1SentOutPkmn2[] = _("{B_TRAINER1_NAME_WITH_CLASS}\n派出了{B_BUFF1}!");
|
||
static const u8 sText_LinkTrainerSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME}派出了\n{B_OPPONENT_MON1_NAME}!");
|
||
static const u8 sText_LinkTrainerSentOutTwoPkmn[] = _("{B_LINK_OPPONENT1_NAME}派出了\n{B_OPPONENT_MON1_NAME}和{B_OPPONENT_MON2_NAME}!");
|
||
static const u8 sText_TwoLinkTrainersSentOutPkmn[] = _("{B_LINK_OPPONENT1_NAME}派出了{B_LINK_OPPONENT_MON1_NAME}!\n{B_LINK_OPPONENT2_NAME}派出了{B_LINK_OPPONENT_MON2_NAME}!");
|
||
static const u8 sText_LinkTrainerSentOutPkmn2[] = _("{B_LINK_OPPONENT1_NAME}派出了\n{B_BUFF1}!");
|
||
static const u8 sText_LinkTrainerMultiSentOutPkmn[] = _("{B_LINK_SCR_TRAINER_NAME}派出了\n{B_BUFF1}!");
|
||
static const u8 sText_GoPkmn[] = _("上吧!{B_PLAYER_MON1_NAME}!");
|
||
static const u8 sText_GoTwoPkmn[] = _("上吧!{B_PLAYER_MON1_NAME}!\n{B_PLAYER_MON2_NAME}!");
|
||
static const u8 sText_GoPkmn2[] = _("上吧!{B_BUFF1}!");
|
||
static const u8 sText_DoItPkmn[] = _("交给你了!{B_BUFF1}!");
|
||
static const u8 sText_GoForItPkmn[] = _("加油!{B_BUFF1}!");
|
||
static const u8 sText_JustALittleMorePkmn[] = _("只差一点了!\n加油!{B_BUFF1}!"); //currently unused, will require code changes
|
||
static const u8 sText_YourFoesWeakGetEmPkmn[] = _("对手变弱了!\n机会来了!{B_BUFF1}!");
|
||
static const u8 sText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_LINK_PARTNER_NAME}派出了{B_LINK_PLAYER_MON2_NAME}!\n上吧!{B_LINK_PLAYER_MON1_NAME}!");
|
||
static const u8 sText_PkmnSwitchOut[] = _("{B_BUFF1},替换!\n回来!"); //currently unused, I believe its used for when you switch on a pokemon in shift mode
|
||
static const u8 sText_PkmnThatsEnough[] = _("{B_BUFF1},好了!\n回来!");
|
||
static const u8 sText_PkmnComeBack[] = _("{B_BUFF1},\n回来!");
|
||
static const u8 sText_PkmnOkComeBack[] = _("{B_BUFF1},很好!\n回来!");
|
||
static const u8 sText_PkmnGoodComeBack[] = _("{B_BUFF1},干得漂亮!\n回来!");
|
||
static const u8 sText_Trainer1WithdrewPkmn[] = _("{B_TRAINER1_NAME_WITH_CLASS}换下了\n{B_BUFF1}!");
|
||
static const u8 sText_LinkTrainer1WithdrewPkmn[] = _("{B_LINK_OPPONENT1_NAME}换下了\n{B_BUFF1}!");
|
||
static const u8 sText_LinkTrainer2WithdrewPkmn[] = _("{B_LINK_SCR_TRAINER_NAME}换下了\n{B_BUFF1}!");
|
||
static const u8 sText_WildPkmnPrefix[] = _("野生的");
|
||
static const u8 sText_FoePkmnPrefix[] = _("对手的");
|
||
static const u8 sText_WildPkmnPrefixLower[] = _("野生的");
|
||
static const u8 sText_FoePkmnPrefixLower[] = _("对手的");
|
||
static const u8 sText_EmptyString8[] = _("");
|
||
static const u8 sText_FoePkmnPrefix2[] = _("对手");
|
||
static const u8 sText_AllyPkmnPrefix[] = _("我方");
|
||
static const u8 sText_FoePkmnPrefix3[] = _("对手");
|
||
static const u8 sText_AllyPkmnPrefix2[] = _("我方");
|
||
static const u8 sText_FoePkmnPrefix4[] = _("对手");
|
||
static const u8 sText_AllyPkmnPrefix3[] = _("我方");
|
||
static const u8 sText_AttackerUsedX[] = _("{B_ATK_NAME_WITH_PREFIX}使出了\n{B_BUFF3}!");
|
||
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_HP[] = _("HP");
|
||
static const u8 sText_Attack[] = _("攻击");
|
||
static const u8 sText_Defense[] = _("防御");
|
||
static const u8 sText_Speed[] = _("速度");
|
||
static const u8 sText_SpAttack[] = _("特攻");
|
||
static const u8 sText_SpDefense[] = _("特防");
|
||
static const u8 sText_Accuracy[] = _("命中率");
|
||
static const u8 sText_Evasiveness[] = _("闪避率");
|
||
|
||
const u8 *const gStatNamesTable[NUM_BATTLE_STATS] =
|
||
{
|
||
[STAT_HP] = sText_HP,
|
||
[STAT_ATK] = sText_Attack,
|
||
[STAT_DEF] = sText_Defense,
|
||
[STAT_SPEED] = sText_Speed,
|
||
[STAT_SPATK] = sText_SpAttack,
|
||
[STAT_SPDEF] = sText_SpDefense,
|
||
[STAT_ACC] = sText_Accuracy,
|
||
[STAT_EVASION] = sText_Evasiveness,
|
||
};
|
||
const u8 *const gPokeblockWasTooXStringTable[FLAVOR_COUNT] =
|
||
{
|
||
[FLAVOR_SPICY] = COMPOUND_STRING("太辣了!"),
|
||
[FLAVOR_DRY] = COMPOUND_STRING("太涩了!"),
|
||
[FLAVOR_SWEET] = COMPOUND_STRING("太甜了!"),
|
||
[FLAVOR_BITTER] = COMPOUND_STRING("太苦了!"),
|
||
[FLAVOR_SOUR] = COMPOUND_STRING("太酸了!"),
|
||
};
|
||
|
||
static const u8 sText_Someones[] = _("某人的");
|
||
static const u8 sText_Lanettes[] = _("真由美的"); //no decapitalize until it is everywhere
|
||
static const u8 sText_EnigmaBerry[] = _("谜芝果"); //no decapitalize until it is everywhere
|
||
static const u8 sText_BerrySuffix[] = _("果"); //no decapitalize until it is everywhere
|
||
const u8 gText_EmptyString3[] = _("");
|
||
|
||
static const u8 sText_TwoInGameTrainersDefeated[] = _("战胜了\n{B_TRAINER1_NAME_WITH_CLASS}和\l{B_TRAINER2_NAME_WITH_CLASS}!\p");
|
||
|
||
// New battle strings.
|
||
const u8 gText_drastically[] = _("巨幅");
|
||
const u8 gText_severely[] = _("巨幅");
|
||
static const u8 sText_TerrainReturnedToNormal[] = _("场地恢复了正常!"); // Unused
|
||
|
||
const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
|
||
{
|
||
[STRINGID_TRAINER1LOSETEXT] = COMPOUND_STRING("{B_TRAINER1_LOSE_TEXT}"),
|
||
[STRINGID_PKMNGAINEDEXP] = COMPOUND_STRING("{B_BUFF1}获得了{B_BUFF2}\n{B_BUFF3}经验值!\p"),
|
||
[STRINGID_PKMNGREWTOLV] = COMPOUND_STRING("{B_BUFF1}\n上升到了等级{B_BUFF2}!{WAIT_SE}\p"),
|
||
[STRINGID_PKMNLEARNEDMOVE] = COMPOUND_STRING("{B_BUFF1}\n学会了{B_BUFF2}!{WAIT_SE}\p"),
|
||
[STRINGID_TRYTOLEARNMOVE1] = COMPOUND_STRING("{B_BUFF1}想要学习\n{B_BUFF2}。\p"),
|
||
[STRINGID_TRYTOLEARNMOVE2] = COMPOUND_STRING("但是,{B_BUFF1}已经不能\n习得更多的招式。\p"),
|
||
[STRINGID_TRYTOLEARNMOVE3] = COMPOUND_STRING("为了学习{B_BUFF2},\n要忘记其他的招式吗?"),
|
||
[STRINGID_PKMNFORGOTMOVE] = COMPOUND_STRING("{B_BUFF1}把{B_BUFF2}的\n使用方法忘得干干净净了!\p"),
|
||
[STRINGID_STOPLEARNINGMOVE] = COMPOUND_STRING("{PAUSE 32}要放弃学习\n{B_BUFF2}吗?"),
|
||
[STRINGID_DIDNOTLEARNMOVE] = COMPOUND_STRING("{B_BUFF1}没有学习\n{B_BUFF2}就结束了!\p"),
|
||
[STRINGID_PKMNLEARNEDMOVE2] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n学会了{B_BUFF1}!"),
|
||
[STRINGID_ATTACKMISSED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的招式没有命中!"),
|
||
[STRINGID_PKMNPROTECTEDITSELF] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n在攻击中守护住了自己!"),
|
||
[STRINGID_STATSWONTINCREASE2] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n能力已经无法再提高了!"),
|
||
[STRINGID_AVOIDEDDAMAGE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}因{B_DEF_ABILITY},\n没有收到伤害!"), //not in gen 5+, ability popup
|
||
[STRINGID_ITDOESNTAFFECT] = COMPOUND_STRING("对于{B_DEF_NAME_WITH_PREFIX2},\n好像没有效果……"),
|
||
[STRINGID_ATTACKERFAINTED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}倒下了!\p"),
|
||
[STRINGID_TARGETFAINTED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}倒下了!\p"),
|
||
[STRINGID_PLAYERGOTMONEY] = COMPOUND_STRING("作为奖金,\n{B_PLAYER_NAME}获得了¥{B_BUFF1}!\p"),
|
||
[STRINGID_PLAYERWHITEOUT] = COMPOUND_STRING("{B_PLAYER_NAME}的手上没有\n可以战斗的宝可梦!\p"),
|
||
#if B_WHITEOUT_MONEY >= GEN_4
|
||
[STRINGID_PLAYERWHITEOUT2] = COMPOUND_STRING("{B_PLAYER_NAME}在慌乱中\n丢失了¥{B_BUFF1}……\p………………\n………………\p{B_PLAYER_NAME}的眼前变得一片漆黑!{PAUSE_UNTIL_PRESS}"),
|
||
#else
|
||
[STRINGID_PLAYERWHITEOUT2] = COMPOUND_STRING("{B_PLAYER_NAME}在慌乱中\n丢失了¥{B_BUFF1}……\p………………\n………………\p{B_PLAYER_NAME}的眼前变得一片漆黑!{PAUSE_UNTIL_PRESS}"),
|
||
#endif
|
||
[STRINGID_PREVENTSESCAPE] = COMPOUND_STRING("因{B_SCR_NAME_WITH_PREFIX}的\n{B_SCR_ACTIVE_ABILITY}而无法逃走!\p"),
|
||
[STRINGID_HITXTIMES] = COMPOUND_STRING("击中了{B_BUFF1}次!"), //SV has dynamic plural here
|
||
[STRINGID_PKMNFELLASLEEP] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}睡着了!"),
|
||
[STRINGID_PKMNMADESLEEP] = COMPOUND_STRING("因{B_SCR_NAME_WITH_PREFIX2}的{B_BUFF1},\n{B_EFF_NAME_WITH_PREFIX2}睡着了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNALREADYASLEEP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n已经睡着了!"),
|
||
[STRINGID_PKMNALREADYASLEEP2] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n已经睡着了!"),
|
||
[STRINGID_PKMNWASNTAFFECTED] = COMPOUND_STRING("对于{B_DEF_NAME_WITH_PREFIX},\n好像没有效果……"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNWASPOISONED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}中毒了!"),
|
||
[STRINGID_PKMNPOISONEDBY] = COMPOUND_STRING("因{B_SCR_NAME_WITH_PREFIX}的{B_BUFF1},\n{B_EFF_NAME_WITH_PREFIX2}中毒了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNHURTBYPOISON] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n受到了毒的伤害!"),
|
||
[STRINGID_PKMNALREADYPOISONED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n已经中毒了。"),
|
||
[STRINGID_PKMNBADLYPOISONED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}中剧毒了!"),
|
||
[STRINGID_PKMNENERGYDRAINED] = COMPOUND_STRING("从{B_DEF_NAME_WITH_PREFIX}那里\n吸取了体力!"),
|
||
[STRINGID_PKMNWASBURNED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}被灼伤了!"),
|
||
[STRINGID_PKMNBURNEDBY] = COMPOUND_STRING("因{B_SCR_NAME_WITH_PREFIX2}的{B_BUFF1},\n{B_EFF_NAME_WITH_PREFIX2}被灼伤了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNHURTBYBURN] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n受到了灼伤的伤害!"),
|
||
[STRINGID_PKMNWASFROZEN] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}冻住了!"),
|
||
[STRINGID_PKMNFROZENBY] = COMPOUND_STRING("因{B_SCR_NAME_WITH_PREFIX2}的{B_BUFF1},\n{B_EFF_NAME_WITH_PREFIX2}冻住了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNISFROZEN] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n因冻住了而无法行动!"),
|
||
[STRINGID_PKMNWASDEFROSTED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n冰冻被融化了!"),
|
||
[STRINGID_PKMNWASDEFROSTED2] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n冰冻被融化了!"),
|
||
[STRINGID_PKMNWASDEFROSTEDBY] = COMPOUND_STRING("因{B_ATK_NAME_WITH_PREFIX}的\n{B_CURRENT_MOVE},冰冻被融化了!"),
|
||
[STRINGID_PKMNWASPARALYZED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}麻痹了,\n很难使出招式!"),
|
||
[STRINGID_PKMNWASPARALYZEDBY] = COMPOUND_STRING("因{B_SCR_NAME_WITH_PREFIX}的{B_BUFF1},\n{B_EFF_NAME_WITH_PREFIX2}麻痹了,\l很难使出招式!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNISPARALYZED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n因身体麻痹而无法行动!"),
|
||
[STRINGID_PKMNISALREADYPARALYZED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n已经麻痹了。"),
|
||
[STRINGID_PKMNHEALEDPARALYSIS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n麻痹被解除了!"),
|
||
[STRINGID_PKMNDREAMEATEN] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n梦被吃掉了!"), //not in gen 5+, expansion doesn't use anymore
|
||
[STRINGID_STATSWONTINCREASE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n{B_BUFF1}已经无法再提高了!"),
|
||
[STRINGID_STATSWONTDECREASE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n{B_BUFF1}已经无法再降低了!"),
|
||
[STRINGID_TEAMSTOPPEDWORKING] = COMPOUND_STRING("我方的{B_BUFF1}\n失去了作用!"), //unused
|
||
[STRINGID_FOESTOPPEDWORKING] = COMPOUND_STRING("对手的{B_BUFF1}\n失去了作用!"), //unused
|
||
[STRINGID_PKMNISCONFUSED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n正在混乱中!"),
|
||
[STRINGID_PKMNHEALEDCONFUSION] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n混乱解除了!"),
|
||
[STRINGID_PKMNWASCONFUSED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}混乱了!"),
|
||
[STRINGID_PKMNALREADYCONFUSED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n已经混乱了。"),
|
||
[STRINGID_PKMNFELLINLOVE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n着迷了!"),
|
||
[STRINGID_PKMNINLOVE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX2}让\n{B_ATK_NAME_WITH_PREFIX}着迷了!"),
|
||
[STRINGID_PKMNIMMOBILIZEDBYLOVE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n因着迷了而无法使出招式!"),
|
||
[STRINGID_PKMNBLOWNAWAY] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}被吹走了!"), //unused
|
||
[STRINGID_PKMNCHANGEDTYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n变成了{B_BUFF1}属性!"),
|
||
[STRINGID_PKMNFLINCHED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}畏缩了,无法使出招式!"),
|
||
[STRINGID_PKMNREGAINEDHEALTH] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n体力回复了!"),
|
||
[STRINGID_PKMNHPFULL] = COMPOUND_STRING("但是,{B_DEF_NAME_WITH_PREFIX}的\n体力是全满的!"),
|
||
[STRINGID_PKMNRAISEDSPDEF] = COMPOUND_STRING("光墙使{B_ATK_TEAM2}的\n特殊抗性提高了!"),
|
||
[STRINGID_PKMNRAISEDDEF] = COMPOUND_STRING("反射壁使{B_ATK_TEAM2}的\n物理抗性提高了!"),
|
||
[STRINGID_PKMNCOVEREDBYVEIL] = COMPOUND_STRING("{B_ATK_TEAM1}被\n神秘之幕包围了!"),
|
||
[STRINGID_PKMNUSEDSAFEGUARD] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n正受到神秘之幕的保护!"),
|
||
[STRINGID_PKMNSAFEGUARDEXPIRED] = COMPOUND_STRING("包围{B_ATK_TEAM1}的\n神秘之幕消失了!"),
|
||
[STRINGID_PKMNWENTTOSLEEP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}睡着了!"), //not in gen 5+
|
||
[STRINGID_PKMNSLEPTHEALTHY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}睡着了,\n并且变得精力充沛!"),
|
||
[STRINGID_PKMNWHIPPEDWHIRLWIND] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}周围的\n空气产生了旋涡!"),
|
||
[STRINGID_PKMNTOOKSUNLIGHT] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n吸收了光!"),
|
||
[STRINGID_PKMNLOWEREDHEAD] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n把头缩了进去!"),
|
||
[STRINGID_PKMNISGLOWING] = COMPOUND_STRING("强光包围了\n{B_ATK_NAME_WITH_PREFIX}!"),
|
||
[STRINGID_PKMNFLEWHIGH] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n飞向了高空!"),
|
||
[STRINGID_PKMNDUGHOLE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n钻入了地里!"),
|
||
[STRINGID_PKMNSQUEEZEDBYBIND] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n被{B_ATK_NAME_WITH_PREFIX2}紧紧绑住了!"),
|
||
[STRINGID_PKMNTRAPPEDINVORTEX] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n被困在了旋涡之中!"),
|
||
[STRINGID_PKMNWRAPPEDBY] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n被{B_ATK_NAME_WITH_PREFIX2}紧紧束缚住了!"),
|
||
[STRINGID_PKMNCLAMPED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX2}\n被{B_ATK_NAME_WITH_PREFIX}的贝壳夹住了!"),
|
||
[STRINGID_PKMNHURTBY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}受到了\n{B_BUFF1}的伤害。"),
|
||
[STRINGID_PKMNFREEDFROM] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}摆脱了\n{B_BUFF1}的束缚!"),
|
||
[STRINGID_PKMNCRASHED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}因势头过猛\n而撞到了地面!"),
|
||
[STRINGID_PKMNSHROUDEDINMIST] = gText_PkmnShroudedInMist,
|
||
[STRINGID_PKMNPROTECTEDBYMIST] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n正受到白雾的保护!"),
|
||
[STRINGID_PKMNGETTINGPUMPED] = gText_PkmnGettingPumped,
|
||
[STRINGID_PKMNHITWITHRECOIL] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n受到了反作用力造成的伤害!"),
|
||
[STRINGID_PKMNPROTECTEDITSELF2] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n摆出了防守的架势!"),
|
||
[STRINGID_PKMNBUFFETEDBYSANDSTORM] = COMPOUND_STRING("沙暴袭击了\n{B_ATK_NAME_WITH_PREFIX}!"),
|
||
[STRINGID_PKMNPELTEDBYHAIL] = COMPOUND_STRING("冰雹袭击了\n{B_ATK_NAME_WITH_PREFIX}!"),
|
||
[STRINGID_PKMNSEEDED] = COMPOUND_STRING("将种子种植在了\n{B_DEF_NAME_WITH_PREFIX}身上!"),
|
||
[STRINGID_PKMNEVADEDATTACK] = COMPOUND_STRING("没有击中{B_DEF_NAME_WITH_PREFIX}!"),
|
||
[STRINGID_PKMNSAPPEDBYLEECHSEED] = COMPOUND_STRING("寄生植物夺取了\n{B_ATK_NAME_WITH_PREFIX}的体力!"),
|
||
[STRINGID_PKMNFASTASLEEP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n正在呼呼大睡。"),
|
||
[STRINGID_PKMNWOKEUP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n醒过来了!"),
|
||
[STRINGID_PKMNUPROARKEPTAWAKE] = COMPOUND_STRING("但是,{B_SCR_NAME_WITH_PREFIX2}\n被吵得无法入睡!"),
|
||
[STRINGID_PKMNWOKEUPINUPROAR] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX2}\n被吵醒了!"),
|
||
[STRINGID_PKMNCAUSEDUPROAR] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n吵闹了起来!"),
|
||
[STRINGID_PKMNMAKINGUPROAR] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n吵闹个不停!"),
|
||
[STRINGID_PKMNCALMEDDOWN] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n平静了下来!"),
|
||
[STRINGID_PKMNCANTSLEEPINUPROAR] = COMPOUND_STRING("但是,{B_DEF_NAME_WITH_PREFIX2}\n吵闹个不停,无法入睡!"),
|
||
[STRINGID_PKMNSTOCKPILED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n蓄力了{B_BUFF1}次!"),
|
||
[STRINGID_PKMNCANTSTOCKPILE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n无法再蓄力了!"), //I think this was replaced with just "But it failed!"
|
||
[STRINGID_PKMNCANTSLEEPINUPROAR2] = COMPOUND_STRING("但是,{B_DEF_NAME_WITH_PREFIX2}\n吵闹个不停,无法入睡!"),
|
||
[STRINGID_UPROARKEPTPKMNAWAKE] = COMPOUND_STRING("但是,{B_DEF_NAME_WITH_PREFIX2}\n被吵得无法入睡!"),
|
||
[STRINGID_PKMNSTAYEDAWAKEUSING] = COMPOUND_STRING("因为{B_DEF_ABILITY},\n{B_DEF_NAME_WITH_PREFIX}不会睡着!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNSTORINGENERGY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n正在忍耐。"),
|
||
[STRINGID_PKMNUNLEASHEDENERGY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n忍耐被解除了!"),
|
||
[STRINGID_PKMNFATIGUECONFUSION] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n因精疲力尽而混乱了!"),
|
||
[STRINGID_PLAYERPICKEDUPMONEY] = COMPOUND_STRING("{B_PLAYER_NAME}捡到了\n¥{B_BUFF1}!\p"),
|
||
[STRINGID_PKMNUNAFFECTED] = COMPOUND_STRING("对于{B_DEF_NAME_WITH_PREFIX},\n完全没有效果!"),
|
||
[STRINGID_PKMNTRANSFORMEDINTO] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n变身成了{B_BUFF1}!"),
|
||
[STRINGID_PKMNMADESUBSTITUTE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n替身出现了!"),
|
||
[STRINGID_PKMNHASSUBSTITUTE] = COMPOUND_STRING("但是,{B_ATK_NAME_WITH_PREFIX}的\n替身已经出现了。"),
|
||
[STRINGID_SUBSTITUTEDAMAGED] = COMPOUND_STRING("替身代替{B_DEF_NAME_WITH_PREFIX2}\n承受了攻击!\p"),
|
||
[STRINGID_PKMNSUBSTITUTEFADED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n替身消失了……\p"),
|
||
[STRINGID_PKMNMUSTRECHARGE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n因攻击的反作用力而无法动弹!"),
|
||
[STRINGID_PKMNRAGEBUILDING] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n怒气正在上升!"),
|
||
[STRINGID_PKMNMOVEWASDISABLED] = COMPOUND_STRING("封住了{B_DEF_NAME_WITH_PREFIX}的\n{B_BUFF1}!"),
|
||
[STRINGID_PKMNMOVEISDISABLED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}因定身法\n而无法使出{B_CURRENT_MOVE}!\p"),
|
||
[STRINGID_PKMNMOVEDISABLEDNOMORE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n定身法解除了!"),
|
||
[STRINGID_PKMNGOTENCORE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n接受了再来一次!"),
|
||
[STRINGID_PKMNENCOREENDED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n再来一次状态解除了!"),
|
||
[STRINGID_PKMNTOOKAIM] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}将目标对准了\n{B_DEF_NAME_WITH_PREFIX2}!"),
|
||
[STRINGID_PKMNSKETCHEDMOVE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n对{B_BUFF1}进行了写生!"),
|
||
[STRINGID_PKMNTRYINGTOTAKEFOE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n想和对手同归于尽!"),
|
||
[STRINGID_PKMNTOOKFOE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n和对手同归于尽了!"),
|
||
[STRINGID_PKMNREDUCEDPP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的PP减少了!"),
|
||
[STRINGID_PKMNSTOLEITEM] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n从{B_DEF_NAME_WITH_PREFIX2}那里\l夺取了{B_LAST_ITEM}!"),
|
||
[STRINGID_TARGETCANTESCAPENOW] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n无法逃走了!"),
|
||
[STRINGID_PKMNFELLINTONIGHTMARE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n开始做恶梦了!"),
|
||
[STRINGID_PKMNLOCKEDINNIGHTMARE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n正被恶梦缠身!"),
|
||
[STRINGID_PKMNLAIDCURSE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}削减了自己的体力,\n并向{B_DEF_NAME_WITH_PREFIX2}施加了咒术!"),
|
||
[STRINGID_PKMNAFFLICTEDBYCURSE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n正受到诅咒!"),
|
||
[STRINGID_SPIKESSCATTERED] = COMPOUND_STRING("{B_DEF_TEAM2}脚下\n散落着撒菱!"),
|
||
[STRINGID_PKMNHURTBYSPIKES] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n受到了撒菱的伤害!"),
|
||
[STRINGID_PKMNIDENTIFIED] = COMPOUND_STRING("识破了{B_DEF_NAME_WITH_PREFIX}的原形!"),
|
||
[STRINGID_PKMNPERISHCOUNTFELL] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n灭亡计时变成{B_BUFF1}了!"),
|
||
[STRINGID_PKMNBRACEDITSELF] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n摆出了挺住攻击的架势!"),
|
||
[STRINGID_PKMNENDUREDHIT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n挺住了攻击!"),
|
||
[STRINGID_MAGNITUDESTRENGTH] = COMPOUND_STRING("震级{B_BUFF1}!"),
|
||
[STRINGID_PKMNCUTHPMAXEDATTACK] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n削减了体力并释放了全部力量!"),
|
||
[STRINGID_PKMNCOPIEDSTATCHANGES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}复制了\n{B_DEF_NAME_WITH_PREFIX2}的能力变化!"),
|
||
[STRINGID_PKMNGOTFREE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}摆脱了\n{B_DEF_NAME_WITH_PREFIX2}的{B_BUFF1}!"), //not in gen 5+, generic rapid spin?
|
||
[STRINGID_PKMNSHEDLEECHSEED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}摆脱了\n寄生种子的束缚!"), //not in gen 5+, generic rapid spin?
|
||
[STRINGID_PKMNBLEWAWAYSPIKES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n吹飞了撒菱!"), //not in gen 5+, generic rapid spin?
|
||
[STRINGID_PKMNFLEDFROMBATTLE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n脱离了战斗!"),
|
||
[STRINGID_PKMNFORESAWATTACK] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n预知了未来的攻击!"),
|
||
[STRINGID_PKMNTOOKATTACK] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n受到了{B_BUFF1}的攻击!"),
|
||
[STRINGID_PKMNATTACK] = COMPOUND_STRING("{B_BUFF1}的攻击!"), //not in gen 5+, expansion doesn't use anymore
|
||
[STRINGID_PKMNCENTERATTENTION] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n变得万众瞩目了!"),
|
||
[STRINGID_PKMNCHARGINGPOWER] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n开始充电了!"),
|
||
[STRINGID_NATUREPOWERTURNEDINTO] = COMPOUND_STRING("自然之力变成了{B_CURRENT_MOVE}!"),
|
||
[STRINGID_PKMNSTATUSNORMAL] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n状态复原了!"),
|
||
[STRINGID_PKMNHASNOMOVESLEFT] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n没有可用来施展的招式!\p"),
|
||
[STRINGID_PKMNSUBJECTEDTOTORMENT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n遭到了无理取闹!"),
|
||
[STRINGID_PKMNCANTUSEMOVETORMENT] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}遭到了无理取闹,\n因此无法继续使出相同的招式!\p"),
|
||
[STRINGID_PKMNTIGHTENINGFOCUS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n聚精会神了起来!"),
|
||
[STRINGID_PKMNFELLFORTAUNT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n中了挑衅!"),
|
||
[STRINGID_PKMNCANTUSEMOVETAUNT] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX2}受到了挑衅,\n无法使出{B_CURRENT_MOVE}!\p"),
|
||
[STRINGID_PKMNREADYTOHELP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}摆出了\n帮助{B_DEF_NAME_WITH_PREFIX2}的架势!"),
|
||
[STRINGID_PKMNSWITCHEDITEMS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n互换了各自的道具"),
|
||
[STRINGID_PKMNCOPIEDFOE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}复制了\n{B_DEF_NAME_WITH_PREFIX2}的特性!"),
|
||
[STRINGID_PKMNMADEWISH] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}许了一个愿!"), //unused
|
||
[STRINGID_PKMNWISHCAMETRUE] = COMPOUND_STRING("{B_BUFF1}的\n祈愿实现了!"),
|
||
[STRINGID_PKMNPLANTEDROOTS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n扎下了根!"),
|
||
[STRINGID_PKMNABSORBEDNUTRIENTS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n从根上吸取了养分!"),
|
||
[STRINGID_PKMNANCHOREDITSELF] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}扎下了根,\n屹立不动!"),
|
||
[STRINGID_PKMNWASMADEDROWSY] = COMPOUND_STRING("让{B_DEF_NAME_WITH_PREFIX2}产生睡意了!"),
|
||
[STRINGID_PKMNKNOCKEDOFF] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}拍落了\n{B_DEF_NAME_WITH_PREFIX2}的{B_LAST_ITEM}!"),
|
||
[STRINGID_PKMNSWAPPEDABILITIES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n互换了各自的特性!"),
|
||
[STRINGID_PKMNSEALEDOPPONENTMOVE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n封印了对手的招式!"),
|
||
[STRINGID_PKMNCANTUSEMOVESEALED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}因封印\n而无法使出{B_CURRENT_MOVE}!\p"),
|
||
[STRINGID_PKMNWANTSGRUDGE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n想向对手施放怨念!"),
|
||
[STRINGID_PKMNLOSTPPGRUDGE] = COMPOUND_STRING("因为怨念,{B_ATK_NAME_WITH_PREFIX}失去了\n其招式{B_BUFF1}的所有PP!"),
|
||
[STRINGID_PKMNSHROUDEDITSELF] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n获得了魔法反射的效果!"),
|
||
[STRINGID_PKMNMOVEBOUNCED] = COMPOUND_STRING("将{B_EFF_NAME_WITH_PREFIX}的\n{B_CURRENT_MOVE}反射了回去!"),
|
||
[STRINGID_PKMNWAITSFORTARGET] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n正在观察对手的动向!"),
|
||
[STRINGID_PKMNSNATCHEDMOVE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}抢夺了\n{B_SCR_NAME_WITH_PREFIX2}的招式!"),
|
||
[STRINGID_PKMNMADEITRAIN] = COMPOUND_STRING("因{B_SCR_NAME_WITH_PREFIX}的{B_SCR_ACTIVE_ABILITY},\n开始下雨了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNRAISEDSPEED] = COMPOUND_STRING("因为{B_SCR_ACTIVE_ABILITY},{B_SCR_NAME_WITH_PREFIX}的\n速度提高了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNPROTECTEDBY] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n受到了{B_DEF_ABILITY}的保护!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNPREVENTSUSAGE] = COMPOUND_STRING("因{B_DEF_NAME_WITH_PREFIX}的{B_DEF_ABILITY},\n{B_ATK_NAME_WITH_PREFIX2}不能使用\l{B_CURRENT_MOVE}!"), //I don't see this in SV text
|
||
[STRINGID_PKMNRESTOREDHPUSING] = COMPOUND_STRING("因{B_DEF_ABILITY},{B_DEF_NAME_WITH_PREFIX}的\n体力回复了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNCHANGEDTYPEWITH] = COMPOUND_STRING("因为{B_DEF_ABILITY},{B_DEF_NAME_WITH_PREFIX}\n变成了{B_BUFF1}属性!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNPREVENTSPARALYSISWITH] = COMPOUND_STRING("因为{B_DEF_ABILITY},{B_EFF_NAME_WITH_PREFIX}\n不会麻痹!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNPREVENTSROMANCEWITH] = COMPOUND_STRING("因为{B_DEF_ABILITY},{B_DEF_NAME_WITH_PREFIX}\n不会着迷!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNPREVENTSPOISONINGWITH] = COMPOUND_STRING("因为{B_DEF_ABILITY},{B_EFF_NAME_WITH_PREFIX}\n不会中毒!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNPREVENTSCONFUSIONWITH] = COMPOUND_STRING("因为{B_DEF_ABILITY},{B_DEF_NAME_WITH_PREFIX}\n不会混乱!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNRAISEDFIREPOWERWITH] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}因{B_DEF_ABILITY}\n提高了火属性招式的威力!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNANCHORSITSELFWITH] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n用吸盘吸住了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNCUTSATTACKWITH] = COMPOUND_STRING("因{B_SCR_NAME_WITH_PREFIX}的{B_SCR_ACTIVE_ABILITY},\n{B_DEF_NAME_WITH_PREFIX2}的攻击降低了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNPREVENTSSTATLOSSWITH] = COMPOUND_STRING("因为{B_SCR_ACTIVE_ABILITY},{B_SCR_NAME_WITH_PREFIX}的\n能力不会降低!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNHURTSWITH] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n因{B_DEF_NAME_WITH_PREFIX2}的{B_BUFF1}\l而受到了伤害!"),
|
||
[STRINGID_PKMNTRACED] = COMPOUND_STRING("复制了{B_BUFF1}的\n{B_BUFF2}!"),
|
||
[STRINGID_STATSHARPLY] = gText_StatSharply,
|
||
[STRINGID_STATROSE] = gText_StatRose,
|
||
[STRINGID_STATHARSHLY] = COMPOUND_STRING("大幅"),
|
||
[STRINGID_STATFELL] = gText_StatFell,
|
||
[STRINGID_ATTACKERSSTATROSE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n{B_BUFF1}{B_BUFF2}"),
|
||
[STRINGID_DEFENDERSSTATROSE] = gText_DefendersStatRose,
|
||
[STRINGID_ATTACKERSSTATFELL] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n{B_BUFF1}{B_BUFF2}"),
|
||
[STRINGID_DEFENDERSSTATFELL] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n{B_BUFF1}{B_BUFF2}"),
|
||
[STRINGID_CRITICALHIT] = COMPOUND_STRING("击中了要害!"),
|
||
[STRINGID_ONEHITKO] = COMPOUND_STRING("一击必杀!"),
|
||
[STRINGID_123POOF] = COMPOUND_STRING("{PAUSE 32}1,{PAUSE 15}2,{PAUSE 15}……{PAUSE 15}……{PAUSE 15}……{PAUSE 15}{PLAY_SE SE_BALL_BOUNCE_1}空!\p"),
|
||
[STRINGID_ANDELLIPSIS] = COMPOUND_STRING("于是……\p"),
|
||
[STRINGID_NOTVERYEFFECTIVE] = COMPOUND_STRING("好像效果不好……"),
|
||
[STRINGID_SUPEREFFECTIVE] = COMPOUND_STRING("效果绝佳!"),
|
||
[STRINGID_GOTAWAYSAFELY] = sText_GotAwaySafely,
|
||
[STRINGID_WILDPKMNFLED] = COMPOUND_STRING("{PLAY_SE SE_FLEE}野生的{B_BUFF1}逃走了!"),
|
||
[STRINGID_NORUNNINGFROMTRAINERS] = COMPOUND_STRING("不行!不能在对战中\n临阵脱逃!\p"),
|
||
[STRINGID_CANTESCAPE] = COMPOUND_STRING("无法逃走!\p"),
|
||
[STRINGID_DONTLEAVEBIRCH] = COMPOUND_STRING("小田卷博士:别这样丢下我!\p"), //no decapitalize until it is everywhere
|
||
[STRINGID_BUTNOTHINGHAPPENED] = COMPOUND_STRING("但是,什么也没有发生!"),
|
||
[STRINGID_BUTITFAILED] = COMPOUND_STRING("但是,没有起到效果!!"),
|
||
[STRINGID_ITHURTCONFUSION] = COMPOUND_STRING("不知所以地攻击了自己!"),
|
||
[STRINGID_MIRRORMOVEFAILED] = COMPOUND_STRING("鹦鹉学舌没有起到效果!"), //not in gen 5+, uses "but it failed"
|
||
[STRINGID_STARTEDTORAIN] = COMPOUND_STRING("开始下雨了!"),
|
||
[STRINGID_DOWNPOURSTARTED] = COMPOUND_STRING("开始下大雨了!"), // corresponds to DownpourText in pokegold and pokecrystal and is used by Rain Dance in GSC
|
||
[STRINGID_RAINCONTINUES] = COMPOUND_STRING("雨一直在下。"), //not in gen 5+
|
||
[STRINGID_DOWNPOURCONTINUES] = COMPOUND_STRING("大雨一直在下。"), // unused
|
||
[STRINGID_RAINSTOPPED] = COMPOUND_STRING("雨停了!"),
|
||
[STRINGID_SANDSTORMBREWED] = COMPOUND_STRING("开始刮沙暴了!"),
|
||
[STRINGID_SANDSTORMRAGES] = COMPOUND_STRING("飞沙走石。"),
|
||
[STRINGID_SANDSTORMSUBSIDED] = COMPOUND_STRING("沙暴停止了!"),
|
||
[STRINGID_SUNLIGHTGOTBRIGHT] = COMPOUND_STRING("日照变强了!"),
|
||
[STRINGID_SUNLIGHTSTRONG] = COMPOUND_STRING("阳光很猛烈。"), //not in gen 5+
|
||
[STRINGID_SUNLIGHTFADED] = COMPOUND_STRING("日照复原了!"),
|
||
[STRINGID_STARTEDHAIL] = COMPOUND_STRING("开始下冰雹了!"),
|
||
[STRINGID_HAILCONTINUES] = COMPOUND_STRING("冰雹还在持续。"),
|
||
[STRINGID_HAILSTOPPED] = COMPOUND_STRING("冰雹不下了!"),
|
||
[STRINGID_FAILEDTOSPITUP] = COMPOUND_STRING("但是,没有喷出任何东西!"), //not in gen 5+, uses "but it failed"
|
||
[STRINGID_FAILEDTOSWALLOW] = COMPOUND_STRING("但是,没有吞下任何东西!"), //not in gen 5+, uses "but it failed"
|
||
[STRINGID_WINDBECAMEHEATWAVE] = COMPOUND_STRING("风变成了热风!"), //unused
|
||
[STRINGID_STATCHANGESGONE] = COMPOUND_STRING("所有能力都复原了!"),
|
||
[STRINGID_COINSSCATTERED] = COMPOUND_STRING("金币散落一地!"),
|
||
[STRINGID_TOOWEAKFORSUBSTITUTE] = COMPOUND_STRING("但是,体力已经不够\n放出替身了!"),
|
||
[STRINGID_SHAREDPAIN] = COMPOUND_STRING("均分了彼此的体力!"),
|
||
[STRINGID_BELLCHIMED] = COMPOUND_STRING("铃声响彻四周!"),
|
||
[STRINGID_FAINTINTHREE] = COMPOUND_STRING("听过终焉之歌的宝可梦\n会在3回合后步向终焉!"),
|
||
[STRINGID_NOPPLEFT] = COMPOUND_STRING("招式的剩余点数\n已经用完了!\p"), //not in gen 5+
|
||
[STRINGID_BUTNOPPLEFT] = COMPOUND_STRING("但是,招式的剩余点数\n已经用完了!"),
|
||
[STRINGID_PLAYERUSEDITEM] = COMPOUND_STRING("{B_PLAYER_NAME}\n使用了{B_LAST_ITEM}!"),
|
||
[STRINGID_WALLYUSEDITEM] = COMPOUND_STRING("满充使用了{B_LAST_ITEM}!"), //no decapitalize until it is everywhere
|
||
[STRINGID_TRAINERBLOCKEDBALL] = COMPOUND_STRING("球被训练家击飞了!"),
|
||
[STRINGID_DONTBEATHIEF] = COMPOUND_STRING("拿别人东西的是小偷!"),
|
||
[STRINGID_ITDODGEDBALL] = COMPOUND_STRING("它躲开了精灵球!\n这只宝可梦不能被收服!"),
|
||
[STRINGID_YOUMISSEDPKMN] = COMPOUND_STRING("你错过了这只宝可梦!"),
|
||
[STRINGID_PKMNBROKEFREE] = COMPOUND_STRING("不行!宝可梦从\n球里挣脱出来了!"),
|
||
[STRINGID_ITAPPEAREDCAUGHT] = COMPOUND_STRING("啊啊!\n还以为捉到了!"),
|
||
[STRINGID_AARGHALMOSTHADIT] = COMPOUND_STRING("真遗憾!\n差一点就捉到了!"),
|
||
[STRINGID_SHOOTSOCLOSE] = COMPOUND_STRING("可惜啊!\n就还差一点点了!"),
|
||
[STRINGID_GOTCHAPKMNCAUGHTPLAYER] = COMPOUND_STRING("太好了!捉到{B_DEF_NAME}了!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}\p"),
|
||
[STRINGID_GOTCHAPKMNCAUGHTWALLY] = COMPOUND_STRING("太好了!捉到{B_DEF_NAME}了!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}{PAUSE 127}"),
|
||
[STRINGID_GIVENICKNAMECAPTURED] = COMPOUND_STRING("要给{B_DEF_NAME}\n起昵称吗?"),
|
||
[STRINGID_PKMNSENTTOPC] = COMPOUND_STRING("已将{B_DEF_NAME}\n传送到{B_PC_CREATOR_NAME}电脑里!"), //Still used lanette's pc since terminology is different
|
||
[STRINGID_PKMNDATAADDEDTODEX] = COMPOUND_STRING("{B_DEF_NAME}的资料被\n新添加到宝可梦图鉴里了!\p"),
|
||
[STRINGID_ITISRAINING] = COMPOUND_STRING("现在正在下雨!"),
|
||
[STRINGID_SANDSTORMISRAGING] = COMPOUND_STRING("现在正在刮沙暴!"),
|
||
[STRINGID_CANTESCAPE2] = COMPOUND_STRING("无法逃走!\p"),
|
||
[STRINGID_PKMNIGNORESASLEEP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}仍在睡觉,\n没有服从命令!"),
|
||
[STRINGID_PKMNIGNOREDORDERS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}没有服从命令!"),
|
||
[STRINGID_PKMNBEGANTONAP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}开始睡午觉了!"),
|
||
[STRINGID_PKMNLOAFING] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}在偷懒!"),
|
||
[STRINGID_PKMNWONTOBEY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}不听话!"),
|
||
[STRINGID_PKMNTURNEDAWAY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}把头转向了一旁!"),
|
||
[STRINGID_PKMNPRETENDNOTNOTICE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}在装傻!"),
|
||
[STRINGID_ENEMYABOUTTOSWITCHPKMN] = COMPOUND_STRING("{B_TRAINER1_NAME_WITH_CLASS}\n正准备派出{B_BUFF2}。\p要替换宝可梦吗?"),
|
||
[STRINGID_CREPTCLOSER] = COMPOUND_STRING("{B_PLAYER_NAME}悄悄靠近了\n{B_OPPONENT_MON1_NAME}!"), //safari
|
||
[STRINGID_CANTGETCLOSER] = COMPOUND_STRING("{B_PLAYER_NAME}不能再靠近了!"), //safari
|
||
[STRINGID_PKMNWATCHINGCAREFULLY] = COMPOUND_STRING("{B_OPPONENT_MON1_NAME}正在观察状况!"), //safari
|
||
[STRINGID_PKMNCURIOUSABOUTX] = COMPOUND_STRING("{B_OPPONENT_MON1_NAME}对\n{B_BUFF1}感到好奇!"), //safari
|
||
[STRINGID_PKMNENTHRALLEDBYX] = COMPOUND_STRING("{B_OPPONENT_MON1_NAME}被\n{B_BUFF1}深深吸引!"), //safari
|
||
[STRINGID_PKMNIGNOREDX] = COMPOUND_STRING("{B_OPPONENT_MON1_NAME}完全忽视了\n{B_BUFF1}!"), //safari
|
||
[STRINGID_THREWPOKEBLOCKATPKMN] = COMPOUND_STRING("{B_PLAYER_NAME}朝{B_OPPONENT_MON1_NAME}\n投掷了{POKEBLOCK}!"), //safari
|
||
[STRINGID_OUTOFSAFARIBALLS] = COMPOUND_STRING("{PLAY_SE SE_DING_DONG}叮咚!时间到。\n狩猎游戏到此为止。\p"), //safari
|
||
[STRINGID_PKMNSITEMCUREDPARALYSIS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n治愈了麻痹!"),
|
||
[STRINGID_PKMNSITEMCUREDPOISON] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n治愈了中毒!"),
|
||
[STRINGID_PKMNSITEMHEALEDBURN] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n治愈了灼伤!"),
|
||
[STRINGID_PKMNSITEMDEFROSTEDIT] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n治愈了冰冻状态!"),
|
||
[STRINGID_PKMNSITEMWOKEIT] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n让自己醒过来了!"),
|
||
[STRINGID_PKMNSITEMSNAPPEDOUT] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n治愈了混乱!"),
|
||
[STRINGID_PKMNSITEMCUREDPROBLEM] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n治愈了{B_BUFF1}状态!"),
|
||
[STRINGID_PKMNSITEMRESTOREDHEALTH] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n回复了体力!"),
|
||
[STRINGID_PKMNSITEMRESTOREDPP] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n回复了{B_BUFF1}的PP!"),
|
||
[STRINGID_PKMNSITEMRESTOREDSTATUS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n复原了能力!"),
|
||
[STRINGID_PKMNSITEMRESTOREDHPALITTLE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n回复了少许HP。"),
|
||
[STRINGID_ITEMALLOWSONLYYMOVE] = COMPOUND_STRING("因为{B_LAST_ITEM}的效果,\n只能使出{B_CURRENT_MOVE}!\p"),
|
||
[STRINGID_PKMNHUNGONWITHX] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n用{B_LAST_ITEM}撑住了!"),
|
||
[STRINGID_EMPTYSTRING3] = gText_EmptyString3,
|
||
[STRINGID_PKMNSXPREVENTSBURNS] = COMPOUND_STRING("因为{B_EFF_ABILITY},{B_EFF_NAME_WITH_PREFIX}\n不会灼伤!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNSXBLOCKSY] = COMPOUND_STRING("因为{B_DEF_ABILITY},{B_DEF_NAME_WITH_PREFIX}\n抵御了{B_CURRENT_MOVE}!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNSXRESTOREDHPALITTLE2] = COMPOUND_STRING("因为{B_ATK_ABILITY},{B_ATK_NAME_WITH_PREFIX}\n回复了少许HP。"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNSXWHIPPEDUPSANDSTORM] = COMPOUND_STRING("因{B_SCR_NAME_WITH_PREFIX}的{B_SCR_ACTIVE_ABILITY},\n开始刮沙暴了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNSXPREVENTSYLOSS] = COMPOUND_STRING("因为{B_SCR_ACTIVE_ABILITY},{B_SCR_NAME_WITH_PREFIX}的\n{B_BUFF1}不会降低!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNSXINFATUATEDY] = COMPOUND_STRING("因{B_DEF_NAME_WITH_PREFIX}的{B_DEF_ABILITY},\n{B_ATK_NAME_WITH_PREFIX2}着迷了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNSXMADEYINEFFECTIVE] = COMPOUND_STRING("因{B_DEF_NAME_WITH_PREFIX}的{B_DEF_ABILITY},\n{B_CURRENT_MOVE}无效了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNSXCUREDYPROBLEM] = COMPOUND_STRING("因为{B_SCR_ACTIVE_ABILITY},{B_SCR_NAME_WITH_PREFIX}的\n{B_BUFF1}状态治愈了!"), //not in gen 5+, ability popup
|
||
[STRINGID_ITSUCKEDLIQUIDOOZE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n吸到了污泥浆!"),
|
||
[STRINGID_PKMNTRANSFORMED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}的\n样子发生了变化!"),
|
||
[STRINGID_ELECTRICITYWEAKENED] = COMPOUND_STRING("电气的威力减弱了!"),
|
||
[STRINGID_FIREWEAKENED] = COMPOUND_STRING("火焰的威力减弱了!"),
|
||
[STRINGID_PKMNHIDUNDERWATER] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n潜入了水中!"),
|
||
[STRINGID_PKMNSPRANGUP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n高高地跳了起来!"),
|
||
[STRINGID_HMMOVESCANTBEFORGOTTEN] = COMPOUND_STRING("暂时无法忘记秘传招式。\p"),
|
||
[STRINGID_XFOUNDONEY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n捡来了{B_LAST_ITEM}!"),
|
||
[STRINGID_PLAYERDEFEATEDTRAINER1] = sText_PlayerDefeatedLinkTrainerTrainer1,
|
||
[STRINGID_SOOTHINGAROMA] = COMPOUND_STRING("怡人的香气扩散了开来!"),
|
||
[STRINGID_ITEMSCANTBEUSEDNOW] = COMPOUND_STRING("现在不能使用道具。{PAUSE 64}"), //not in gen 5+, i think
|
||
[STRINGID_FORXCOMMAYZ] = COMPOUND_STRING("对于{B_SCR_NAME_WITH_PREFIX2}而言,\n{B_LAST_ITEM}{B_BUFF1}"), //not in gen 5+, expansion doesn't use anymore
|
||
[STRINGID_USINGITEMSTATOFPKMNROSE] = COMPOUND_STRING("因为{B_LAST_ITEM},{B_SCR_NAME_WITH_PREFIX}的\n{B_BUFF1}{B_BUFF2}"), //todo: update this, will require code changes
|
||
[STRINGID_PKMNUSEDXTOGETPUMPED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n使用了{B_LAST_ITEM},拿出了干劲!"),
|
||
[STRINGID_PKMNSXMADEYUSELESS] = COMPOUND_STRING("因{B_DEF_NAME_WITH_PREFIX}的{B_DEF_ABILITY},\n{B_CURRENT_MOVE}无效了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNTRAPPEDBYSANDTOMB] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n陷入了流沙地狱!"),
|
||
[STRINGID_EMPTYSTRING4] = COMPOUND_STRING(""),
|
||
[STRINGID_ABOOSTED] = COMPOUND_STRING("较为多的"),
|
||
[STRINGID_PKMNSXINTENSIFIEDSUN] = COMPOUND_STRING("因{B_SCR_NAME_WITH_PREFIX}的{B_SCR_ACTIVE_ABILITY},\n日照变强了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNMAKESGROUNDMISS] = COMPOUND_STRING("因为{B_DEF_ABILITY},地面属性的招式\n无法击中{B_DEF_NAME_WITH_PREFIX}!"), //not in gen 5+, ability popup
|
||
[STRINGID_YOUTHROWABALLNOWRIGHT] = COMPOUND_STRING("应该是在这里扔精灵球的吧……\n我……试试看吧!"),
|
||
[STRINGID_PKMNSXTOOKATTACK] = COMPOUND_STRING("因为{B_DEF_ABILITY},{B_DEF_NAME_WITH_PREFIX}\n吸引了攻击!"), //In gen 5+ but without naming the ability
|
||
[STRINGID_PKMNCHOSEXASDESTINY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n将破灭之愿托付给了未来!"),
|
||
[STRINGID_PKMNLOSTFOCUS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}聚气时\n受到干扰,无法使出招式!"),
|
||
[STRINGID_USENEXTPKMN] = COMPOUND_STRING("要替换宝可梦吗?"),
|
||
[STRINGID_PKMNFLEDUSINGITS] = COMPOUND_STRING("{PLAY_SE SE_FLEE}{B_ATK_NAME_WITH_PREFIX}\n使用其所携带的{B_LAST_ITEM}逃走了!\p"),
|
||
[STRINGID_PKMNFLEDUSING] = COMPOUND_STRING("{PLAY_SE SE_FLEE}{B_ATK_NAME_WITH_PREFIX}\n使用{B_ATK_ABILITY}逃走了!\p"), //not in gen 5+
|
||
[STRINGID_PKMNWASDRAGGEDOUT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n被拖进了战斗!\p"),
|
||
[STRINGID_PREVENTEDFROMWORKING] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的{B_DEF_ABILITY}\n让{B_SCR_NAME_WITH_PREFIX2}的\l{B_BUFF1}不起作用!"), //unused
|
||
[STRINGID_PKMNSITEMNORMALIZEDSTATUS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n治愈了异常状态!"),
|
||
[STRINGID_TRAINER1USEDITEM] = COMPOUND_STRING("{B_ATK_TRAINER_NAME_WITH_CLASS}\n使用了{B_LAST_ITEM}!"),
|
||
[STRINGID_BOXISFULL] = COMPOUND_STRING("盒子已满,\n无法再进行捕捉!\p"),
|
||
[STRINGID_PKMNAVOIDEDATTACK] = COMPOUND_STRING("没有击中{B_DEF_NAME_WITH_PREFIX}!"),
|
||
[STRINGID_PKMNSXMADEITINEFFECTIVE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}的{B_SCR_ACTIVE_ABILITY}\n使其无效了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNSXPREVENTSFLINCHING] = COMPOUND_STRING("因为{B_EFF_ABILITY},{B_EFF_NAME_WITH_PREFIX}\n不会畏缩!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNALREADYHASBURN] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n已经被灼伤了。"),
|
||
[STRINGID_STATSWONTDECREASE2] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n能力已经无法再降低了!"),
|
||
[STRINGID_PKMNSXBLOCKSY2] = COMPOUND_STRING("因为{B_SCR_ACTIVE_ABILITY},{B_SCR_NAME_WITH_PREFIX}\n抵御了{B_CURRENT_MOVE}!"), //not in gen 5+, ability popup
|
||
[STRINGID_PKMNSXWOREOFF] = COMPOUND_STRING("{B_ATK_TEAM1}的{B_BUFF1}消失了!"),
|
||
[STRINGID_PKMNRAISEDDEFALITTLE] = COMPOUND_STRING("{B_CURRENT_MOVE}使{B_ATK_PREFIX1}的\n物理抗性略微提高了!"), //expansion doesn't use anymore
|
||
[STRINGID_PKMNRAISEDSPDEFALITTLE] = COMPOUND_STRING("{B_CURRENT_MOVE}使{B_ATK_PREFIX1}的\n特殊抗性略微提高了!"), //expansion doesn't use anymore
|
||
[STRINGID_THEWALLSHATTERED] = COMPOUND_STRING("墙壁碎掉了!"), //not in gen5+, uses "your teams light screen wore off!" etc instead
|
||
[STRINGID_PKMNSXPREVENTSYSZ] = COMPOUND_STRING("因{B_ATK_NAME_WITH_PREFIX}的{B_ATK_ABILITY},\n{B_DEF_NAME_WITH_PREFIX2}的\l{B_DEF_ABILITY}不起作用!"),
|
||
[STRINGID_PKMNSXCUREDITSYPROBLEM] = COMPOUND_STRING("因为{B_SCR_ACTIVE_ABILITY},{B_SCR_NAME_WITH_PREFIX}的\n{B_BUFF1}状态治愈了!"), //not in gen 5+, ability popup
|
||
[STRINGID_ATTACKERCANTESCAPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n无法逃走!"),
|
||
[STRINGID_PKMNOBTAINEDX] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n获得了{B_BUFF1}!"),
|
||
[STRINGID_PKMNOBTAINEDX2] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n获得了{B_BUFF2}!"),
|
||
[STRINGID_PKMNOBTAINEDXYOBTAINEDZ] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n获得了{B_BUFF1}!\p{B_DEF_NAME_WITH_PREFIX}\n获得了{B_BUFF2}!"),
|
||
[STRINGID_BUTNOEFFECT] = COMPOUND_STRING("但是,没有效果!"),
|
||
[STRINGID_PKMNSXHADNOEFFECTONY] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}的{B_SCR_ACTIVE_ABILITY}\n对{B_EFF_NAME_WITH_PREFIX2}没有效果!"), //not in gen 5+, ability popup
|
||
[STRINGID_TWOENEMIESDEFEATED] = sText_TwoInGameTrainersDefeated,
|
||
[STRINGID_TRAINER2LOSETEXT] = COMPOUND_STRING("{B_TRAINER2_LOSE_TEXT}"),
|
||
[STRINGID_PKMNINCAPABLEOFPOWER] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n似乎无法发挥自身的力量!"),
|
||
[STRINGID_GLINTAPPEARSINEYE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX2}的眼中\n闪过光芒!"),
|
||
[STRINGID_PKMNGETTINGINTOPOSITION] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}正在就位!"),
|
||
[STRINGID_PKMNBEGANGROWLINGDEEPLY] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}开始低吼!"),
|
||
[STRINGID_PKMNEAGERFORMORE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}意犹未尽!"),
|
||
[STRINGID_DEFEATEDOPPONENTBYREFEREE] = COMPOUND_STRING("根据判定的准则,\n{B_PLAYER_MON1_NAME}\l战胜了{B_OPPONENT_MON1_NAME}!"),
|
||
[STRINGID_LOSTTOOPPONENTBYREFEREE] = COMPOUND_STRING("根据判定的准则,\n{B_PLAYER_MON1_NAME}\l败给了{B_OPPONENT_MON1_NAME}!"),
|
||
[STRINGID_TIEDOPPONENTBYREFEREE] = COMPOUND_STRING("根据判定的准则,\n{B_PLAYER_MON1_NAME}\l和{B_OPPONENT_MON1_NAME}打成了平局!"),
|
||
[STRINGID_QUESTIONFORFEITMATCH] = COMPOUND_STRING("确定要投降\n并中止这次挑战吗?"),
|
||
[STRINGID_FORFEITEDMATCH] = COMPOUND_STRING("{B_PLAYER_NAME}选择了投降!"),
|
||
[STRINGID_PKMNTRANSFERREDSOMEONESPC] = gText_PkmnTransferredSomeonesPC,
|
||
[STRINGID_PKMNTRANSFERREDLANETTESPC] = gText_PkmnTransferredLanettesPC,
|
||
[STRINGID_PKMNBOXSOMEONESPCFULL] = gText_PkmnTransferredSomeonesPCBoxFull,
|
||
[STRINGID_PKMNBOXLANETTESPCFULL] = gText_PkmnTransferredLanettesPCBoxFull,
|
||
[STRINGID_TRAINER1WINTEXT] = COMPOUND_STRING("{B_TRAINER1_WIN_TEXT}"),
|
||
[STRINGID_TRAINER2WINTEXT] = COMPOUND_STRING("{B_TRAINER2_WIN_TEXT}"),
|
||
[STRINGID_ENDUREDSTURDY] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n因{B_DEF_ABILITY}挺住了攻击!"),
|
||
[STRINGID_POWERHERB] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}用了{B_LAST_ITEM}后,\n充满了力量!"),
|
||
[STRINGID_HURTBYITEM] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}因{B_LAST_ITEM}\n而受到了伤害!"),
|
||
[STRINGID_PSNBYITEM] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}\n因{B_LAST_ITEM}中剧毒了!"),
|
||
[STRINGID_BRNBYITEM] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}\n因{B_LAST_ITEM}被灼伤了!"),
|
||
[STRINGID_DEFABILITYIN] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的{B_DEF_ABILITY}启动了!"),
|
||
[STRINGID_GRAVITYINTENSIFIED] = COMPOUND_STRING("重力变强了!"),
|
||
[STRINGID_TARGETIDENTIFIED] = COMPOUND_STRING("识破了\n{B_DEF_NAME_WITH_PREFIX}的原形!"),
|
||
[STRINGID_TARGETWOKEUP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n醒过来了!"),
|
||
[STRINGID_PKMNSTOLEANDATEITEM] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}夺取\n并吃掉了{B_LAST_ITEM}!"),
|
||
[STRINGID_TAILWINDBLEW] = COMPOUND_STRING("从{B_ATK_TEAM2}身后\n吹起了顺风!"),
|
||
[STRINGID_PKMNWENTBACK] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n要回到{B_ATK_TRAINER_NAME}的身边了!"),
|
||
[STRINGID_PKMNCANTUSEITEMSANYMORE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n无法使用道具了!"),
|
||
[STRINGID_PKMNFLUNG] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n投掷了{B_LAST_ITEM}!"),
|
||
[STRINGID_PKMNPREVENTEDFROMHEALING] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n回复行为被封住了!"),
|
||
[STRINGID_PKMNSWITCHEDATKANDDEF] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n互换了攻击和防御!"),
|
||
[STRINGID_PKMNSABILITYSUPPRESSED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的特性\n变得无效了!"),
|
||
[STRINGID_SHIELDEDFROMCRITICALHITS] = COMPOUND_STRING("因幸运咒语的力量,\n{B_ATK_TEAM2}的要害被隐藏了起来!"),
|
||
[STRINGID_SWITCHEDATKANDSPATK] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}和对手互换了\n自己的攻击和特攻的能力变化!"),
|
||
[STRINGID_SWITCHEDDEFANDSPDEF] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}和对手互换了\n自己的防御和特防的能力变化!"),
|
||
[STRINGID_PKMNACQUIREDABILITY] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的特性\n变为{B_DEF_ABILITY}了!"),
|
||
[STRINGID_POISONSPIKESSCATTERED] = COMPOUND_STRING("{B_DEF_TEAM2}脚下\n散落着毒菱!"),
|
||
[STRINGID_PKMNSWITCHEDSTATCHANGES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}和对手互换了\n自己的能力变化!"),
|
||
[STRINGID_PKMNSURROUNDEDWITHVEILOFWATER] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n套上了水环!"),
|
||
[STRINGID_PKMNLEVITATEDONELECTROMAGNETISM] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n因电磁力浮了起来!"),
|
||
[STRINGID_PKMNTWISTEDDIMENSIONS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n扭曲了时空!"),
|
||
[STRINGID_POINTEDSTONESFLOAT] = COMPOUND_STRING("{B_DEF_TEAM2}周围开始浮现出\n尖锐的岩石!"),
|
||
[STRINGID_CLOAKEDINMYSTICALMOONLIGHT] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n被神秘的月光包围了!"),
|
||
[STRINGID_TRAPPEDBYSWIRLINGMAGMA] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n被困在了熔岩旋涡之中!"),
|
||
[STRINGID_VANISHEDINSTANTLY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的身影\n瞬间消失了!"),
|
||
[STRINGID_PROTECTEDTEAM] = COMPOUND_STRING("{B_ATK_TEAM2}周围正受到\n{B_CURRENT_MOVE}的保护!"),
|
||
[STRINGID_SHAREDITSGUARD] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n平分了各自的防守"),
|
||
[STRINGID_SHAREDITSPOWER] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n平分了各自的力量!"),
|
||
[STRINGID_SWAPSDEFANDSPDEFOFALLPOKEMON] = COMPOUND_STRING("凭空制造出了互换\n防御和特防的空间!"),
|
||
[STRINGID_BECAMENIMBLE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n变得身轻如燕了!"),
|
||
[STRINGID_HURLEDINTOTHEAIR] = COMPOUND_STRING("让{B_DEF_NAME_WITH_PREFIX}\n浮在了空中!"),
|
||
[STRINGID_HELDITEMSLOSEEFFECTS] = COMPOUND_STRING("凭空制造出了会让持有道具的\n效果消失的空间!"),
|
||
[STRINGID_FELLSTRAIGHTDOWN] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n被击落,掉到了地面!"),
|
||
[STRINGID_TARGETCHANGEDTYPE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n变成了{B_BUFF1}属性!"),
|
||
[STRINGID_PKMNACQUIREDSIMPLE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的特性\n变为单纯了!"), //shouldn't directly use the name
|
||
[STRINGID_EMPTYSTRING5] = sText_EmptyString4,
|
||
[STRINGID_KINDOFFER] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n接受了对手的好意!"),
|
||
[STRINGID_RESETSTARGETSSTATLEVELS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n能力变化消失了!"),
|
||
[STRINGID_EMPTYSTRING6] = sText_EmptyString4,
|
||
[STRINGID_ALLYSWITCHPOSITION] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}和\n{B_SCR_NAME_WITH_PREFIX2}互换了场地!"),
|
||
[STRINGID_RESTORETARGETSHEALTH] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n体力回复了!"),
|
||
[STRINGID_TOOKPJMNINTOTHESKY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n将{B_DEF_NAME_WITH_PREFIX}带上了高空!"),
|
||
[STRINGID_FREEDFROMSKYDROP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n摆脱了自由落体!"),
|
||
[STRINGID_POSTPONETARGETMOVE] = COMPOUND_STRING("延后了{B_DEF_NAME_WITH_PREFIX}的顺序!"),
|
||
[STRINGID_REFLECTTARGETSTYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}变成了和\n{B_DEF_NAME_WITH_PREFIX2}相同的属性!"),
|
||
[STRINGID_TRANSFERHELDITEM] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}从{B_ATK_NAME_WITH_PREFIX2}\n那里获得了{B_LAST_ITEM}!"),
|
||
[STRINGID_EMBARGOENDS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n变得可以使用道具了!"),
|
||
[STRINGID_ELECTROMAGNETISM] = COMPOUND_STRING("电磁力"),
|
||
[STRINGID_BUFFERENDS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n{B_BUFF1}消失了!"),
|
||
[STRINGID_TELEKINESISENDS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n摆脱了意念移物!"),
|
||
[STRINGID_TAILWINDENDS] = COMPOUND_STRING("{B_ATK_TEAM1}的顺风停止了!"),
|
||
[STRINGID_LUCKYCHANTENDS] = COMPOUND_STRING("{B_ATK_TEAM1}的幸运咒语解除了!"),
|
||
[STRINGID_TRICKROOMENDS] = COMPOUND_STRING("扭曲的时空复原了!"),
|
||
[STRINGID_WONDERROOMENDS] = COMPOUND_STRING("奇妙空间被解除,\n防御和特防复原了!"),
|
||
[STRINGID_MAGICROOMENDS] = COMPOUND_STRING("魔法空间被解除,\n道具的效果复原了!"),
|
||
[STRINGID_MUDSPORTENDS] = COMPOUND_STRING("玩泥巴的效果消失了!"),
|
||
[STRINGID_WATERSPORTENDS] = COMPOUND_STRING("玩水的效果消失了!"),
|
||
[STRINGID_GRAVITYENDS] = COMPOUND_STRING("重力复原了!"),
|
||
[STRINGID_AQUARINGHEAL] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX2}\n通过水环回复体力!"),
|
||
[STRINGID_ELECTRICTERRAINENDS] = COMPOUND_STRING("脚下的电光消失不见了!"),
|
||
[STRINGID_MISTYTERRAINENDS] = COMPOUND_STRING("脚下的雾气消失不见了!"),
|
||
[STRINGID_PSYCHICTERRAINENDS] = COMPOUND_STRING("脚下的奇妙感觉消失了!"),
|
||
[STRINGID_GRASSYTERRAINENDS] = COMPOUND_STRING("脚下的青草消失不见了!"),
|
||
[STRINGID_TARGETABILITYSTATRAISE] = COMPOUND_STRING("因为{B_DEF_ABILITY},\n{B_DEF_NAME_WITH_PREFIX}的{B_BUFF1}提高了!"),
|
||
[STRINGID_TARGETSSTATWASMAXEDOUT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的{B_DEF_ABILITY}\n攻击被提高到了最大!"),
|
||
[STRINGID_ATTACKERABILITYSTATRAISE] = COMPOUND_STRING("因为{B_ATK_ABILITY},\n{B_ATK_NAME_WITH_PREFIX}的{B_BUFF1}提高了!"),
|
||
[STRINGID_POISONHEALHPUP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX2}\n利用毒素回复了体力!"), //don't think this message is displayed anymore
|
||
[STRINGID_BADDREAMSDMG] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n正被恶梦缠身!"),
|
||
[STRINGID_MOLDBREAKERENTERS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n打破了常规!"),
|
||
[STRINGID_TERAVOLTENTERS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n正在释放溅射气场!"),
|
||
[STRINGID_TURBOBLAZEENTERS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n正在释放炽焰气场!"),
|
||
[STRINGID_SLOWSTARTENTERS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n无法拿出平时的水平!"),
|
||
[STRINGID_SLOWSTARTEND] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n恢复了平时的水平!"),
|
||
[STRINGID_SOLARPOWERHPDROP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}因{B_ATK_ABILITY}\n削减了体力!"), //don't think this message is displayed anymore
|
||
[STRINGID_AFTERMATHDMG] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n受伤了!"),
|
||
[STRINGID_ANTICIPATIONACTIVATES] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n发抖了!"),
|
||
[STRINGID_FOREWARNACTIVATES] = COMPOUND_STRING("因{B_SCR_ACTIVE_ABILITY},{B_SCR_NAME_WITH_PREFIX2}察觉到了\n{B_DEF_NAME_WITH_PREFIX2}的{B_BUFF1}!"),
|
||
[STRINGID_ICEBODYHPGAIN] = COMPOUND_STRING("因为{B_ATK_ABILITY},\n{B_ATK_NAME_WITH_PREFIX}回复了少许HP。"), //don't think this message is displayed anymore
|
||
[STRINGID_SNOWWARNINGHAIL] = COMPOUND_STRING("开始下冰雹了!"),
|
||
[STRINGID_FRISKACTIVATES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}察觉到了\n{B_DEF_NAME_WITH_PREFIX2}的{B_LAST_ITEM}!"),
|
||
[STRINGID_UNNERVEENTERS] = COMPOUND_STRING("{B_DEF_TEAM1}因太紧张\n而无法食用树果!"),
|
||
[STRINGID_HARVESTBERRY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n收获了{B_LAST_ITEM}!"),
|
||
[STRINGID_LASTABILITYRAISEDSTAT] = COMPOUND_STRING("因{B_LAST_ABILITY},{B_ATK_NAME_WITH_PREFIX}的\n{B_BUFF1}提高了!"),
|
||
[STRINGID_MAGICBOUNCEACTIVATES] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n将{B_ATK_NAME_WITH_PREFIX2}反射了回去!"),
|
||
[STRINGID_PROTEANTYPECHANGE] = COMPOUND_STRING("因为{B_ATK_ABILITY},\n{B_ATK_NAME_WITH_PREFIX}变成了{B_BUFF1}属性!"),
|
||
[STRINGID_SYMBIOSISITEMPASS] = COMPOUND_STRING("因{B_LAST_ABILITY},{B_SCR_NAME_WITH_PREFIX}\n将{B_LAST_ITEM}传给了{B_EFF_NAME_WITH_PREFIX2}!"),
|
||
[STRINGID_STEALTHROCKDMG] = COMPOUND_STRING("尖锐的岩石扎进了\n{B_SCR_NAME_WITH_PREFIX2}的体内!"),
|
||
[STRINGID_TOXICSPIKESABSORBED] = COMPOUND_STRING("{B_SCR_TEAM2}脚下的\n毒菱消失不见了!"),
|
||
[STRINGID_TOXICSPIKESPOISONED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}中毒了!"),
|
||
[STRINGID_STICKYWEBSWITCHIN] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n被黏黏网粘住了!"),
|
||
[STRINGID_HEALINGWISHCAMETRUE] = COMPOUND_STRING("治愈之愿\n在{B_ATK_NAME_WITH_PREFIX2}身上实现了!"),
|
||
[STRINGID_HEALINGWISHHEALED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n体力回复了!"),
|
||
[STRINGID_LUNARDANCECAMETRUE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n被神秘的月光包围了!"),
|
||
[STRINGID_CUSEDBODYDISABLED] = COMPOUND_STRING("因{B_DEF_NAME_WITH_PREFIX2}的{B_DEF_ABILITY},\n封住了{B_ATK_NAME_WITH_PREFIX}的\l{B_BUFF1}!"),
|
||
[STRINGID_ATTACKERACQUIREDABILITY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的特性\n变为{B_LAST_ABILITY}了!"),
|
||
[STRINGID_TARGETABILITYSTATLOWER] = COMPOUND_STRING("因为{B_DEF_ABILITY},\n{B_DEF_NAME_WITH_PREFIX}的{B_BUFF1}降低了!"),
|
||
[STRINGID_TARGETSTATWONTGOHIGHER] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n{B_BUFF1}已经无法再提高了!"),
|
||
[STRINGID_PKMNMOVEBOUNCEDABILITY] = COMPOUND_STRING("因{B_DEF_NAME_WITH_PREFIX2}的{B_DEF_ABILITY},\n将{B_ATK_NAME_WITH_PREFIX}的\l{B_CURRENT_MOVE}反射了回去!"),
|
||
[STRINGID_IMPOSTERTRANSFORM] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}因{B_LAST_ABILITY}\n变成了{B_DEF_NAME_WITH_PREFIX2}!"),
|
||
[STRINGID_ASSAULTVESTDOESNTALLOW] = COMPOUND_STRING("因为{B_LAST_ITEM}的效果,\n无法使出变化招式!\p"),
|
||
[STRINGID_GRAVITYPREVENTSUSAGE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}因重力太强\n而无法使出{B_CURRENT_MOVE}!\p"),
|
||
[STRINGID_HEALBLOCKPREVENTSUSAGE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n因回复封锁而无法回复!\p"),
|
||
[STRINGID_NOTDONEYET] = COMPOUND_STRING("这个招式的效果还没完成!\p"),
|
||
[STRINGID_STICKYWEBUSED] = COMPOUND_STRING("{B_DEF_TEAM2}的脚下\n延伸出了黏黏网!"),
|
||
[STRINGID_QUASHSUCCESS] = COMPOUND_STRING("延后了{B_DEF_NAME_WITH_PREFIX}的顺序!"),
|
||
[STRINGID_PKMNBLEWAWAYTOXICSPIKES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n吹飞了毒菱!"),
|
||
[STRINGID_PKMNBLEWAWAYSTICKYWEB] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n吹飞了黏黏网!"),
|
||
[STRINGID_PKMNBLEWAWAYSTEALTHROCK] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n吹飞了隐形岩!"),
|
||
[STRINGID_IONDELUGEON] = COMPOUND_STRING("等离子雨倾盆而下!"),
|
||
[STRINGID_TOPSYTURVYSWITCHEDSTATS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX2}的\n能力变化颠倒过来了!"),
|
||
[STRINGID_TERRAINBECOMESMISTY] = COMPOUND_STRING("脚下雾气缭绕!"),
|
||
[STRINGID_TERRAINBECOMESGRASSY] = COMPOUND_STRING("脚下青草如茵!"),
|
||
[STRINGID_TERRAINBECOMESELECTRIC] = COMPOUND_STRING("脚下电光飞闪!"),
|
||
[STRINGID_TERRAINBECOMESPSYCHIC] = COMPOUND_STRING("脚下传来了奇妙的感觉!"),
|
||
[STRINGID_TARGETELECTRIFIED] = COMPOUND_STRING("因为输电,{B_DEF_NAME_WITH_PREFIX}的\n招式变成了电属性!"),
|
||
[STRINGID_MEGAEVOREACTING] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的{B_LAST_ITEM}和\n{B_ATK_TRAINER_NAME}的超级环起了反应!"), //actually displays the type of mega ring in inventory, but we didnt implement them :(
|
||
[STRINGID_MEGAEVOEVOLVED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}超级进化成了\n超级{B_BUFF1}!"),
|
||
[STRINGID_DRASTICALLY] = gText_drastically,
|
||
[STRINGID_SEVERELY] = gText_severely,
|
||
[STRINGID_INFESTATION] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}受到了\n{B_ATK_NAME_WITH_PREFIX2}的死缠烂打!"),
|
||
[STRINGID_NOEFFECTONTARGET] = COMPOUND_STRING("对于{B_DEF_NAME_WITH_PREFIX2}没有效果!"),
|
||
[STRINGID_BURSTINGFLAMESHIT] = COMPOUND_STRING("爆裂出的火焰溅到了\n{B_SCR_NAME_WITH_PREFIX2}!"),
|
||
[STRINGID_BESTOWITEMGIVING] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}从{B_ATK_NAME_WITH_PREFIX2}\n那里获得了{B_LAST_ITEM}!"),
|
||
[STRINGID_THIRDTYPEADDED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX2}\n增加了{B_BUFF1}属性!"),
|
||
[STRINGID_FELLFORFEINT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n中了佯攻!"),
|
||
[STRINGID_POKEMONCANNOTUSEMOVE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n无法使用{B_CURRENT_MOVE}!"),
|
||
[STRINGID_COVEREDINPOWDER] = COMPOUND_STRING("向{B_DEF_NAME_WITH_PREFIX}\n抛洒了粉尘!"),
|
||
[STRINGID_POWDEREXPLODES] = COMPOUND_STRING("和火焰起了反应,\n粉尘爆炸了!"),
|
||
[STRINGID_BELCHCANTSELECT] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n因没有吃树果而无法使出招式!\p"),
|
||
[STRINGID_SPECTRALTHIEFSTEAL] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n夺取了提高的那部分能力!"),
|
||
[STRINGID_GRAVITYGROUNDING] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n因受到重力影响而无法待在空中!"),
|
||
[STRINGID_MISTYTERRAINPREVENTS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n正受到薄雾场地的保护!"),
|
||
[STRINGID_GRASSYTERRAINHEALS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n因青草场地回复了体力!"),
|
||
[STRINGID_ELECTRICTERRAINPREVENTS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n正受到电气场地的保护!"),
|
||
[STRINGID_PSYCHICTERRAINPREVENTS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n正受到精神场地的保护!"),
|
||
[STRINGID_SAFETYGOGGLESPROTECTED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n因{B_LAST_ITEM}而不会受到影响!"),
|
||
[STRINGID_FLOWERVEILPROTECTED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n正受到花幕的保护!"),
|
||
[STRINGID_SWEETVEILPROTECTED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n因甜幕而不会睡着!"),
|
||
[STRINGID_AROMAVEILPROTECTED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n正受到芳香幕的保护!"),
|
||
[STRINGID_CELEBRATEMESSAGE] = COMPOUND_STRING("恭喜恭喜!\n{B_PLAYER_NAME}!"),
|
||
[STRINGID_USEDINSTRUCTEDMOVE] = COMPOUND_STRING("根据{B_BUFF1}的指示,\n{B_ATK_NAME_WITH_PREFIX}使出了招式!"),
|
||
[STRINGID_THROATCHOPENDS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n变得可以使出声音的招式了!"),
|
||
[STRINGID_PKMNCANTUSEMOVETHROATCHOP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX2}\n因深渊突刺的效果无法使出招式!\p"),
|
||
[STRINGID_LASERFOCUS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n磨砺了精神!"),
|
||
[STRINGID_GEMACTIVATES] = COMPOUND_STRING("{B_LAST_ITEM}加强了\n{B_ATK_NAME_WITH_PREFIX2}的威力!"),
|
||
[STRINGID_BERRYDMGREDUCES] = COMPOUND_STRING("{B_LAST_ITEM}减轻了\n对{B_SCR_NAME_WITH_PREFIX2}造成的伤害!"),
|
||
[STRINGID_AIRBALLOONFLOAT] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX2}\n靠着气球浮在了空中!"),
|
||
[STRINGID_AIRBALLOONPOP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n气球破了!"),
|
||
[STRINGID_INCINERATEBURN] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}的\n{B_LAST_ITEM}被烧没了!"),
|
||
[STRINGID_BUGBITE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}夺取\n并吃掉了{B_LAST_ITEM}!"),
|
||
[STRINGID_ILLUSIONWOREOFF] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}造成的\n幻觉被解除了!"),
|
||
[STRINGID_ATTACKERCUREDTARGETSTATUS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n治愈了{B_DEF_NAME_WITH_PREFIX2}的异常状态!"),
|
||
[STRINGID_ATTACKERLOSTFIRETYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的火焰燃尽了!"),
|
||
[STRINGID_HEALERCURE] = COMPOUND_STRING("因{B_ATK_NAME_WITH_PREFIX}的{B_LAST_ABILITY},\n{B_SCR_NAME_WITH_PREFIX2}的异常状态治愈了!"),
|
||
[STRINGID_SCRIPTINGABILITYSTATRAISE] = COMPOUND_STRING("因为{B_SCR_ACTIVE_ABILITY},\n{B_SCR_NAME_WITH_PREFIX}的{B_BUFF1}提高了!"),
|
||
[STRINGID_RECEIVERABILITYTAKEOVER] = COMPOUND_STRING("继承了{B_SCR_NAME_WITH_PREFIX}的\n{B_SCR_ACTIVE_ABILITY}!"),
|
||
[STRINGID_PKNMABSORBINGPOWER] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n正在积蓄力量!"),
|
||
[STRINGID_NOONEWILLBEABLETORUNAWAY] = COMPOUND_STRING("下回合无法逃走!"),
|
||
[STRINGID_DESTINYKNOTACTIVATES] = COMPOUND_STRING("{B_LAST_ITEM}让{B_SCR_NAME_WITH_PREFIX}\n着迷了!"),
|
||
[STRINGID_CLOAKEDINAFREEZINGLIGHT] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n被冷光包围了!"),
|
||
[STRINGID_CLEARAMULETWONTLOWERSTATS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX2}的\n能力因{B_LAST_ITEM}不会降低!"),
|
||
[STRINGID_FERVENTWISHREACHED] = COMPOUND_STRING("{B_ATK_TRAINER_NAME}衷心的祈愿\n传递到了{B_ATK_NAME_WITH_PREFIX2}那里!"),
|
||
[STRINGID_AIRLOCKACTIVATES] = COMPOUND_STRING("天气的影响消失了!"),
|
||
[STRINGID_PRESSUREENTERS] = COMPOUND_STRING("从{B_SCR_NAME_WITH_PREFIX}的身上\n感到了一种压迫感!"),
|
||
[STRINGID_DARKAURAENTERS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n正在释放暗黑气场!"),
|
||
[STRINGID_FAIRYAURAENTERS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n正在释放妖精气场!"),
|
||
[STRINGID_AURABREAKENTERS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n压制了所有气场!"),
|
||
[STRINGID_COMATOSEENTERS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n处于半梦半醒状态!"),
|
||
[STRINGID_SCREENCLEANERENTERS] = COMPOUND_STRING("双方场上的反射壁、光墙\n和极光幕消失了!"),
|
||
[STRINGID_FETCHEDPOKEBALL] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n捡来了{B_LAST_ITEM}!"),
|
||
[STRINGID_BATTLERABILITYRAISEDSTAT] = COMPOUND_STRING("因为{B_SCR_ACTIVE_ABILITY},\n{B_SCR_NAME_WITH_PREFIX}的{B_BUFF1}提高了!"),
|
||
[STRINGID_ASANDSTORMKICKEDUP] = COMPOUND_STRING("开始刮沙暴了!"),
|
||
[STRINGID_PKMNSWILLPERISHIN3TURNS] = COMPOUND_STRING("双方将在3回合后灭亡!"), //don't think this message is displayed anymore
|
||
[STRINGID_ABILITYRAISEDSTATDRASTICALLY] = COMPOUND_STRING("因为{B_DEF_ABILITY},\n{B_DEF_NAME_WITH_PREFIX2}的{B_BUFF1}巨幅提高了!"),
|
||
[STRINGID_AURAFLAREDTOLIFE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}让气场覆盖全身!"),
|
||
[STRINGID_ASONEENTERS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n同时拥有了两种特性!"),
|
||
[STRINGID_CURIOUSMEDICINEENTERS] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}的\n能力变化消失了!"),
|
||
[STRINGID_CANACTFASTERTHANKSTO] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}用了{B_BUFF1}后,\n行动变快了!"),
|
||
[STRINGID_MICLEBERRYACTIVATES] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用{B_LAST_ITEM}\n提高了命中率!"),
|
||
[STRINGID_PKMNSHOOKOFFTHETAUNT] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}的\n挑衅效果解除了!"),
|
||
[STRINGID_PKMNGOTOVERITSINFATUATION] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}的\n着迷状态治愈了!"),
|
||
[STRINGID_ITEMCANNOTBEREMOVED] = COMPOUND_STRING("无法夺取\n{B_ATK_NAME_WITH_PREFIX}的道具!"),
|
||
[STRINGID_STICKYBARBTRANSFER] = COMPOUND_STRING("{B_LAST_ITEM}附着到了\n{B_ATK_NAME_WITH_PREFIX2}的身上!"),
|
||
[STRINGID_PKMNBURNHEALED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n灼伤治愈了!"),
|
||
[STRINGID_REDCARDACTIVATE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}猛地向\n{B_ATK_NAME_WITH_PREFIX2}出示了红牌!"),
|
||
[STRINGID_EJECTBUTTONACTIVATE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n要用{B_LAST_ITEM}回去了!"),
|
||
[STRINGID_ATKGOTOVERINFATUATION] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n着迷状态治愈了!"),
|
||
[STRINGID_TORMENTEDNOMORE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n无理取闹的效果消失了!"),
|
||
[STRINGID_HEALBLOCKEDNOMORE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n回复封锁的效果消失了!"),
|
||
[STRINGID_ATTACKERBECAMEFULLYCHARGED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n浑身充满了牵绊之力!\p"),
|
||
[STRINGID_ATTACKERBECAMEASHSPECIES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n变身成了小智版甲贺忍蛙!\p"),
|
||
[STRINGID_EXTREMELYHARSHSUNLIGHT] = COMPOUND_STRING("日照变得非常强了!"),
|
||
[STRINGID_EXTREMESUNLIGHTFADED] = COMPOUND_STRING("日照复原了!"),
|
||
[STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT] = COMPOUND_STRING("受强日照的影响,\n水属性的攻击被蒸发了!"),
|
||
[STRINGID_EXTREMELYHARSHSUNLIGHTWASNOTLESSENED] = COMPOUND_STRING("强日照势头不减!"),
|
||
[STRINGID_HEAVYRAIN] = COMPOUND_STRING("开始下起了暴雨!"),
|
||
[STRINGID_HEAVYRAINLIFTED] = COMPOUND_STRING("暴雨停了!"),
|
||
[STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN] = COMPOUND_STRING("受暴雨的影响,\n火属性的攻击被扑灭了!"),
|
||
[STRINGID_NORELIEFROMHEAVYRAIN] = COMPOUND_STRING("暴雨势头不减!"),
|
||
[STRINGID_MYSTERIOUSAIRCURRENT] = COMPOUND_STRING("神秘的乱流\n保护着飞行属性宝可梦!"),
|
||
[STRINGID_STRONGWINDSDISSIPATED] = COMPOUND_STRING("神秘的乱流停止了!"),
|
||
[STRINGID_MYSTERIOUSAIRCURRENTBLOWSON] = COMPOUND_STRING("神秘的乱流势头不减!"),
|
||
[STRINGID_ATTACKWEAKENEDBSTRONGWINDS] = COMPOUND_STRING("神秘的乱流减弱了攻击!"),
|
||
[STRINGID_STUFFCHEEKSCANTSELECT] = COMPOUND_STRING("没有携带树果,无法使出招式!\p"),
|
||
[STRINGID_PKMNREVERTEDTOPRIMAL] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}的原始回归!\n恢复了原始的样子!"),
|
||
[STRINGID_BUTPOKEMONCANTUSETHEMOVE] = COMPOUND_STRING("但是,{B_ATK_NAME_WITH_PREFIX2}\n无法使用!"),
|
||
[STRINGID_BUTHOOPACANTUSEIT] = COMPOUND_STRING("但是,现在的{B_ATK_NAME_WITH_PREFIX2}\n无法使用!"),
|
||
[STRINGID_BROKETHROUGHPROTECTION] = COMPOUND_STRING("打破了\n{B_DEF_NAME_WITH_PREFIX2}的防守!"),
|
||
[STRINGID_ABILITYALLOWSONLYMOVE] = COMPOUND_STRING("因为{B_ATK_ABILITY}的效果,\n只能使出{B_CURRENT_MOVE}!\p"),
|
||
[STRINGID_SWAPPEDABILITIES] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n互换了各自的特性!"),
|
||
[STRINGID_PASTELVEILPROTECTED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n正受到粉彩护幕的保护!"),
|
||
[STRINGID_PASTELVEILENTERS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的毒\n消失得干干净净!"),
|
||
[STRINGID_BATTLERTYPECHANGEDTO] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n变成了{B_BUFF1}属性!"),
|
||
[STRINGID_BOTHCANNOLONGERESCAPE] = COMPOUND_STRING("双方的宝可梦无法逃走了!"),
|
||
[STRINGID_CANTESCAPEDUETOUSEDMOVE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}受到\n背水一战的效果影响,无法逃走了!"),
|
||
[STRINGID_PKMNBECAMEWEAKERTOFIRE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n变得怕火了!"),
|
||
[STRINGID_ABOUTTOUSEPOLTERGEIST] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}被\n{B_BUFF1}袭击了!"),
|
||
[STRINGID_CANTESCAPEBECAUSEOFCURRENTMOVE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}受到\n蛸固的效果影响,变得无法逃走了……"),
|
||
[STRINGID_NEUTRALIZINGGASENTERS] = COMPOUND_STRING("周围充满了化学变化气体!"),
|
||
[STRINGID_NEUTRALIZINGGASOVER] = COMPOUND_STRING("化学变化气体的效果消失了!"),
|
||
[STRINGID_TARGETTOOHEAVY] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n太重了,抬不起来!"),
|
||
[STRINGID_PKMNTOOKTARGETHIGH] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n将{B_DEF_NAME_WITH_PREFIX2}带上了高空!"),
|
||
[STRINGID_PKMNINSNAPTRAP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n被捕兽夹困住了!"),
|
||
[STRINGID_METEORBEAMCHARGING] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}身上\n溢出了宇宙之力!"),
|
||
[STRINGID_HEATUPBEAK] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n开始给鸟嘴加热了!"),
|
||
[STRINGID_COURTCHANGE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n交换了双方的场地效果!"),
|
||
[STRINGID_PLAYERLOSTTOENEMYTRAINER] = COMPOUND_STRING("{B_PLAYER_NAME}的手上没有\n可以战斗的宝可梦!\p被{B_TRAINER1_NAME_WITH_CLASS}\n打败了!{PAUSE_UNTIL_PRESS}"),
|
||
[STRINGID_PLAYERPAIDPRIZEMONEY] = COMPOUND_STRING("{B_PLAYER_NAME}支付了¥{B_BUFF1}\n作为奖金……\p………………\n………………\p{B_PLAYER_NAME}的眼前变得一片漆黑!{PAUSE_UNTIL_PRESS}"),
|
||
[STRINGID_ZPOWERSURROUNDS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n让Z力量笼罩了全身!"),
|
||
[STRINGID_ZMOVEUNLEASHED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}开始释放\n全力的Z招式!"),
|
||
[STRINGID_ZMOVERESETSSTATS] = COMPOUND_STRING("因为Z力量,{B_SCR_NAME_WITH_PREFIX}\n恢复了降低的能力!"),
|
||
[STRINGID_ZMOVEALLSTATSUP] = COMPOUND_STRING("因为Z力量,{B_SCR_NAME_WITH_PREFIX}的\n能力提高了!"),
|
||
[STRINGID_ZMOVEZBOOSTCRIT] = COMPOUND_STRING("因为Z力量,{B_SCR_NAME_WITH_PREFIX}\n变得容易击中要害了!"),
|
||
[STRINGID_ZMOVERESTOREHP] = COMPOUND_STRING("因为Z力量,{B_SCR_NAME_WITH_PREFIX}的\n体力回复了!"),
|
||
[STRINGID_ZMOVESTATUP] = COMPOUND_STRING("因为Z力量,{B_SCR_NAME_WITH_PREFIX}的\n能力提高了!"),
|
||
[STRINGID_ZMOVEHPTRAP] = COMPOUND_STRING("因为Z力量,{B_SCR_NAME_WITH_PREFIX}\n将会回复来替换的宝可梦的HP!"),
|
||
[STRINGID_ATTACKEREXPELLEDTHEPOISON] = COMPOUND_STRING("为了不让你担心,\n{B_ATK_NAME_WITH_PREFIX}靠自己治愈了中毒!"),
|
||
[STRINGID_ATTACKERSHOOKITSELFAWAKE] = COMPOUND_STRING("为了不让你担心,\n{B_ATK_NAME_WITH_PREFIX}努力醒过来了!"),
|
||
[STRINGID_ATTACKERBROKETHROUGHPARALYSIS] = COMPOUND_STRING("为了不让你担心,\n{B_ATK_NAME_WITH_PREFIX}靠斗志治愈了麻痹!"),
|
||
[STRINGID_ATTACKERHEALEDITSBURN] = COMPOUND_STRING("为了不让你担心,\n{B_ATK_NAME_WITH_PREFIX}靠毅力治愈了灼伤!"),
|
||
[STRINGID_ATTACKERMELTEDTHEICE] = COMPOUND_STRING("为了不让你担心,\n{B_ATK_NAME_WITH_PREFIX}努力融化了冰冻!"),
|
||
[STRINGID_TARGETTOUGHEDITOUT] = COMPOUND_STRING("为了不让{B_PLAYER_NAME}伤心,\n{B_DEF_NAME_WITH_PREFIX}撑住了!"),
|
||
[STRINGID_ATTACKERLOSTELECTRICTYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n用尽电力了!"),
|
||
[STRINGID_ATTACKERSWITCHEDSTATWITHTARGET] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n互换了各自的{B_BUFF1}!"),
|
||
[STRINGID_BEINGHITCHARGEDPKMNWITHPOWER] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX2}\n受到{B_CURRENT_MOVE}而充电了!"),
|
||
[STRINGID_SUNLIGHTACTIVATEDABILITY] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX2}通过\n大晴天发动了古代活性!"),
|
||
[STRINGID_STATWASHEIGHTENED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n{B_BUFF1}升高了!"),
|
||
[STRINGID_ELECTRICTERRAINACTIVATEDABILITY] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX2}通过\n电气场地发动了夸克充能!"),
|
||
[STRINGID_ABILITYWEAKENEDSURROUNDINGMONSSTAT] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}的{B_SCR_ACTIVE_ABILITY}\n令周围的宝可梦的{B_BUFF1}减弱了!\p"),
|
||
[STRINGID_ATTACKERGAINEDSTRENGTHFROMTHEFALLEN] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}从\n被打倒的同伴身上得到力量了!"),
|
||
[STRINGID_PKMNSABILITYPREVENTSABILITY] = COMPOUND_STRING("因{B_SCR_NAME_WITH_PREFIX}的\n{B_SCR_ACTIVE_ABILITY},\p{B_DEF_NAME_WITH_PREFIX2}的\n{B_DEF_ABILITY}变得无效了!"), //not in gen 5+, ability popup
|
||
[STRINGID_PREPARESHELLTRAP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}设置了陷阱甲壳!"),
|
||
[STRINGID_SHELLTRAPDIDNTWORK] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n陷阱甲壳没有被触发!"),
|
||
[STRINGID_SPIKESDISAPPEAREDFROMTEAM] = COMPOUND_STRING("{B_ATK_TEAM2}脚下的\n撒菱消失不见了!"),
|
||
[STRINGID_TOXICSPIKESDISAPPEAREDFROMTEAM] = COMPOUND_STRING("{B_ATK_TEAM2}脚下的\n毒菱消失不见了!"),
|
||
[STRINGID_STICKYWEBDISAPPEAREDFROMTEAM] = COMPOUND_STRING("{B_ATK_TEAM2}脚下的\n黏黏网消失不见了!"),
|
||
[STRINGID_STEALTHROCKDISAPPEAREDFROMTEAM] = COMPOUND_STRING("{B_ATK_TEAM2}周围的\n隐形岩消失不见了!"),
|
||
[STRINGID_COULDNTFULLYPROTECT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n没能防住攻击,受到了伤害!"),
|
||
[STRINGID_STOCKPILEDEFFECTWOREOFF] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n蓄力后的效果消失了!"),
|
||
[STRINGID_PKMNREVIVEDREADYTOFIGHT] = COMPOUND_STRING("{B_BUFF1}复活\n并能继续战斗了!"),
|
||
[STRINGID_ITEMRESTOREDSPECIESHEALTH] = COMPOUND_STRING("{B_BUFF1}的\n体力回复了!"),
|
||
[STRINGID_ITEMCUREDSPECIESSTATUS] = COMPOUND_STRING("{B_BUFF1}\n从异常状态中恢复了!"),
|
||
[STRINGID_ITEMRESTOREDSPECIESPP] = COMPOUND_STRING("{B_BUFF1}的\nPP回复了!"),
|
||
[STRINGID_THUNDERCAGETRAPPED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX2}被\n{B_ATK_NAME_WITH_PREFIX}困住了!"),
|
||
[STRINGID_PKMNHURTBYFROSTBITE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n受到了冻伤的伤害!"),
|
||
[STRINGID_PKMNGOTFROSTBITE] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}\n被冻伤了!"),
|
||
[STRINGID_PKMNSITEMHEALEDFROSTBITE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}用\n{B_LAST_ITEM}治愈了冻伤!"),
|
||
[STRINGID_ATTACKERHEALEDITSFROSTBITE] = COMPOUND_STRING("为了不让你担心,\n{B_ATK_NAME_WITH_PREFIX}努力治愈了冻伤!"),
|
||
[STRINGID_PKMNFROSTBITEHEALED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的\n冻伤痊愈了!"),
|
||
[STRINGID_PKMNFROSTBITEHEALED2] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的\n冻伤痊愈了!"),
|
||
[STRINGID_PKMNFROSTBITEHEALEDBY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}用\n{B_CURRENT_MOVE}治愈了冻伤!"),
|
||
[STRINGID_MIRRORHERBCOPIED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}使用模仿香草\n模仿了对手的能力变化!"),
|
||
[STRINGID_STARTEDSNOW] = COMPOUND_STRING("开始下雪了!"),
|
||
[STRINGID_SNOWCONTINUES] = COMPOUND_STRING("漫天大雪。"), //not in gen 5+ (lol)
|
||
[STRINGID_SNOWSTOPPED] = COMPOUND_STRING("雪停了!"),
|
||
[STRINGID_SNOWWARNINGSNOW] = COMPOUND_STRING("开始下雪了!"),
|
||
[STRINGID_PKMNITEMMELTED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}把{B_DEF_NAME_WITH_PREFIX2}的\n{B_LAST_ITEM}融化了!"),
|
||
[STRINGID_ULTRABURSTREACTING] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX2}的身上\n开始溢出耀眼的光芒!"),
|
||
[STRINGID_ULTRABURSTCOMPLETED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}通过究极爆发\n现出了新的样子!"),
|
||
[STRINGID_TEAMGAINEDEXP] = COMPOUND_STRING("通过学习装置,\n各自都获得了经验值!\p"),
|
||
[STRINGID_CURRENTMOVECANTSELECT] = COMPOUND_STRING("无法使用{B_BUFF1}!"),
|
||
[STRINGID_TARGETISBEINGSALTCURED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}\n陷入了盐腌状态!"),
|
||
[STRINGID_TARGETISHURTBYSALTCURE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}受到了\n{B_BUFF1}的伤害。"),
|
||
[STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}陷入了\n满身糖状态!"),
|
||
[STRINGID_SHARPSTEELFLOATS] = COMPOUND_STRING("{B_DEF_TEAM2} 周围\n开始悬浮起尖锐的钢刺!"),
|
||
[STRINGID_SHARPSTEELDMG] = COMPOUND_STRING("尖锐的钢刺扎进了\n{B_DEF_NAME_WITH_PREFIX2}体内!"),
|
||
[STRINGID_PKMNBLEWAWAYSHARPSTEEL] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}\n吹飞了尖锐的钢刺!"),
|
||
[STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM] = COMPOUND_STRING("{B_ATK_TEAM2}周围的\n钢刺消失了"),
|
||
[STRINGID_TEAMTRAPPEDWITHVINES] = COMPOUND_STRING("{B_DEF_TEAM1}宝可梦\n被困在鞭子的猛击中!"),
|
||
[STRINGID_PKMNHURTBYVINES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}被暴露在\n超极巨灰飞鞭灭的猛击下疼痛难忍!"),
|
||
[STRINGID_TEAMCAUGHTINVORTEX] = COMPOUND_STRING("{B_DEF_TEAM1}宝可梦\n被困在水流之中!"),
|
||
[STRINGID_PKMNHURTBYVORTEX] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}被吞没在\n超极巨水炮轰灭的水流里疼痛难忍!"),
|
||
[STRINGID_TEAMSURROUNDEDBYFIRE] = COMPOUND_STRING("{B_DEF_TEAM1}宝可梦\n被困在火焰之中!"),
|
||
[STRINGID_PKMNBURNINGUP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}被\n超极巨地狱灭焰的火焰包围酷热难耐!"),
|
||
[STRINGID_TEAMSURROUNDEDBYROCKS] = COMPOUND_STRING("{B_DEF_TEAM1}宝可梦\n被困在岩石之中!"),
|
||
[STRINGID_PKMNHURTBYROCKSTHROWN] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}被困在\n超极巨炎石喷发的岩石之中疼痛难忍!"),
|
||
[STRINGID_MOVEBLOCKEDBYDYNAMAX] = COMPOUND_STRING("被极巨化之力弹开了!"),
|
||
[STRINGID_ZEROTOHEROTRANSFORMATION] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}\n变身后归来了!"),
|
||
[STRINGID_THETWOMOVESBECOMEONE] = COMPOUND_STRING("两个招式合二为一!\n这是合体招式!!{PAUSE 16}"),
|
||
[STRINGID_ARAINBOWAPPEAREDONSIDE] = COMPOUND_STRING("彩虹出现在了{B_ATK_TEAM2}上空!"),
|
||
[STRINGID_THERAINBOWDISAPPEARED] = COMPOUND_STRING("彩虹从{B_ATK_TEAM2}上空消失了!"),
|
||
[STRINGID_WAITINGFORPARTNERSMOVE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}正在等待\n{B_ATK_PARTNER_NAME}的技能……{PAUSE 16}"),
|
||
[STRINGID_SEAOFFIREENVELOPEDSIDE] = COMPOUND_STRING("{B_DEF_TEAM2}周围被\n火海包围了!"),
|
||
[STRINGID_HURTBYTHESEAOFFIRE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}受到了火海的伤害!"),
|
||
[STRINGID_THESEAOFFIREDISAPPEARED] = COMPOUND_STRING("{B_ATK_TEAM2}周围的火海\n消失不见了!"),
|
||
[STRINGID_SWAMPENVELOPEDSIDE] = COMPOUND_STRING("在{B_DEF_TEAM2}周围\n延伸出了湿地!"),
|
||
[STRINGID_THESWAMPDISAPPEARED] = COMPOUND_STRING("{B_ATK_TEAM2}周围的湿地\n消失不见了!"),
|
||
[STRINGID_PKMNTELLCHILLINGRECEPTIONJOKE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}说出了冷笑话!"),
|
||
[STRINGID_HOSPITALITYRESTORATION] = COMPOUND_STRING("{B_ATK_PARTNER_NAME}喝光了\n{B_ATK_NAME_WITH_PREFIX2}泡的茶!"),
|
||
[STRINGID_ELECTROSHOTCHARGING] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}吸收了电力!"),
|
||
[STRINGID_ITEMWASUSEDUP] = COMPOUND_STRING("{B_LAST_ITEM}已完成使命,\n消失了……"),
|
||
[STRINGID_ATTACKERLOSTITSTYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}失去了\n{B_BUFF1}属性!"),
|
||
[STRINGID_SHEDITSTAIL] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}使用\n断尾制作了替身!"),
|
||
[STRINGID_CLOAKEDINAHARSHLIGHT] = COMPOUND_STRING("强光包围了{B_ATK_NAME_WITH_PREFIX}!"),
|
||
[STRINGID_SUPERSWEETAROMAWAFTS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX2}的蜜\n散发出了甜甜香气!"),
|
||
[STRINGID_DIMENSIONSWERETWISTED] = COMPOUND_STRING("时空被扭曲了!"),
|
||
[STRINGID_BIZARREARENACREATED] = COMPOUND_STRING("空间变得离奇了!\n宝可梦的持有物失去了效果!"),
|
||
[STRINGID_BIZARREAREACREATED] = COMPOUND_STRING("空间变得离奇了!\n宝可梦的防御和特防互换了!"),
|
||
[STRINGID_TIDYINGUPCOMPLETE] = COMPOUND_STRING("大扫除完毕!"),
|
||
[STRINGID_PKMNTERASTALLIZEDINTO] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}太晶化为了{B_BUFF1}属性!"),
|
||
[STRINGID_BOOSTERENERGYACTIVATES] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}通过{B_LAST_ITEM}\n发动了{B_SCR_ACTIVE_ABILITY}!"),
|
||
[STRINGID_FOGCREPTUP] = COMPOUND_STRING("开始起雾了!"),
|
||
[STRINGID_FOGISDEEP] = COMPOUND_STRING("雾持续弥漫。"),
|
||
[STRINGID_FOGLIFTED] = COMPOUND_STRING("雾散开了!"),
|
||
[STRINGID_PKMNMADESHELLGLEAM] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}让甲壳发出光辉,\n使属性相克发生扭曲!!"),
|
||
[STRINGID_FICKLEBEAMDOUBLED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}拿出全力了!"),
|
||
[STRINGID_COMMANDERACTIVATES] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}作为发号施令的要员\n而被吃吼霸吞下去了!"),
|
||
[STRINGID_POKEFLUTECATCHY] = COMPOUND_STRING("{B_PLAYER_NAME}吹响了{B_LAST_ITEM}!\p嗯……不错的音色!"),
|
||
[STRINGID_POKEFLUTE] = COMPOUND_STRING("{B_PLAYER_NAME}吹响了{B_LAST_ITEM}!"),
|
||
[STRINGID_MONHEARINGFLUTEAWOKE] = COMPOUND_STRING("宝可梦听到笛声醒了过来!"),
|
||
[STRINGID_SUNLIGHTISHARSH] = COMPOUND_STRING("现在日照很强!"),
|
||
[STRINGID_ITISHAILING] = COMPOUND_STRING("现在正在下冰雹!"),
|
||
[STRINGID_ITISSNOWING] = COMPOUND_STRING("现在正在下雪!"),
|
||
[STRINGID_ISCOVEREDWITHGRASS] = COMPOUND_STRING("脚下的青草正在生长!"),
|
||
[STRINGID_MISTSWIRLSAROUND] = COMPOUND_STRING("脚下的雾气正在蔓延!"),
|
||
[STRINGID_ELECTRICCURRENTISRUNNING] = COMPOUND_STRING("脚下的电光正在闪烁!"),
|
||
[STRINGID_SEEMSWEIRD] = COMPOUND_STRING("脚下传来阵阵奇妙的感觉!"),
|
||
[STRINGID_WAGGLINGAFINGER] = COMPOUND_STRING("挥动手指后,使出了{B_CURRENT_MOVE}!"),
|
||
[STRINGID_BLOCKEDBYSLEEPCLAUSE] = COMPOUND_STRING("因为催眠条款,\n{B_DEF_NAME_WITH_PREFIX2}不会被催眠!"),
|
||
[STRINGID_SUPEREFFECTIVETWOFOES] = COMPOUND_STRING("对{B_DEF_NAME_WITH_PREFIX2}和\n{B_DEF_PARTNER_NAME}效果绝佳!"),
|
||
[STRINGID_NOTVERYEFFECTIVETWOFOES] = COMPOUND_STRING("对{B_DEF_NAME_WITH_PREFIX2}和\n{B_DEF_PARTNER_NAME}效果不好。"),
|
||
[STRINGID_ITDOESNTAFFECTTWOFOES] = COMPOUND_STRING("对于{B_DEF_NAME_WITH_PREFIX2}和\n{B_DEF_PARTNER_NAME},好像没有效果……"),
|
||
[STRINGID_SENDCAUGHTMONPARTYORBOX] = COMPOUND_STRING("要将{B_DEF_NAME}加入到同行宝可梦里吗?"),
|
||
[STRINGID_PKMNSENTTOPCAFTERCATCH] = gText_PkmnSentToPCAfterCatch,
|
||
};
|
||
|
||
const u16 gTrainerUsedItemStringIds[] =
|
||
{
|
||
STRINGID_PLAYERUSEDITEM, STRINGID_TRAINER1USEDITEM
|
||
};
|
||
|
||
const u16 gZEffectStringIds[] =
|
||
{
|
||
[B_MSG_Z_RESET_STATS] = STRINGID_ZMOVERESETSSTATS,
|
||
[B_MSG_Z_ALL_STATS_UP]= STRINGID_ZMOVEALLSTATSUP,
|
||
[B_MSG_Z_BOOST_CRITS] = STRINGID_ZMOVEZBOOSTCRIT,
|
||
[B_MSG_Z_FOLLOW_ME] = STRINGID_PKMNCENTERATTENTION,
|
||
[B_MSG_Z_RECOVER_HP] = STRINGID_ZMOVERESTOREHP,
|
||
[B_MSG_Z_STAT_UP] = STRINGID_ZMOVESTATUP,
|
||
[B_MSG_Z_HP_TRAP] = STRINGID_ZMOVEHPTRAP,
|
||
};
|
||
|
||
const u16 gMentalHerbCureStringIds[] =
|
||
{
|
||
[B_MSG_MENTALHERBCURE_INFATUATION] = STRINGID_ATKGOTOVERINFATUATION,
|
||
[B_MSG_MENTALHERBCURE_TAUNT] = STRINGID_BUFFERENDS,
|
||
[B_MSG_MENTALHERBCURE_ENCORE] = STRINGID_PKMNENCOREENDED,
|
||
[B_MSG_MENTALHERBCURE_TORMENT] = STRINGID_TORMENTEDNOMORE,
|
||
[B_MSG_MENTALHERBCURE_HEALBLOCK] = STRINGID_HEALBLOCKEDNOMORE,
|
||
[B_MSG_MENTALHERBCURE_DISABLE] = STRINGID_PKMNMOVEDISABLEDNOMORE,
|
||
};
|
||
|
||
const u16 gStartingStatusStringIds[B_MSG_STARTING_STATUS_COUNT] =
|
||
{
|
||
[B_MSG_TERRAIN_SET_MISTY] = STRINGID_TERRAINBECOMESMISTY,
|
||
[B_MSG_TERRAIN_SET_ELECTRIC] = STRINGID_TERRAINBECOMESELECTRIC,
|
||
[B_MSG_TERRAIN_SET_PSYCHIC] = STRINGID_TERRAINBECOMESPSYCHIC,
|
||
[B_MSG_TERRAIN_SET_GRASSY] = STRINGID_TERRAINBECOMESGRASSY,
|
||
[B_MSG_SET_TRICK_ROOM] = STRINGID_DIMENSIONSWERETWISTED,
|
||
[B_MSG_SET_MAGIC_ROOM] = STRINGID_BIZARREARENACREATED,
|
||
[B_MSG_SET_WONDER_ROOM] = STRINGID_BIZARREAREACREATED,
|
||
[B_MSG_SET_TAILWIND] = STRINGID_TAILWINDBLEW,
|
||
[B_MSG_SET_RAINBOW] = STRINGID_ARAINBOWAPPEAREDONSIDE,
|
||
[B_MSG_SET_SEA_OF_FIRE] = STRINGID_SEAOFFIREENVELOPEDSIDE,
|
||
[B_MSG_SET_SWAMP] = STRINGID_SWAMPENVELOPEDSIDE,
|
||
};
|
||
|
||
const u16 gTerrainStringIds[B_MSG_TERRAIN_COUNT] =
|
||
{
|
||
[B_MSG_TERRAIN_SET_MISTY] = STRINGID_TERRAINBECOMESMISTY,
|
||
[B_MSG_TERRAIN_SET_ELECTRIC] = STRINGID_TERRAINBECOMESELECTRIC,
|
||
[B_MSG_TERRAIN_SET_PSYCHIC] = STRINGID_TERRAINBECOMESPSYCHIC,
|
||
[B_MSG_TERRAIN_SET_GRASSY] = STRINGID_TERRAINBECOMESGRASSY,
|
||
[B_MSG_TERRAIN_END_MISTY] = STRINGID_MISTYTERRAINENDS,
|
||
[B_MSG_TERRAIN_END_ELECTRIC] = STRINGID_ELECTRICTERRAINENDS,
|
||
[B_MSG_TERRAIN_END_PSYCHIC] = STRINGID_PSYCHICTERRAINENDS,
|
||
[B_MSG_TERRAIN_END_GRASSY] = STRINGID_GRASSYTERRAINENDS,
|
||
};
|
||
|
||
const u16 gTerrainPreventsStringIds[] =
|
||
{
|
||
[B_MSG_TERRAINPREVENTS_MISTY] = STRINGID_MISTYTERRAINPREVENTS,
|
||
[B_MSG_TERRAINPREVENTS_ELECTRIC] = STRINGID_ELECTRICTERRAINPREVENTS,
|
||
[B_MSG_TERRAINPREVENTS_PSYCHIC] = STRINGID_PSYCHICTERRAINPREVENTS
|
||
};
|
||
|
||
const u16 gHealingWishStringIds[] =
|
||
{
|
||
STRINGID_HEALINGWISHCAMETRUE, STRINGID_LUNARDANCECAMETRUE
|
||
};
|
||
|
||
const u16 gDmgHazardsStringIds[] =
|
||
{
|
||
[B_MSG_PKMNHURTBYSPIKES] = STRINGID_PKMNHURTBYSPIKES,
|
||
[B_MSG_STEALTHROCKDMG] = STRINGID_STEALTHROCKDMG,
|
||
[B_MSG_SHARPSTEELDMG] = STRINGID_SHARPSTEELDMG,
|
||
[B_MSG_POINTEDSTONESFLOAT] = STRINGID_POINTEDSTONESFLOAT,
|
||
[B_MSG_SPIKESSCATTERED] = STRINGID_SPIKESSCATTERED,
|
||
[B_MSG_SHARPSTEELFLOATS] = STRINGID_SHARPSTEELFLOATS,
|
||
};
|
||
|
||
const u16 gSwitchInAbilityStringIds[] =
|
||
{
|
||
[B_MSG_SWITCHIN_MOLDBREAKER] = STRINGID_MOLDBREAKERENTERS,
|
||
[B_MSG_SWITCHIN_TERAVOLT] = STRINGID_TERAVOLTENTERS,
|
||
[B_MSG_SWITCHIN_TURBOBLAZE] = STRINGID_TURBOBLAZEENTERS,
|
||
[B_MSG_SWITCHIN_SLOWSTART] = STRINGID_SLOWSTARTENTERS,
|
||
[B_MSG_SWITCHIN_UNNERVE] = STRINGID_UNNERVEENTERS,
|
||
[B_MSG_SWITCHIN_ANTICIPATION] = STRINGID_ANTICIPATIONACTIVATES,
|
||
[B_MSG_SWITCHIN_FOREWARN] = STRINGID_FOREWARNACTIVATES,
|
||
[B_MSG_SWITCHIN_PRESSURE] = STRINGID_PRESSUREENTERS,
|
||
[B_MSG_SWITCHIN_DARKAURA] = STRINGID_DARKAURAENTERS,
|
||
[B_MSG_SWITCHIN_FAIRYAURA] = STRINGID_FAIRYAURAENTERS,
|
||
[B_MSG_SWITCHIN_AURABREAK] = STRINGID_AURABREAKENTERS,
|
||
[B_MSG_SWITCHIN_COMATOSE] = STRINGID_COMATOSEENTERS,
|
||
[B_MSG_SWITCHIN_SCREENCLEANER] = STRINGID_SCREENCLEANERENTERS,
|
||
[B_MSG_SWITCHIN_ASONE] = STRINGID_ASONEENTERS,
|
||
[B_MSG_SWITCHIN_CURIOUS_MEDICINE] = STRINGID_CURIOUSMEDICINEENTERS,
|
||
[B_MSG_SWITCHIN_PASTEL_VEIL] = STRINGID_PASTELVEILENTERS,
|
||
[B_MSG_SWITCHIN_NEUTRALIZING_GAS] = STRINGID_NEUTRALIZINGGASENTERS,
|
||
};
|
||
|
||
const u16 gMissStringIds[] =
|
||
{
|
||
[B_MSG_MISSED] = STRINGID_ATTACKMISSED,
|
||
[B_MSG_PROTECTED] = STRINGID_PKMNPROTECTEDITSELF,
|
||
[B_MSG_AVOIDED_ATK] = STRINGID_PKMNAVOIDEDATTACK,
|
||
[B_MSG_AVOIDED_DMG] = STRINGID_AVOIDEDDAMAGE,
|
||
[B_MSG_GROUND_MISS] = STRINGID_PKMNMAKESGROUNDMISS
|
||
};
|
||
|
||
const u16 gNoEscapeStringIds[] =
|
||
{
|
||
[B_MSG_CANT_ESCAPE] = STRINGID_CANTESCAPE,
|
||
[B_MSG_DONT_LEAVE_BIRCH] = STRINGID_DONTLEAVEBIRCH,
|
||
[B_MSG_PREVENTS_ESCAPE] = STRINGID_PREVENTSESCAPE,
|
||
[B_MSG_CANT_ESCAPE_2] = STRINGID_CANTESCAPE2,
|
||
[B_MSG_ATTACKER_CANT_ESCAPE] = STRINGID_ATTACKERCANTESCAPE
|
||
};
|
||
|
||
const u16 gMoveWeatherChangeStringIds[] =
|
||
{
|
||
[B_MSG_STARTED_RAIN] = STRINGID_STARTEDTORAIN,
|
||
[B_MSG_STARTED_DOWNPOUR] = STRINGID_DOWNPOURSTARTED, // Unused
|
||
[B_MSG_WEATHER_FAILED] = STRINGID_BUTITFAILED,
|
||
[B_MSG_STARTED_SANDSTORM] = STRINGID_SANDSTORMBREWED,
|
||
[B_MSG_STARTED_SUNLIGHT] = STRINGID_SUNLIGHTGOTBRIGHT,
|
||
[B_MSG_STARTED_HAIL] = STRINGID_STARTEDHAIL,
|
||
[B_MSG_STARTED_SNOW] = STRINGID_STARTEDSNOW,
|
||
[B_MSG_STARTED_FOG] = STRINGID_FOGCREPTUP, // Unused, can use for custom moves that set fog
|
||
};
|
||
|
||
const u16 gWeatherEndsStringIds[B_MSG_WEATHER_END_COUNT] =
|
||
{
|
||
[B_MSG_WEATHER_END_RAIN] = STRINGID_RAINSTOPPED,
|
||
[B_MSG_WEATHER_END_SUN] = STRINGID_SUNLIGHTFADED,
|
||
[B_MSG_WEATHER_END_SANDSTORM] = STRINGID_SANDSTORMSUBSIDED,
|
||
[B_MSG_WEATHER_END_HAIL] = STRINGID_HAILSTOPPED,
|
||
[B_MSG_WEATHER_END_SNOW] = STRINGID_SNOWSTOPPED,
|
||
[B_MSG_WEATHER_END_FOG] = STRINGID_FOGLIFTED,
|
||
[B_MSG_WEATHER_END_STRONG_WINDS] = STRINGID_STRONGWINDSDISSIPATED,
|
||
};
|
||
|
||
const u16 gWeatherTurnStringIds[] =
|
||
{
|
||
[B_MSG_WEATHER_TURN_RAIN] = STRINGID_RAINCONTINUES,
|
||
[B_MSG_WEATHER_TURN_DOWNPOUR] = STRINGID_DOWNPOURCONTINUES,
|
||
[B_MSG_WEATHER_TURN_SUN] = STRINGID_SUNLIGHTSTRONG,
|
||
[B_MSG_WEATHER_TURN_SANDSTORM] = STRINGID_SANDSTORMRAGES,
|
||
[B_MSG_WEATHER_TURN_HAIL] = STRINGID_HAILCONTINUES,
|
||
[B_MSG_WEATHER_TURN_SNOW] = STRINGID_SNOWCONTINUES,
|
||
[B_MSG_WEATHER_TURN_FOG] = STRINGID_FOGISDEEP,
|
||
[B_MSG_WEATHER_TURN_STRONG_WINDS] = STRINGID_MYSTERIOUSAIRCURRENTBLOWSON,
|
||
};
|
||
|
||
const u16 gSandStormHailDmgStringIds[] =
|
||
{
|
||
[B_MSG_SANDSTORM] = STRINGID_PKMNBUFFETEDBYSANDSTORM,
|
||
[B_MSG_HAIL] = STRINGID_PKMNPELTEDBYHAIL
|
||
};
|
||
|
||
const u16 gProtectLikeUsedStringIds[] =
|
||
{
|
||
[B_MSG_PROTECTED_ITSELF] = STRINGID_PKMNPROTECTEDITSELF2,
|
||
[B_MSG_BRACED_ITSELF] = STRINGID_PKMNBRACEDITSELF,
|
||
[B_MSG_PROTECT_FAILED] = STRINGID_BUTITFAILED,
|
||
[B_MSG_PROTECTED_TEAM] = STRINGID_PROTECTEDTEAM,
|
||
};
|
||
|
||
const u16 gReflectLightScreenSafeguardStringIds[] =
|
||
{
|
||
[B_MSG_SIDE_STATUS_FAILED] = STRINGID_BUTITFAILED,
|
||
[B_MSG_SET_REFLECT_SINGLE] = STRINGID_PKMNRAISEDDEF,
|
||
[B_MSG_SET_REFLECT_DOUBLE] = STRINGID_PKMNRAISEDDEF,
|
||
[B_MSG_SET_LIGHTSCREEN_SINGLE] = STRINGID_PKMNRAISEDSPDEF,
|
||
[B_MSG_SET_LIGHTSCREEN_DOUBLE] = STRINGID_PKMNRAISEDSPDEF,
|
||
[B_MSG_SET_SAFEGUARD] = STRINGID_PKMNCOVEREDBYVEIL,
|
||
};
|
||
|
||
const u16 gLeechSeedStringIds[] =
|
||
{
|
||
[B_MSG_LEECH_SEED_SET] = STRINGID_PKMNSEEDED,
|
||
[B_MSG_LEECH_SEED_MISS] = STRINGID_PKMNEVADEDATTACK,
|
||
[B_MSG_LEECH_SEED_FAIL] = STRINGID_ITDOESNTAFFECT,
|
||
[B_MSG_LEECH_SEED_DRAIN] = STRINGID_PKMNSAPPEDBYLEECHSEED,
|
||
[B_MSG_LEECH_SEED_OOZE] = STRINGID_ITSUCKEDLIQUIDOOZE,
|
||
};
|
||
|
||
const u16 gRestUsedStringIds[] =
|
||
{
|
||
[B_MSG_REST] = STRINGID_PKMNWENTTOSLEEP,
|
||
[B_MSG_REST_STATUSED] = STRINGID_PKMNSLEPTHEALTHY
|
||
};
|
||
|
||
const u16 gUproarOverTurnStringIds[] =
|
||
{
|
||
[B_MSG_UPROAR_CONTINUES] = STRINGID_PKMNMAKINGUPROAR,
|
||
[B_MSG_UPROAR_ENDS] = STRINGID_PKMNCALMEDDOWN
|
||
};
|
||
|
||
const u16 gStockpileUsedStringIds[] =
|
||
{
|
||
[B_MSG_STOCKPILED] = STRINGID_PKMNSTOCKPILED,
|
||
[B_MSG_CANT_STOCKPILE] = STRINGID_PKMNCANTSTOCKPILE,
|
||
};
|
||
|
||
const u16 gWokeUpStringIds[] =
|
||
{
|
||
[B_MSG_WOKE_UP] = STRINGID_PKMNWOKEUP,
|
||
[B_MSG_WOKE_UP_UPROAR] = STRINGID_PKMNWOKEUPINUPROAR
|
||
};
|
||
|
||
const u16 gSwallowFailStringIds[] =
|
||
{
|
||
[B_MSG_SWALLOW_FAILED] = STRINGID_FAILEDTOSWALLOW,
|
||
[B_MSG_SWALLOW_FULL_HP] = STRINGID_PKMNHPFULL
|
||
};
|
||
|
||
const u16 gUproarAwakeStringIds[] =
|
||
{
|
||
[B_MSG_CANT_SLEEP_UPROAR] = STRINGID_PKMNCANTSLEEPINUPROAR2,
|
||
[B_MSG_UPROAR_KEPT_AWAKE] = STRINGID_UPROARKEPTPKMNAWAKE,
|
||
};
|
||
|
||
const u16 gStatUpStringIds[] =
|
||
{
|
||
[B_MSG_ATTACKER_STAT_ROSE] = STRINGID_ATTACKERSSTATROSE,
|
||
[B_MSG_DEFENDER_STAT_ROSE] = STRINGID_DEFENDERSSTATROSE,
|
||
[B_MSG_STAT_WONT_INCREASE] = STRINGID_STATSWONTINCREASE,
|
||
[B_MSG_STAT_ROSE_EMPTY] = STRINGID_EMPTYSTRING3,
|
||
[B_MSG_STAT_ROSE_ITEM] = STRINGID_USINGITEMSTATOFPKMNROSE,
|
||
[B_MSG_USED_DIRE_HIT] = STRINGID_PKMNUSEDXTOGETPUMPED,
|
||
};
|
||
|
||
const u16 gStatDownStringIds[] =
|
||
{
|
||
[B_MSG_ATTACKER_STAT_FELL] = STRINGID_ATTACKERSSTATFELL,
|
||
[B_MSG_DEFENDER_STAT_FELL] = STRINGID_DEFENDERSSTATFELL,
|
||
[B_MSG_STAT_WONT_DECREASE] = STRINGID_STATSWONTDECREASE,
|
||
[B_MSG_STAT_FELL_EMPTY] = STRINGID_EMPTYSTRING3,
|
||
};
|
||
|
||
// Index copied from move's index in sTrappingMoves
|
||
const u16 gWrappedStringIds[NUM_TRAPPING_MOVES] =
|
||
{
|
||
[B_MSG_WRAPPED_BIND] = STRINGID_PKMNSQUEEZEDBYBIND, // MOVE_BIND
|
||
[B_MSG_WRAPPED_WRAP] = STRINGID_PKMNWRAPPEDBY, // MOVE_WRAP
|
||
[B_MSG_WRAPPED_FIRE_SPIN] = STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_FIRE_SPIN
|
||
[B_MSG_WRAPPED_CLAMP] = STRINGID_PKMNCLAMPED, // MOVE_CLAMP
|
||
[B_MSG_WRAPPED_WHIRLPOOL] = STRINGID_PKMNTRAPPEDINVORTEX, // MOVE_WHIRLPOOL
|
||
[B_MSG_WRAPPED_SAND_TOMB] = STRINGID_PKMNTRAPPEDBYSANDTOMB, // MOVE_SAND_TOMB
|
||
[B_MSG_WRAPPED_MAGMA_STORM] = STRINGID_TRAPPEDBYSWIRLINGMAGMA, // MOVE_MAGMA_STORM
|
||
[B_MSG_WRAPPED_INFESTATION] = STRINGID_INFESTATION, // MOVE_INFESTATION
|
||
[B_MSG_WRAPPED_SNAP_TRAP] = STRINGID_PKMNINSNAPTRAP, // MOVE_SNAP_TRAP
|
||
[B_MSG_WRAPPED_THUNDER_CAGE]= STRINGID_THUNDERCAGETRAPPED, // MOVE_THUNDER_CAGE
|
||
};
|
||
|
||
const u16 gMistUsedStringIds[] =
|
||
{
|
||
[B_MSG_SET_MIST] = STRINGID_PKMNSHROUDEDINMIST,
|
||
[B_MSG_MIST_FAILED] = STRINGID_BUTITFAILED
|
||
};
|
||
|
||
const u16 gFocusEnergyUsedStringIds[] =
|
||
{
|
||
[B_MSG_GETTING_PUMPED] = STRINGID_PKMNGETTINGPUMPED,
|
||
[B_MSG_FOCUS_ENERGY_FAILED] = STRINGID_BUTITFAILED
|
||
};
|
||
|
||
const u16 gTransformUsedStringIds[] =
|
||
{
|
||
[B_MSG_TRANSFORMED] = STRINGID_PKMNTRANSFORMEDINTO,
|
||
[B_MSG_TRANSFORM_FAILED] = STRINGID_BUTITFAILED
|
||
};
|
||
|
||
const u16 gSubstituteUsedStringIds[] =
|
||
{
|
||
[B_MSG_SET_SUBSTITUTE] = STRINGID_PKMNMADESUBSTITUTE,
|
||
[B_MSG_SUBSTITUTE_FAILED] = STRINGID_TOOWEAKFORSUBSTITUTE
|
||
};
|
||
|
||
const u16 gGotPoisonedStringIds[] =
|
||
{
|
||
[B_MSG_STATUSED] = STRINGID_PKMNWASPOISONED,
|
||
[B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNPOISONEDBY
|
||
};
|
||
|
||
const u16 gGotParalyzedStringIds[] =
|
||
{
|
||
[B_MSG_STATUSED] = STRINGID_PKMNWASPARALYZED,
|
||
[B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNWASPARALYZEDBY
|
||
};
|
||
|
||
const u16 gFellAsleepStringIds[] =
|
||
{
|
||
[B_MSG_STATUSED] = STRINGID_PKMNFELLASLEEP,
|
||
[B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNMADESLEEP,
|
||
};
|
||
|
||
const u16 gGotBurnedStringIds[] =
|
||
{
|
||
[B_MSG_STATUSED] = STRINGID_PKMNWASBURNED,
|
||
[B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNBURNEDBY
|
||
};
|
||
|
||
const u16 gGotFrostbiteStringIds[] =
|
||
{
|
||
[B_MSG_STATUSED] = STRINGID_PKMNGOTFROSTBITE
|
||
};
|
||
|
||
const u16 gFrostbiteHealedStringIds[] =
|
||
{
|
||
[B_MSG_FROSTBITE_HEALED] = STRINGID_PKMNFROSTBITEHEALED2,
|
||
[B_MSG_FROSTBITE_HEALED_BY_MOVE] = STRINGID_PKMNFROSTBITEHEALEDBY
|
||
};
|
||
|
||
const u16 gGotFrozenStringIds[] =
|
||
{
|
||
[B_MSG_STATUSED] = STRINGID_PKMNWASFROZEN,
|
||
[B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNFROZENBY
|
||
};
|
||
|
||
const u16 gGotDefrostedStringIds[] =
|
||
{
|
||
[B_MSG_DEFROSTED] = STRINGID_PKMNWASDEFROSTED2,
|
||
[B_MSG_DEFROSTED_BY_MOVE] = STRINGID_PKMNWASDEFROSTEDBY
|
||
};
|
||
|
||
const u16 gKOFailedStringIds[] =
|
||
{
|
||
[B_MSG_KO_MISS] = STRINGID_ATTACKMISSED,
|
||
[B_MSG_KO_UNAFFECTED] = STRINGID_PKMNUNAFFECTED
|
||
};
|
||
|
||
const u16 gAttractUsedStringIds[] =
|
||
{
|
||
[B_MSG_STATUSED] = STRINGID_PKMNFELLINLOVE,
|
||
[B_MSG_STATUSED_BY_ABILITY] = STRINGID_PKMNSXINFATUATEDY
|
||
};
|
||
|
||
const u16 gAbsorbDrainStringIds[] =
|
||
{
|
||
[B_MSG_ABSORB] = STRINGID_PKMNENERGYDRAINED,
|
||
[B_MSG_ABSORB_OOZE] = STRINGID_ITSUCKEDLIQUIDOOZE
|
||
};
|
||
|
||
const u16 gSportsUsedStringIds[] =
|
||
{
|
||
[B_MSG_WEAKEN_ELECTRIC] = STRINGID_ELECTRICITYWEAKENED,
|
||
[B_MSG_WEAKEN_FIRE] = STRINGID_FIREWEAKENED
|
||
};
|
||
|
||
const u16 gPartyStatusHealStringIds[] =
|
||
{
|
||
[B_MSG_BELL] = STRINGID_BELLCHIMED,
|
||
[B_MSG_BELL_SOUNDPROOF_ATTACKER] = STRINGID_BELLCHIMED,
|
||
[B_MSG_BELL_SOUNDPROOF_PARTNER] = STRINGID_BELLCHIMED,
|
||
[B_MSG_BELL_BOTH_SOUNDPROOF] = STRINGID_BELLCHIMED,
|
||
[B_MSG_SOOTHING_AROMA] = STRINGID_SOOTHINGAROMA
|
||
};
|
||
|
||
const u16 gFutureMoveUsedStringIds[] =
|
||
{
|
||
[B_MSG_FUTURE_SIGHT] = STRINGID_PKMNFORESAWATTACK,
|
||
[B_MSG_DOOM_DESIRE] = STRINGID_PKMNCHOSEXASDESTINY
|
||
};
|
||
|
||
const u16 gBallEscapeStringIds[] =
|
||
{
|
||
[BALL_NO_SHAKES] = STRINGID_PKMNBROKEFREE,
|
||
[BALL_1_SHAKE] = STRINGID_ITAPPEAREDCAUGHT,
|
||
[BALL_2_SHAKES] = STRINGID_AARGHALMOSTHADIT,
|
||
[BALL_3_SHAKES_FAIL] = STRINGID_SHOOTSOCLOSE
|
||
};
|
||
|
||
// Overworld weathers that don't have an associated battle weather default to "It is raining."
|
||
const u16 gWeatherStartsStringIds[] =
|
||
{
|
||
[WEATHER_NONE] = STRINGID_ITISRAINING,
|
||
[WEATHER_SUNNY_CLOUDS] = STRINGID_ITISRAINING,
|
||
[WEATHER_SUNNY] = STRINGID_ITISRAINING,
|
||
[WEATHER_RAIN] = STRINGID_ITISRAINING,
|
||
[WEATHER_SNOW] = (B_OVERWORLD_SNOW >= GEN_9 ? STRINGID_ITISSNOWING : STRINGID_ITISHAILING),
|
||
[WEATHER_RAIN_THUNDERSTORM] = STRINGID_ITISRAINING,
|
||
[WEATHER_FOG_HORIZONTAL] = STRINGID_FOGISDEEP,
|
||
[WEATHER_VOLCANIC_ASH] = STRINGID_ITISRAINING,
|
||
[WEATHER_SANDSTORM] = STRINGID_SANDSTORMISRAGING,
|
||
[WEATHER_FOG_DIAGONAL] = STRINGID_FOGISDEEP,
|
||
[WEATHER_UNDERWATER] = STRINGID_ITISRAINING,
|
||
[WEATHER_SHADE] = STRINGID_ITISRAINING,
|
||
[WEATHER_DROUGHT] = STRINGID_SUNLIGHTISHARSH,
|
||
[WEATHER_DOWNPOUR] = STRINGID_ITISRAINING,
|
||
[WEATHER_UNDERWATER_BUBBLES] = STRINGID_ITISRAINING,
|
||
[WEATHER_ABNORMAL] = STRINGID_ITISRAINING
|
||
};
|
||
|
||
const u16 gTerrainStartsStringIds[] =
|
||
{
|
||
[B_MSG_TERRAIN_SET_MISTY] = STRINGID_MISTSWIRLSAROUND,
|
||
[B_MSG_TERRAIN_SET_ELECTRIC] = STRINGID_ELECTRICCURRENTISRUNNING,
|
||
[B_MSG_TERRAIN_SET_PSYCHIC] = STRINGID_SEEMSWEIRD,
|
||
[B_MSG_TERRAIN_SET_GRASSY] = STRINGID_ISCOVEREDWITHGRASS,
|
||
};
|
||
|
||
const u16 gPrimalWeatherBlocksStringIds[] =
|
||
{
|
||
[B_MSG_PRIMAL_WEATHER_FIZZLED_BY_RAIN] = STRINGID_MOVEFIZZLEDOUTINTHEHEAVYRAIN,
|
||
[B_MSG_PRIMAL_WEATHER_EVAPORATED_IN_SUN] = STRINGID_MOVEEVAPORATEDINTHEHARSHSUNLIGHT,
|
||
};
|
||
|
||
const u16 gInobedientStringIds[] =
|
||
{
|
||
[B_MSG_LOAFING] = STRINGID_PKMNLOAFING,
|
||
[B_MSG_WONT_OBEY] = STRINGID_PKMNWONTOBEY,
|
||
[B_MSG_TURNED_AWAY] = STRINGID_PKMNTURNEDAWAY,
|
||
[B_MSG_PRETEND_NOT_NOTICE] = STRINGID_PKMNPRETENDNOTNOTICE,
|
||
[B_MSG_INCAPABLE_OF_POWER] = STRINGID_PKMNINCAPABLEOFPOWER
|
||
};
|
||
|
||
const u16 gSafariGetNearStringIds[] =
|
||
{
|
||
[B_MSG_CREPT_CLOSER] = STRINGID_CREPTCLOSER,
|
||
[B_MSG_CANT_GET_CLOSER] = STRINGID_CANTGETCLOSER
|
||
};
|
||
|
||
const u16 gSafariPokeblockResultStringIds[] =
|
||
{
|
||
[B_MSG_MON_CURIOUS] = STRINGID_PKMNCURIOUSABOUTX,
|
||
[B_MSG_MON_ENTHRALLED] = STRINGID_PKMNENTHRALLEDBYX,
|
||
[B_MSG_MON_IGNORED] = STRINGID_PKMNIGNOREDX
|
||
};
|
||
|
||
const u16 gBerryEffectStringIds[] =
|
||
{
|
||
[B_MSG_CURED_PROBLEM] = STRINGID_PKMNSITEMCUREDPROBLEM,
|
||
[B_MSG_NORMALIZED_STATUS] = STRINGID_PKMNSITEMNORMALIZEDSTATUS
|
||
};
|
||
|
||
const u16 gBRNPreventionStringIds[] =
|
||
{
|
||
[B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNSXPREVENTSBURNS,
|
||
[B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ,
|
||
[B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY
|
||
};
|
||
|
||
const u16 gPRLZPreventionStringIds[] =
|
||
{
|
||
[B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNPREVENTSPARALYSISWITH,
|
||
[B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ,
|
||
[B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY
|
||
};
|
||
|
||
const u16 gPSNPreventionStringIds[] =
|
||
{
|
||
[B_MSG_ABILITY_PREVENTS_MOVE_STATUS] = STRINGID_PKMNPREVENTSPOISONINGWITH,
|
||
[B_MSG_ABILITY_PREVENTS_ABILITY_STATUS] = STRINGID_PKMNSXPREVENTSYSZ,
|
||
[B_MSG_STATUS_HAD_NO_EFFECT] = STRINGID_PKMNSXHADNOEFFECTONY
|
||
};
|
||
|
||
const u16 gItemSwapStringIds[] =
|
||
{
|
||
[B_MSG_ITEM_SWAP_TAKEN] = STRINGID_PKMNOBTAINEDX,
|
||
[B_MSG_ITEM_SWAP_GIVEN] = STRINGID_PKMNOBTAINEDX2,
|
||
[B_MSG_ITEM_SWAP_BOTH] = STRINGID_PKMNOBTAINEDXYOBTAINEDZ
|
||
};
|
||
|
||
const u16 gFlashFireStringIds[] =
|
||
{
|
||
[B_MSG_FLASH_FIRE_BOOST] = STRINGID_PKMNRAISEDFIREPOWERWITH,
|
||
[B_MSG_FLASH_FIRE_NO_BOOST] = STRINGID_PKMNSXMADEYINEFFECTIVE
|
||
};
|
||
|
||
const u16 gCaughtMonStringIds[] =
|
||
{
|
||
[B_MSG_SENT_SOMEONES_PC] = STRINGID_PKMNTRANSFERREDSOMEONESPC,
|
||
[B_MSG_SENT_LANETTES_PC] = STRINGID_PKMNTRANSFERREDLANETTESPC,
|
||
[B_MSG_SOMEONES_BOX_FULL] = STRINGID_PKMNBOXSOMEONESPCFULL,
|
||
[B_MSG_LANETTES_BOX_FULL] = STRINGID_PKMNBOXLANETTESPCFULL,
|
||
[B_MSG_SWAPPED_INTO_PARTY] = STRINGID_PKMNSENTTOPCAFTERCATCH,
|
||
};
|
||
|
||
const u16 gRoomsStringIds[] =
|
||
{
|
||
STRINGID_PKMNTWISTEDDIMENSIONS, STRINGID_TRICKROOMENDS,
|
||
STRINGID_SWAPSDEFANDSPDEFOFALLPOKEMON, STRINGID_WONDERROOMENDS,
|
||
STRINGID_HELDITEMSLOSEEFFECTS, STRINGID_MAGICROOMENDS,
|
||
STRINGID_EMPTYSTRING3
|
||
};
|
||
|
||
const u16 gStatusConditionsStringIds[] =
|
||
{
|
||
STRINGID_PKMNWASPOISONED, STRINGID_PKMNBADLYPOISONED, STRINGID_PKMNWASBURNED, STRINGID_PKMNWASPARALYZED, STRINGID_PKMNFELLASLEEP, STRINGID_PKMNGOTFROSTBITE
|
||
};
|
||
|
||
const u16 gStatus2StringIds[] =
|
||
{
|
||
STRINGID_PKMNWASCONFUSED, STRINGID_PKMNFELLINLOVE, STRINGID_TARGETCANTESCAPENOW, STRINGID_PKMNSUBJECTEDTOTORMENT
|
||
};
|
||
|
||
const u16 gDamageNonTypesStartStringIds[] =
|
||
{
|
||
[B_MSG_TRAPPED_WITH_VINES] = STRINGID_TEAMTRAPPEDWITHVINES,
|
||
[B_MSG_CAUGHT_IN_VORTEX] = STRINGID_TEAMCAUGHTINVORTEX,
|
||
[B_MSG_SURROUNDED_BY_FIRE] = STRINGID_TEAMSURROUNDEDBYFIRE,
|
||
[B_MSG_SURROUNDED_BY_ROCKS] = STRINGID_TEAMSURROUNDEDBYROCKS,
|
||
};
|
||
|
||
const u16 gDamageNonTypesDmgStringIds[] =
|
||
{
|
||
[B_MSG_HURT_BY_VINES] = STRINGID_PKMNHURTBYVINES,
|
||
[B_MSG_HURT_BY_VORTEX] = STRINGID_PKMNHURTBYVORTEX,
|
||
[B_MSG_BURNING_UP] = STRINGID_PKMNBURNINGUP,
|
||
[B_MSG_HURT_BY_ROCKS_THROWN] = STRINGID_PKMNHURTBYROCKSTHROWN,
|
||
};
|
||
|
||
const u8 gText_PkmnIsEvolving[] = _("……哦!?\n{STR_VAR_1}的样子……!");
|
||
const u8 gText_CongratsPkmnEvolved[] = _("恭喜!{STR_VAR_1}\n进化为{STR_VAR_2}了!{WAIT_SE}\p");
|
||
const u8 gText_PkmnStoppedEvolving[] = _("什么……?{STR_VAR_1}的\n变化停止了!\p");
|
||
const u8 gText_EllipsisQuestionMark[] = _("……?\p");
|
||
const u8 gText_WhatWillPkmnDo[] = _("{B_BUFF1}\n要做什么呢?");
|
||
const u8 gText_WhatWillPkmnDo2[] = _("{B_PLAYER_NAME}\n要做什么呢?");
|
||
const u8 gText_WhatWillWallyDo[] = _("满充\n要做什么呢?");
|
||
const u8 gText_LinkStandby[] = _("{PAUSE 16}正在等待连接……");
|
||
const u8 gText_BattleMenu[] = _("战斗{CLEAR_TO 56}包包\n宝可梦{CLEAR_TO 56}逃走");
|
||
const u8 gText_SafariZoneMenu[] = _("精灵球{CLEAR_TO 56}宝可方块\n靠近{CLEAR_TO 56}逃走");
|
||
const u8 gText_MoveInterfacePP[] = _("PP");
|
||
const u8 gText_MoveInterfaceType[] = _("属性/");
|
||
const u8 gText_MoveInterfacePpType[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}PP\n属性/");
|
||
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}要忘记\n哪个招式?");
|
||
const u8 gText_BattleYesNoChoice[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}是\n否");
|
||
const u8 gText_BattleSwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}与哪个招式\n交换位置?");
|
||
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[] = _("-");
|
||
const u8 gText_SafariBalls[] = _("{HIGHLIGHT DARK_GRAY}狩猎球");
|
||
const u8 gText_SafariBallLeft[] = _("{HIGHLIGHT DARK_GRAY}Left: $" "{HIGHLIGHT DARK_GRAY}");
|
||
const u8 gText_Sleep[] = _("睡眠");
|
||
const u8 gText_Poison[] = _("中毒");
|
||
const u8 gText_Burn[] = _("灼伤");
|
||
const u8 gText_Paralysis[] = _("麻痹");
|
||
const u8 gText_Ice[] = _("冰冻");
|
||
const u8 gText_Confusion[] = _("混乱");
|
||
const u8 gText_Love[] = _("着迷");
|
||
const u8 gText_SpaceAndSpace[] = _("和");
|
||
const u8 gText_CommaSpace[] = _(",");
|
||
const u8 gText_Space2[] = _(" ");
|
||
const u8 gText_LineBreak[] = _("\l");
|
||
const u8 gText_NewLine[] = _("\n");
|
||
const u8 gText_Are[] = _("是");
|
||
const u8 gText_Are2[] = _("是");
|
||
const u8 gText_BadEgg[] = _("坏蛋");
|
||
const u8 gText_BattleWallyName[] = _("满充");
|
||
const u8 gText_Win[] = _("{HIGHLIGHT TRANSPARENT}胜");
|
||
const u8 gText_Loss[] = _("{HIGHLIGHT TRANSPARENT}负");
|
||
const u8 gText_Draw[] = _("{HIGHLIGHT TRANSPARENT}平");
|
||
static const u8 sText_SpaceIs[] = _("是");
|
||
static const u8 sText_ApostropheS[] = _("的");
|
||
const u8 gText_BattleTourney[] = _("赛程");
|
||
|
||
const u8 *const gRoundsStringTable[DOME_ROUNDS_COUNT] =
|
||
{
|
||
[DOME_ROUND1] = COMPOUND_STRING("第1回合"),
|
||
[DOME_ROUND2] = COMPOUND_STRING("第2回合"),
|
||
[DOME_SEMIFINAL] = COMPOUND_STRING("半决赛"),
|
||
[DOME_FINAL] = COMPOUND_STRING("决赛"),
|
||
};
|
||
|
||
const u8 gText_TheGreatNewHope[] = _("伟大的崭新希望!\p");
|
||
const u8 gText_WillChampionshipDreamComeTrue[] = _("冠军之梦能否成真?!\p");
|
||
const u8 gText_AFormerChampion[] = _("前冠军!\p");
|
||
const u8 gText_ThePreviousChampion[] = _("前冠军!\p");
|
||
const u8 gText_TheUnbeatenChampion[] = _("不败冠军!\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[] = _("心");
|
||
const u8 gText_Skill[] = _("技");
|
||
const u8 gText_Body[] = _("体");
|
||
const u8 gText_Judgment[] = _("{B_BUFF1}{CLEAR 13}判定{CLEAR 13}{B_BUFF2}");
|
||
static const u8 sText_TwoTrainersSentPkmn[] = _("{B_TRAINER1_NAME_WITH_CLASS}\n派出了{B_OPPONENT_MON1_NAME}!\p{B_TRAINER2_NAME_WITH_CLASS}\n派出了{B_OPPONENT_MON2_NAME}!");
|
||
static const u8 sText_Trainer2SentOutPkmn[] = _("{B_TRAINER2_NAME_WITH_CLASS}\n派出了{B_BUFF1}!");
|
||
static const u8 sText_TwoTrainersWantToBattle[] = _("{B_TRAINER1_NAME_WITH_CLASS}和\n{B_TRAINER2_NAME_WITH_CLASS}\l前来挑战了!\p");
|
||
static const u8 sText_InGamePartnerSentOutZGoN[] = _("{B_PARTNER_NAME_WITH_CLASS}\n派出了{B_PLAYER_MON2_NAME}!\l上吧!{B_PLAYER_MON1_NAME}!");
|
||
|
||
const u16 gBattlePalaceFlavorTextTable[] =
|
||
{
|
||
[B_MSG_GLINT_IN_EYE] = STRINGID_GLINTAPPEARSINEYE,
|
||
[B_MSG_GETTING_IN_POS] = STRINGID_PKMNGETTINGINTOPOSITION,
|
||
[B_MSG_GROWL_DEEPLY] = STRINGID_PKMNBEGANGROWLINGDEEPLY,
|
||
[B_MSG_EAGER_FOR_MORE] = STRINGID_PKMNEAGERFORMORE,
|
||
};
|
||
|
||
const u8 *const gRefereeStringsTable[] =
|
||
{
|
||
[B_MSG_REF_NOTHING_IS_DECIDED] = COMPOUND_STRING("裁判:如果3回合无法决出胜负,\n将由我们来裁定结果!"),
|
||
[B_MSG_REF_THATS_IT] = COMPOUND_STRING("裁判:到此为止!现在将由\n我们来裁定哪一方获胜!"),
|
||
[B_MSG_REF_JUDGE_MIND] = COMPOUND_STRING("裁判:判定准则其一,心!\n是否展现出斗志与勇气!\p"),
|
||
[B_MSG_REF_JUDGE_SKILL] = COMPOUND_STRING("裁判:判定准则其二,技!\n是否准确地使用了招式!\p"),
|
||
[B_MSG_REF_JUDGE_BODY] = COMPOUND_STRING("裁判:判定准则其三,体!\n是否保留了足够的体力!\p"),
|
||
[B_MSG_REF_PLAYER_WON] = COMPOUND_STRING("裁判:判定结果:{B_BUFF1}比{B_BUFF2}!胜者是{B_PLAYER_NAME}的{B_PLAYER_MON1_NAME}!\p"),
|
||
[B_MSG_REF_OPPONENT_WON] = COMPOUND_STRING("裁判:判定结果:{B_BUFF1}比{B_BUFF2}!胜者是{B_TRAINER1_NAME}的{B_OPPONENT_MON1_NAME}!\p"),
|
||
[B_MSG_REF_DRAW] = COMPOUND_STRING("裁判:判定结果:3比3!双方打成了平手!"),
|
||
[B_MSG_REF_COMMENCE_BATTLE] = COMPOUND_STRING("裁判:{B_PLAYER_MON1_NAME} VS {B_OPPONENT_MON1_NAME}!战斗开始!"),
|
||
};
|
||
|
||
static const u8 sText_Trainer1Fled[] = _( "{PLAY_SE SE_FLEE}{B_TRAINER1_NAME_WITH_CLASS}逃走了!");
|
||
static const u8 sText_PlayerLostAgainstTrainer1[] = _("被{B_TRAINER1_NAME_WITH_CLASS}打败了!");
|
||
static const u8 sText_PlayerBattledToDrawTrainer1[] = _("和{B_TRAINER1_NAME_WITH_CLASS}打成了平局!");
|
||
const u8 gText_RecordBattleToPass[] = _("要把你本次的战斗\n保存到开拓通行证上吗?");
|
||
const u8 gText_BattleRecordedOnPass[] = _("{B_PLAYER_NAME}本次的战斗\n保存到了开拓通行证中!");
|
||
static const u8 sText_LinkTrainerWantsToBattlePause[] = _("{B_LINK_OPPONENT1_NAME}\n前来挑战了!{PAUSE 49}");
|
||
static const u8 sText_TwoLinkTrainersWantToBattlePause[] = _("{B_LINK_OPPONENT1_NAME}和{B_LINK_OPPONENT2_NAME}\n前来挑战了!{PAUSE 49}");
|
||
static const u8 sText_Your1[] = _("我方");
|
||
static const u8 sText_Opposing1[] = _("对手");
|
||
static const u8 sText_Your2[] = _("我方");
|
||
static const u8 sText_Opposing2[] = _("对手");
|
||
|
||
// This is four lists of moves which use a different attack string in Japanese
|
||
// to the default. See the documentation for ChooseTypeOfMoveUsedString for more detail.
|
||
static const u16 sGrammarMoveUsedTable[] =
|
||
{
|
||
MOVE_SWORDS_DANCE, MOVE_STRENGTH, MOVE_GROWTH,
|
||
MOVE_HARDEN, MOVE_MINIMIZE, MOVE_SMOKESCREEN,
|
||
MOVE_WITHDRAW, MOVE_DEFENSE_CURL, MOVE_EGG_BOMB,
|
||
MOVE_SMOG, MOVE_BONE_CLUB, MOVE_FLASH, MOVE_SPLASH,
|
||
MOVE_ACID_ARMOR, MOVE_BONEMERANG, MOVE_REST, MOVE_SHARPEN,
|
||
MOVE_SUBSTITUTE, MOVE_MIND_READER, MOVE_SNORE,
|
||
MOVE_PROTECT, MOVE_SPIKES, MOVE_ENDURE, MOVE_ROLLOUT,
|
||
MOVE_SWAGGER, MOVE_SLEEP_TALK, MOVE_HIDDEN_POWER,
|
||
MOVE_PSYCH_UP, MOVE_EXTREME_SPEED, MOVE_FOLLOW_ME,
|
||
MOVE_TRICK, MOVE_ASSIST, MOVE_INGRAIN, MOVE_KNOCK_OFF,
|
||
MOVE_CAMOUFLAGE, MOVE_ASTONISH, MOVE_ODOR_SLEUTH,
|
||
MOVE_GRASS_WHISTLE, MOVE_SHEER_COLD, MOVE_MUDDY_WATER,
|
||
MOVE_IRON_DEFENSE, MOVE_BOUNCE, 0,
|
||
|
||
MOVE_TELEPORT, MOVE_RECOVER, MOVE_BIDE, MOVE_AMNESIA,
|
||
MOVE_FLAIL, MOVE_TAUNT, MOVE_BULK_UP, 0,
|
||
|
||
MOVE_MEDITATE, MOVE_AGILITY, MOVE_MIMIC, MOVE_DOUBLE_TEAM,
|
||
MOVE_BARRAGE, MOVE_TRANSFORM, MOVE_STRUGGLE, MOVE_SCARY_FACE,
|
||
MOVE_CHARGE, MOVE_WISH, MOVE_BRICK_BREAK, MOVE_YAWN,
|
||
MOVE_FEATHER_DANCE, MOVE_TEETER_DANCE, MOVE_MUD_SPORT,
|
||
MOVE_FAKE_TEARS, MOVE_WATER_SPORT, MOVE_CALM_MIND, 0,
|
||
|
||
MOVE_POUND, MOVE_SCRATCH, MOVE_VISE_GRIP,
|
||
MOVE_WING_ATTACK, MOVE_FLY, MOVE_BIND, MOVE_SLAM,
|
||
MOVE_HORN_ATTACK, MOVE_WRAP, MOVE_THRASH, MOVE_TAIL_WHIP,
|
||
MOVE_LEER, MOVE_BITE, MOVE_GROWL, MOVE_ROAR,
|
||
MOVE_SING, MOVE_PECK, MOVE_ABSORB, MOVE_STRING_SHOT,
|
||
MOVE_EARTHQUAKE, MOVE_FISSURE, MOVE_DIG, MOVE_TOXIC,
|
||
MOVE_SCREECH, MOVE_METRONOME, MOVE_LICK, MOVE_CLAMP,
|
||
MOVE_CONSTRICT, MOVE_POISON_GAS, MOVE_BUBBLE,
|
||
MOVE_SLASH, MOVE_SPIDER_WEB, MOVE_NIGHTMARE, MOVE_CURSE,
|
||
MOVE_FORESIGHT, MOVE_CHARM, MOVE_ATTRACT, MOVE_ROCK_SMASH,
|
||
MOVE_UPROAR, MOVE_SPIT_UP, MOVE_SWALLOW, MOVE_TORMENT,
|
||
MOVE_FLATTER, MOVE_ROLE_PLAY, MOVE_ENDEAVOR, MOVE_TICKLE,
|
||
MOVE_COVET, 0
|
||
};
|
||
|
||
static const u8 sText_EmptyStatus[] = _("$$$$$$$");
|
||
|
||
static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||
{
|
||
[B_WIN_MSG] = {
|
||
.fillValue = PIXEL_FILL(0xF),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 1,
|
||
.fgColor = 1,
|
||
.bgColor = 15,
|
||
.shadowColor = 6,
|
||
},
|
||
[B_WIN_ACTION_PROMPT] = {
|
||
.fillValue = PIXEL_FILL(0xF),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 1,
|
||
.bgColor = 15,
|
||
.shadowColor = 6,
|
||
},
|
||
[B_WIN_ACTION_MENU] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_MOVE_NAME_1] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_MOVE_NAME_2] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_MOVE_NAME_3] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_MOVE_NAME_4] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_PP] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 12,
|
||
.bgColor = 14,
|
||
.shadowColor = 11,
|
||
},
|
||
[B_WIN_DUMMY] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_PP_REMAINING] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 2,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 12,
|
||
.bgColor = 14,
|
||
.shadowColor = 11,
|
||
},
|
||
[B_WIN_MOVE_TYPE] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_SWITCH_PROMPT] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_YESNO] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_LEVEL_UP_BOX] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_LEVEL_UP_BANNER] = {
|
||
.fillValue = PIXEL_FILL(0),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 32,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 1,
|
||
.shadowColor = 2,
|
||
},
|
||
[B_WIN_VS_PLAYER] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_VS_OPPONENT] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_VS_MULTI_PLAYER_1] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_VS_MULTI_PLAYER_2] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_VS_MULTI_PLAYER_3] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_VS_MULTI_PLAYER_4] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_VS_OUTCOME_DRAW] = {
|
||
.fillValue = PIXEL_FILL(0),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 1,
|
||
.shadowColor = 6,
|
||
},
|
||
[B_WIN_VS_OUTCOME_LEFT] = {
|
||
.fillValue = PIXEL_FILL(0),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 1,
|
||
.shadowColor = 6,
|
||
},
|
||
[B_WIN_VS_OUTCOME_RIGHT] = {
|
||
.fillValue = PIXEL_FILL(0x0),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 1,
|
||
.shadowColor = 6,
|
||
},
|
||
[B_WIN_MOVE_DESCRIPTION] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.letterSpacing = 0,
|
||
.lineSpacing = 0,
|
||
.speed = 0,
|
||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||
},
|
||
};
|
||
|
||
static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||
{
|
||
[B_WIN_MSG] = {
|
||
.fillValue = PIXEL_FILL(0xF),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 1,
|
||
.fgColor = 1,
|
||
.bgColor = 15,
|
||
.shadowColor = 6,
|
||
},
|
||
[B_WIN_ACTION_PROMPT] = {
|
||
.fillValue = PIXEL_FILL(0xF),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 1,
|
||
.bgColor = 15,
|
||
.shadowColor = 6,
|
||
},
|
||
[B_WIN_ACTION_MENU] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_MOVE_NAME_1] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_MOVE_NAME_2] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_MOVE_NAME_3] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_MOVE_NAME_4] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_PP] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 12,
|
||
.bgColor = 14,
|
||
.shadowColor = 11,
|
||
},
|
||
[B_WIN_DUMMY] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_PP_REMAINING] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 2,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 12,
|
||
.bgColor = 14,
|
||
.shadowColor = 11,
|
||
},
|
||
[B_WIN_MOVE_TYPE] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_SWITCH_PROMPT] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_YESNO] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_LEVEL_UP_BOX] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[B_WIN_LEVEL_UP_BANNER] = {
|
||
.fillValue = PIXEL_FILL(0),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 32,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 1,
|
||
.shadowColor = 2,
|
||
},
|
||
[ARENA_WIN_PLAYER_NAME] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 1,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[ARENA_WIN_VS] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[ARENA_WIN_OPPONENT_NAME] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[ARENA_WIN_MIND] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[ARENA_WIN_SKILL] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[ARENA_WIN_BODY] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[ARENA_WIN_JUDGMENT_TITLE] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NORMAL,
|
||
.x = -1,
|
||
.y = 1,
|
||
.speed = 0,
|
||
.fgColor = 13,
|
||
.bgColor = 14,
|
||
.shadowColor = 15,
|
||
},
|
||
[ARENA_WIN_JUDGMENT_TEXT] = {
|
||
.fillValue = PIXEL_FILL(0x1),
|
||
.fontId = FONT_NORMAL,
|
||
.x = 0,
|
||
.y = 1,
|
||
.speed = 1,
|
||
.fgColor = 2,
|
||
.bgColor = 1,
|
||
.shadowColor = 3,
|
||
},
|
||
[B_WIN_MOVE_DESCRIPTION] = {
|
||
.fillValue = PIXEL_FILL(0xE),
|
||
.fontId = FONT_NARROW,
|
||
.x = 0,
|
||
.y = 1,
|
||
.letterSpacing = 0,
|
||
.lineSpacing = 0,
|
||
.speed = 0,
|
||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||
},
|
||
};
|
||
|
||
static const struct BattleWindowText *const sBattleTextOnWindowsInfo[] =
|
||
{
|
||
[B_WIN_TYPE_NORMAL] = sTextOnWindowsInfo_Normal,
|
||
[B_WIN_TYPE_ARENA] = sTextOnWindowsInfo_Arena
|
||
};
|
||
|
||
static const u8 sRecordedBattleTextSpeeds[] = {8, 4, 1, 0};
|
||
|
||
void BufferStringBattle(u16 stringID, u32 battler)
|
||
{
|
||
s32 i;
|
||
const u8 *stringPtr = NULL;
|
||
|
||
gBattleMsgDataPtr = (struct BattleMsgData *)(&gBattleResources->bufferA[battler][4]);
|
||
gLastUsedItem = gBattleMsgDataPtr->lastItem;
|
||
gLastUsedAbility = gBattleMsgDataPtr->lastAbility;
|
||
gBattleScripting.battler = gBattleMsgDataPtr->scrActive;
|
||
gBattleStruct->scriptPartyIdx = gBattleMsgDataPtr->bakScriptPartyIdx;
|
||
gBattleStruct->hpScale = gBattleMsgDataPtr->hpScale;
|
||
gPotentialItemEffectBattler = gBattleMsgDataPtr->itemEffectBattler;
|
||
gBattleStruct->stringMoveType = gBattleMsgDataPtr->moveType;
|
||
|
||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||
{
|
||
sBattlerAbilities[i] = gBattleMsgDataPtr->abilities[i];
|
||
}
|
||
for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
|
||
{
|
||
gBattleTextBuff1[i] = gBattleMsgDataPtr->textBuffs[0][i];
|
||
gBattleTextBuff2[i] = gBattleMsgDataPtr->textBuffs[1][i];
|
||
gBattleTextBuff3[i] = gBattleMsgDataPtr->textBuffs[2][i];
|
||
}
|
||
|
||
switch (stringID)
|
||
{
|
||
case STRINGID_INTROMSG: // first battle msg
|
||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||
{
|
||
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
|
||
{
|
||
if (gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI)
|
||
{
|
||
stringPtr = sText_TwoTrainersWantToBattle;
|
||
}
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||
{
|
||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||
stringPtr = sText_TwoLinkTrainersWantToBattlePause;
|
||
else
|
||
stringPtr = sText_TwoLinkTrainersWantToBattle;
|
||
}
|
||
else
|
||
{
|
||
if (TRAINER_BATTLE_PARAM.opponentA == TRAINER_UNION_ROOM)
|
||
stringPtr = sText_Trainer1WantsToBattle;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||
stringPtr = sText_LinkTrainerWantsToBattlePause;
|
||
else
|
||
stringPtr = sText_LinkTrainerWantsToBattle;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (BATTLE_TWO_VS_ONE_OPPONENT)
|
||
stringPtr = sText_Trainer1WantsToBattle;
|
||
else if (gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER))
|
||
stringPtr = sText_TwoTrainersWantToBattle;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
|
||
stringPtr = sText_TwoTrainersWantToBattle;
|
||
else
|
||
stringPtr = sText_Trainer1WantsToBattle;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
|
||
stringPtr = sText_LegendaryPkmnAppeared;
|
||
else if (IsDoubleBattle() && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)]]))
|
||
stringPtr = sText_TwoWildPkmnAppeared;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
|
||
stringPtr = sText_WildPkmnAppearedPause;
|
||
else
|
||
stringPtr = sText_WildPkmnAppeared;
|
||
}
|
||
break;
|
||
case STRINGID_INTROSENDOUT: // poke first send-out
|
||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||
{
|
||
if (IsDoubleBattle() && IsValidForBattle(&gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]))
|
||
{
|
||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
|
||
stringPtr = sText_InGamePartnerSentOutZGoN;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
|
||
stringPtr = sText_GoTwoPkmn;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||
stringPtr = sText_LinkPartnerSentOutPkmnGoPkmn;
|
||
else
|
||
stringPtr = sText_GoTwoPkmn;
|
||
}
|
||
else
|
||
{
|
||
stringPtr = sText_GoPkmn;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (IsDoubleBattle() && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]))
|
||
{
|
||
if (BATTLE_TWO_VS_ONE_OPPONENT)
|
||
stringPtr = sText_Trainer1SentOutTwoPkmn;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
|
||
stringPtr = sText_TwoTrainersSentPkmn;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI)
|
||
stringPtr = sText_TwoTrainersSentPkmn;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||
stringPtr = sText_TwoLinkTrainersSentOutPkmn;
|
||
else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
|
||
stringPtr = sText_LinkTrainerSentOutTwoPkmn;
|
||
else
|
||
stringPtr = sText_Trainer1SentOutTwoPkmn;
|
||
}
|
||
else
|
||
{
|
||
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)))
|
||
stringPtr = sText_Trainer1SentOutPkmn;
|
||
else if (TRAINER_BATTLE_PARAM.opponentA == TRAINER_UNION_ROOM)
|
||
stringPtr = sText_Trainer1SentOutPkmn;
|
||
else
|
||
stringPtr = sText_LinkTrainerSentOutPkmn;
|
||
}
|
||
}
|
||
break;
|
||
case STRINGID_RETURNMON: // sending poke to ball msg
|
||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||
{
|
||
if (*(&gBattleStruct->hpScale) == 0)
|
||
stringPtr = sText_PkmnThatsEnough;
|
||
else if (*(&gBattleStruct->hpScale) == 1 || IsDoubleBattle())
|
||
stringPtr = sText_PkmnComeBack;
|
||
else if (*(&gBattleStruct->hpScale) == 2)
|
||
stringPtr = sText_PkmnOkComeBack;
|
||
else
|
||
stringPtr = sText_PkmnGoodComeBack;
|
||
}
|
||
else
|
||
{
|
||
if (TRAINER_BATTLE_PARAM.opponentA == TRAINER_LINK_OPPONENT || gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
|
||
{
|
||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||
stringPtr = sText_LinkTrainer2WithdrewPkmn;
|
||
else
|
||
stringPtr = sText_LinkTrainer1WithdrewPkmn;
|
||
}
|
||
else
|
||
{
|
||
stringPtr = sText_Trainer1WithdrewPkmn;
|
||
}
|
||
}
|
||
break;
|
||
case STRINGID_SWITCHINMON: // switch-in msg
|
||
if (GetBattlerSide(gBattleScripting.battler) == B_SIDE_PLAYER)
|
||
{
|
||
if (*(&gBattleStruct->hpScale) == 0 || IsDoubleBattle())
|
||
stringPtr = sText_GoPkmn2;
|
||
else if (*(&gBattleStruct->hpScale) == 1)
|
||
stringPtr = sText_DoItPkmn;
|
||
else if (*(&gBattleStruct->hpScale) == 2)
|
||
stringPtr = sText_GoForItPkmn;
|
||
else
|
||
stringPtr = sText_YourFoesWeakGetEmPkmn;
|
||
}
|
||
else
|
||
{
|
||
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
|
||
{
|
||
if (gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI)
|
||
{
|
||
if (gBattleScripting.battler == 1)
|
||
stringPtr = sText_Trainer1SentOutPkmn2;
|
||
else
|
||
stringPtr = sText_Trainer2SentOutPkmn;
|
||
}
|
||
else
|
||
{
|
||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||
stringPtr = sText_LinkTrainerMultiSentOutPkmn;
|
||
else if (TRAINER_BATTLE_PARAM.opponentA == TRAINER_UNION_ROOM)
|
||
stringPtr = sText_Trainer1SentOutPkmn2;
|
||
else
|
||
stringPtr = sText_LinkTrainerSentOutPkmn2;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
|
||
{
|
||
if (gBattleScripting.battler == 1)
|
||
stringPtr = sText_Trainer1SentOutPkmn2;
|
||
else
|
||
stringPtr = sText_Trainer2SentOutPkmn;
|
||
}
|
||
else
|
||
{
|
||
stringPtr = sText_Trainer1SentOutPkmn2;
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
case STRINGID_USEDMOVE: // Pokémon used a move msg
|
||
if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT
|
||
&& !IsZMove(gBattleMsgDataPtr->currentMove)
|
||
&& !IsMaxMove(gBattleMsgDataPtr->currentMove))
|
||
StringCopy(gBattleTextBuff3, gTypesInfo[*(&gBattleStruct->stringMoveType)].generic);
|
||
else
|
||
StringCopy(gBattleTextBuff3, GetMoveName(gBattleMsgDataPtr->currentMove));
|
||
stringPtr = sText_AttackerUsedX;
|
||
break;
|
||
case STRINGID_BATTLEEND: // battle end
|
||
if (gBattleTextBuff1[0] & B_OUTCOME_LINK_BATTLE_RAN)
|
||
{
|
||
gBattleTextBuff1[0] &= ~(B_OUTCOME_LINK_BATTLE_RAN);
|
||
if (GetBattlerSide(battler) == B_SIDE_OPPONENT && gBattleTextBuff1[0] != B_OUTCOME_DREW)
|
||
gBattleTextBuff1[0] ^= (B_OUTCOME_LOST | B_OUTCOME_WON);
|
||
|
||
if (gBattleTextBuff1[0] == B_OUTCOME_LOST || gBattleTextBuff1[0] == B_OUTCOME_DREW)
|
||
stringPtr = sText_GotAwaySafely;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||
stringPtr = sText_TwoWildFled;
|
||
else
|
||
stringPtr = sText_WildFled;
|
||
}
|
||
else
|
||
{
|
||
if (GetBattlerSide(battler) == B_SIDE_OPPONENT && gBattleTextBuff1[0] != B_OUTCOME_DREW)
|
||
gBattleTextBuff1[0] ^= (B_OUTCOME_LOST | B_OUTCOME_WON);
|
||
|
||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||
{
|
||
switch (gBattleTextBuff1[0])
|
||
{
|
||
case B_OUTCOME_WON:
|
||
if (gBattleTypeFlags & BATTLE_TYPE_TOWER_LINK_MULTI)
|
||
stringPtr = sText_TwoInGameTrainersDefeated;
|
||
else
|
||
stringPtr = sText_TwoLinkTrainersDefeated;
|
||
break;
|
||
case B_OUTCOME_LOST:
|
||
stringPtr = sText_PlayerLostToTwo;
|
||
break;
|
||
case B_OUTCOME_DREW:
|
||
stringPtr = sText_PlayerBattledToDrawVsTwo;
|
||
break;
|
||
}
|
||
}
|
||
else if (TRAINER_BATTLE_PARAM.opponentA == TRAINER_UNION_ROOM)
|
||
{
|
||
switch (gBattleTextBuff1[0])
|
||
{
|
||
case B_OUTCOME_WON:
|
||
stringPtr = sText_PlayerDefeatedLinkTrainerTrainer1;
|
||
break;
|
||
case B_OUTCOME_LOST:
|
||
stringPtr = sText_PlayerLostAgainstTrainer1;
|
||
break;
|
||
case B_OUTCOME_DREW:
|
||
stringPtr = sText_PlayerBattledToDrawTrainer1;
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
switch (gBattleTextBuff1[0])
|
||
{
|
||
case B_OUTCOME_WON:
|
||
stringPtr = sText_PlayerDefeatedLinkTrainer;
|
||
break;
|
||
case B_OUTCOME_LOST:
|
||
stringPtr = sText_PlayerLostAgainstLinkTrainer;
|
||
break;
|
||
case B_OUTCOME_DREW:
|
||
stringPtr = sText_PlayerBattledToDrawLinkTrainer;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
case STRINGID_TRAINERSLIDE:
|
||
stringPtr = gBattleStruct->trainerSlideMsg;
|
||
break;
|
||
default: // load a string from the table
|
||
if (stringID >= BATTLESTRINGS_COUNT)
|
||
{
|
||
gDisplayedStringBattle[0] = EOS;
|
||
return;
|
||
}
|
||
else
|
||
{
|
||
stringPtr = gBattleStringsTable[stringID];
|
||
}
|
||
break;
|
||
}
|
||
|
||
BattleStringExpandPlaceholdersToDisplayedString(stringPtr);
|
||
}
|
||
|
||
u32 BattleStringExpandPlaceholdersToDisplayedString(const u8 *src)
|
||
{
|
||
#ifndef NDEBUG
|
||
u32 j, strWidth;
|
||
u32 dstID = BattleStringExpandPlaceholders(src, gDisplayedStringBattle, sizeof(gDisplayedStringBattle));
|
||
for (j = 1;; j++)
|
||
{
|
||
strWidth = GetStringLineWidth(0, gDisplayedStringBattle, 0, j, sizeof(gDisplayedStringBattle));
|
||
if (strWidth == 0)
|
||
break;
|
||
}
|
||
return dstID;
|
||
#else
|
||
return BattleStringExpandPlaceholders(src, gDisplayedStringBattle, sizeof(gDisplayedStringBattle));
|
||
#endif
|
||
}
|
||
|
||
static const u8 *TryGetStatusString(u8 *src)
|
||
{
|
||
u32 i;
|
||
u8 status[8];
|
||
u32 chars1, chars2;
|
||
u8 *statusPtr;
|
||
|
||
memcpy(status, sText_EmptyStatus, min(ARRAY_COUNT(status), ARRAY_COUNT(sText_EmptyStatus)));
|
||
|
||
statusPtr = status;
|
||
for (i = 0; i < ARRAY_COUNT(status); i++)
|
||
{
|
||
if (*src == EOS) break; // one line required to match -g
|
||
*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;
|
||
}
|
||
|
||
static void GetBattlerNick(u32 battler, u8 *dst)
|
||
{
|
||
struct Pokemon *illusionMon = GetIllusionMonPtr(battler);
|
||
struct Pokemon *mon = GetPartyBattlerData(battler);
|
||
|
||
if (illusionMon != NULL)
|
||
mon = illusionMon;
|
||
GetMonData(mon, MON_DATA_NICKNAME, dst);
|
||
StringGet_Nickname(dst);
|
||
}
|
||
|
||
#define HANDLE_NICKNAME_STRING_CASE(battler) \
|
||
if (GetBattlerSide(battler) != B_SIDE_PLAYER) \
|
||
{ \
|
||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
|
||
toCpy = sText_FoePkmnPrefix; \
|
||
else \
|
||
toCpy = sText_WildPkmnPrefix; \
|
||
while (*toCpy != EOS) \
|
||
{ \
|
||
dst[dstID] = *toCpy; \
|
||
dstID++; \
|
||
toCpy++; \
|
||
} \
|
||
} \
|
||
GetBattlerNick(battler, text); \
|
||
toCpy = text;
|
||
|
||
#define HANDLE_NICKNAME_STRING_LOWERCASE(battler) \
|
||
if (GetBattlerSide(battler) != B_SIDE_PLAYER) \
|
||
{ \
|
||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
|
||
toCpy = sText_FoePkmnPrefixLower; \
|
||
else \
|
||
toCpy = sText_WildPkmnPrefixLower; \
|
||
while (*toCpy != EOS) \
|
||
{ \
|
||
dst[dstID] = *toCpy; \
|
||
dstID++; \
|
||
toCpy++; \
|
||
} \
|
||
} \
|
||
GetBattlerNick(battler, text); \
|
||
toCpy = text;
|
||
|
||
static const u8 *BattleStringGetOpponentNameByTrainerId(u16 trainerId, u8 *text, u8 multiplayerId, u8 battler)
|
||
{
|
||
const u8 *toCpy = NULL;
|
||
|
||
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
|
||
{
|
||
u32 i;
|
||
for (i = 0; i < ARRAY_COUNT(gBattleResources->secretBase->trainerName); i++)
|
||
text[i] = gBattleResources->secretBase->trainerName[i];
|
||
text[i] = EOS;
|
||
ConvertInternationalString(text, gBattleResources->secretBase->language);
|
||
toCpy = text;
|
||
}
|
||
else if (trainerId == TRAINER_UNION_ROOM)
|
||
{
|
||
toCpy = gLinkPlayers[multiplayerId ^ BIT_SIDE].name;
|
||
}
|
||
else if (trainerId == TRAINER_LINK_OPPONENT)
|
||
{
|
||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||
toCpy = gLinkPlayers[GetBattlerMultiplayerId(battler)].name;
|
||
else
|
||
toCpy = gLinkPlayers[GetBattlerMultiplayerId(battler) & BIT_SIDE].name;
|
||
}
|
||
else if (trainerId == TRAINER_FRONTIER_BRAIN)
|
||
{
|
||
CopyFrontierBrainTrainerName(text);
|
||
toCpy = text;
|
||
}
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
|
||
{
|
||
GetFrontierTrainerName(text, trainerId);
|
||
toCpy = text;
|
||
}
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
|
||
{
|
||
GetTrainerHillTrainerName(text, trainerId);
|
||
toCpy = text;
|
||
}
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
|
||
{
|
||
GetEreaderTrainerName(text);
|
||
toCpy = text;
|
||
}
|
||
else
|
||
{
|
||
toCpy = GetTrainerNameFromId(trainerId);
|
||
}
|
||
|
||
return toCpy;
|
||
}
|
||
|
||
static const u8 *BattleStringGetOpponentName(u8 *text, u8 multiplayerId, u8 battler)
|
||
{
|
||
const u8 *toCpy = NULL;
|
||
|
||
switch (GetBattlerPosition(battler))
|
||
{
|
||
case B_POSITION_OPPONENT_LEFT:
|
||
toCpy = BattleStringGetOpponentNameByTrainerId(TRAINER_BATTLE_PARAM.opponentA, text, multiplayerId, battler);
|
||
break;
|
||
case B_POSITION_OPPONENT_RIGHT:
|
||
if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_MULTI) && !BATTLE_TWO_VS_ONE_OPPONENT)
|
||
toCpy = BattleStringGetOpponentNameByTrainerId(TRAINER_BATTLE_PARAM.opponentB, text, multiplayerId, battler);
|
||
else
|
||
toCpy = BattleStringGetOpponentNameByTrainerId(TRAINER_BATTLE_PARAM.opponentA, text, multiplayerId, battler);
|
||
break;
|
||
}
|
||
|
||
return toCpy;
|
||
}
|
||
|
||
static const u8 *BattleStringGetPlayerName(u8 *text, u8 battler)
|
||
{
|
||
const u8 *toCpy = NULL;
|
||
|
||
switch (GetBattlerPosition(battler))
|
||
{
|
||
case B_POSITION_PLAYER_LEFT:
|
||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||
toCpy = gLinkPlayers[0].name;
|
||
else
|
||
toCpy = gSaveBlock2Ptr->playerName;
|
||
break;
|
||
case B_POSITION_PLAYER_RIGHT:
|
||
if (((gBattleTypeFlags & BATTLE_TYPE_RECORDED) && !(gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER)))
|
||
|| gTestRunnerEnabled)
|
||
{
|
||
toCpy = gLinkPlayers[0].name;
|
||
}
|
||
else if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && gBattleTypeFlags & (BATTLE_TYPE_RECORDED | BATTLE_TYPE_MULTI))
|
||
{
|
||
toCpy = gLinkPlayers[2].name;
|
||
}
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
|
||
{
|
||
GetFrontierTrainerName(text, gPartnerTrainerId);
|
||
toCpy = text;
|
||
}
|
||
else
|
||
{
|
||
toCpy = gSaveBlock2Ptr->playerName;
|
||
}
|
||
break;
|
||
}
|
||
|
||
return toCpy;
|
||
}
|
||
|
||
static const u8 *BattleStringGetTrainerName(u8 *text, u8 multiplayerId, u8 battler)
|
||
{
|
||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||
return BattleStringGetPlayerName(text, battler);
|
||
else
|
||
return BattleStringGetOpponentName(text, multiplayerId, battler);
|
||
}
|
||
|
||
static const u8 *BattleStringGetOpponentClassByTrainerId(u16 trainerId)
|
||
{
|
||
const u8 *toCpy;
|
||
|
||
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
|
||
toCpy = gTrainerClasses[GetSecretBaseTrainerClass()].name;
|
||
else if (trainerId == TRAINER_UNION_ROOM)
|
||
toCpy = gTrainerClasses[GetUnionRoomTrainerClass()].name;
|
||
else if (trainerId == TRAINER_FRONTIER_BRAIN)
|
||
toCpy = gTrainerClasses[GetFrontierBrainTrainerClass()].name;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
|
||
toCpy = gTrainerClasses[GetFrontierOpponentClass(trainerId)].name;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
|
||
toCpy = gTrainerClasses[GetTrainerHillOpponentClass(trainerId)].name;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
|
||
toCpy = gTrainerClasses[GetEreaderTrainerClassId()].name;
|
||
else
|
||
toCpy = gTrainerClasses[GetTrainerClassFromId(trainerId)].name;
|
||
|
||
return toCpy;
|
||
}
|
||
|
||
// Ensure the defined length for an item name can contain the full defined length of a berry name.
|
||
// This ensures that custom Enigma Berry names will fit in the text buffer at the top of BattleStringExpandPlaceholders.
|
||
STATIC_ASSERT(BERRY_NAME_LENGTH + ARRAY_COUNT(sText_BerrySuffix) <= ITEM_NAME_LENGTH, BerryNameTooLong);
|
||
|
||
u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst, u32 dstSize)
|
||
{
|
||
u32 dstID = 0; // if they used dstID, why not use srcID as well?
|
||
const u8 *toCpy = NULL;
|
||
u8 text[max(max(max(32, TRAINER_NAME_LENGTH + 1), POKEMON_NAME_LENGTH + 1), ITEM_NAME_LENGTH)];
|
||
u8 *textStart = &text[0];
|
||
u8 multiplayerId;
|
||
u8 fontId = FONT_NORMAL;
|
||
|
||
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED_LINK)
|
||
multiplayerId = gRecordedBattleMultiplayerId;
|
||
else
|
||
multiplayerId = GetMultiplayerId();
|
||
|
||
// Clear destination first
|
||
while (dstID < dstSize)
|
||
{
|
||
dst[dstID] = EOS;
|
||
dstID++;
|
||
}
|
||
|
||
dstID = 0;
|
||
while (*src != EOS)
|
||
{
|
||
toCpy = NULL;
|
||
|
||
if (*src == PLACEHOLDER_BEGIN)
|
||
{
|
||
src++;
|
||
u32 classLength = 0;
|
||
u32 nameLength = 0;
|
||
const u8 *classString;
|
||
const u8 *nameString;
|
||
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
|
||
GetBattlerNick(GetBattlerAtPosition(B_POSITION_PLAYER_LEFT), text);
|
||
toCpy = text;
|
||
break;
|
||
case B_TXT_OPPONENT_MON1_NAME: // first enemy poke name
|
||
GetBattlerNick(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), text);
|
||
toCpy = text;
|
||
break;
|
||
case B_TXT_PLAYER_MON2_NAME: // second player poke name
|
||
GetBattlerNick(GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT), text);
|
||
toCpy = text;
|
||
break;
|
||
case B_TXT_OPPONENT_MON2_NAME: // second enemy poke name
|
||
GetBattlerNick(GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT), text);
|
||
toCpy = text;
|
||
break;
|
||
case B_TXT_LINK_PLAYER_MON1_NAME: // link first player poke name
|
||
GetBattlerNick(gLinkPlayers[multiplayerId].id, text);
|
||
toCpy = text;
|
||
break;
|
||
case B_TXT_LINK_OPPONENT_MON1_NAME: // link first opponent poke name
|
||
GetBattlerNick(gLinkPlayers[multiplayerId].id ^ 1, text);
|
||
toCpy = text;
|
||
break;
|
||
case B_TXT_LINK_PLAYER_MON2_NAME: // link second player poke name
|
||
GetBattlerNick(gLinkPlayers[multiplayerId].id ^ 2, text);
|
||
toCpy = text;
|
||
break;
|
||
case B_TXT_LINK_OPPONENT_MON2_NAME: // link second opponent poke name
|
||
GetBattlerNick(gLinkPlayers[multiplayerId].id ^ 3, text);
|
||
toCpy = text;
|
||
break;
|
||
case B_TXT_ATK_NAME_WITH_PREFIX_MON1: // Unused, to change into sth else.
|
||
break;
|
||
case B_TXT_ATK_PARTNER_NAME: // attacker partner name
|
||
GetBattlerNick(BATTLE_PARTNER(gBattlerAttacker), text);
|
||
toCpy = text;
|
||
break;
|
||
case B_TXT_ATK_NAME_WITH_PREFIX: // attacker name with prefix
|
||
HANDLE_NICKNAME_STRING_CASE(gBattlerAttacker)
|
||
break;
|
||
case B_TXT_DEF_NAME_WITH_PREFIX: // target name with prefix
|
||
HANDLE_NICKNAME_STRING_CASE(gBattlerTarget)
|
||
break;
|
||
case B_TXT_DEF_NAME: // target name
|
||
GetBattlerNick(gBattlerTarget, text);
|
||
toCpy = text;
|
||
break;
|
||
case B_TXT_DEF_PARTNER_NAME: // partner target name
|
||
GetBattlerNick(BATTLE_PARTNER(gBattlerTarget), text);
|
||
toCpy = text;
|
||
break;
|
||
case B_TXT_EFF_NAME_WITH_PREFIX: // effect battler name with prefix
|
||
HANDLE_NICKNAME_STRING_CASE(gEffectBattler)
|
||
break;
|
||
case B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX: // scripting active battler name with prefix
|
||
HANDLE_NICKNAME_STRING_CASE(gBattleScripting.battler)
|
||
break;
|
||
case B_TXT_CURRENT_MOVE: // current move name
|
||
if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT
|
||
&& !IsZMove(gBattleMsgDataPtr->currentMove)
|
||
&& !IsMaxMove(gBattleMsgDataPtr->currentMove))
|
||
toCpy = gTypesInfo[gBattleStruct->stringMoveType].generic;
|
||
else
|
||
toCpy = GetMoveName(gBattleMsgDataPtr->currentMove);
|
||
break;
|
||
case B_TXT_LAST_MOVE: // originally used move name
|
||
if (gBattleMsgDataPtr->originallyUsedMove >= MOVES_COUNT
|
||
&& !IsZMove(gBattleMsgDataPtr->currentMove)
|
||
&& !IsMaxMove(gBattleMsgDataPtr->currentMove))
|
||
toCpy = gTypesInfo[gBattleStruct->stringMoveType].generic;
|
||
else
|
||
toCpy = GetMoveName(gBattleMsgDataPtr->originallyUsedMove);
|
||
break;
|
||
case B_TXT_LAST_ITEM: // last used item
|
||
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
|
||
{
|
||
if (gLastUsedItem == ITEM_ENIGMA_BERRY_E_READER)
|
||
{
|
||
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||
{
|
||
if ((gBattleScripting.multiplayerId != 0 && (gPotentialItemEffectBattler & BIT_SIDE))
|
||
|| (gBattleScripting.multiplayerId == 0 && !(gPotentialItemEffectBattler & BIT_SIDE)))
|
||
{
|
||
StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name);
|
||
StringAppend(text, sText_BerrySuffix);
|
||
toCpy = text;
|
||
}
|
||
else
|
||
{
|
||
toCpy = sText_EnigmaBerry;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (gLinkPlayers[gBattleScripting.multiplayerId].id == gPotentialItemEffectBattler)
|
||
{
|
||
StringCopy(text, gEnigmaBerries[gPotentialItemEffectBattler].name);
|
||
StringAppend(text, sText_BerrySuffix);
|
||
toCpy = text;
|
||
}
|
||
else
|
||
{
|
||
toCpy = sText_EnigmaBerry;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
CopyItemName(gLastUsedItem, text);
|
||
toCpy = text;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
CopyItemName(gLastUsedItem, text);
|
||
toCpy = text;
|
||
}
|
||
break;
|
||
case B_TXT_LAST_ABILITY: // last used ability
|
||
toCpy = gAbilitiesInfo[gLastUsedAbility].name;
|
||
break;
|
||
case B_TXT_ATK_ABILITY: // attacker ability
|
||
toCpy = gAbilitiesInfo[sBattlerAbilities[gBattlerAttacker]].name;
|
||
break;
|
||
case B_TXT_DEF_ABILITY: // target ability
|
||
toCpy = gAbilitiesInfo[sBattlerAbilities[gBattlerTarget]].name;
|
||
break;
|
||
case B_TXT_SCR_ACTIVE_ABILITY: // scripting active ability
|
||
toCpy = gAbilitiesInfo[sBattlerAbilities[gBattleScripting.battler]].name;
|
||
break;
|
||
case B_TXT_EFF_ABILITY: // effect battler ability
|
||
toCpy = gAbilitiesInfo[sBattlerAbilities[gEffectBattler]].name;
|
||
break;
|
||
case B_TXT_TRAINER1_CLASS: // trainer class name
|
||
toCpy = BattleStringGetOpponentClassByTrainerId(TRAINER_BATTLE_PARAM.opponentA);
|
||
break;
|
||
case B_TXT_TRAINER1_NAME: // trainer1 name
|
||
toCpy = BattleStringGetOpponentNameByTrainerId(TRAINER_BATTLE_PARAM.opponentA, text, multiplayerId, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT));
|
||
break;
|
||
case B_TXT_TRAINER1_NAME_WITH_CLASS: // trainer1 name with trainer class
|
||
toCpy = textStart;
|
||
classString = BattleStringGetOpponentClassByTrainerId(TRAINER_BATTLE_PARAM.opponentA);
|
||
while (classString[classLength] != EOS)
|
||
{
|
||
textStart[classLength] = classString[classLength];
|
||
classLength++;
|
||
}
|
||
textStart[classLength] = CHAR_SPACE;
|
||
textStart += classLength + 1;
|
||
nameString = BattleStringGetOpponentNameByTrainerId(TRAINER_BATTLE_PARAM.opponentA, textStart, multiplayerId, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT));
|
||
if (nameString != textStart)
|
||
{
|
||
while (nameString[nameLength] != EOS)
|
||
{
|
||
textStart[nameLength] = nameString[nameLength];
|
||
nameLength++;
|
||
}
|
||
textStart[nameLength] = EOS;
|
||
}
|
||
break;
|
||
case B_TXT_LINK_PLAYER_NAME: // link player name
|
||
toCpy = gLinkPlayers[multiplayerId].name;
|
||
break;
|
||
case B_TXT_LINK_PARTNER_NAME: // link partner name
|
||
toCpy = gLinkPlayers[GetBattlerMultiplayerId(BATTLE_PARTNER(gLinkPlayers[multiplayerId].id))].name;
|
||
break;
|
||
case B_TXT_LINK_OPPONENT1_NAME: // link opponent 1 name
|
||
toCpy = gLinkPlayers[GetBattlerMultiplayerId(BATTLE_OPPOSITE(gLinkPlayers[multiplayerId].id))].name;
|
||
break;
|
||
case B_TXT_LINK_OPPONENT2_NAME: // link opponent 2 name
|
||
toCpy = gLinkPlayers[GetBattlerMultiplayerId(BATTLE_PARTNER(BATTLE_OPPOSITE(gLinkPlayers[multiplayerId].id)))].name;
|
||
break;
|
||
case B_TXT_LINK_SCR_TRAINER_NAME: // link scripting active name
|
||
toCpy = gLinkPlayers[GetBattlerMultiplayerId(gBattleScripting.battler)].name;
|
||
break;
|
||
case B_TXT_PLAYER_NAME: // player name
|
||
toCpy = BattleStringGetPlayerName(text, GetBattlerAtPosition(B_POSITION_PLAYER_LEFT));
|
||
break;
|
||
case B_TXT_TRAINER1_LOSE_TEXT: // trainerA lose text
|
||
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
|
||
{
|
||
CopyFrontierTrainerText(FRONTIER_PLAYER_WON_TEXT, TRAINER_BATTLE_PARAM.opponentA);
|
||
toCpy = gStringVar4;
|
||
}
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
|
||
{
|
||
CopyTrainerHillTrainerText(TRAINER_HILL_TEXT_PLAYER_WON, TRAINER_BATTLE_PARAM.opponentA);
|
||
toCpy = gStringVar4;
|
||
}
|
||
else
|
||
{
|
||
toCpy = GetTrainerALoseText();
|
||
}
|
||
break;
|
||
case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text
|
||
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
|
||
{
|
||
CopyFrontierTrainerText(FRONTIER_PLAYER_LOST_TEXT, TRAINER_BATTLE_PARAM.opponentA);
|
||
toCpy = gStringVar4;
|
||
}
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
|
||
{
|
||
CopyTrainerHillTrainerText(TRAINER_HILL_TEXT_PLAYER_LOST, TRAINER_BATTLE_PARAM.opponentA);
|
||
toCpy = gStringVar4;
|
||
}
|
||
break;
|
||
case B_TXT_26: // ?
|
||
if (GetBattlerSide(gBattleScripting.battler) != B_SIDE_PLAYER)
|
||
{
|
||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||
toCpy = sText_FoePkmnPrefix;
|
||
else
|
||
toCpy = sText_WildPkmnPrefix;
|
||
while (*toCpy != EOS)
|
||
{
|
||
dst[dstID] = *toCpy;
|
||
dstID++;
|
||
toCpy++;
|
||
}
|
||
GetMonData(&gEnemyParty[gBattleStruct->scriptPartyIdx], MON_DATA_NICKNAME, text);
|
||
}
|
||
else
|
||
{
|
||
GetMonData(&gPlayerParty[gBattleStruct->scriptPartyIdx], MON_DATA_NICKNAME, text);
|
||
}
|
||
StringGet_Nickname(text);
|
||
toCpy = text;
|
||
break;
|
||
case B_TXT_PC_CREATOR_NAME: // lanette pc
|
||
if (FlagGet(FLAG_SYS_PC_LANETTE))
|
||
toCpy = sText_Lanettes;
|
||
else
|
||
toCpy = sText_Someones;
|
||
break;
|
||
case B_TXT_ATK_PREFIX2:
|
||
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
|
||
toCpy = sText_AllyPkmnPrefix2;
|
||
else
|
||
toCpy = sText_FoePkmnPrefix3;
|
||
break;
|
||
case B_TXT_DEF_PREFIX2:
|
||
if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
|
||
toCpy = sText_AllyPkmnPrefix2;
|
||
else
|
||
toCpy = sText_FoePkmnPrefix3;
|
||
break;
|
||
case B_TXT_ATK_PREFIX1:
|
||
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
|
||
toCpy = sText_AllyPkmnPrefix;
|
||
else
|
||
toCpy = sText_FoePkmnPrefix2;
|
||
break;
|
||
case B_TXT_DEF_PREFIX1:
|
||
if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
|
||
toCpy = sText_AllyPkmnPrefix;
|
||
else
|
||
toCpy = sText_FoePkmnPrefix2;
|
||
break;
|
||
case B_TXT_ATK_PREFIX3:
|
||
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
|
||
toCpy = sText_AllyPkmnPrefix3;
|
||
else
|
||
toCpy = sText_FoePkmnPrefix4;
|
||
break;
|
||
case B_TXT_DEF_PREFIX3:
|
||
if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
|
||
toCpy = sText_AllyPkmnPrefix3;
|
||
else
|
||
toCpy = sText_FoePkmnPrefix4;
|
||
break;
|
||
case B_TXT_TRAINER2_CLASS:
|
||
toCpy = BattleStringGetOpponentClassByTrainerId(TRAINER_BATTLE_PARAM.opponentB);
|
||
break;
|
||
case B_TXT_TRAINER2_NAME:
|
||
toCpy = BattleStringGetOpponentNameByTrainerId(TRAINER_BATTLE_PARAM.opponentB, text, multiplayerId, GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT));
|
||
break;
|
||
case B_TXT_TRAINER2_NAME_WITH_CLASS:
|
||
toCpy = textStart;
|
||
classString = BattleStringGetOpponentClassByTrainerId(TRAINER_BATTLE_PARAM.opponentB);
|
||
while (classString[classLength] != EOS)
|
||
{
|
||
textStart[classLength] = classString[classLength];
|
||
classLength++;
|
||
}
|
||
textStart[classLength] = CHAR_SPACE;
|
||
textStart += classLength + 1;
|
||
nameString = BattleStringGetOpponentNameByTrainerId(TRAINER_BATTLE_PARAM.opponentB, textStart, multiplayerId, GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT));
|
||
if (nameString != textStart)
|
||
{
|
||
while (nameString[nameLength] != EOS)
|
||
{
|
||
textStart[nameLength] = nameString[nameLength];
|
||
nameLength++;
|
||
}
|
||
textStart[nameLength] = EOS;
|
||
}
|
||
break;
|
||
case B_TXT_TRAINER2_LOSE_TEXT:
|
||
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
|
||
{
|
||
CopyFrontierTrainerText(FRONTIER_PLAYER_WON_TEXT, TRAINER_BATTLE_PARAM.opponentB);
|
||
toCpy = gStringVar4;
|
||
}
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
|
||
{
|
||
CopyTrainerHillTrainerText(TRAINER_HILL_TEXT_PLAYER_WON, TRAINER_BATTLE_PARAM.opponentB);
|
||
toCpy = gStringVar4;
|
||
}
|
||
else
|
||
{
|
||
toCpy = GetTrainerBLoseText();
|
||
}
|
||
break;
|
||
case B_TXT_TRAINER2_WIN_TEXT:
|
||
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
|
||
{
|
||
CopyFrontierTrainerText(FRONTIER_PLAYER_LOST_TEXT, TRAINER_BATTLE_PARAM.opponentB);
|
||
toCpy = gStringVar4;
|
||
}
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_HILL)
|
||
{
|
||
CopyTrainerHillTrainerText(TRAINER_HILL_TEXT_PLAYER_LOST, TRAINER_BATTLE_PARAM.opponentB);
|
||
toCpy = gStringVar4;
|
||
}
|
||
break;
|
||
case B_TXT_PARTNER_CLASS:
|
||
toCpy = gTrainerClasses[GetFrontierOpponentClass(gPartnerTrainerId)].name;
|
||
break;
|
||
case B_TXT_PARTNER_NAME:
|
||
toCpy = BattleStringGetPlayerName(text, GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT));
|
||
break;
|
||
case B_TXT_PARTNER_NAME_WITH_CLASS:
|
||
toCpy = textStart;
|
||
classString = gTrainerClasses[GetFrontierOpponentClass(gPartnerTrainerId)].name;
|
||
while (classString[classLength] != EOS)
|
||
{
|
||
textStart[classLength] = classString[classLength];
|
||
classLength++;
|
||
}
|
||
textStart[classLength] = CHAR_SPACE;
|
||
textStart += classLength + 1;
|
||
nameString = BattleStringGetPlayerName(textStart, GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT));
|
||
if (nameString != textStart)
|
||
{
|
||
while (nameString[nameLength] != EOS)
|
||
{
|
||
textStart[nameLength] = nameString[nameLength];
|
||
nameLength++;
|
||
}
|
||
textStart[nameLength] = EOS;
|
||
}
|
||
break;
|
||
case B_TXT_ATK_TRAINER_NAME:
|
||
toCpy = BattleStringGetTrainerName(text, multiplayerId, gBattlerAttacker);
|
||
break;
|
||
case B_TXT_ATK_TRAINER_CLASS:
|
||
switch (GetBattlerPosition(gBattlerAttacker))
|
||
{
|
||
case B_POSITION_PLAYER_RIGHT:
|
||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
|
||
toCpy = gTrainerClasses[GetFrontierOpponentClass(gPartnerTrainerId)].name;
|
||
break;
|
||
case B_POSITION_OPPONENT_LEFT:
|
||
toCpy = BattleStringGetOpponentClassByTrainerId(TRAINER_BATTLE_PARAM.opponentA);
|
||
break;
|
||
case B_POSITION_OPPONENT_RIGHT:
|
||
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && !BATTLE_TWO_VS_ONE_OPPONENT)
|
||
toCpy = BattleStringGetOpponentClassByTrainerId(TRAINER_BATTLE_PARAM.opponentB);
|
||
else
|
||
toCpy = BattleStringGetOpponentClassByTrainerId(TRAINER_BATTLE_PARAM.opponentA);
|
||
break;
|
||
}
|
||
break;
|
||
case B_TXT_ATK_TRAINER_NAME_WITH_CLASS:
|
||
toCpy = textStart;
|
||
if (GetBattlerPosition(gBattlerAttacker) == B_POSITION_PLAYER_LEFT)
|
||
{
|
||
textStart = StringCopy(textStart, BattleStringGetTrainerName(textStart, multiplayerId, gBattlerAttacker));
|
||
}
|
||
else
|
||
{
|
||
classString = NULL;
|
||
switch (GetBattlerPosition(gBattlerAttacker))
|
||
{
|
||
case B_POSITION_PLAYER_RIGHT:
|
||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
|
||
classString = gTrainerClasses[GetFrontierOpponentClass(gPartnerTrainerId)].name;
|
||
break;
|
||
case B_POSITION_OPPONENT_LEFT:
|
||
classString = BattleStringGetOpponentClassByTrainerId(TRAINER_BATTLE_PARAM.opponentA);
|
||
break;
|
||
case B_POSITION_OPPONENT_RIGHT:
|
||
if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && !BATTLE_TWO_VS_ONE_OPPONENT)
|
||
classString = BattleStringGetOpponentClassByTrainerId(TRAINER_BATTLE_PARAM.opponentB);
|
||
else
|
||
classString = BattleStringGetOpponentClassByTrainerId(TRAINER_BATTLE_PARAM.opponentA);
|
||
break;
|
||
}
|
||
classLength = 0;
|
||
nameLength = 0;
|
||
while (classString[classLength] != EOS)
|
||
{
|
||
textStart[classLength] = classString[classLength];
|
||
classLength++;
|
||
}
|
||
textStart[classLength] = CHAR_SPACE;
|
||
textStart += 1 + classLength;
|
||
nameString = BattleStringGetTrainerName(textStart, multiplayerId, gBattlerAttacker);
|
||
if (nameString != textStart)
|
||
{
|
||
while (nameString[nameLength] != EOS)
|
||
{
|
||
textStart[nameLength] = nameString[nameLength];
|
||
nameLength++;
|
||
}
|
||
textStart[nameLength] = EOS;
|
||
}
|
||
}
|
||
break;
|
||
case B_TXT_ATK_TEAM1:
|
||
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
|
||
toCpy = sText_Your1;
|
||
else
|
||
toCpy = sText_Opposing1;
|
||
break;
|
||
case B_TXT_ATK_TEAM2:
|
||
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
|
||
toCpy = sText_Your2;
|
||
else
|
||
toCpy = sText_Opposing2;
|
||
break;
|
||
case B_TXT_DEF_TEAM1:
|
||
if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
|
||
toCpy = sText_Your1;
|
||
else
|
||
toCpy = sText_Opposing1;
|
||
break;
|
||
case B_TXT_DEF_TEAM2:
|
||
if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER)
|
||
toCpy = sText_Your2;
|
||
else
|
||
toCpy = sText_Opposing2;
|
||
break;
|
||
case B_TXT_SCR_TEAM1:
|
||
if (GetBattlerSide(gBattleScripting.battler) == B_SIDE_PLAYER)
|
||
toCpy = sText_Your1;
|
||
else
|
||
toCpy = sText_Opposing1;
|
||
break;
|
||
case B_TXT_SCR_TEAM2:
|
||
if (GetBattlerSide(gBattleScripting.battler) == B_SIDE_PLAYER)
|
||
toCpy = sText_Your2;
|
||
else
|
||
toCpy = sText_Opposing2;
|
||
break;
|
||
case B_TXT_ATK_NAME_WITH_PREFIX2:
|
||
HANDLE_NICKNAME_STRING_LOWERCASE(gBattlerAttacker)
|
||
break;
|
||
case B_TXT_DEF_NAME_WITH_PREFIX2:
|
||
HANDLE_NICKNAME_STRING_LOWERCASE(gBattlerTarget)
|
||
break;
|
||
case B_TXT_EFF_NAME_WITH_PREFIX2:
|
||
HANDLE_NICKNAME_STRING_LOWERCASE(gEffectBattler)
|
||
break;
|
||
case B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX2:
|
||
HANDLE_NICKNAME_STRING_LOWERCASE(gBattleScripting.battler)
|
||
break;
|
||
}
|
||
|
||
if (toCpy != NULL)
|
||
{
|
||
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++;
|
||
dst[dstID] = EXT_CTRL_CODE_PAUSE_UNTIL_PRESS;
|
||
dstID++;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
dst[dstID] = *src;
|
||
dstID++;
|
||
}
|
||
src++;
|
||
}
|
||
|
||
dst[dstID] = *src;
|
||
dstID++;
|
||
|
||
BreakStringAutomatic(dst, BATTLE_MSG_MAX_WIDTH, BATTLE_MSG_MAX_LINES, fontId);
|
||
|
||
return dstID;
|
||
}
|
||
|
||
static void IllusionNickHack(u32 battler, u32 partyId, u8 *dst)
|
||
{
|
||
s32 id, i;
|
||
// we know it's gEnemyParty
|
||
struct Pokemon *mon = &gEnemyParty[partyId], *partnerMon;
|
||
|
||
if (GetMonAbility(mon) == ABILITY_ILLUSION)
|
||
{
|
||
if (IsBattlerAlive(BATTLE_PARTNER(battler)))
|
||
partnerMon = &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]];
|
||
else
|
||
partnerMon = mon;
|
||
|
||
// Find last alive non-egg pokemon.
|
||
for (i = PARTY_SIZE - 1; i >= 0; i--)
|
||
{
|
||
id = i;
|
||
if (GetMonData(&gEnemyParty[id], MON_DATA_SANITY_HAS_SPECIES)
|
||
&& GetMonData(&gEnemyParty[id], MON_DATA_HP)
|
||
&& &gEnemyParty[id] != mon
|
||
&& &gEnemyParty[id] != partnerMon)
|
||
{
|
||
GetMonData(&gEnemyParty[id], MON_DATA_NICKNAME, dst);
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
|
||
GetMonData(mon, MON_DATA_NICKNAME, dst);
|
||
}
|
||
|
||
void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst)
|
||
{
|
||
u32 srcID = 1;
|
||
u32 value = 0;
|
||
u8 nickname[POKEMON_NAME_LENGTH + 1];
|
||
u16 hword;
|
||
|
||
*dst = EOS;
|
||
while (src[srcID] != B_BUFF_EOS)
|
||
{
|
||
switch (src[srcID])
|
||
{
|
||
case B_BUFF_STRING: // battle string
|
||
hword = T1_READ_16(&src[srcID + 1]);
|
||
StringAppend(dst, gBattleStringsTable[hword]);
|
||
srcID += 3;
|
||
break;
|
||
case B_BUFF_NUMBER: // int to string
|
||
switch (src[srcID + 1])
|
||
{
|
||
case 1:
|
||
value = src[srcID + 3];
|
||
break;
|
||
case 2:
|
||
value = T1_READ_16(&src[srcID + 3]);
|
||
break;
|
||
case 4:
|
||
value = T1_READ_32(&src[srcID + 3]);
|
||
break;
|
||
}
|
||
ConvertIntToDecimalStringN(dst, value, STR_CONV_MODE_LEFT_ALIGN, src[srcID + 2]);
|
||
srcID += src[srcID + 1] + 3;
|
||
break;
|
||
case B_BUFF_MOVE: // move name
|
||
StringAppend(dst, GetMoveName(T1_READ_16(&src[srcID + 1])));
|
||
srcID += 3;
|
||
break;
|
||
case B_BUFF_TYPE: // type name
|
||
StringAppend(dst, gTypesInfo[src[srcID + 1]].name);
|
||
srcID += 2;
|
||
break;
|
||
case B_BUFF_MON_NICK_WITH_PREFIX: // poke nick with prefix
|
||
case B_BUFF_MON_NICK_WITH_PREFIX_LOWER: // poke nick with lowercase prefix
|
||
if (GetBattlerSide(src[srcID + 1]) == B_SIDE_PLAYER)
|
||
{
|
||
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, nickname);
|
||
}
|
||
else
|
||
{
|
||
if (src[srcID] == B_BUFF_MON_NICK_WITH_PREFIX_LOWER)
|
||
{
|
||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||
StringAppend(dst, sText_FoePkmnPrefixLower);
|
||
else
|
||
StringAppend(dst, sText_WildPkmnPrefixLower);
|
||
}
|
||
else
|
||
{
|
||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||
StringAppend(dst, sText_FoePkmnPrefix);
|
||
else
|
||
StringAppend(dst, sText_WildPkmnPrefix);
|
||
}
|
||
|
||
GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, nickname);
|
||
}
|
||
StringGet_Nickname(nickname);
|
||
StringAppend(dst, nickname);
|
||
srcID += 3;
|
||
break;
|
||
case B_BUFF_STAT: // stats
|
||
StringAppend(dst, gStatNamesTable[src[srcID + 1]]);
|
||
srcID += 2;
|
||
break;
|
||
case B_BUFF_SPECIES: // species name
|
||
StringCopy(dst, GetSpeciesName(T1_READ_16(&src[srcID + 1])));
|
||
srcID += 3;
|
||
break;
|
||
case B_BUFF_MON_NICK: // poke nick without prefix
|
||
if (src[srcID + 2] == gBattlerPartyIndexes[src[srcID + 1]])
|
||
{
|
||
GetBattlerNick(src[srcID + 1], dst);
|
||
}
|
||
else if (gBattleScripting.illusionNickHack) // for STRINGID_ENEMYABOUTTOSWITCHPKMN
|
||
{
|
||
gBattleScripting.illusionNickHack = 0;
|
||
IllusionNickHack(src[srcID + 1], src[srcID + 2], dst);
|
||
StringGet_Nickname(dst);
|
||
}
|
||
else
|
||
{
|
||
if (GetBattlerSide(src[srcID + 1]) == B_SIDE_PLAYER)
|
||
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
|
||
else
|
||
GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
|
||
StringGet_Nickname(dst);
|
||
}
|
||
srcID += 3;
|
||
break;
|
||
case B_BUFF_NEGATIVE_FLAVOR: // flavor table
|
||
StringAppend(dst, gPokeblockWasTooXStringTable[src[srcID + 1]]);
|
||
srcID += 2;
|
||
break;
|
||
case B_BUFF_ABILITY: // ability names
|
||
StringAppend(dst, gAbilitiesInfo[T1_READ_16(&src[srcID + 1])].name);
|
||
srcID += 3;
|
||
break;
|
||
case B_BUFF_ITEM: // item name
|
||
hword = T1_READ_16(&src[srcID + 1]);
|
||
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
|
||
{
|
||
if (hword == ITEM_ENIGMA_BERRY_E_READER)
|
||
{
|
||
if (gLinkPlayers[gBattleScripting.multiplayerId].id == gPotentialItemEffectBattler)
|
||
{
|
||
StringCopy(dst, gEnigmaBerries[gPotentialItemEffectBattler].name);
|
||
StringAppend(dst, sText_BerrySuffix);
|
||
}
|
||
else
|
||
{
|
||
StringAppend(dst, sText_EnigmaBerry);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
CopyItemName(hword, dst);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
CopyItemName(hword, dst);
|
||
}
|
||
srcID += 3;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
// Loads one of two text strings into the provided buffer. This is functionally
|
||
// unused, since the value loaded into the buffer is not read; it loaded one of
|
||
// two particles (either "?" or "?") which works in tandem with ChooseTypeOfMoveUsedString
|
||
// below to effect changes in the meaning of the line.
|
||
static void UNUSED ChooseMoveUsedParticle(u8 *textBuff)
|
||
{
|
||
s32 counter = 0;
|
||
u32 i = 0;
|
||
|
||
while (counter != MAX_MON_MOVES)
|
||
{
|
||
if (sGrammarMoveUsedTable[i] == 0)
|
||
counter++;
|
||
if (sGrammarMoveUsedTable[i++] == gBattleMsgDataPtr->currentMove)
|
||
break;
|
||
}
|
||
|
||
if (counter >= 0)
|
||
{
|
||
if (counter <= 2)
|
||
StringCopy(textBuff, sText_SpaceIs); // is
|
||
else if (counter <= MAX_MON_MOVES)
|
||
StringCopy(textBuff, sText_ApostropheS); // 's
|
||
}
|
||
}
|
||
|
||
// Appends "!" to the text buffer `dst`. In the original Japanese this looked
|
||
// into the table of moves at sGrammarMoveUsedTable and varied the line accordingly.
|
||
//
|
||
// sText_ExclamationMark was a plain "!", used for any attack not on the list.
|
||
// It resulted in the translation "<NAME>'s <ATTACK>!".
|
||
//
|
||
// sText_ExclamationMark2 was "? ????!". This resulted in the translation
|
||
// "<NAME> used <ATTACK>!", which was used for all attacks in English.
|
||
//
|
||
// sText_ExclamationMark3 was "??!". This was used for those moves whose
|
||
// names were verbs, such as Recover, and resulted in translations like "<NAME>
|
||
// recovered itself!".
|
||
//
|
||
// sText_ExclamationMark4 was "? ??!" This resulted in a translation of
|
||
// "<NAME> did an <ATTACK>!".
|
||
//
|
||
// sText_ExclamationMark5 was " ????!" This resulted in a translation of
|
||
// "<NAME>'s <ATTACK> attack!".
|
||
static void UNUSED ChooseTypeOfMoveUsedString(u8 *dst)
|
||
{
|
||
s32 counter = 0;
|
||
s32 i = 0;
|
||
|
||
while (*dst != EOS)
|
||
dst++;
|
||
|
||
while (counter != MAX_MON_MOVES)
|
||
{
|
||
if (sGrammarMoveUsedTable[i] == MOVE_NONE)
|
||
counter++;
|
||
if (sGrammarMoveUsedTable[i++] == gBattleMsgDataPtr->currentMove)
|
||
break;
|
||
}
|
||
|
||
switch (counter)
|
||
{
|
||
case 0:
|
||
StringCopy(dst, sText_ExclamationMark);
|
||
break;
|
||
case 1:
|
||
StringCopy(dst, sText_ExclamationMark2);
|
||
break;
|
||
case 2:
|
||
StringCopy(dst, sText_ExclamationMark3);
|
||
break;
|
||
case 3:
|
||
StringCopy(dst, sText_ExclamationMark4);
|
||
break;
|
||
case 4:
|
||
StringCopy(dst, sText_ExclamationMark5);
|
||
break;
|
||
}
|
||
}
|
||
|
||
void BattlePutTextOnWindow(const u8 *text, u8 windowId)
|
||
{
|
||
const struct BattleWindowText *textInfo = sBattleTextOnWindowsInfo[gBattleScripting.windowsType];
|
||
bool32 copyToVram;
|
||
struct TextPrinterTemplate printerTemplate;
|
||
u8 speed;
|
||
|
||
if (windowId & B_WIN_COPYTOVRAM)
|
||
{
|
||
windowId &= ~B_WIN_COPYTOVRAM;
|
||
copyToVram = FALSE;
|
||
}
|
||
else
|
||
{
|
||
FillWindowPixelBuffer(windowId, textInfo[windowId].fillValue);
|
||
copyToVram = TRUE;
|
||
}
|
||
|
||
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;
|
||
printerTemplate.unk = 0;
|
||
printerTemplate.fgColor = textInfo[windowId].fgColor;
|
||
printerTemplate.bgColor = textInfo[windowId].bgColor;
|
||
printerTemplate.shadowColor = textInfo[windowId].shadowColor;
|
||
|
||
if (B_WIN_MOVE_NAME_1 <= windowId && windowId <= B_WIN_MOVE_NAME_4)
|
||
{
|
||
// We cannot check the actual width of the window because
|
||
// B_WIN_MOVE_NAME_1 and B_WIN_MOVE_NAME_3 are 16 wide for
|
||
// Z-move details.
|
||
if (gBattleStruct->zmove.viewing && windowId == B_WIN_MOVE_NAME_1)
|
||
printerTemplate.fontId = GetFontIdToFit(text, printerTemplate.fontId, printerTemplate.letterSpacing, 16 * TILE_WIDTH);
|
||
else
|
||
printerTemplate.fontId = GetFontIdToFit(text, printerTemplate.fontId, printerTemplate.letterSpacing, 8 * TILE_WIDTH);
|
||
}
|
||
|
||
if (printerTemplate.x == 0xFF)
|
||
{
|
||
u32 width = GetBattleWindowTemplatePixelWidth(gBattleScripting.windowsType, windowId);
|
||
s32 alignX = GetStringCenterAlignXOffsetWithLetterSpacing(printerTemplate.fontId, printerTemplate.currentChar, width, printerTemplate.letterSpacing);
|
||
printerTemplate.x = printerTemplate.currentX = alignX;
|
||
}
|
||
|
||
if (windowId == ARENA_WIN_JUDGMENT_TEXT)
|
||
gTextFlags.useAlternateDownArrow = FALSE;
|
||
else
|
||
gTextFlags.useAlternateDownArrow = TRUE;
|
||
|
||
if ((gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED)) || gTestRunnerEnabled)
|
||
gTextFlags.autoScroll = TRUE;
|
||
else
|
||
gTextFlags.autoScroll = FALSE;
|
||
|
||
if (windowId == B_WIN_MSG || windowId == ARENA_WIN_JUDGMENT_TEXT)
|
||
{
|
||
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
|
||
speed = 1;
|
||
else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
|
||
speed = sRecordedBattleTextSpeeds[GetTextSpeedInRecordedBattle()];
|
||
else
|
||
speed = GetPlayerTextSpeedDelay();
|
||
|
||
gTextFlags.canABSpeedUpPrint = 1;
|
||
}
|
||
else
|
||
{
|
||
speed = textInfo[windowId].speed;
|
||
gTextFlags.canABSpeedUpPrint = 0;
|
||
}
|
||
|
||
AddTextPrinter(&printerTemplate, speed, NULL);
|
||
|
||
if (copyToVram)
|
||
{
|
||
PutWindowTilemap(windowId);
|
||
CopyWindowToVram(windowId, COPYWIN_FULL);
|
||
}
|
||
}
|
||
|
||
void SetPpNumbersPaletteInMoveSelection(u32 battler)
|
||
{
|
||
struct ChooseMoveStruct *chooseMoveStruct = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]);
|
||
const u16 *palPtr = gPPTextPalette;
|
||
u8 var;
|
||
|
||
if (!gBattleStruct->zmove.viewing)
|
||
var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[battler]],
|
||
chooseMoveStruct->maxPp[gMoveSelectionCursor[battler]]);
|
||
else
|
||
var = 3;
|
||
|
||
gPlttBufferUnfaded[BG_PLTT_ID(5) + 12] = palPtr[(var * 2) + 0];
|
||
gPlttBufferUnfaded[BG_PLTT_ID(5) + 11] = palPtr[(var * 2) + 1];
|
||
|
||
CpuCopy16(&gPlttBufferUnfaded[BG_PLTT_ID(5) + 12], &gPlttBufferFaded[BG_PLTT_ID(5) + 12], PLTT_SIZEOF(1));
|
||
CpuCopy16(&gPlttBufferUnfaded[BG_PLTT_ID(5) + 11], &gPlttBufferFaded[BG_PLTT_ID(5) + 11], PLTT_SIZEOF(1));
|
||
}
|
||
|
||
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;
|
||
}
|