Merge pull request #7 from rh-hideout-chinese/master

Update the code
This commit is contained in:
12014 2025-04-16 22:00:25 +09:00 committed by GitHub
commit 9fdf0bf586
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
20 changed files with 455 additions and 314 deletions

View File

@ -3642,7 +3642,7 @@ gBattleAnimMove_MagmaStorm::
call FireSpinEffect
restorebg
waitbgfadeout
setarg 7, 0xFFFF
setarg 7, 0xFFF
waitbgfadein
clearmonbg ANIM_DEF_PARTNER
blendoff
@ -28313,7 +28313,7 @@ Status_MagmaStorm:
call FireSpinEffect
restorebg
waitbgfadeout
setarg 7, 0xFFFF
setarg 7, 0xFFF
waitbgfadein
stopsound
clearmonbg ANIM_DEF_PARTNER

View File

@ -7030,9 +7030,9 @@ BattleScript_BattlerFormChangeWithStringEnd3::
BattleScript_IllusionOff::
spriteignore0hp TRUE
playanimation BS_TARGET, B_ANIM_ILLUSION_OFF
playanimation BS_SCRIPTING, B_ANIM_ILLUSION_OFF
waitanimation
updatenick BS_TARGET
updatenick BS_SCRIPTING
waitstate
spriteignore0hp FALSE
printstring STRINGID_ILLUSIONWOREOFF
@ -9994,9 +9994,12 @@ BattleScript_DynamaxEnds::
BattleScript_DynamaxEnds_Ret::
flushtextbox
spriteignore0hp TRUE
updatedynamax
playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE
waitanimation
spriteignore0hp FALSE
pause B_WAIT_TIME_SHORT
return
BattleScript_MoveBlockedByDynamax::

View File

@ -834,7 +834,6 @@ struct BattleStruct
u8 usedMicleBerry;
struct MessageStatus slideMessageStatus;
u8 trainerSlideSpriteIds[MAX_BATTLERS_COUNT];
u8 embodyAspectBoost[NUM_BATTLE_SIDES];
u16 savedMove; // backup current move for mid-turn switching, e.g. Red Card
u16 opponentMonCanTera:6;
u16 opponentMonCanDynamax:6;

View File

@ -19,7 +19,7 @@
#define DEXNAV_CHAIN_MAX 100 // maximum chain value
// hidden pokemon options - an approximation of values to due to lack of available data
// hidden pokemon options - an approximation of values due to lack of available data
#define HIDDEN_MON_STEP_COUNT 100 // Look for hidden pokemon every x steps
#define HIDDEN_MON_SEARCH_RATE 25 // x% chance of finding hidden pokemon every x steps
#define HIDDEN_MON_PROBABILTY 15 // x% chance of finding hidden mon compared to regular encounter data

View File

@ -1,19 +1,6 @@
#ifndef GUARD_CONSTANTS_BATTLE_AI_H
#define GUARD_CONSTANTS_BATTLE_AI_H
// battlers
#define AI_TARGET 0
#define AI_USER 1
#define AI_TARGET_PARTNER 2
#define AI_USER_PARTNER 3
// get_type command
#define AI_TYPE1_TARGET 0
#define AI_TYPE1_USER 1
#define AI_TYPE2_TARGET 2
#define AI_TYPE2_USER 3
#define AI_TYPE_MOVE 4
// AI Flags. Most run specific functions to update score, new flags are used for internal logic in other scripts
// See docs/ai_flags.md for more details.
#define AI_FLAG_CHECK_BAD_MOVE (1 << 0) // AI will avoid using moves that are likely to fail or be ineffective in the current situation.

View File

@ -283,7 +283,7 @@ enum EvolutionMethods {
EVO_LEVEL_NATURE_AMPED, // Pokémon reaches the specified level, it has a Hardy, Brave, Adamant, Naughty, Docile, Impish, Lax, Hasty, Jolly, Naive, Rash, Sassy, or Quirky nature.
EVO_LEVEL_NATURE_LOW_KEY, // Pokémon reaches the specified level, it has a Lonely, Bold, Relaxed, Timid, Serious, Modest, Mild, Quiet, Bashful, Calm, Gentle, or Careful nature.
EVO_CRITICAL_HITS, // Pokémon performs specified number of critical hits in one battle
EVO_SCRIPT_TRIGGER_DMG, // Pokémon has specified HP below max, then player interacts trigger
EVO_SCRIPT_TRIGGER_DMG, // Pokémon has specified HP below max, then player interacts with script calling "tryspecialevo EVO_SCRIPT_TRIGGER_DMG"
EVO_DARK_SCROLL, // interacts with Scroll of Darkness
EVO_WATER_SCROLL, // interacts with Scroll of Waters
EVO_ITEM_NIGHT, // specified item is used on Pokémon, is night

View File

@ -696,11 +696,11 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT] =
[STRINGID_GEMACTIVATES] = COMPOUND_STRING("The {B_LAST_ITEM} strengthened {B_ATK_NAME_WITH_PREFIX2}的power!"),
[STRINGID_BERRYDMGREDUCES] = COMPOUND_STRING("The {B_LAST_ITEM} weakened the damage to {B_SCR_NAME_WITH_PREFIX2}!"),
[STRINGID_AIRBALLOONFLOAT] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} floats in the air with its Air Balloon!"),
[STRINGID_AIRBALLOONPOP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}Air Balloon popped!"),
[STRINGID_INCINERATEBURN] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}{B_LAST_ITEM} was burnt up!"),
[STRINGID_BUGBITE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} stole and ate its target{B_LAST_ITEM}!"),
[STRINGID_ILLUSIONWOREOFF] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的illusion wore off!"),
[STRINGID_ATTACKERCUREDTARGETSTATUS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} cured {B_DEF_NAME_WITH_PREFIX2}problem!"),
[STRINGID_AIRBALLOONPOP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s Air Balloon popped!"),
[STRINGID_INCINERATEBURN] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}'s {B_LAST_ITEM} was burnt up!"),
[STRINGID_BUGBITE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} stole and ate its target's {B_LAST_ITEM}!"),
[STRINGID_ILLUSIONWOREOFF] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s illusion wore off!"),
[STRINGID_ATTACKERCUREDTARGETSTATUS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} cured {B_DEF_NAME_WITH_PREFIX2}'s problem!"),
[STRINGID_ATTACKERLOSTFIRETYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} burned itself out!"),
[STRINGID_HEALERCURE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}的{B_LAST_ABILITY} cured {B_SCR_NAME_WITH_PREFIX2}的problem!"),
[STRINGID_SCRIPTINGABILITYSTATRAISE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}的{B_SCR_ACTIVE_ABILITY} raised its {B_BUFF1}!"),

View File

@ -10178,6 +10178,7 @@ static void Cmd_various(void)
VARIOUS_ARGS();
if (GetIllusionMonPtr(battler) != NULL)
{
gBattleScripting.battler = battler;
gBattlescriptCurrInstr = cmd->nextInstr;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_IllusionOff;

View File

@ -4764,8 +4764,8 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
break;
case ABILITY_IMPOSTER:
{
u32 diagonalBattler = BATTLE_OPPOSITE(battler);
if (IsDoubleBattle())
u32 diagonalBattler = BATTLE_OPPOSITE(battler);
if (IsDoubleBattle())
diagonalBattler = BATTLE_PARTNER(diagonalBattler);
if (IsBattlerAlive(diagonalBattler)
&& !(gBattleMons[diagonalBattler].status2 & (STATUS2_TRANSFORMED | STATUS2_SUBSTITUTE))
@ -5303,8 +5303,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
case ABILITY_EMBODY_ASPECT_HEARTHFLAME_MASK:
case ABILITY_EMBODY_ASPECT_WELLSPRING_MASK:
case ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK:
if (!gSpecialStatuses[battler].switchInAbilityDone
&& !(gBattleStruct->embodyAspectBoost[GetBattlerSide(battler)] & (1u << gBattlerPartyIndexes[battler])))
if (!gSpecialStatuses[battler].switchInAbilityDone)
{
u32 stat;
@ -5323,7 +5322,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
gBattleScripting.savedBattler = gBattlerAttacker;
gBattlerAttacker = battler;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
gBattleStruct->embodyAspectBoost[GetBattlerSide(battler)] |= 1u << gBattlerPartyIndexes[battler];
SET_STATCHANGER(stat, 1, FALSE);
BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn);
effect++;
@ -6015,6 +6013,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
case ABILITY_ILLUSION:
if (gBattleStruct->illusion[gBattlerTarget].on && !gBattleStruct->illusion[gBattlerTarget].broken && IsBattlerTurnDamaged(gBattlerTarget))
{
gBattleScripting.battler = gBattlerTarget;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_IllusionOff;
effect++;
@ -11271,19 +11270,12 @@ bool32 SetIllusionMon(struct Pokemon *mon, u32 battler)
{
struct Pokemon *party, *partnerMon;
s32 i, id;
u8 side, partyCount;
gBattleStruct->illusion[battler].set = 1;
if (GetMonAbility(mon) != ABILITY_ILLUSION)
return FALSE;
party = GetBattlerParty(battler);
side = GetBattlerSide(battler);
partyCount = side == B_SIDE_PLAYER ? gPlayerPartyCount : gEnemyPartyCount;
// If this pokemon is last in the party, ignore Illusion.
if (&party[partyCount - 1] == mon)
return FALSE;
if (IsBattlerAlive(BATTLE_PARTNER(battler)))
partnerMon = &party[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]];
@ -11296,15 +11288,21 @@ bool32 SetIllusionMon(struct Pokemon *mon, u32 battler)
id = i;
if (GetMonData(&party[id], MON_DATA_SANITY_HAS_SPECIES)
&& GetMonData(&party[id], MON_DATA_HP)
&& !GetMonData(&party[id], MON_DATA_IS_EGG)
&& &party[id] != mon
&& &party[id] != partnerMon)
&& !GetMonData(&party[id], MON_DATA_IS_EGG))
{
gBattleStruct->illusion[battler].on = 1;
gBattleStruct->illusion[battler].broken = 0;
gBattleStruct->illusion[battler].partyId = id;
gBattleStruct->illusion[battler].mon = &party[id];
return TRUE;
if (&party[id] != mon && &party[id] != partnerMon)
{
gBattleStruct->illusion[battler].on = 1;
gBattleStruct->illusion[battler].broken = 0;
gBattleStruct->illusion[battler].partyId = id;
gBattleStruct->illusion[battler].mon = &party[id];
return TRUE;
}
else if (&party[id] == mon)
{
// If this pokemon is last in the party, ignore Illusion.
return FALSE;
}
}
}

View File

@ -84,17 +84,16 @@ u32 GetSoftLevelCapExpValue(u32 level, u32 expValue)
u32 GetCurrentEVCap(void)
{
static const u16 sEvCapFlagMap[][2] = {
// Define EV caps for each milestone
{FLAG_BADGE01_GET, 30},
{FLAG_BADGE02_GET, 90},
{FLAG_BADGE03_GET, 150},
{FLAG_BADGE04_GET, 210},
{FLAG_BADGE05_GET, 270},
{FLAG_BADGE06_GET, 330},
{FLAG_BADGE07_GET, 390},
{FLAG_BADGE08_GET, 450},
{FLAG_BADGE01_GET, MAX_TOTAL_EVS * 1 / 17},
{FLAG_BADGE02_GET, MAX_TOTAL_EVS * 3 / 17},
{FLAG_BADGE03_GET, MAX_TOTAL_EVS * 5 / 17},
{FLAG_BADGE04_GET, MAX_TOTAL_EVS * 7 / 17},
{FLAG_BADGE05_GET, MAX_TOTAL_EVS * 9 / 17},
{FLAG_BADGE06_GET, MAX_TOTAL_EVS * 11 / 17},
{FLAG_BADGE07_GET, MAX_TOTAL_EVS * 13 / 17},
{FLAG_BADGE08_GET, MAX_TOTAL_EVS * 15 / 17},
{FLAG_IS_CHAMPION, MAX_TOTAL_EVS},
};

View File

@ -99,7 +99,7 @@ static const u16 sMiscIndicatorPal[] = INCBIN_U16("graphics/battle_interface/mis
static const u16 sMegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/mega_indicator.gbapal");
static const u16 sTeraIndicatorPal[] = INCBIN_U16("graphics/battle_interface/tera_indicator.gbapal");
static const u8 *sTeraIndicatorDataPtrs[] =
static const u8 *const sTeraIndicatorDataPtrs[] =
{
sNormalIndicatorGfx,
sNormalIndicatorGfx,

View File

@ -1,11 +1,11 @@
ALIGNED(4) static const u8 sText_EmptyString[] = _("");
ALIGNED(4) static const u8 sText_Colon[] = _(":");
ALIGNED(4) static const u8 sText_ID[] = _("{ID}");
ALIGNED(4) static const u8 sText_PleaseStartOver[] = _("Please start over from the beginning.");
ALIGNED(4) static const u8 sText_WirelessSearchCanceled[] = _("The WIRELESS COMMUNICATION\nSYSTEM search has been canceled.");
ALIGNED(4) static const u8 sText_AwaitingCommunucation2[] = _("Awaiting communication\nfrom another player."); // Unused
ALIGNED(4) static const u8 sText_AwaitingCommunication[] = _("{STR_VAR_1}! Awaiting\ncommunication from another player.");
ALIGNED(4) static const u8 sText_AwaitingLinkPressStart[] = _("{STR_VAR_1}! Awaiting link!\nPress START when everyone's ready.");
ALIGNED(4) static const u8 sText_PleaseStartOver[] = _("请从起始的地方开始。");
ALIGNED(4) static const u8 sText_WirelessSearchCanceled[] = _("无线通讯\n系统搜索被取消了。");
ALIGNED(4) static const u8 sText_AwaitingCommunucation2[] = _("等待其他\n选手的通信。"); // Unused
ALIGNED(4) static const u8 sText_AwaitingCommunication[] = _("{STR_VAR_1}!等待\n其他选手的通信。");
ALIGNED(4) static const u8 sText_AwaitingLinkPressStart[] = _("{STR_VAR_1}!等待连接!\n当所有人准备完毕后按开始键。");
ALIGNED(4) static const u8 sJPText_SingleBattle[] = _("シングルバトルを かいさいする");
ALIGNED(4) static const u8 sJPText_DoubleBattle[] = _("ダブルバトルを かいさいする");
ALIGNED(4) static const u8 sJPText_MultiBattle[] = _("マルチバトルを かいさいする");
@ -38,14 +38,14 @@ static const u8 *const sJPLinkGroupActionTexts[] = {
sJPText_HoldSpinShop
};
static const u8 sText_1PlayerNeeded[] = _("1 player\nneeded.");
static const u8 sText_2PlayersNeeded[] = _("2 players\nneeded.");
static const u8 sText_3PlayersNeeded[] = _("3 players\nneeded.");
static const u8 sText_4PlayersNeeded[] = _("4 players\nneeded.");
static const u8 sText_2PlayerMode[] = _("2-PLAYER\nMODE");
static const u8 sText_3PlayerMode[] = _("3-PLAYER\nMODE");
static const u8 sText_4PlayerMode[] = _("4-PLAYER\nMODE");
static const u8 sText_5PlayerMode[] = _("5-PLAYER\nMODE");
static const u8 sText_1PlayerNeeded[] = _("需要\n1个玩家。");
static const u8 sText_2PlayersNeeded[] = _("需要\n2个玩家。");
static const u8 sText_3PlayersNeeded[] = _("需要\n3个玩家。");
static const u8 sText_4PlayersNeeded[] = _("需要\n4个玩家。");
static const u8 sText_2PlayerMode[] = _("2个玩家\n模式");
static const u8 sText_3PlayerMode[] = _("3个玩家\n模式");
static const u8 sText_4PlayerMode[] = _("4个玩家\n模式");
static const u8 sText_5PlayerMode[] = _("5个玩家\n模式");
static const u8 *const sPlayersNeededOrModeTexts[][5] = {
// 2 players required
@ -85,38 +85,38 @@ static const u8 *const sPlayersNeededOrModeTexts[][5] = {
}
};
ALIGNED(4) static const u8 sText_BButtonCancel[] = _("{B_BUTTON}CANCEL");
ALIGNED(4) static const u8 sText_BButtonCancel[] = _("{B_BUTTON}取消");
ALIGNED(4) static const u8 sJPText_SearchingForParticipants[] = _("ため\nさんかしゃ ぼしゅうちゅう です!"); // Unused, may have been cut off
ALIGNED(4) static const u8 sText_PlayerContactedYouForXAccept[] = _("{STR_VAR_2} contacted you for\n{STR_VAR_1}. Accept?");
ALIGNED(4) static const u8 sText_PlayerContactedYouShareX[] = _("{STR_VAR_2} contacted you.\nWill you share {STR_VAR_1}?");
ALIGNED(4) static const u8 sText_PlayerContactedYouAddToMembers[] = _("{STR_VAR_2} contacted you.\nAdd to the members?");
ALIGNED(4) static const u8 sText_AreTheseMembersOK[] = _("{STR_VAR_1}!\nAre these members OK?");
ALIGNED(4) static const u8 sText_CancelModeWithTheseMembers[] = _("Cancel {STR_VAR_1} MODE\nwith these members?");
ALIGNED(4) static const u8 sText_AnOKWasSentToPlayer[] = _("An “OK” was sent\nto {STR_VAR_1}.");
ALIGNED(4) static const u8 sText_OtherTrainerUnavailableNow[] = _("The other TRAINER doesn't appear\nto be available now\p");
ALIGNED(4) static const u8 sText_CantTransmitTrainerTooFar[] = _("You can't transmit with a TRAINER\nwho is too far away.\p");
ALIGNED(4) static const u8 sText_TrainersNotReadyYet[] = _("The other TRAINER(S) is/are not\nready yet.\p");
ALIGNED(4) static const u8 sText_PlayerContactedYouForXAccept[] = _("{STR_VAR_2}想要与你连接\n\n{STR_VAR_1}接受吗?");
ALIGNED(4) static const u8 sText_PlayerContactedYouShareX[] = _("{STR_VAR_2}连接上了你。\n想要交换{STR_VAR_1}");
ALIGNED(4) static const u8 sText_PlayerContactedYouAddToMembers[] = _("{STR_VAR_2}连接上了你。\n添加到成员?");
ALIGNED(4) static const u8 sText_AreTheseMembersOK[] = _("{STR_VAR_1}\n这些成员可以吗?");
ALIGNED(4) static const u8 sText_CancelModeWithTheseMembers[] = _("取消和其他成员的\n{STR_VAR_1}模式");
ALIGNED(4) static const u8 sText_AnOKWasSentToPlayer[] = _("已向\n{STR_VAR_1}提交确认。"); // 待定
ALIGNED(4) static const u8 sText_OtherTrainerUnavailableNow[] = _("其他训练师好像\n现在不可见\p");
ALIGNED(4) static const u8 sText_CantTransmitTrainerTooFar[] = _(" 你不能和一个太远的\n训练师进行通信。\p");
ALIGNED(4) static const u8 sText_TrainersNotReadyYet[] = _("其他训练师没有\n准备好。\p");
static const u8 *const sCantTransmitToTrainerTexts[] = {
[UR_TRADE_PLAYER_NOT_READY - 1] = sText_CantTransmitTrainerTooFar,
[UR_TRADE_PARTNER_NOT_READY - 1] = sText_TrainersNotReadyYet
};
ALIGNED(4) static const u8 sText_ModeWithTheseMembersWillBeCanceled[] = _("The {STR_VAR_1} MODE with\nthese members will be canceled.{PAUSE 60}");
ALIGNED(4) static const u8 sText_MemberNoLongerAvailable[] = _("There is a member who can no\nlonger remain available.\p");
ALIGNED(4) static const u8 sText_ModeWithTheseMembersWillBeCanceled[] = _("和其他成员的{STR_VAR_1}模式\n将要被取消。{PAUSE 60}");
ALIGNED(4) static const u8 sText_MemberNoLongerAvailable[] = _("对方好像不太方便……\p");
static const u8 *const sPlayerUnavailableTexts[] = {
sText_OtherTrainerUnavailableNow,
sText_MemberNoLongerAvailable
};
ALIGNED(4) static const u8 sText_TrainerAppearsUnavailable[] = _("The other TRAINER appears\nunavailable\p");
ALIGNED(4) static const u8 sText_PlayerSentBackOK[] = _("{STR_VAR_1} sent back an “OK”!");
ALIGNED(4) static const u8 sText_PlayerOKdRegistration[] = _("{STR_VAR_1} OK'd your registration as\na member.");
ALIGNED(4) static const u8 sText_PlayerRepliedNo[] = _("{STR_VAR_1} replied, “No…”\p");
ALIGNED(4) static const u8 sText_AwaitingOtherMembers[] = _("{STR_VAR_1}!\nAwaiting other members!");
ALIGNED(4) static const u8 sText_QuitBeingMember[] = _("Quit being a member?");
ALIGNED(4) static const u8 sText_StoppedBeingMember[] = _("You stopped being a member.\p");
ALIGNED(4) static const u8 sText_TrainerAppearsUnavailable[] = _("其他训练师\n断开了\p");
ALIGNED(4) static const u8 sText_PlayerSentBackOK[] = _("{STR_VAR_1}回复“是”!");
ALIGNED(4) static const u8 sText_PlayerOKdRegistration[] = _("{STR_VAR_1}确认被你登录为\n成员。");
ALIGNED(4) static const u8 sText_PlayerRepliedNo[] = _("{STR_VAR_1}回复,“否…”\p");
ALIGNED(4) static const u8 sText_AwaitingOtherMembers[] = _("{STR_VAR_1}\n等待其他成员!");
ALIGNED(4) static const u8 sText_QuitBeingMember[] = _("取消加入?");
ALIGNED(4) static const u8 sText_StoppedBeingMember[] = _("你停止加入。\p");
static const u8 *const sPlayerDisconnectedTexts[] = {
[RFU_STATUS_OK] = NULL,
@ -131,10 +131,10 @@ static const u8 *const sPlayerDisconnectedTexts[] = {
[RFU_STATUS_LEAVE_GROUP] = sText_StoppedBeingMember
};
ALIGNED(4) static const u8 sText_WirelessLinkEstablished[] = _("The WIRELESS COMMUNICATION\nSYSTEM link has been established.");
ALIGNED(4) static const u8 sText_WirelessLinkDropped[] = _("The WIRELESS COMMUNICATION\nSYSTEM link has been dropped");
ALIGNED(4) static const u8 sText_LinkWithFriendDropped[] = _("The link with your friend has been\ndropped");
ALIGNED(4) static const u8 sText_PlayerRepliedNo2[] = _("{STR_VAR_1} replied, “No…”");
ALIGNED(4) static const u8 sText_WirelessLinkEstablished[] = _("无线通讯\n系统连接已确定。");
ALIGNED(4) static const u8 sText_WirelessLinkDropped[] = _("无线通讯\n系统连接失败");
ALIGNED(4) static const u8 sText_LinkWithFriendDropped[] = _("与好友的连接\n失败");
ALIGNED(4) static const u8 sText_PlayerRepliedNo2[] = _("{STR_VAR_1}回复,“否…”");
static const u8 *const sLinkDroppedTexts[] = {
[RFU_STATUS_OK] = NULL,
@ -149,8 +149,8 @@ static const u8 *const sLinkDroppedTexts[] = {
[RFU_STATUS_LEAVE_GROUP] = NULL
};
ALIGNED(4) static const u8 sText_DoYouWantXMode[] = _("Do you want the {STR_VAR_2}\nMODE?");
ALIGNED(4) static const u8 sText_DoYouWantXMode2[] = _("Do you want the {STR_VAR_2}\nMODE?");
ALIGNED(4) static const u8 sText_DoYouWantXMode[] = _("你想要加入{STR_VAR_2}\n模式?");
ALIGNED(4) static const u8 sText_DoYouWantXMode2[] = _("你想要加入{STR_VAR_2}\n模式?");
// Unused
static const u8 *const sDoYouWantModeTexts[] = {
@ -158,13 +158,13 @@ static const u8 *const sDoYouWantModeTexts[] = {
sText_DoYouWantXMode2
};
ALIGNED(4) static const u8 sText_CommunicatingPleaseWait[] = _("Communicating…\nPlease wait."); // Unused
ALIGNED(4) static const u8 sText_AwaitingPlayersResponseAboutTrade[] = _("Awaiting {STR_VAR_1}'s response about\nthe trade");
ALIGNED(4) static const u8 sText_Communicating[] = _("Communicating{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n"
ALIGNED(4) static const u8 sText_CommunicatingPleaseWait[] = _("连接中…\n请稍后。"); // Unused
ALIGNED(4) static const u8 sText_AwaitingPlayersResponseAboutTrade[] = _("等待{STR_VAR_1}的\n交换回复");
ALIGNED(4) static const u8 sText_Communicating[] = _("连接中{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n"
"{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
ALIGNED(4) static const u8 sText_CommunicatingWithPlayer[] = _("Communicating with {STR_VAR_1}{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n"
ALIGNED(4) static const u8 sText_CommunicatingWithPlayer[] = _("正在与{STR_VAR_1}连接……{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n"
"{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
ALIGNED(4) static const u8 sText_PleaseWaitAWhile[] = _("Please wait a while{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n"
ALIGNED(4) static const u8 sText_PleaseWaitAWhile[] = _("请稍等……{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n"
"{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
static const u8 *const sCommunicatingWaitTexts[] = {
@ -173,10 +173,10 @@ static const u8 *const sCommunicatingWaitTexts[] = {
sText_PleaseWaitAWhile
};
ALIGNED(4) static const u8 sText_HiDoSomethingMale[] = _("Hiya! Is there something that you\nwanted to do?");
ALIGNED(4) static const u8 sText_HiDoSomethingFemale[] = _("Hello!\nWould you like to do something?");
ALIGNED(4) static const u8 sText_HiDoSomethingAgainMale[] = _("{STR_VAR_1}: Hiya, we meet again!\nWhat are you up for this time?");
ALIGNED(4) static const u8 sText_HiDoSomethingAgainFemale[] = _("{STR_VAR_1}: Oh! {PLAYER}, hello!\nWould you like to do something?");
ALIGNED(4) static const u8 sText_HiDoSomethingMale[] = _("嘿!有什么\n想做的吗?");
ALIGNED(4) static const u8 sText_HiDoSomethingFemale[] = _("你好!\n想要做什么??");
ALIGNED(4) static const u8 sText_HiDoSomethingAgainMale[] = _("{STR_VAR_1}:嘿,我们又见面了!\n最近怎么样?");
ALIGNED(4) static const u8 sText_HiDoSomethingAgainFemale[] = _("{STR_VAR_1}:哦!{PLAYER},你好!\n想要做什么?");
static const u8 *const sHiDoSomethingTexts[][GENDER_COUNT] = {
{
@ -188,10 +188,10 @@ static const u8 *const sHiDoSomethingTexts[][GENDER_COUNT] = {
}
};
ALIGNED(4) static const u8 sText_DoSomethingMale[] = _("Want to do something?");
ALIGNED(4) static const u8 sText_DoSomethingFemale[] = _("Would you like to do something?");
ALIGNED(4) static const u8 sText_DoSomethingAgainMale[] = _("{STR_VAR_1}: What would you like to\ndo now?");
ALIGNED(4) static const u8 sText_DoSomethingAgainFemale[] = _("{STR_VAR_1}: Want to do anything else?"); // Unused
ALIGNED(4) static const u8 sText_DoSomethingMale[] = _("想做点什么??");
ALIGNED(4) static const u8 sText_DoSomethingFemale[] = _("想做点什么?");
ALIGNED(4) static const u8 sText_DoSomethingAgainMale[] = _("{STR_VAR_1}:你现在想要\n做什么??");
ALIGNED(4) static const u8 sText_DoSomethingAgainFemale[] = _("{STR_VAR_1}:想做点其他的不??"); // Unused
// Unused
static const u8 *const sDoSomethingTexts[][GENDER_COUNT] = {
@ -204,31 +204,31 @@ static const u8 *const sDoSomethingTexts[][GENDER_COUNT] = {
}
};
ALIGNED(4) static const u8 sText_SomebodyHasContactedYou[] = _("Somebody has contacted you.{PAUSE 60}");
ALIGNED(4) static const u8 sText_PlayerHasContactedYou[] = _("{STR_VAR_1} has contacted you.{PAUSE 60}");
ALIGNED(4) static const u8 sText_SomebodyHasContactedYou[] = _("有人连接上了你。{PAUSE 60}");
ALIGNED(4) static const u8 sText_PlayerHasContactedYou[] = _("{STR_VAR_1}连接上了你。{PAUSE 60}");
static const u8 *const sPlayerContactedYouTexts[] = {
sText_SomebodyHasContactedYou,
sText_PlayerHasContactedYou
};
ALIGNED(4) static const u8 sText_AwaitingResponseFromTrainer[] = _("Awaiting a response from\nthe other TRAINER");
ALIGNED(4) static const u8 sText_AwaitingResponseFromPlayer[] = _("Awaiting a response from\n{STR_VAR_1}");
ALIGNED(4) static const u8 sText_AwaitingResponseFromTrainer[] = _("等待\n另一个训练师回复");
ALIGNED(4) static const u8 sText_AwaitingResponseFromPlayer[] = _("等待\n{STR_VAR_1}的回复");
static const u8 *const sAwaitingResponseTexts[] = {
sText_AwaitingResponseFromTrainer,
sText_AwaitingResponseFromPlayer
};
ALIGNED(4) static const u8 sText_ShowTrainerCard[] = _("The other TRAINER showed\nyou their TRAINER CARD.\pWould you like to show your\nTRAINER CARD?");
ALIGNED(4) static const u8 sText_BattleChallenge[] = _("The other TRAINER challenges you\nto battle.\pWill you accept the battle\nchallenge?");
ALIGNED(4) static const u8 sText_ChatInvitation[] = _("The other TRAINER invites you\nto chat.\pWill you accept the chat\ninvitation?");
ALIGNED(4) static const u8 sText_OfferToTradeMon[] = _("There is an offer to trade your\nregistered Lv. {DYNAMIC 0} {DYNAMIC 1}\pin exchange for a\nLv. {DYNAMIC 2} {DYNAMIC 3}.\pWill you accept this trade\noffer?");
ALIGNED(4) static const u8 sText_OfferToTradeEgg[] = _("There is an offer to trade your\nregistered EGG.\lWill you accept this trade offer?");
ALIGNED(4) static const u8 sText_ChatDropped[] = _("The chat has been dropped.\p");
ALIGNED(4) static const u8 sText_OfferDeclined1[] = _("You declined the offer.\p");
ALIGNED(4) static const u8 sText_OfferDeclined2[] = _("You declined the offer.\p");
ALIGNED(4) static const u8 sText_ChatEnded[] = _("The chat was ended.\p");
ALIGNED(4) static const u8 sText_ShowTrainerCard[] = _("其他训练师展示\n给你看他们的训练师卡片。\p你也要展示\n训练师卡片?");
ALIGNED(4) static const u8 sText_BattleChallenge[] = _("其他训练师想通过\n宝可梦对战挑战你。\p你想要接受\n挑战吗?");
ALIGNED(4) static const u8 sText_ChatInvitation[] = _("其他训练师邀请你\n聊天。\p你想要接受\n聊天申请吗?");
ALIGNED(4) static const u8 sText_OfferToTradeMon[] = _("有人愿意用一只\n等级{DYNAMIC 0}的{DYNAMIC 1}\p与你登记的等级{DYNAMIC 2}\n的{DYNAMIC 3}交换。\p你同意吗");
ALIGNED(4) static const u8 sText_OfferToTradeEgg[] = _("有人想要交换你\n登记的蛋。\l你想要接受交换申请吗");
ALIGNED(4) static const u8 sText_ChatDropped[] = _("聊天断开。\p");
ALIGNED(4) static const u8 sText_OfferDeclined1[] = _("你拒绝了请求。\p");
ALIGNED(4) static const u8 sText_OfferDeclined2[] = _(" 你拒绝了请求。\p");
ALIGNED(4) static const u8 sText_ChatEnded[] = _("聊天停止了。\p");
// Unused
static const u8 *const sInvitationTexts[] = {
@ -238,10 +238,10 @@ static const u8 *const sInvitationTexts[] = {
sText_OfferToTradeMon
};
ALIGNED(4) static const u8 sText_JoinChatMale[] = _("Oh, hey! We're in a chat right now.\nWant to join us?");
ALIGNED(4) static const u8 sText_PlayerJoinChatMale[] = _("{STR_VAR_1}: Hey, {PLAYER}!\nWe're having a chat right now.\lWant to join us?");
ALIGNED(4) static const u8 sText_JoinChatFemale[] = _("Oh, hi! We're having a chat now.\nWould you like to join us?");
ALIGNED(4) static const u8 sText_PlayerJoinChatFemale[] = _("{STR_VAR_1}: Oh, hi, {PLAYER}!\nWe're having a chat now.\lWould you like to join us?");
ALIGNED(4) static const u8 sText_JoinChatMale[] = _("嘿!我们正在聊天。\n想要加入我们吗?");
ALIGNED(4) static const u8 sText_PlayerJoinChatMale[] = _("{STR_VAR_1}:嘿,{PLAYER}\n我们正在聊天。\l想要加入我们吗");
ALIGNED(4) static const u8 sText_JoinChatFemale[] = _(" 哦,你好!我们正在聊天。\n想要加入我们吗?");
ALIGNED(4) static const u8 sText_PlayerJoinChatFemale[] = _("{STR_VAR_1}:你好,{PLAYER}\n我们在聊天。\l想要加入我们吗?");
static const u8 *const sJoinChatTexts[][GENDER_COUNT] = {
{
@ -253,13 +253,13 @@ static const u8 *const sJoinChatTexts[][GENDER_COUNT] = {
}
};
ALIGNED(4) static const u8 sText_TrainerAppearsBusy[] = _("……\nThe TRAINER appears to be busy…\p");
ALIGNED(4) static const u8 sText_WaitForBattleMale[] = _("A battle, huh?\nAll right, just give me some time.");
ALIGNED(4) static const u8 sText_WaitForChatMale[] = _("You want to chat, huh?\nSure, just wait a little.");
ALIGNED(4) static const u8 sText_ShowTrainerCardMale[] = _("Sure thing! As my “Greetings,”\nhere's my TRAINER CARD.");
ALIGNED(4) static const u8 sText_WaitForBattleFemale[] = _("A battle? Of course, but I need\ntime to get ready.");
ALIGNED(4) static const u8 sText_WaitForChatFemale[] = _("Did you want to chat?\nOkay, but please wait a moment.");
ALIGNED(4) static const u8 sText_ShowTrainerCardFemale[] = _("As my introduction, I'll show you\nmy TRAINER CARD.");
ALIGNED(4) static const u8 sText_TrainerAppearsBusy[] = _("……\n训练师好像正在忙…\p\p");
ALIGNED(4) static const u8 sText_WaitForBattleMale[] = _("宝可梦对战,嗯?\n好吧,等我一下。");
ALIGNED(4) static const u8 sText_WaitForChatMale[] = _("想要聊天,嗯?\n好的,等一下。");
ALIGNED(4) static const u8 sText_ShowTrainerCardMale[] = _("当然!作为“问候”\n这是我的训练师卡片。");
ALIGNED(4) static const u8 sText_WaitForBattleFemale[] = _("宝可梦对战?当然,但是\n我需要准备一下。");
ALIGNED(4) static const u8 sText_WaitForChatFemale[] = _("你想聊天?\n好的,但是请稍等。");
ALIGNED(4) static const u8 sText_ShowTrainerCardFemale[] = _("作为自我介绍,我会展示\n给你我的训练师卡片。");
static const u8 *const sText_WaitOrShowCardTexts[GENDER_COUNT][4] = {
{
@ -275,14 +275,14 @@ static const u8 *const sText_WaitOrShowCardTexts[GENDER_COUNT][4] = {
}
};
ALIGNED(4) static const u8 sText_WaitForChatMale2[] = _("You want to chat, huh?\nSure, just wait a little."); // Unused
ALIGNED(4) static const u8 sText_DoneWaitingBattleMale[] = _("Thanks for waiting!\nLet's get our battle started!{PAUSE 60}");
ALIGNED(4) static const u8 sText_DoneWaitingChatMale[] = _("All right!\nLet's chat!{PAUSE 60}");
ALIGNED(4) static const u8 sText_DoneWaitingBattleFemale[] = _("Sorry I made you wait!\nLet's get started!{PAUSE 60}");
ALIGNED(4) static const u8 sText_DoneWaitingChatFemale[] = _("Sorry I made you wait!\nLet's chat.{PAUSE 60}");
ALIGNED(4) static const u8 sText_TradeWillBeStarted[] = _("The trade will be started.{PAUSE 60}");
ALIGNED(4) static const u8 sText_BattleWillBeStarted[] = _("The battle will be started.{PAUSE 60}");
ALIGNED(4) static const u8 sText_EnteringChat[] = _("Entering the chat…{PAUSE 60}");
ALIGNED(4) static const u8 sText_WaitForChatMale2[] = _("想聊天,嗯?\n好,等下。"); // Unused
ALIGNED(4) static const u8 sText_DoneWaitingBattleMale[] = _("感谢您的等待!\n让我们的宝可梦对战\p开始吧{PAUSE 60}");
ALIGNED(4) static const u8 sText_DoneWaitingChatMale[] = _("好的!\n开始聊天!{PAUSE 60}");
ALIGNED(4) static const u8 sText_DoneWaitingBattleFemale[] = _("抱歉让你久等了!\n让我们开始吧!{PAUSE 60}");
ALIGNED(4) static const u8 sText_DoneWaitingChatFemale[] = _("抱歉让你久等了!\n开始聊天吧。{PAUSE 60}");
ALIGNED(4) static const u8 sText_TradeWillBeStarted[] = _("交换开始。{PAUSE 60}");
ALIGNED(4) static const u8 sText_BattleWillBeStarted[] = _("宝可梦对战开始。{PAUSE 60}");
ALIGNED(4) static const u8 sText_EnteringChat[] = _("进入聊天中…{PAUSE 60}");
static const u8 *const sStartActivityTexts[][GENDER_COUNT][3] = {
{
@ -308,36 +308,36 @@ static const u8 *const sStartActivityTexts[][GENDER_COUNT][3] = {
}
};
ALIGNED(4) static const u8 sText_BattleDeclinedMale[] = _("Sorry! My POKéMON don't seem to\nbe feeling too well right now.\lLet me battle you another time.\p");
ALIGNED(4) static const u8 sText_BattleDeclinedFemale[] = _("I'm terribly sorry, but my POKéMON\naren't feeling well…\pLet's battle another time.\p");
ALIGNED(4) static const u8 sText_BattleDeclinedMale[] = _("对不起!我的宝可梦看\n起来好像不太好。\l下次再战斗吧。\p");
ALIGNED(4) static const u8 sText_BattleDeclinedFemale[] = _("非常抱歉,但是我的\n宝可梦现在很不好…\p下次再战斗吧。\p");
static const u8 *const sBattleDeclinedTexts[GENDER_COUNT] = {
sText_BattleDeclinedMale,
sText_BattleDeclinedFemale
};
ALIGNED(4) static const u8 sText_ShowTrainerCardDeclinedMale[] = _("Huh? My TRAINER CARD…\nWhere'd it go now?\lSorry! I'll show you another time!\p");
ALIGNED(4) static const u8 sText_ShowTrainerCardDeclinedFemale[] = _("Oh? Now where did I put my\nTRAINER CARD?…\lSorry! I'll show you later!\p");
ALIGNED(4) static const u8 sText_ShowTrainerCardDeclinedMale[] = _("嗯?我的训练师卡片…\n找不到了?\l对不起下次展示给你吧\p");
ALIGNED(4) static const u8 sText_ShowTrainerCardDeclinedFemale[] = _("哦?我的\n训练师卡片呢?…\l对不起以后展示给你看吧\p");
static const u8 *const sShowTrainerCardDeclinedTexts[GENDER_COUNT] = {
sText_ShowTrainerCardDeclinedMale,
sText_ShowTrainerCardDeclinedFemale
};
ALIGNED(4) static const u8 sText_IfYouWantToDoSomethingMale[] = _("If you want to do something with\nme, just give me a shout!\p");
ALIGNED(4) static const u8 sText_IfYouWantToDoSomethingFemale[] = _("If you want to do something with\nme, don't be shy.\p");
ALIGNED(4) static const u8 sText_IfYouWantToDoSomethingMale[] = _("如果以后有什么事找我\n尽管叫我!\p");
ALIGNED(4) static const u8 sText_IfYouWantToDoSomethingFemale[] = _("如果以后有什么事找我\n不要客气啊。\p");
static const u8 *const sIfYouWantToDoSomethingTexts[GENDER_COUNT] = {
sText_IfYouWantToDoSomethingMale,
sText_IfYouWantToDoSomethingFemale
};
ALIGNED(4) static const u8 sText_TrainerBattleBusy[] = _("Whoops! Sorry, but I have to do\nsomething else.\lAnother time, okay?\p");
ALIGNED(4) static const u8 sText_NeedTwoMonsOfLevel30OrLower1[] = _("If you want to battle, you need\ntwo POKéMON that are below\lLv. 30.\p");
ALIGNED(4) static const u8 sText_NeedTwoMonsOfLevel30OrLower2[] = _("For a battle, you need two\nPOKéMON that are below Lv. 30.\p");
ALIGNED(4) static const u8 sText_TrainerBattleBusy[] = _("哎呦!抱歉,但是我有事\n要做。\l下次吧好吧\p");
ALIGNED(4) static const u8 sText_NeedTwoMonsOfLevel30OrLower1[] = _("如果想要宝可梦对战,你\n需要两只宝可梦必须是\l等级30以下的。\p");
ALIGNED(4) static const u8 sText_NeedTwoMonsOfLevel30OrLower2[] = _("如果想要宝可梦对战,你\n需要宝可梦必须是\l等级30以下的。\p");
ALIGNED(4) static const u8 sText_DeclineChatMale[] = _("Oh, all right.\nCome see me anytime, okay?\p");
ALIGNED(4) static const u8 stext_DeclineChatFemale[] = _("Oh…\nPlease come by anytime.\p");
ALIGNED(4) static const u8 sText_DeclineChatMale[] = _("好吧。\n随时可以来看我,好吧?\p");
ALIGNED(4) static const u8 stext_DeclineChatFemale[] = _("哦…\n请随时过来看我。\p");
// Response from partner when player declines chat
static const u8 *const sDeclineChatTexts[GENDER_COUNT] = {
@ -345,8 +345,8 @@ static const u8 *const sDeclineChatTexts[GENDER_COUNT] = {
stext_DeclineChatFemale
};
ALIGNED(4) static const u8 sText_ChatDeclinedMale[] = _("Oh, sorry!\nI just can't right this instant.\lLet's chat another time.\p");
ALIGNED(4) static const u8 sText_ChatDeclinedFemale[] = _("Oh, I'm sorry.\nI have too much to do right now.\lLet's chat some other time.\p");
ALIGNED(4) static const u8 sText_ChatDeclinedMale[] = _("不好意思!\n不能聊了。\l下次再说吧。\p");
ALIGNED(4) static const u8 sText_ChatDeclinedFemale[] = _("不好意思。\n现在我有事要做。\l下次再说吧。\p");
// Response from partner when they decline chat
static const u8 *const sChatDeclinedTexts[GENDER_COUNT] = {
@ -354,14 +354,14 @@ static const u8 *const sChatDeclinedTexts[GENDER_COUNT] = {
sText_ChatDeclinedFemale
};
ALIGNED(4) static const u8 sText_YoureToughMale[] = _("Whoa!\nI can tell you're pretty tough!\p");
ALIGNED(4) static const u8 sText_UsedGoodMoveMale[] = _("You used that move?\nThat's good strategy!\p");
ALIGNED(4) static const u8 sText_BattleSurpriseMale[] = _("Way to go!\nThat was an eye-opener!\p");
ALIGNED(4) static const u8 sText_SwitchedMonsMale[] = _("Oh! How could you use that\nPOKéMON in that situation?\p");
ALIGNED(4) static const u8 sText_YoureToughFemale[] = _("That POKéMON…\nIt's been raised really well!\p");
ALIGNED(4) static const u8 sText_UsedGoodMoveFemale[] = _("That's it!\nThis is the right move now!\p");
ALIGNED(4) static const u8 sText_BattleSurpriseFemale[] = _("That's awesome!\nYou can battle that way?\p");
ALIGNED(4) static const u8 sText_SwitchedMonsFemale[] = _("You have exquisite timing for\nswitching POKéMON!\p");
ALIGNED(4) static const u8 sText_YoureToughMale[] = _("哇!\n你太坚强了!\p");
ALIGNED(4) static const u8 sText_UsedGoodMoveMale[] = _("你用了那个技能?\n真是好办法!\p");
ALIGNED(4) static const u8 sText_BattleSurpriseMale[] = _("就这么做!\n真是令人大开眼界!\p");
ALIGNED(4) static const u8 sText_SwitchedMonsMale[] = _("你竟然可以在那种情况下\n使用那只宝可梦?\p");
ALIGNED(4) static const u8 sText_YoureToughFemale[] = _("那个宝可梦…\n培养的真好!\p\p");
ALIGNED(4) static const u8 sText_UsedGoodMoveFemale[] = _("就是这样!\n现在就是适当的技能!\p");
ALIGNED(4) static const u8 sText_BattleSurpriseFemale[] = _("太可怕了!\n你竟然以这种方式战斗?\p");
ALIGNED(4) static const u8 sText_SwitchedMonsFemale[] = _("你真有\n选择宝可梦的天赋!\p");
static const u8 *const sBattleReactionTexts[GENDER_COUNT][4] = {
{
@ -378,14 +378,14 @@ static const u8 *const sBattleReactionTexts[GENDER_COUNT][4] = {
}
};
ALIGNED(4) static const u8 sText_LearnedSomethingMale[] = _("Oh, I see!\nThis is educational!\p");
ALIGNED(4) static const u8 sText_ThatsFunnyMale[] = _("Don't say anything funny anymore!\nI'm sore from laughing!\p");
ALIGNED(4) static const u8 sText_RandomChatMale1[] = _("Oh?\nSomething like that happened.\p");
ALIGNED(4) static const u8 sText_RandomChatMale2[] = _("Hmhm… What?\nSo is this what you're saying?\p");
ALIGNED(4) static const u8 sText_LearnedSomethingFemale[] = _("Is that right?\nI didn't know that.\p");
ALIGNED(4) static const u8 sText_ThatsFunnyFemale[] = _("Ahaha!\nWhat is that about?\p");
ALIGNED(4) static const u8 sText_RandomChatFemale1[] = _("Yes, that's exactly it!\nThat's what I meant.\p");
ALIGNED(4) static const u8 sText_RandomChatFemale2[] = _("In other words…\nYes! That's right!\p");
ALIGNED(4) static const u8 sText_LearnedSomethingMale[] = _("我知道了!\n受教了!\p");
ALIGNED(4) static const u8 sText_ThatsFunnyMale[] = _("不要再说些搞笑的事了!\n从笑声中我感到痛苦!\p");
ALIGNED(4) static const u8 sText_RandomChatMale1[] = _("O哦?\n那种事发生了。\p");
ALIGNED(4) static const u8 sText_RandomChatMale2[] = _("嗯…什么?\n这就是你说的?\p\p");
ALIGNED(4) static const u8 sText_LearnedSomethingFemale[] = _("那样好吗?\n我不知道。\p");
ALIGNED(4) static const u8 sText_ThatsFunnyFemale[] = _("哈哈!\n关于什么?\p\p");
ALIGNED(4) static const u8 sText_RandomChatFemale1[] = _("就是那样!\n我就是这个意思。\p");
ALIGNED(4) static const u8 sText_RandomChatFemale2[] = _("换言之…\n是!就是那样!\p");
static const u8 *const sChatReactionTexts[GENDER_COUNT][4] = {
{
@ -402,10 +402,10 @@ static const u8 *const sChatReactionTexts[GENDER_COUNT][4] = {
}
};
ALIGNED(4) static const u8 sText_ShowedTrainerCardMale1[] = _("I'm just showing my TRAINER CARD\nas my way of greeting.\p");
ALIGNED(4) static const u8 sText_ShowedTrainerCardMale2[] = _("I hope I get to know you better!\p");
ALIGNED(4) static const u8 sText_ShowedTrainerCardFemale1[] = _("We're showing each other our\nTRAINER CARDS to get acquainted.\p");
ALIGNED(4) static const u8 sText_ShowedTrainerCardFemale2[] = _("Glad to meet you.\nPlease don't be a stranger!\p");
ALIGNED(4) static const u8 sText_ShowedTrainerCardMale1[] = _("展示训练师卡片\n作为我的礼貌。\p");
ALIGNED(4) static const u8 sText_ShowedTrainerCardMale2[] = _("我希望我可以更好地认识你!\p");
ALIGNED(4) static const u8 sText_ShowedTrainerCardFemale1[] = _("我们互相展示\n训练师卡片以求互相认识。\p\p");
ALIGNED(4) static const u8 sText_ShowedTrainerCardFemale2[] = _("很高兴见到你。\n不要认生啊!\p\p");
static const u8 *const sTrainerCardReactionTexts[GENDER_COUNT][2] = {
{
@ -418,10 +418,10 @@ static const u8 *const sTrainerCardReactionTexts[GENDER_COUNT][2] = {
}
};
ALIGNED(4) static const u8 sText_MaleTraded1[] = _("Yeahah!\nI really wanted this POKéMON!\p");
ALIGNED(4) static const u8 sText_MaleTraded2[] = _("Finally, a trade got me that\nPOKéMON I'd wanted a long time.\p");
ALIGNED(4) static const u8 sText_FemaleTraded1[] = _("I'm trading POKéMON right now.\p");
ALIGNED(4) static const u8 sText_FemaleTraded2[] = _("I finally got that POKéMON I\nwanted in a trade!\p");
ALIGNED(4) static const u8 sText_MaleTraded1[] = _("哈哈!\n我确实很想要这只宝可梦!\p\p");
ALIGNED(4) static const u8 sText_MaleTraded2[] = _("最终,一场交换使得\n宝可梦到手,圆了我\n长久的梦。\p");
ALIGNED(4) static const u8 sText_FemaleTraded1[] = _("我正在交换宝可梦。\p");
ALIGNED(4) static const u8 sText_FemaleTraded2[] = _("这只宝可梦是我在\n一场交换中获得的!\p\p");
static const u8 *const sTradeReactionTexts[GENDER_COUNT][4] = {
{
@ -434,37 +434,37 @@ static const u8 *const sTradeReactionTexts[GENDER_COUNT][4] = {
}
};
ALIGNED(4) static const u8 sText_XCheckedTradingBoard[] = _("{STR_VAR_1} checked the\nTRADING BOARD.\p");
ALIGNED(4) static const u8 sText_RegisterMonAtTradingBoard[] = _("Welcome to the TRADING BOARD.\pYou may register your POKéMON\nand offer it up for a trade.\pWould you like to register one of\nyour POKéMON?");
ALIGNED(4) static const u8 sText_TradingBoardInfo[] = _("This TRADING BOARD is used for\n"
"offering a POKéMON for a trade.\p"
"All you need to do is register a\n"
"POKéMON for a trade.\p"
"Another TRAINER may offer a party\n"
"POKéMON in return for the trade.\p"
"We hope you will register POKéMON\n"
"and trade them with many, many\l"
"other TRAINERS.\p"
"Would you like to register one of\nyour POKéMON?");
ALIGNED(4) static const u8 sText_ThankYouForRegistering[] = _("We have registered your POKéMON for\ntrade on the TRADING BOARD.\pThank you for using this service!\p"); // unused
ALIGNED(4) static const u8 sText_NobodyHasRegistered[] = _("Nobody has registered any POKéMON\nfor trade on the TRADING BOARD.\p\n"); // unused
ALIGNED(4) static const u8 sText_ChooseRequestedMonType[] = _("Please choose the type of POKéMON\nthat you would like in the trade.\n");
ALIGNED(4) static const u8 sText_WhichMonWillYouOffer[] = _("Which of your party POKéMON will\nyou offer in trade?\p");
ALIGNED(4) static const u8 sText_RegistrationCanceled[] = _("Registration has been canceled.\p");
ALIGNED(4) static const u8 sText_RegistrationCompleted[] = _("Registration has been completed.\p");
ALIGNED(4) static const u8 sText_TradeCanceled[] = _("The trade has been canceled.\p");
ALIGNED(4) static const u8 sText_CancelRegistrationOfMon[] = _("Cancel the registration of your\nLv. {STR_VAR_2} {STR_VAR_1}?");
ALIGNED(4) static const u8 sText_CancelRegistrationOfEgg[] = _("Cancel the registration of your\nEGG?");
ALIGNED(4) static const u8 sText_RegistrationCanceled2[] = _("The registration has been canceled.\p");
ALIGNED(4) static const u8 sText_TradeTrainersWillBeListed[] = _("TRAINERS wishing to make a trade\nwill be listed."); // unused
ALIGNED(4) static const u8 sText_ChooseTrainerToTradeWith2[] = _("Please choose the TRAINER with whom\nyou would like to trade POKéMON."); // unused
ALIGNED(4) static const u8 sText_AskTrainerToMakeTrade[] = _("Would you like to ask {STR_VAR_1} to\nmake a trade?");
ALIGNED(4) static const u8 sText_AwaitingResponseFromTrainer2[] = _("Awaiting a response from\nthe other TRAINER"); // unused
ALIGNED(4) static const u8 sText_NotRegisteredAMonForTrade[] = _("You have not registered a POKéMON\nfor trading.\p"); // unused
ALIGNED(4) static const u8 sText_DontHaveTypeTrainerWants[] = _("You don't have a {STR_VAR_2}-type\nPOKéMON that {STR_VAR_1} wants.\p");
ALIGNED(4) static const u8 sText_DontHaveEggTrainerWants[] = _("You don't have an EGG that\n{STR_VAR_1} wants.\p");
ALIGNED(4) static const u8 sText_PlayerCantTradeForYourMon[] = _("{STR_VAR_1} can't make a trade for\nyour POKéMON right now.\p");
ALIGNED(4) static const u8 sText_CantTradeForPartnersMon[] = _("You can't make a trade for\n{STR_VAR_1}'s POKéMON right now.\p");
ALIGNED(4) static const u8 sText_XCheckedTradingBoard[] = _("{STR_VAR_1}检查了\n交换平台。\p");
ALIGNED(4) static const u8 sText_RegisterMonAtTradingBoard[] = _("欢迎来到交换平台。\p你需要登记宝可梦\n来进行交换。\p你现在需要登记\n你的精灵宝可梦吗?");
ALIGNED(4) static const u8 sText_TradingBoardInfo[] = _("交换平台是用来\n"
"提供宝可梦进行交换的。\p"
"你所做的就是把\n"
"宝可梦进行登记。\p"
"其他训练师可能会提供\n"
"你想要交换的宝可梦。\p"
"我们希望你可以登记宝可梦\n"
"用来交换给\l"
"更多更多其他训练师。\p"
"你现在需要登记\n你的宝可梦吗?");
ALIGNED(4) static const u8 sText_ThankYouForRegistering[] = _("我们已经登记了你的宝可梦\n放在交换平台用来交换。\p感谢使用这项服务\p"); // unused
ALIGNED(4) static const u8 sText_NobodyHasRegistered[] = _("没人登记宝可梦\n在交换平台用来交换。\p\n"); // unused
ALIGNED(4) static const u8 sText_ChooseRequestedMonType[] = _("请选择宝可梦属性\n用于交换。\n");
ALIGNED(4) static const u8 sText_WhichMonWillYouOffer[] = _("你将会拿什么宝可梦\n用来交换呢?\p");
ALIGNED(4) static const u8 sText_RegistrationCanceled[] = _("登记取消。\p");
ALIGNED(4) static const u8 sText_RegistrationCompleted[] = _("登记完成。\p");
ALIGNED(4) static const u8 sText_TradeCanceled[] = _("交换被取消了。\p");
ALIGNED(4) static const u8 sText_CancelRegistrationOfMon[] = _("取消登记你的\n等级{STR_VAR_2}的{STR_VAR_1}?");
ALIGNED(4) static const u8 sText_CancelRegistrationOfEgg[] = _("取消登记你的蛋??");
ALIGNED(4) static const u8 sText_RegistrationCanceled2[] = _("登记取消。\p");
ALIGNED(4) static const u8 sText_TradeTrainersWillBeListed[] = _("训练师想要进行的交换\n会用表格列出来。"); // unused
ALIGNED(4) static const u8 sText_ChooseTrainerToTradeWith2[] = _("请选择训练师\n用来交换宝可梦。"); // unused
ALIGNED(4) static const u8 sText_AskTrainerToMakeTrade[] = _("你想要和{STR_VAR_1}\n进行交换?");
ALIGNED(4) static const u8 sText_AwaitingResponseFromTrainer2[] = _("等待训练师\n的回复"); // unused
ALIGNED(4) static const u8 sText_NotRegisteredAMonForTrade[] = _("还没有登记宝可梦\n用于交换。\p\p"); // unused
ALIGNED(4) static const u8 sText_DontHaveTypeTrainerWants[] = _("你还没有{STR_VAR_2}-type\nPOKéMON that {STR_VAR_1} wants.\p");
ALIGNED(4) static const u8 sText_DontHaveEggTrainerWants[] = _("你还没有蛋是\n{STR_VAR_1}需要的。\p");
ALIGNED(4) static const u8 sText_PlayerCantTradeForYourMon[] = _("{STR_VAR_1}还不能和你交换\n你的宝可梦。\p");
ALIGNED(4) static const u8 sText_CantTradeForPartnersMon[] = _("你还不能交换\n{STR_VAR_1}的宝可梦呢。\p");
// Unused
static const u8 *const sCantTradeMonTexts[] = {
@ -472,28 +472,28 @@ static const u8 *const sCantTradeMonTexts[] = {
sText_CantTradeForPartnersMon
};
ALIGNED(4) static const u8 sText_TradeOfferRejected[] = _("Your trade offer was rejected.\p");
ALIGNED(4) static const u8 sText_EggTrade[] = _("EGG TRADE");
ALIGNED(4) static const u8 sText_ChooseJoinCancel[] = _("{DPAD_UPDOWN}CHOOSE {A_BUTTON}JOIN {B_BUTTON}CANCEL");
ALIGNED(4) static const u8 sText_ChooseTrainer[] = _("Please choose a TRAINER.");
ALIGNED(4) static const u8 sText_ChooseTrainerSingleBattle[] = _("Please choose a TRAINER for\na SINGLE BATTLE.");
ALIGNED(4) static const u8 sText_ChooseTrainerDoubleBattle[] = _("Please choose a TRAINER for\na DOUBLE BATTLE.");
ALIGNED(4) static const u8 sText_ChooseLeaderMultiBattle[] = _("Please choose the LEADER\nfor a MULTI BATTLE.");
ALIGNED(4) static const u8 sText_ChooseTrainerToTradeWith[] = _("Please choose the TRAINER to\ntrade with.");
ALIGNED(4) static const u8 sText_ChooseTrainerToShareWonderCards[] = _("Please choose the TRAINER who is\nsharing WONDER CARDS.");
ALIGNED(4) static const u8 sText_ChooseTrainerToShareWonderNews[] = _("Please choose the TRAINER who is\nsharing WONDER NEWS.");
ALIGNED(4) static const u8 sText_ChooseLeaderPokemonJump[] = _("Jump with mini POKéMON!\nPlease choose the LEADER.");
ALIGNED(4) static const u8 sText_ChooseLeaderBerryCrush[] = _("BERRY CRUSH!\nPlease choose the LEADER.");
ALIGNED(4) static const u8 sText_ChooseLeaderBerryPicking[] = _("DODRIO BERRY-PICKING!\nPlease choose the LEADER.");
ALIGNED(4) static const u8 sText_ChooseLeaderBerryBlender[] = _("BERRY BLENDER!\nPlease choose the LEADER.");
ALIGNED(4) static const u8 sText_ChooseLeaderRecordCorner[] = _("RECORD CORNER!\nPlease choose the LEADER.");
ALIGNED(4) static const u8 sText_ChooseLeaderCoolContest[] = _("COOLNESS CONTEST!\nPlease choose the LEADER.");
ALIGNED(4) static const u8 sText_ChooseLeaderBeautyContest[] = _("BEAUTY CONTEST!\nPlease choose the LEADER.");
ALIGNED(4) static const u8 sText_ChooseLeaderCuteContest[] = _("CUTENESS CONTEST!\nPlease choose the LEADER.");
ALIGNED(4) static const u8 sText_ChooseLeaderSmartContest[] = _("SMARTNESS CONTEST!\nPlease choose the LEADER.");
ALIGNED(4) static const u8 sText_ChooseLeaderToughContest[] = _("TOUGHNESS CONTEST!\nPlease choose the LEADER.");
ALIGNED(4) static const u8 sText_ChooseLeaderBattleTowerLv50[] = _("BATTLE TOWER LEVEL 50!\nPlease choose the LEADER.");
ALIGNED(4) static const u8 sText_ChooseLeaderBattleTowerOpenLv[] = _("BATTLE TOWER OPEN LEVEL!\nPlease choose the LEADER.");
ALIGNED(4) static const u8 sText_TradeOfferRejected[] = _("你的交换请求被拒绝。\p");
ALIGNED(4) static const u8 sText_EggTrade[] = _("蛋的交换");
ALIGNED(4) static const u8 sText_ChooseJoinCancel[] = _("{DPAD_UPDOWN}选择{A_BUTTON}加入{B_BUTTON}取消");
ALIGNED(4) static const u8 sText_ChooseTrainer[] = _("请选择一名训练师。");
ALIGNED(4) static const u8 sText_ChooseTrainerSingleBattle[] = _("请选择一名训练师来进行\n单打对战。");
ALIGNED(4) static const u8 sText_ChooseTrainerDoubleBattle[] = _("请选择一名训练师来进行\n双打对战。");
ALIGNED(4) static const u8 sText_ChooseLeaderMultiBattle[] = _("请选择队长\n进行多人对战。");
ALIGNED(4) static const u8 sText_ChooseTrainerToTradeWith[] = _("请选择训练师来进行\n交换。");
ALIGNED(4) static const u8 sText_ChooseTrainerToShareWonderCards[] = _("请选择一名训练师\n可以共享奇异卡片。");
ALIGNED(4) static const u8 sText_ChooseTrainerToShareWonderNews[] = _("请选择一名训练师\n可以共享奇异新闻。");
ALIGNED(4) static const u8 sText_ChooseLeaderPokemonJump[] = _("和宝可梦一起跳!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderBerryCrush[] = _("混合树果!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderBerryPicking[] = _("嘟嘟利摘树果!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderBerryBlender[] = _("树果混合机!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderRecordCorner[] = _("联机中心!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderCoolContest[] = _("帅气组!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderBeautyContest[] = _("美丽组!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderCuteContest[] = _("可爱组!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderSmartContest[] = _("聪明组!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderToughContest[] = _("强壮组!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderBattleTowerLv50[] = _("等级50对战塔\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderBattleTowerOpenLv[] = _("对战塔!\n请选择队长。");
static const u8 *const sChooseTrainerTexts[NUM_LINK_GROUP_TYPES] =
{
@ -521,53 +521,53 @@ static const u8 *const sChooseTrainerTexts[NUM_LINK_GROUP_TYPES] =
[LINK_GROUP_BATTLE_TOWER_OPEN] = sText_ChooseLeaderBattleTowerOpenLv
};
ALIGNED(4) static const u8 sText_SearchingForWirelessSystemWait[] = _("Searching for a WIRELESS\nCOMMUNICATION SYSTEM. Wait...");
ALIGNED(4) static const u8 sText_MustHaveTwoMonsForDoubleBattle[] = _("For a DOUBLE BATTLE, you must have\nat least two POKéMON.\p"); // Unused
ALIGNED(4) static const u8 sText_AwaitingPlayersResponse[] = _("Awaiting {STR_VAR_1}'s response");
ALIGNED(4) static const u8 sText_PlayerHasBeenAskedToRegisterYouPleaseWait[] = _("{STR_VAR_1} has been asked to register\nyou as a member. Please wait.");
ALIGNED(4) static const u8 sText_AwaitingResponseFromWirelessSystem[] = _("Awaiting a response from the\nWIRELESS COMMUNICATION SYSTEM.");
ALIGNED(4) static const u8 sText_PleaseWaitForOtherTrainersToGather[] = _("Please wait for other TRAINERS to\ngather and get ready."); // Unused
ALIGNED(4) static const u8 sText_NoCardsSharedRightNow[] = _("No CARDS appear to be shared \nright now.");
ALIGNED(4) static const u8 sText_NoNewsSharedRightNow[] = _("No NEWS appears to be shared\nright now.");
ALIGNED(4) static const u8 sText_SearchingForWirelessSystemWait[] = _("搜索一个无线通讯系统。\n等待…");
ALIGNED(4) static const u8 sText_MustHaveTwoMonsForDoubleBattle[] = _("参加双打对战,你至少要有\n两只宝可梦。\p"); // Unused
ALIGNED(4) static const u8 sText_AwaitingPlayersResponse[] = _("等待{STR_VAR_1}的回复");
ALIGNED(4) static const u8 sText_PlayerHasBeenAskedToRegisterYouPleaseWait[] = _("{STR_VAR_1}想要登记你\n为成员。请稍后。");
ALIGNED(4) static const u8 sText_AwaitingResponseFromWirelessSystem[] = _("等待\n从无线通讯系统来的回复。");
ALIGNED(4) static const u8 sText_PleaseWaitForOtherTrainersToGather[] = _("请等待其他训练师\n加入并准备完毕。"); // Unused
ALIGNED(4) static const u8 sText_NoCardsSharedRightNow[] = _("好像没有卡片\n正在共享。");
ALIGNED(4) static const u8 sText_NoNewsSharedRightNow[] = _("好像没有新闻\n正在共享。");
static const u8 *const sNoWonderSharedTexts[] = {
sText_NoCardsSharedRightNow,
sText_NoNewsSharedRightNow
};
ALIGNED(4) static const u8 sText_Battle[] = _("BATTLE");
ALIGNED(4) static const u8 sText_Chat2[] = _("CHAT");
ALIGNED(4) static const u8 sText_Greetings[] = _("GREETINGS");
ALIGNED(4) static const u8 sText_Exit[] = _("EXIT");
ALIGNED(4) static const u8 sText_Exit2[] = _("EXIT");
ALIGNED(4) static const u8 sText_Info[] = _("INFO");
ALIGNED(4) static const u8 sText_NameWantedOfferLv[] = _("NAME{CLEAR_TO 60}WANTED{CLEAR_TO 110}OFFER{CLEAR_TO 198}LV.");
ALIGNED(4) static const u8 sText_SingleBattle[] = _("SINGLE BATTLE");
ALIGNED(4) static const u8 sText_DoubleBattle[] = _("DOUBLE BATTLE");
ALIGNED(4) static const u8 sText_MultiBattle[] = _("MULTI BATTLE");
ALIGNED(4) static const u8 sText_PokemonTrades[] = _("POKéMON TRADES");
ALIGNED(4) static const u8 sText_Chat[] = _("CHAT");
ALIGNED(4) static const u8 sText_Cards[] = _("CARDS");
ALIGNED(4) static const u8 sText_WonderCards[] = _("WONDER CARDS");
ALIGNED(4) static const u8 sText_WonderNews[] = _("WONDER NEWS");
ALIGNED(4) static const u8 sText_PokemonJump[] = _("POKéMON JUMP");
ALIGNED(4) static const u8 sText_BerryCrush[] = _("BERRY CRUSH");
ALIGNED(4) static const u8 sText_BerryPicking[] = _("BERRY-PICKING");
ALIGNED(4) static const u8 sText_Search[] = _("SEARCH");
ALIGNED(4) static const u8 sText_BerryBlender[] = _("BERRY BLENDER");
ALIGNED(4) static const u8 sText_RecordCorner[] = _("RECORD CORNER");
ALIGNED(4) static const u8 sText_CoolContest[] = _("COOL CONTEST");
ALIGNED(4) static const u8 sText_BeautyContest[] = _("BEAUTY CONTEST");
ALIGNED(4) static const u8 sText_CuteContest[] = _("CUTE CONTEST");
ALIGNED(4) static const u8 sText_SmartContest[] = _("SMART CONTEST");
ALIGNED(4) static const u8 sText_ToughContest[] = _("TOUGH CONTEST");
ALIGNED(4) static const u8 sText_BattleTowerLv50[] = _("BATTLE TOWER LV. 50");
ALIGNED(4) static const u8 sText_BattleTowerOpenLv[] = _("BATTLE TOWER OPEN LEVEL");
ALIGNED(4) static const u8 sText_ItsNormalCard[] = _("It's a NORMAL CARD.");
ALIGNED(4) static const u8 sText_ItsBronzeCard[] = _("It's a BRONZE CARD!");
ALIGNED(4) static const u8 sText_ItsCopperCard[] = _("It's a COPPER CARD!");
ALIGNED(4) static const u8 sText_ItsSilverCard[] = _("It's a SILVER CARD!");
ALIGNED(4) static const u8 sText_ItsGoldCard[] = _("It's a GOLD CARD!");
ALIGNED(4) static const u8 sText_Battle[] = _("宝可梦对战");
ALIGNED(4) static const u8 sText_Chat2[] = _("聊天");
ALIGNED(4) static const u8 sText_Greetings[] = _("问候");
ALIGNED(4) static const u8 sText_Exit[] = _("退出");
ALIGNED(4) static const u8 sText_Exit2[] = _("退出");
ALIGNED(4) static const u8 sText_Info[] = _("说明");
ALIGNED(4) static const u8 sText_NameWantedOfferLv[] = _("名字{CLEAR_TO 60}需求{CLEAR_TO 110}提供{CLEAR_TO 198}等级");
ALIGNED(4) static const u8 sText_SingleBattle[] = _("单打对战");
ALIGNED(4) static const u8 sText_DoubleBattle[] = _("双打对战");
ALIGNED(4) static const u8 sText_MultiBattle[] = _("多人对战");
ALIGNED(4) static const u8 sText_PokemonTrades[] = _("宝可梦交换");
ALIGNED(4) static const u8 sText_Chat[] = _("聊天");
ALIGNED(4) static const u8 sText_Cards[] = _("卡片");
ALIGNED(4) static const u8 sText_WonderCards[] = _("奇异卡片");
ALIGNED(4) static const u8 sText_WonderNews[] = _("奇异新闻");
ALIGNED(4) static const u8 sText_PokemonJump[] = _("宝可梦跳跃");
ALIGNED(4) static const u8 sText_BerryCrush[] = _("树果混合");
ALIGNED(4) static const u8 sText_BerryPicking[] = _("摘树果");
ALIGNED(4) static const u8 sText_Search[] = _("搜索");
ALIGNED(4) static const u8 sText_BerryBlender[] = _("树果混合机");
ALIGNED(4) static const u8 sText_RecordCorner[] = _("联机中心");
ALIGNED(4) static const u8 sText_CoolContest[] = _("帅气组");
ALIGNED(4) static const u8 sText_BeautyContest[] = _("美丽组");
ALIGNED(4) static const u8 sText_CuteContest[] = _("可爱组");
ALIGNED(4) static const u8 sText_SmartContest[] = _("聪明组");
ALIGNED(4) static const u8 sText_ToughContest[] = _("强壮组");
ALIGNED(4) static const u8 sText_BattleTowerLv50[] = _("等级50对战塔");
ALIGNED(4) static const u8 sText_BattleTowerOpenLv[] = _("对战塔");
ALIGNED(4) static const u8 sText_ItsNormalCard[] = _("这是普通卡。");
ALIGNED(4) static const u8 sText_ItsBronzeCard[] = _("这是蓝钴卡!");
ALIGNED(4) static const u8 sText_ItsCopperCard[] = _("这是青铜卡!");
ALIGNED(4) static const u8 sText_ItsSilverCard[] = _("这是白银卡");
ALIGNED(4) static const u8 sText_ItsGoldCard[] = _("这是黄金卡!");
static const u8 *const sCardColorTexts[] = {
sText_ItsNormalCard,
@ -577,17 +577,17 @@ static const u8 *const sCardColorTexts[] = {
sText_ItsGoldCard
};
ALIGNED(4) static const u8 sText_TrainerCardInfoPage1[] = _("This is {DYNAMIC 0} {DYNAMIC 1}'s\nTRAINER CARD…\l{DYNAMIC 2}\pPOKéDEX: {DYNAMIC 3}\nTIME: {DYNAMIC 4}:{DYNAMIC 5}\p");
ALIGNED(4) static const u8 sText_TrainerCardInfoPage2[] = _("BATTLES: WINS: {DYNAMIC 0} LOSSES: {DYNAMIC 2}\nTRADES: {DYNAMIC 3}\p“{DYNAMIC 4} {DYNAMIC 5}\n{DYNAMIC 6} {DYNAMIC 7}”\p");
ALIGNED(4) static const u8 sText_GladToMeetYouMale[] = _("{DYNAMIC 1}: Glad to have met you!{PAUSE 60}");
ALIGNED(4) static const u8 sText_GladToMeetYouFemale[] = _("{DYNAMIC 1}: Glad to meet you!{PAUSE 60}");
ALIGNED(4) static const u8 sText_TrainerCardInfoPage1[] = _("这是{DYNAMIC 0} {DYNAMIC 1}'s\n训练师卡片…\l{DYNAMIC 2}\p图鉴{DYNAMIC 3}\n时间:{DYNAMIC 4}:{DYNAMIC 5}\p");
ALIGNED(4) static const u8 sText_TrainerCardInfoPage2[] = _(" 对战:胜:{DYNAMIC 0} 负:{DYNAMIC 2}\n交换次数:{DYNAMIC 3}\p“{DYNAMIC 4} {DYNAMIC 5}\n{DYNAMIC 6} {DYNAMIC 7}”\p");
ALIGNED(4) static const u8 sText_GladToMeetYouMale[] = _("{DYNAMIC 1}: 很高兴认识了你!{PAUSE 60}");
ALIGNED(4) static const u8 sText_GladToMeetYouFemale[] = _("{DYNAMIC 1}: 很高兴认识你!{PAUSE 60}");
static const u8 *const sGladToMeetYouTexts[GENDER_COUNT] = {
sText_GladToMeetYouMale,
sText_GladToMeetYouFemale
};
ALIGNED(4) static const u8 sText_FinishedCheckingPlayersTrainerCard[] = _("Finished checking {DYNAMIC 1}'s\nTRAINER CARD.{PAUSE 60}");
ALIGNED(4) static const u8 sText_FinishedCheckingPlayersTrainerCard[] = _("{DYNAMIC 1}的训练师卡片\n确认完毕。{PAUSE 60}");
static const u8 *const sLinkGroupActivityNameTexts[] = {
[ACTIVITY_NONE] = sText_EmptyString,

View File

@ -850,7 +850,7 @@ void UpdateSpeciesSpritePSS(struct BoxPokemon *boxmon);
static const u8 gText_JustOnePkmn[] = _("这样就没有可战斗的宝可梦了!");
static const u8 gText_PartyFull[] = _("同行的宝可梦已经满了!");
static const u8 gText_Box[] = _("");
static const u8 gText_Box[] = _("");
struct {
const u8 *text;
@ -1038,29 +1038,29 @@ static const struct SpriteTemplate sSpriteTemplate_DisplayMon =
.callback = SpriteCallbackDummy,
};
static const u8 gText_PkmnIsSelected[] = _("对{DYNAMIC 0}做什么");
static const u8 gText_PkmnIsSelected[] = _("拿{DYNAMIC 0}怎么办");
static const struct StorageMessage sMessages[] =
{
[MSG_EXIT_BOX] = {COMPOUND_STRING("要停止对子的操作吗?"), MSG_VAR_NONE},
[MSG_WHAT_YOU_DO] = {COMPOUND_STRING("要对这个子做什么?"), MSG_VAR_NONE},
[MSG_EXIT_BOX] = {COMPOUND_STRING("要停止对子的操作吗?"), MSG_VAR_NONE},
[MSG_WHAT_YOU_DO] = {COMPOUND_STRING("要对这个子做什么?"), MSG_VAR_NONE},
[MSG_PICK_A_THEME] = {COMPOUND_STRING("要选择哪一种壁纸主题?"), MSG_VAR_NONE},
[MSG_PICK_A_WALLPAPER] = {COMPOUND_STRING("要选择哪一种壁纸?"), MSG_VAR_NONE},
[MSG_IS_SELECTED] = {gText_PkmnIsSelected, MSG_VAR_MON_NAME_1},
[MSG_JUMP_TO_WHICH_BOX] = {COMPOUND_STRING("要跳转到哪个子?"), MSG_VAR_NONE},
[MSG_DEPOSIT_IN_WHICH_BOX] = {COMPOUND_STRING("要存放到哪个子中?"), MSG_VAR_NONE},
[MSG_JUMP_TO_WHICH_BOX] = {COMPOUND_STRING("要跳转到哪个子?"), MSG_VAR_NONE},
[MSG_DEPOSIT_IN_WHICH_BOX] = {COMPOUND_STRING("要存放到哪个子中?"), MSG_VAR_NONE},
[MSG_WAS_DEPOSITED] = {COMPOUND_STRING("存放了{DYNAMIC 0}"), MSG_VAR_MON_NAME_1},
[MSG_BOX_IS_FULL] = {COMPOUND_STRING("这个子已经满了!"), MSG_VAR_NONE},
[MSG_BOX_IS_FULL] = {COMPOUND_STRING("这个子已经满了!"), MSG_VAR_NONE},
[MSG_RELEASE_POKE] = {COMPOUND_STRING("真的要放生吗?"), MSG_VAR_NONE},
[MSG_WAS_RELEASED] = {COMPOUND_STRING("已将{DYNAMIC 0}放生了!"), MSG_VAR_RELEASE_MON_1},
[MSG_BYE_BYE] = {COMPOUND_STRING("再见了!{DYNAMIC 0}"), MSG_VAR_RELEASE_MON_3},
[MSG_MARK_POKE] = {COMPOUND_STRING("请选择标记。"), MSG_VAR_NONE},
[MSG_LAST_POKE] = {COMPOUND_STRING("没有可战斗的宝可梦了!"), MSG_VAR_NONE},
[MSG_LAST_POKE] = {COMPOUND_STRING("这样就没有可战斗的宝可梦了!"), MSG_VAR_NONE},
[MSG_PARTY_FULL] = {gText_YourPartysFull, MSG_VAR_NONE},
[MSG_HOLDING_POKE] = {COMPOUND_STRING("正在抓着宝可梦!"), MSG_VAR_NONE},
[MSG_WHICH_ONE_WILL_TAKE] = {COMPOUND_STRING("请选择要带走的宝可梦!"), MSG_VAR_NONE},
[MSG_CANT_RELEASE_EGG] = {COMPOUND_STRING("你不能放生宝可梦蛋"), MSG_VAR_NONE},
[MSG_CONTINUE_BOX] = {COMPOUND_STRING("要继续对子的操作吗?"), MSG_VAR_NONE},
[MSG_CANT_RELEASE_EGG] = {COMPOUND_STRING("无法将蛋放生"), MSG_VAR_NONE},
[MSG_CONTINUE_BOX] = {COMPOUND_STRING("要继续对子的操作吗?"), MSG_VAR_NONE},
[MSG_CAME_BACK] = {COMPOUND_STRING("{DYNAMIC 0}回来了!"), MSG_VAR_MON_NAME_1},
[MSG_WORRIED] = {COMPOUND_STRING("它是在担心你吗?"), MSG_VAR_NONE},
[MSG_SURPRISE] = {COMPOUND_STRING("… … … … !"), MSG_VAR_NONE},
@ -8004,7 +8004,7 @@ static const u8 *const sMenuTexts[] =
{
[MENU_CANCEL] = COMPOUND_STRING("取消"),
[MENU_STORE] = COMPOUND_STRING("寄放"),
[MENU_WITHDRAW] = COMPOUND_STRING("同行"),
[MENU_WITHDRAW] = COMPOUND_STRING("带走"),
[MENU_MOVE] = COMPOUND_STRING("移动"),
[MENU_SHIFT] = COMPOUND_STRING("交换"),
[MENU_PLACE] = COMPOUND_STRING("放下"),
@ -8017,7 +8017,7 @@ static const u8 *const sMenuTexts[] =
[MENU_TAKE] = COMPOUND_STRING("取下"),
[MENU_GIVE] = gPCText_Give,
[MENU_GIVE_2] = gPCText_Give,
[MENU_SWITCH] = COMPOUND_STRING("调换"),
[MENU_SWITCH] = COMPOUND_STRING("移动"),
[MENU_BAG] = COMPOUND_STRING("放回包包"),
[MENU_INFO] = COMPOUND_STRING("查看信息"),
[MENU_SCENERY_1] = COMPOUND_STRING("风景1"),

View File

@ -1095,7 +1095,7 @@ const u8 gText_FromSpace[] = _("从");
const u8 gText_MixingRecords[] = _("混合存档中…");
const u8 gText_RecordMixingComplete[] = _("存档混合完成。\n感谢您的等待。");
const u8 gText_YourName[] = _("你的名字?");
const u8 gText_BoxName[] = _("子的名字?");
const u8 gText_BoxName[] = _("子的名字?");
const u8 gText_PkmnsNickname[] = _("{STR_VAR_1}的昵称?");
const u8 gText_TellHimTheWords[] = _("告诉他那个单词。");
const u8 gText_MoveOkBack[] = _("{DPAD_NONE}移动 {A_BUTTON}确认 {B_BUTTON}返回");

View File

@ -57,26 +57,3 @@ SINGLE_BATTLE_TEST("Embody Aspect activates when it's no longer effected by Neut
MESSAGE("The opposing Ogerpon's Embody Aspect raised its Speed!");
}
}
SINGLE_BATTLE_TEST("Embody Aspect raises Speed only once per battle")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_OGERPON_TEAL_TERA) { Ability(ABILITY_EMBODY_ASPECT_TEAL_MASK); }
OPPONENT(SPECIES_WYNAUT);
} WHEN {
TURN { SWITCH(opponent, 1); }
TURN { SWITCH(opponent, 0); }
} SCENE {
ABILITY_POPUP(opponent, ABILITY_EMBODY_ASPECT_TEAL_MASK);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("The opposing Ogerpon's Embody Aspect raised its Speed!");
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_EMBODY_ASPECT_TEAL_MASK);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("The opposing Ogerpon's Embody Aspect raised its Speed!");
}
} THEN {
EXPECT_EQ(opponent->statStages[STAT_SPEED], DEFAULT_STAT_STAGE);
}
}

View File

@ -22,3 +22,50 @@ SINGLE_BATTLE_TEST("Illusion can only imitate Normal Form terapagos")
TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_TACKLE); }
}
}
SINGLE_BATTLE_TEST("Illusion breaks if the target faints")
{
GIVEN {
PLAYER(SPECIES_ZOROARK) { HP(1); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(opponent, MOVE_TACKLE); SEND_OUT(player, 1); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
HP_BAR(player);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ILLUSION_OFF, player);
MESSAGE("Zoroark's illusion wore off!");
}
}
SINGLE_BATTLE_TEST("Illusion breaks if the attacker faints")
{
GIVEN {
ASSUME(GetMoveEffect(MOVE_FINAL_GAMBIT) == EFFECT_FINAL_GAMBIT);
PLAYER(SPECIES_ZOROARK) { HP(1); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_FINAL_GAMBIT); SEND_OUT(player, 1); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_FINAL_GAMBIT, player);
HP_BAR(player);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ILLUSION_OFF, player);
MESSAGE("Zoroark's illusion wore off!");
}
}
SINGLE_BATTLE_TEST("Illusion cannot imitate if the user is on the last slot")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_ZOROARK);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { SWITCH(player, 1); }
} THEN {
EXPECT_EQ(player->species, SPECIES_ZOROARK);
EXPECT_EQ(gBattleStruct->illusion[0].on, FALSE); // Battler is Zoroark and not Illusioned
}
}

View File

@ -860,3 +860,34 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI considers Focus Sash when det
TURN { MOVE(player, MOVE_AIR_SLASH); EXPECT_MOVE(opponent, MOVE_FLAMETHROWER); }
}
}
AI_SINGLE_BATTLE_TEST("AI sees popped Air Balloon")
{
GIVEN {
ASSUME(ItemId_GetHoldEffect(ITEM_AIR_BALLOON) == HOLD_EFFECT_AIR_BALLOON);
ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT);
PLAYER(SPECIES_TORCHIC) { Item(ITEM_AIR_BALLOON); Moves(MOVE_TACKLE); }
OPPONENT(SPECIES_GEODUDE) { Moves(MOVE_TACKLE, MOVE_EARTHQUAKE); }
} WHEN {
TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_TACKLE); }
TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); }
}
}
AI_SINGLE_BATTLE_TEST("AI sees popped Air Balloon after Air Balloon mon switches out and back in")
{
GIVEN {
ASSUME(ItemId_GetHoldEffect(ITEM_AIR_BALLOON) == HOLD_EFFECT_AIR_BALLOON);
ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT);
PLAYER(SPECIES_TORCHIC) { Item(ITEM_AIR_BALLOON); Moves(MOVE_TACKLE); }
PLAYER(SPECIES_TORCHIC) { Item(ITEM_AIR_BALLOON); Moves(MOVE_TACKLE); }
OPPONENT(SPECIES_GEODUDE) { Moves(MOVE_TACKLE, MOVE_EARTHQUAKE); }
} WHEN {
TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_TACKLE); }
TURN { SWITCH(player, 1); EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); }
TURN { SWITCH(player, 0); EXPECT_MOVE(opponent, MOVE_TACKLE); }
TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); SEND_OUT(player, 1); }
}
}

View File

@ -68,6 +68,29 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamax Level increases HP and max HP multipliers b
}
}
SINGLE_BATTLE_TEST("Dynamax: Dynamax expires when fainted")
{
u32 dynamax;
PARAMETRIZE { dynamax = GIMMICK_NONE; }
PARAMETRIZE { dynamax = GIMMICK_DYNAMAX; }
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_TACKLE, gimmick: dynamax); MOVE(opponent, MOVE_TACKLE); }
} SCENE {
if (dynamax)
MESSAGE("Wobbuffet used Max Strike!");
else
MESSAGE("Wobbuffet used Tackle!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
HP_BAR(player);
if (dynamax) // Expect to have visual reversion when fainting.
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
MESSAGE("Wobbuffet fainted!");
}
}
SINGLE_BATTLE_TEST("Dynamax: Dynamax expires after three turns", u16 hp)
{
u32 dynamax;

View File

@ -0,0 +1,80 @@
#include "global.h"
#include "test/battle.h"
ASSUMPTIONS
{
ASSUME(gItemsInfo[ITEM_BIG_ROOT].holdEffect == HOLD_EFFECT_BIG_ROOT);
}
SINGLE_BATTLE_TEST("Big Root increases healing from absorbing moves", s16 damage, s16 heal)
{
u32 item;
PARAMETRIZE { item = ITEM_NONE; }
PARAMETRIZE { item = ITEM_BIG_ROOT; }
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { HP(200); Item(item); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_ABSORB); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_ABSORB, player);
HP_BAR(opponent, captureDamage: &results[i].damage);
HP_BAR(player, captureDamage: &results[i].heal);
} FINALLY {
EXPECT_EQ(results[0].damage, results[1].damage); // Damage is unaffected
EXPECT_MUL_EQ(results[1].heal, Q_4_12(5234 / 4096), results[0].heal);
}
}
SINGLE_BATTLE_TEST("Big Root increases the damage restored from Leech Seed, Ingrain and Aqua Ring", s16 heal, s16 damage)
{
KNOWN_FAILING;
u32 item;
u32 move;
PARAMETRIZE { item = ITEM_NONE; move = MOVE_LEECH_SEED; }
PARAMETRIZE { item = ITEM_BIG_ROOT; move = MOVE_LEECH_SEED; }
PARAMETRIZE { item = ITEM_NONE; move = MOVE_INGRAIN; }
PARAMETRIZE { item = ITEM_BIG_ROOT; move = MOVE_INGRAIN; }
PARAMETRIZE { item = ITEM_NONE; move = MOVE_AQUA_RING; }
PARAMETRIZE { item = ITEM_BIG_ROOT; move = MOVE_AQUA_RING; }
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { HP(200); Item(item); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, move); }
} SCENE {
if (move == MOVE_LEECH_SEED)
HP_BAR(opponent, captureDamage: &results[i].damage);
HP_BAR(player, captureDamage: &results[i].heal);
} FINALLY {
EXPECT_EQ(results[0].damage, results[1].damage); // Damage is unaffected
EXPECT_MUL_EQ(results[1].heal, Q_4_12(5234 / 4096), results[0].heal);
EXPECT_MUL_EQ(results[3].heal, Q_4_12(5234 / 4096), results[2].heal);
EXPECT_MUL_EQ(results[5].heal, Q_4_12(5234 / 4096), results[4].heal);
}
}
SINGLE_BATTLE_TEST("Big Root increases damage from absorbing Liquid Ooze", s16 damage)
{
u32 item;
PARAMETRIZE { item = ITEM_NONE; }
PARAMETRIZE { item = ITEM_BIG_ROOT; }
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { HP(200); Item(item); }
OPPONENT(SPECIES_TENTACOOL) { Ability(ABILITY_LIQUID_OOZE); }
} WHEN {
TURN { MOVE(player, MOVE_ABSORB); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_ABSORB, player);
HP_BAR(player, captureDamage: &results[i].damage);
} FINALLY {
EXPECT_MUL_EQ(results[1].damage, Q_4_12(5234 / 4096), results[0].damage);
}
}

View File

@ -277,11 +277,8 @@ DOUBLE_BATTLE_TEST("Ally switch swaps opposing sky drop targets if partner is be
}
}
// Test passes in isolation but fails on CI
/*
DOUBLE_BATTLE_TEST("Ally Switch swaps Illusion data")
{
KNOWN_FAILING; // Test passes in isolation but fails on CI
GIVEN {
ASSUME(GetMoveEffect(MOVE_ALLY_SWITCH) == EFFECT_ALLY_SWITCH);
PLAYER(SPECIES_HOOPA);
@ -295,7 +292,6 @@ DOUBLE_BATTLE_TEST("Ally Switch swaps Illusion data")
EXPECT(&gPlayerParty[2] == gBattleStruct->illusion[0].mon);
}
}
*/
// Triple Battles required to test
//TO_DO_BATTLE_TEST("Ally Switch fails if the user is in the middle of the field in a Triple Battle");