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 call FireSpinEffect
restorebg restorebg
waitbgfadeout waitbgfadeout
setarg 7, 0xFFFF setarg 7, 0xFFF
waitbgfadein waitbgfadein
clearmonbg ANIM_DEF_PARTNER clearmonbg ANIM_DEF_PARTNER
blendoff blendoff
@ -28313,7 +28313,7 @@ Status_MagmaStorm:
call FireSpinEffect call FireSpinEffect
restorebg restorebg
waitbgfadeout waitbgfadeout
setarg 7, 0xFFFF setarg 7, 0xFFF
waitbgfadein waitbgfadein
stopsound stopsound
clearmonbg ANIM_DEF_PARTNER clearmonbg ANIM_DEF_PARTNER

View File

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

View File

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

View File

@ -19,7 +19,7 @@
#define DEXNAV_CHAIN_MAX 100 // maximum chain value #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_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_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 #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 #ifndef GUARD_CONSTANTS_BATTLE_AI_H
#define 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 // 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. // 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. #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_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_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_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_DARK_SCROLL, // interacts with Scroll of Darkness
EVO_WATER_SCROLL, // interacts with Scroll of Waters EVO_WATER_SCROLL, // interacts with Scroll of Waters
EVO_ITEM_NIGHT, // specified item is used on Pokémon, is night 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_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_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_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_AIRBALLOONPOP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s Air Balloon popped!"),
[STRINGID_INCINERATEBURN] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}的{B_LAST_ITEM} was burnt up!"), [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的{B_LAST_ITEM}!"), [STRINGID_BUGBITE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} stole and ate its target's {B_LAST_ITEM}!"),
[STRINGID_ILLUSIONWOREOFF] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}的illusion wore off!"), [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}的problem!"), [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_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_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}!"), [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(); VARIOUS_ARGS();
if (GetIllusionMonPtr(battler) != NULL) if (GetIllusionMonPtr(battler) != NULL)
{ {
gBattleScripting.battler = battler;
gBattlescriptCurrInstr = cmd->nextInstr; gBattlescriptCurrInstr = cmd->nextInstr;
BattleScriptPushCursor(); BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_IllusionOff; gBattlescriptCurrInstr = BattleScript_IllusionOff;

View File

@ -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_HEARTHFLAME_MASK:
case ABILITY_EMBODY_ASPECT_WELLSPRING_MASK: case ABILITY_EMBODY_ASPECT_WELLSPRING_MASK:
case ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK: case ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK:
if (!gSpecialStatuses[battler].switchInAbilityDone if (!gSpecialStatuses[battler].switchInAbilityDone)
&& !(gBattleStruct->embodyAspectBoost[GetBattlerSide(battler)] & (1u << gBattlerPartyIndexes[battler])))
{ {
u32 stat; u32 stat;
@ -5323,7 +5322,6 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
gBattleScripting.savedBattler = gBattlerAttacker; gBattleScripting.savedBattler = gBattlerAttacker;
gBattlerAttacker = battler; gBattlerAttacker = battler;
gSpecialStatuses[battler].switchInAbilityDone = TRUE; gSpecialStatuses[battler].switchInAbilityDone = TRUE;
gBattleStruct->embodyAspectBoost[GetBattlerSide(battler)] |= 1u << gBattlerPartyIndexes[battler];
SET_STATCHANGER(stat, 1, FALSE); SET_STATCHANGER(stat, 1, FALSE);
BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn); BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn);
effect++; effect++;
@ -6015,6 +6013,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
case ABILITY_ILLUSION: case ABILITY_ILLUSION:
if (gBattleStruct->illusion[gBattlerTarget].on && !gBattleStruct->illusion[gBattlerTarget].broken && IsBattlerTurnDamaged(gBattlerTarget)) if (gBattleStruct->illusion[gBattlerTarget].on && !gBattleStruct->illusion[gBattlerTarget].broken && IsBattlerTurnDamaged(gBattlerTarget))
{ {
gBattleScripting.battler = gBattlerTarget;
BattleScriptPushCursor(); BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_IllusionOff; gBattlescriptCurrInstr = BattleScript_IllusionOff;
effect++; effect++;
@ -11271,19 +11270,12 @@ bool32 SetIllusionMon(struct Pokemon *mon, u32 battler)
{ {
struct Pokemon *party, *partnerMon; struct Pokemon *party, *partnerMon;
s32 i, id; s32 i, id;
u8 side, partyCount;
gBattleStruct->illusion[battler].set = 1; gBattleStruct->illusion[battler].set = 1;
if (GetMonAbility(mon) != ABILITY_ILLUSION) if (GetMonAbility(mon) != ABILITY_ILLUSION)
return FALSE; return FALSE;
party = GetBattlerParty(battler); 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))) if (IsBattlerAlive(BATTLE_PARTNER(battler)))
partnerMon = &party[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]; partnerMon = &party[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]];
@ -11296,15 +11288,21 @@ bool32 SetIllusionMon(struct Pokemon *mon, u32 battler)
id = i; id = i;
if (GetMonData(&party[id], MON_DATA_SANITY_HAS_SPECIES) if (GetMonData(&party[id], MON_DATA_SANITY_HAS_SPECIES)
&& GetMonData(&party[id], MON_DATA_HP) && GetMonData(&party[id], MON_DATA_HP)
&& !GetMonData(&party[id], MON_DATA_IS_EGG) && !GetMonData(&party[id], MON_DATA_IS_EGG))
&& &party[id] != mon
&& &party[id] != partnerMon)
{ {
gBattleStruct->illusion[battler].on = 1; if (&party[id] != mon && &party[id] != partnerMon)
gBattleStruct->illusion[battler].broken = 0; {
gBattleStruct->illusion[battler].partyId = id; gBattleStruct->illusion[battler].on = 1;
gBattleStruct->illusion[battler].mon = &party[id]; gBattleStruct->illusion[battler].broken = 0;
return TRUE; 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) u32 GetCurrentEVCap(void)
{ {
static const u16 sEvCapFlagMap[][2] = { static const u16 sEvCapFlagMap[][2] = {
// Define EV caps for each milestone // Define EV caps for each milestone
{FLAG_BADGE01_GET, 30}, {FLAG_BADGE01_GET, MAX_TOTAL_EVS * 1 / 17},
{FLAG_BADGE02_GET, 90}, {FLAG_BADGE02_GET, MAX_TOTAL_EVS * 3 / 17},
{FLAG_BADGE03_GET, 150}, {FLAG_BADGE03_GET, MAX_TOTAL_EVS * 5 / 17},
{FLAG_BADGE04_GET, 210}, {FLAG_BADGE04_GET, MAX_TOTAL_EVS * 7 / 17},
{FLAG_BADGE05_GET, 270}, {FLAG_BADGE05_GET, MAX_TOTAL_EVS * 9 / 17},
{FLAG_BADGE06_GET, 330}, {FLAG_BADGE06_GET, MAX_TOTAL_EVS * 11 / 17},
{FLAG_BADGE07_GET, 390}, {FLAG_BADGE07_GET, MAX_TOTAL_EVS * 13 / 17},
{FLAG_BADGE08_GET, 450}, {FLAG_BADGE08_GET, MAX_TOTAL_EVS * 15 / 17},
{FLAG_IS_CHAMPION, MAX_TOTAL_EVS}, {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 sMegaIndicatorPal[] = INCBIN_U16("graphics/battle_interface/mega_indicator.gbapal");
static const u16 sTeraIndicatorPal[] = INCBIN_U16("graphics/battle_interface/tera_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,
sNormalIndicatorGfx, sNormalIndicatorGfx,

View File

@ -1,11 +1,11 @@
ALIGNED(4) static const u8 sText_EmptyString[] = _(""); ALIGNED(4) static const u8 sText_EmptyString[] = _("");
ALIGNED(4) static const u8 sText_Colon[] = _(":"); ALIGNED(4) static const u8 sText_Colon[] = _(":");
ALIGNED(4) static const u8 sText_ID[] = _("{ID}"); 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_PleaseStartOver[] = _("请从起始的地方开始。");
ALIGNED(4) static const u8 sText_WirelessSearchCanceled[] = _("The WIRELESS COMMUNICATION\nSYSTEM search has been canceled."); ALIGNED(4) static const u8 sText_WirelessSearchCanceled[] = _("无线通讯\n系统搜索被取消了。");
ALIGNED(4) static const u8 sText_AwaitingCommunucation2[] = _("Awaiting communication\nfrom another player."); // Unused ALIGNED(4) static const u8 sText_AwaitingCommunucation2[] = _("等待其他\n选手的通信。"); // Unused
ALIGNED(4) static const u8 sText_AwaitingCommunication[] = _("{STR_VAR_1}! Awaiting\ncommunication from another player."); ALIGNED(4) static const u8 sText_AwaitingCommunication[] = _("{STR_VAR_1}!等待\n其他选手的通信。");
ALIGNED(4) static const u8 sText_AwaitingLinkPressStart[] = _("{STR_VAR_1}! Awaiting link!\nPress START when everyone's ready."); ALIGNED(4) static const u8 sText_AwaitingLinkPressStart[] = _("{STR_VAR_1}!等待连接!\n当所有人准备完毕后按开始键。");
ALIGNED(4) static const u8 sJPText_SingleBattle[] = _("シングルバトルを かいさいする"); ALIGNED(4) static const u8 sJPText_SingleBattle[] = _("シングルバトルを かいさいする");
ALIGNED(4) static const u8 sJPText_DoubleBattle[] = _("ダブルバトルを かいさいする"); ALIGNED(4) static const u8 sJPText_DoubleBattle[] = _("ダブルバトルを かいさいする");
ALIGNED(4) static const u8 sJPText_MultiBattle[] = _("マルチバトルを かいさいする"); ALIGNED(4) static const u8 sJPText_MultiBattle[] = _("マルチバトルを かいさいする");
@ -38,14 +38,14 @@ static const u8 *const sJPLinkGroupActionTexts[] = {
sJPText_HoldSpinShop sJPText_HoldSpinShop
}; };
static const u8 sText_1PlayerNeeded[] = _("1 player\nneeded."); static const u8 sText_1PlayerNeeded[] = _("需要\n1个玩家。");
static const u8 sText_2PlayersNeeded[] = _("2 players\nneeded."); static const u8 sText_2PlayersNeeded[] = _("需要\n2个玩家。");
static const u8 sText_3PlayersNeeded[] = _("3 players\nneeded."); static const u8 sText_3PlayersNeeded[] = _("需要\n3个玩家。");
static const u8 sText_4PlayersNeeded[] = _("4 players\nneeded."); static const u8 sText_4PlayersNeeded[] = _("需要\n4个玩家。");
static const u8 sText_2PlayerMode[] = _("2-PLAYER\nMODE"); static const u8 sText_2PlayerMode[] = _("2个玩家\n模式");
static const u8 sText_3PlayerMode[] = _("3-PLAYER\nMODE"); static const u8 sText_3PlayerMode[] = _("3个玩家\n模式");
static const u8 sText_4PlayerMode[] = _("4-PLAYER\nMODE"); static const u8 sText_4PlayerMode[] = _("4个玩家\n模式");
static const u8 sText_5PlayerMode[] = _("5-PLAYER\nMODE"); static const u8 sText_5PlayerMode[] = _("5个玩家\n模式");
static const u8 *const sPlayersNeededOrModeTexts[][5] = { static const u8 *const sPlayersNeededOrModeTexts[][5] = {
// 2 players required // 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 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_PlayerContactedYouForXAccept[] = _("{STR_VAR_2}想要与你连接\n\n{STR_VAR_1}接受吗?");
ALIGNED(4) static const u8 sText_PlayerContactedYouShareX[] = _("{STR_VAR_2} contacted you.\nWill you share {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} contacted you.\nAdd to the members?"); ALIGNED(4) static const u8 sText_PlayerContactedYouAddToMembers[] = _("{STR_VAR_2}连接上了你。\n添加到成员?");
ALIGNED(4) static const u8 sText_AreTheseMembersOK[] = _("{STR_VAR_1}!\nAre these members OK?"); ALIGNED(4) static const u8 sText_AreTheseMembersOK[] = _("{STR_VAR_1}!\n这些成员可以吗?");
ALIGNED(4) static const u8 sText_CancelModeWithTheseMembers[] = _("Cancel {STR_VAR_1} MODE\nwith these members?"); ALIGNED(4) static const u8 sText_CancelModeWithTheseMembers[] = _("取消和其他成员的\n{STR_VAR_1}模式");
ALIGNED(4) static const u8 sText_AnOKWasSentToPlayer[] = _("An “OK” was sent\nto {STR_VAR_1}."); ALIGNED(4) static const u8 sText_AnOKWasSentToPlayer[] = _("已向\n{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_OtherTrainerUnavailableNow[] = _("其他训练师好像\n现在不可见…\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_CantTransmitTrainerTooFar[] = _(" 你不能和一个太远的\n训练师进行通信。\p");
ALIGNED(4) static const u8 sText_TrainersNotReadyYet[] = _("The other TRAINER(S) is/are not\nready yet.\p"); ALIGNED(4) static const u8 sText_TrainersNotReadyYet[] = _("其他训练师没有\n准备好。\p");
static const u8 *const sCantTransmitToTrainerTexts[] = { static const u8 *const sCantTransmitToTrainerTexts[] = {
[UR_TRADE_PLAYER_NOT_READY - 1] = sText_CantTransmitTrainerTooFar, [UR_TRADE_PLAYER_NOT_READY - 1] = sText_CantTransmitTrainerTooFar,
[UR_TRADE_PARTNER_NOT_READY - 1] = sText_TrainersNotReadyYet [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_ModeWithTheseMembersWillBeCanceled[] = _("和其他成员的{STR_VAR_1}模式\n将要被取消。{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_MemberNoLongerAvailable[] = _("对方好像不太方便……\p");
static const u8 *const sPlayerUnavailableTexts[] = { static const u8 *const sPlayerUnavailableTexts[] = {
sText_OtherTrainerUnavailableNow, sText_OtherTrainerUnavailableNow,
sText_MemberNoLongerAvailable sText_MemberNoLongerAvailable
}; };
ALIGNED(4) static const u8 sText_TrainerAppearsUnavailable[] = _("The other TRAINER appears\nunavailable…\p"); ALIGNED(4) static const u8 sText_TrainerAppearsUnavailable[] = _("其他训练师\n断开了…\p");
ALIGNED(4) static const u8 sText_PlayerSentBackOK[] = _("{STR_VAR_1} sent back an “OK”!"); ALIGNED(4) static const u8 sText_PlayerSentBackOK[] = _("{STR_VAR_1}回复“是”!");
ALIGNED(4) static const u8 sText_PlayerOKdRegistration[] = _("{STR_VAR_1} OK'd your registration as\na member."); ALIGNED(4) static const u8 sText_PlayerOKdRegistration[] = _("{STR_VAR_1}确认被你登录为\n成员。");
ALIGNED(4) static const u8 sText_PlayerRepliedNo[] = _("{STR_VAR_1} replied, “No…”\p"); ALIGNED(4) static const u8 sText_PlayerRepliedNo[] = _("{STR_VAR_1}回复,“否…”\p");
ALIGNED(4) static const u8 sText_AwaitingOtherMembers[] = _("{STR_VAR_1}!\nAwaiting other members!"); ALIGNED(4) static const u8 sText_AwaitingOtherMembers[] = _("{STR_VAR_1}!\n等待其他成员!");
ALIGNED(4) static const u8 sText_QuitBeingMember[] = _("Quit being a member?"); ALIGNED(4) static const u8 sText_QuitBeingMember[] = _("取消加入?");
ALIGNED(4) static const u8 sText_StoppedBeingMember[] = _("You stopped being a member.\p"); ALIGNED(4) static const u8 sText_StoppedBeingMember[] = _("你停止加入。\p");
static const u8 *const sPlayerDisconnectedTexts[] = { static const u8 *const sPlayerDisconnectedTexts[] = {
[RFU_STATUS_OK] = NULL, [RFU_STATUS_OK] = NULL,
@ -131,10 +131,10 @@ static const u8 *const sPlayerDisconnectedTexts[] = {
[RFU_STATUS_LEAVE_GROUP] = sText_StoppedBeingMember [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_WirelessLinkEstablished[] = _("无线通讯\n系统连接已确定。");
ALIGNED(4) static const u8 sText_WirelessLinkDropped[] = _("The WIRELESS COMMUNICATION\nSYSTEM link has been dropped…"); ALIGNED(4) static const u8 sText_WirelessLinkDropped[] = _("无线通讯\n系统连接失败…");
ALIGNED(4) static const u8 sText_LinkWithFriendDropped[] = _("The link with your friend has been\ndropped…"); ALIGNED(4) static const u8 sText_LinkWithFriendDropped[] = _("与好友的连接\n失败…");
ALIGNED(4) static const u8 sText_PlayerRepliedNo2[] = _("{STR_VAR_1} replied, “No…”"); ALIGNED(4) static const u8 sText_PlayerRepliedNo2[] = _("{STR_VAR_1}回复,“否…”");
static const u8 *const sLinkDroppedTexts[] = { static const u8 *const sLinkDroppedTexts[] = {
[RFU_STATUS_OK] = NULL, [RFU_STATUS_OK] = NULL,
@ -149,8 +149,8 @@ static const u8 *const sLinkDroppedTexts[] = {
[RFU_STATUS_LEAVE_GROUP] = NULL [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_DoYouWantXMode[] = _("你想要加入{STR_VAR_2}\n模式?");
ALIGNED(4) static const u8 sText_DoYouWantXMode2[] = _("Do you want the {STR_VAR_2}\nMODE?"); ALIGNED(4) static const u8 sText_DoYouWantXMode2[] = _("你想要加入{STR_VAR_2}\n模式?");
// Unused // Unused
static const u8 *const sDoYouWantModeTexts[] = { static const u8 *const sDoYouWantModeTexts[] = {
@ -158,13 +158,13 @@ static const u8 *const sDoYouWantModeTexts[] = {
sText_DoYouWantXMode2 sText_DoYouWantXMode2
}; };
ALIGNED(4) static const u8 sText_CommunicatingPleaseWait[] = _("Communicating…\nPlease wait."); // Unused ALIGNED(4) static const u8 sText_CommunicatingPleaseWait[] = _("连接中…\n请稍后。"); // Unused
ALIGNED(4) static const u8 sText_AwaitingPlayersResponseAboutTrade[] = _("Awaiting {STR_VAR_1}'s response about\nthe trade…"); ALIGNED(4) static const u8 sText_AwaitingPlayersResponseAboutTrade[] = _("等待{STR_VAR_1}的\n交换回复…");
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_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}."); "{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}."); "{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}."); "{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[] = { static const u8 *const sCommunicatingWaitTexts[] = {
@ -173,10 +173,10 @@ static const u8 *const sCommunicatingWaitTexts[] = {
sText_PleaseWaitAWhile sText_PleaseWaitAWhile
}; };
ALIGNED(4) static const u8 sText_HiDoSomethingMale[] = _("Hiya! Is there something that you\nwanted to do?"); ALIGNED(4) static const u8 sText_HiDoSomethingMale[] = _("嘿!有什么\n想做的吗?");
ALIGNED(4) static const u8 sText_HiDoSomethingFemale[] = _("Hello!\nWould you like to do something?"); ALIGNED(4) static const u8 sText_HiDoSomethingFemale[] = _("你好!\n想要做什么??");
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_HiDoSomethingAgainMale[] = _("{STR_VAR_1}:嘿,我们又见面了!\n最近怎么样?");
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_HiDoSomethingAgainFemale[] = _("{STR_VAR_1}:哦!{PLAYER},你好!\n想要做什么?");
static const u8 *const sHiDoSomethingTexts[][GENDER_COUNT] = { 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_DoSomethingMale[] = _("想做点什么??");
ALIGNED(4) static const u8 sText_DoSomethingFemale[] = _("Would you like to do something?"); ALIGNED(4) static const u8 sText_DoSomethingFemale[] = _("想做点什么?");
ALIGNED(4) static const u8 sText_DoSomethingAgainMale[] = _("{STR_VAR_1}: What would you like to\ndo now?"); ALIGNED(4) static const u8 sText_DoSomethingAgainMale[] = _("{STR_VAR_1}:你现在想要\n做什么??");
ALIGNED(4) static const u8 sText_DoSomethingAgainFemale[] = _("{STR_VAR_1}: Want to do anything else?"); // Unused ALIGNED(4) static const u8 sText_DoSomethingAgainFemale[] = _("{STR_VAR_1}:想做点其他的不??"); // Unused
// Unused // Unused
static const u8 *const sDoSomethingTexts[][GENDER_COUNT] = { 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_SomebodyHasContactedYou[] = _("有人连接上了你。{PAUSE 60}");
ALIGNED(4) static const u8 sText_PlayerHasContactedYou[] = _("{STR_VAR_1} has contacted you.{PAUSE 60}"); ALIGNED(4) static const u8 sText_PlayerHasContactedYou[] = _("{STR_VAR_1}连接上了你。{PAUSE 60}");
static const u8 *const sPlayerContactedYouTexts[] = { static const u8 *const sPlayerContactedYouTexts[] = {
sText_SomebodyHasContactedYou, sText_SomebodyHasContactedYou,
sText_PlayerHasContactedYou sText_PlayerHasContactedYou
}; };
ALIGNED(4) static const u8 sText_AwaitingResponseFromTrainer[] = _("Awaiting a response from\nthe other TRAINER…"); ALIGNED(4) static const u8 sText_AwaitingResponseFromTrainer[] = _("等待\n另一个训练师回复…");
ALIGNED(4) static const u8 sText_AwaitingResponseFromPlayer[] = _("Awaiting a response from\n{STR_VAR_1}…"); ALIGNED(4) static const u8 sText_AwaitingResponseFromPlayer[] = _("等待\n{STR_VAR_1}的回复…");
static const u8 *const sAwaitingResponseTexts[] = { static const u8 *const sAwaitingResponseTexts[] = {
sText_AwaitingResponseFromTrainer, sText_AwaitingResponseFromTrainer,
sText_AwaitingResponseFromPlayer 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_ShowTrainerCard[] = _("其他训练师展示\n给你看他们的训练师卡片。\p你也要展示\n训练师卡片?");
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_BattleChallenge[] = _("其他训练师想通过\n宝可梦对战挑战你。\p你想要接受\n挑战吗?");
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_ChatInvitation[] = _("其他训练师邀请你\n聊天。\p你想要接受\n聊天申请吗?");
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_OfferToTradeMon[] = _("有人愿意用一只\n等级{DYNAMIC 0}的{DYNAMIC 1}\p与你登记的等级{DYNAMIC 2}\n的{DYNAMIC 3}交换。\p你同意吗?");
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_OfferToTradeEgg[] = _("有人想要交换你\n登记的蛋。\l你想要接受交换申请吗?");
ALIGNED(4) static const u8 sText_ChatDropped[] = _("The chat has been dropped.\p"); ALIGNED(4) static const u8 sText_ChatDropped[] = _("聊天断开。\p");
ALIGNED(4) static const u8 sText_OfferDeclined1[] = _("You declined the offer.\p"); ALIGNED(4) static const u8 sText_OfferDeclined1[] = _("你拒绝了请求。\p");
ALIGNED(4) static const u8 sText_OfferDeclined2[] = _("You declined the offer.\p"); ALIGNED(4) static const u8 sText_OfferDeclined2[] = _(" 你拒绝了请求。\p");
ALIGNED(4) static const u8 sText_ChatEnded[] = _("The chat was ended.\p"); ALIGNED(4) static const u8 sText_ChatEnded[] = _("聊天停止了。\p");
// Unused // Unused
static const u8 *const sInvitationTexts[] = { static const u8 *const sInvitationTexts[] = {
@ -238,10 +238,10 @@ static const u8 *const sInvitationTexts[] = {
sText_OfferToTradeMon 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_JoinChatMale[] = _("嘿!我们正在聊天。\n想要加入我们吗?");
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_PlayerJoinChatMale[] = _("{STR_VAR_1}:嘿,{PLAYER}!\n我们正在聊天。\l想要加入我们吗?");
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_JoinChatFemale[] = _(" 哦,你好!我们正在聊天。\n想要加入我们吗?");
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_PlayerJoinChatFemale[] = _("{STR_VAR_1}:你好,{PLAYER}!\n我们在聊天。\l想要加入我们吗??");
static const u8 *const sJoinChatTexts[][GENDER_COUNT] = { 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_TrainerAppearsBusy[] = _("……\n训练师好像正在忙…\p\p");
ALIGNED(4) static const u8 sText_WaitForBattleMale[] = _("A battle, huh?\nAll right, just give me some time."); ALIGNED(4) static const u8 sText_WaitForBattleMale[] = _("宝可梦对战,嗯?\n好吧,等我一下。");
ALIGNED(4) static const u8 sText_WaitForChatMale[] = _("You want to chat, huh?\nSure, just wait a little."); ALIGNED(4) static const u8 sText_WaitForChatMale[] = _("想要聊天,嗯?\n好的,等一下。");
ALIGNED(4) static const u8 sText_ShowTrainerCardMale[] = _("Sure thing! As my “Greetings,”\nhere's my TRAINER CARD."); ALIGNED(4) static const u8 sText_ShowTrainerCardMale[] = _("当然!作为“问候”\n这是我的训练师卡片。");
ALIGNED(4) static const u8 sText_WaitForBattleFemale[] = _("A battle? Of course, but I need\ntime to get ready."); ALIGNED(4) static const u8 sText_WaitForBattleFemale[] = _("宝可梦对战?当然,但是\n我需要准备一下。");
ALIGNED(4) static const u8 sText_WaitForChatFemale[] = _("Did you want to chat?\nOkay, but please wait a moment."); ALIGNED(4) static const u8 sText_WaitForChatFemale[] = _("你想聊天?\n好的,但是请稍等。");
ALIGNED(4) static const u8 sText_ShowTrainerCardFemale[] = _("As my introduction, I'll show you\nmy TRAINER CARD."); ALIGNED(4) static const u8 sText_ShowTrainerCardFemale[] = _("作为自我介绍,我会展示\n给你我的训练师卡片。");
static const u8 *const sText_WaitOrShowCardTexts[GENDER_COUNT][4] = { 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_WaitForChatMale2[] = _("想聊天,嗯?\n好,等下。"); // 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_DoneWaitingBattleMale[] = _("感谢您的等待!\n让我们的宝可梦对战\p开始吧!{PAUSE 60}");
ALIGNED(4) static const u8 sText_DoneWaitingChatMale[] = _("All right!\nLet's chat!{PAUSE 60}"); ALIGNED(4) static const u8 sText_DoneWaitingChatMale[] = _("好的!\n开始聊天!{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_DoneWaitingBattleFemale[] = _("抱歉让你久等了!\n让我们开始吧!{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_DoneWaitingChatFemale[] = _("抱歉让你久等了!\n开始聊天吧。{PAUSE 60}");
ALIGNED(4) static const u8 sText_TradeWillBeStarted[] = _("The trade will be started.{PAUSE 60}"); ALIGNED(4) static const u8 sText_TradeWillBeStarted[] = _("交换开始。{PAUSE 60}");
ALIGNED(4) static const u8 sText_BattleWillBeStarted[] = _("The battle will be started.{PAUSE 60}"); ALIGNED(4) static const u8 sText_BattleWillBeStarted[] = _("宝可梦对战开始。{PAUSE 60}");
ALIGNED(4) static const u8 sText_EnteringChat[] = _("Entering the chat…{PAUSE 60}"); ALIGNED(4) static const u8 sText_EnteringChat[] = _("进入聊天中…{PAUSE 60}");
static const u8 *const sStartActivityTexts[][GENDER_COUNT][3] = { 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_BattleDeclinedMale[] = _("对不起!我的宝可梦看\n起来好像不太好。\l下次再战斗吧。\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_BattleDeclinedFemale[] = _("非常抱歉,但是我的\n宝可梦现在很不好…\p下次再战斗吧。\p");
static const u8 *const sBattleDeclinedTexts[GENDER_COUNT] = { static const u8 *const sBattleDeclinedTexts[GENDER_COUNT] = {
sText_BattleDeclinedMale, sText_BattleDeclinedMale,
sText_BattleDeclinedFemale 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_ShowTrainerCardDeclinedMale[] = _("嗯?我的训练师卡片…\n找不到了?\l对不起!下次展示给你吧!\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_ShowTrainerCardDeclinedFemale[] = _("哦?我的\n训练师卡片呢?…\l对不起!以后展示给你看吧!\p");
static const u8 *const sShowTrainerCardDeclinedTexts[GENDER_COUNT] = { static const u8 *const sShowTrainerCardDeclinedTexts[GENDER_COUNT] = {
sText_ShowTrainerCardDeclinedMale, sText_ShowTrainerCardDeclinedMale,
sText_ShowTrainerCardDeclinedFemale 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_IfYouWantToDoSomethingMale[] = _("如果以后有什么事找我\n尽管叫我!\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_IfYouWantToDoSomethingFemale[] = _("如果以后有什么事找我\n不要客气啊。\p");
static const u8 *const sIfYouWantToDoSomethingTexts[GENDER_COUNT] = { static const u8 *const sIfYouWantToDoSomethingTexts[GENDER_COUNT] = {
sText_IfYouWantToDoSomethingMale, sText_IfYouWantToDoSomethingMale,
sText_IfYouWantToDoSomethingFemale 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_TrainerBattleBusy[] = _("哎呦!抱歉,但是我有事\n要做。\l下次吧,好吧?\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_NeedTwoMonsOfLevel30OrLower1[] = _("如果想要宝可梦对战,你\n需要两只宝可梦必须是\l等级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_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_DeclineChatMale[] = _("好吧。\n随时可以来看我,好吧?\p");
ALIGNED(4) static const u8 stext_DeclineChatFemale[] = _("Oh…\nPlease come by anytime.\p"); ALIGNED(4) static const u8 stext_DeclineChatFemale[] = _("哦…\n请随时过来看我。\p");
// Response from partner when player declines chat // Response from partner when player declines chat
static const u8 *const sDeclineChatTexts[GENDER_COUNT] = { static const u8 *const sDeclineChatTexts[GENDER_COUNT] = {
@ -345,8 +345,8 @@ static const u8 *const sDeclineChatTexts[GENDER_COUNT] = {
stext_DeclineChatFemale 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_ChatDeclinedMale[] = _("不好意思!\n不能聊了。\l下次再说吧。\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_ChatDeclinedFemale[] = _("不好意思。\n现在我有事要做。\l下次再说吧。\p");
// Response from partner when they decline chat // Response from partner when they decline chat
static const u8 *const sChatDeclinedTexts[GENDER_COUNT] = { static const u8 *const sChatDeclinedTexts[GENDER_COUNT] = {
@ -354,14 +354,14 @@ static const u8 *const sChatDeclinedTexts[GENDER_COUNT] = {
sText_ChatDeclinedFemale sText_ChatDeclinedFemale
}; };
ALIGNED(4) static const u8 sText_YoureToughMale[] = _("Whoa!\nI can tell you're pretty tough!\p"); ALIGNED(4) static const u8 sText_YoureToughMale[] = _("哇!\n你太坚强了!\p");
ALIGNED(4) static const u8 sText_UsedGoodMoveMale[] = _("You used that move?\nThat's good strategy!\p"); ALIGNED(4) static const u8 sText_UsedGoodMoveMale[] = _("你用了那个技能?\n真是好办法!\p");
ALIGNED(4) static const u8 sText_BattleSurpriseMale[] = _("Way to go!\nThat was an eye-opener!\p"); ALIGNED(4) static const u8 sText_BattleSurpriseMale[] = _("就这么做!\n真是令人大开眼界!\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_SwitchedMonsMale[] = _("你竟然可以在那种情况下\n使用那只宝可梦?\p");
ALIGNED(4) static const u8 sText_YoureToughFemale[] = _("That POKéMON…\nIt's been raised really well!\p"); ALIGNED(4) static const u8 sText_YoureToughFemale[] = _("那个宝可梦…\n培养的真好!\p\p");
ALIGNED(4) static const u8 sText_UsedGoodMoveFemale[] = _("That's it!\nThis is the right move now!\p"); ALIGNED(4) static const u8 sText_UsedGoodMoveFemale[] = _("就是这样!\n现在就是适当的技能!\p");
ALIGNED(4) static const u8 sText_BattleSurpriseFemale[] = _("That's awesome!\nYou can battle that way?\p"); ALIGNED(4) static const u8 sText_BattleSurpriseFemale[] = _("太可怕了!\n你竟然以这种方式战斗?\p");
ALIGNED(4) static const u8 sText_SwitchedMonsFemale[] = _("You have exquisite timing for\nswitching POKéMON!\p"); ALIGNED(4) static const u8 sText_SwitchedMonsFemale[] = _("你真有\n选择宝可梦的天赋!\p");
static const u8 *const sBattleReactionTexts[GENDER_COUNT][4] = { 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_LearnedSomethingMale[] = _("我知道了!\n受教了!\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_ThatsFunnyMale[] = _("不要再说些搞笑的事了!\n从笑声中我感到痛苦!\p");
ALIGNED(4) static const u8 sText_RandomChatMale1[] = _("Oh?\nSomething like that happened.\p"); ALIGNED(4) static const u8 sText_RandomChatMale1[] = _("O哦?\n那种事发生了。\p");
ALIGNED(4) static const u8 sText_RandomChatMale2[] = _("Hmhm… What?\nSo is this what you're saying?\p"); ALIGNED(4) static const u8 sText_RandomChatMale2[] = _("嗯…什么?\n这就是你说的?\p\p");
ALIGNED(4) static const u8 sText_LearnedSomethingFemale[] = _("Is that right?\nI didn't know that.\p"); ALIGNED(4) static const u8 sText_LearnedSomethingFemale[] = _("那样好吗?\n我不知道。\p");
ALIGNED(4) static const u8 sText_ThatsFunnyFemale[] = _("Ahaha!\nWhat is that about?\p"); ALIGNED(4) static const u8 sText_ThatsFunnyFemale[] = _("哈哈!\n关于什么?\p\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_RandomChatFemale1[] = _("就是那样!\n我就是这个意思。\p");
ALIGNED(4) static const u8 sText_RandomChatFemale2[] = _("In other words…\nYes! That's right!\p"); ALIGNED(4) static const u8 sText_RandomChatFemale2[] = _("换言之…\n是!就是那样!\p");
static const u8 *const sChatReactionTexts[GENDER_COUNT][4] = { 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_ShowedTrainerCardMale1[] = _("展示训练师卡片\n作为我的礼貌。\p");
ALIGNED(4) static const u8 sText_ShowedTrainerCardMale2[] = _("I hope I get to know you better!\p"); ALIGNED(4) static const u8 sText_ShowedTrainerCardMale2[] = _("我希望我可以更好地认识你!\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_ShowedTrainerCardFemale1[] = _("我们互相展示\n训练师卡片以求互相认识。\p\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_ShowedTrainerCardFemale2[] = _("很高兴见到你。\n不要认生啊!\p\p");
static const u8 *const sTrainerCardReactionTexts[GENDER_COUNT][2] = { 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_MaleTraded1[] = _("哈哈!\n我确实很想要这只宝可梦!\p\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_MaleTraded2[] = _("最终,一场交换使得\n宝可梦到手,圆了我\n长久的梦。\p");
ALIGNED(4) static const u8 sText_FemaleTraded1[] = _("I'm trading POKéMON right now.\p"); ALIGNED(4) static const u8 sText_FemaleTraded1[] = _("我正在交换宝可梦。\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_FemaleTraded2[] = _("这只宝可梦是我在\n一场交换中获得的!\p\p");
static const u8 *const sTradeReactionTexts[GENDER_COUNT][4] = { 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_XCheckedTradingBoard[] = _("{STR_VAR_1}检查了\n交换平台。\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_RegisterMonAtTradingBoard[] = _("欢迎来到交换平台。\p你需要登记宝可梦\n来进行交换。\p你现在需要登记\n你的精灵宝可梦吗?");
ALIGNED(4) static const u8 sText_TradingBoardInfo[] = _("This TRADING BOARD is used for\n" ALIGNED(4) static const u8 sText_TradingBoardInfo[] = _("交换平台是用来\n"
"offering a POKéMON for a trade.\p" "提供宝可梦进行交换的。\p"
"All you need to do is register a\n" "你所做的就是把\n"
"POKéMON for a trade.\p" "宝可梦进行登记。\p"
"Another TRAINER may offer a party\n" "其他训练师可能会提供\n"
"POKéMON in return for the trade.\p" "你想要交换的宝可梦。\p"
"We hope you will register POKéMON\n" "我们希望你可以登记宝可梦\n"
"and trade them with many, many\l" "用来交换给\l"
"other TRAINERS.\p" "更多更多其他训练师。\p"
"Would you like to register one of\nyour POKéMON?"); "你现在需要登记\n你的宝可梦吗?");
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_ThankYouForRegistering[] = _("我们已经登记了你的宝可梦\n放在交换平台用来交换。\p感谢使用这项服务!\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_NobodyHasRegistered[] = _("没人登记宝可梦\n在交换平台用来交换。\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_ChooseRequestedMonType[] = _("请选择宝可梦属性\n用于交换。\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_WhichMonWillYouOffer[] = _("你将会拿什么宝可梦\n用来交换呢?\p");
ALIGNED(4) static const u8 sText_RegistrationCanceled[] = _("Registration has been canceled.\p"); ALIGNED(4) static const u8 sText_RegistrationCanceled[] = _("登记取消。\p");
ALIGNED(4) static const u8 sText_RegistrationCompleted[] = _("Registration has been completed.\p"); ALIGNED(4) static const u8 sText_RegistrationCompleted[] = _("登记完成。\p");
ALIGNED(4) static const u8 sText_TradeCanceled[] = _("The trade has been canceled.\p"); ALIGNED(4) static const u8 sText_TradeCanceled[] = _("交换被取消了。\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_CancelRegistrationOfMon[] = _("取消登记你的\n等级{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_CancelRegistrationOfEgg[] = _("取消登记你的蛋??");
ALIGNED(4) static const u8 sText_RegistrationCanceled2[] = _("The registration has been canceled.\p"); ALIGNED(4) static const u8 sText_RegistrationCanceled2[] = _("登记取消。\p");
ALIGNED(4) static const u8 sText_TradeTrainersWillBeListed[] = _("TRAINERS wishing to make a trade\nwill be listed."); // unused ALIGNED(4) static const u8 sText_TradeTrainersWillBeListed[] = _("训练师想要进行的交换\n会用表格列出来。"); // 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_ChooseTrainerToTradeWith2[] = _("请选择训练师\n用来交换宝可梦。"); // 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_AskTrainerToMakeTrade[] = _("你想要和{STR_VAR_1}\n进行交换?");
ALIGNED(4) static const u8 sText_AwaitingResponseFromTrainer2[] = _("Awaiting a response from\nthe other TRAINER…"); // unused ALIGNED(4) static const u8 sText_AwaitingResponseFromTrainer2[] = _("等待训练师\n的回复…"); // 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_NotRegisteredAMonForTrade[] = _("还没有登记宝可梦\n用于交换。\p\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_DontHaveTypeTrainerWants[] = _("你还没有{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_DontHaveEggTrainerWants[] = _("你还没有蛋是\n{STR_VAR_1}需要的。\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_PlayerCantTradeForYourMon[] = _("{STR_VAR_1}还不能和你交换\n你的宝可梦。\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_CantTradeForPartnersMon[] = _("你还不能交换\n{STR_VAR_1}的宝可梦呢。\p");
// Unused // Unused
static const u8 *const sCantTradeMonTexts[] = { static const u8 *const sCantTradeMonTexts[] = {
@ -472,28 +472,28 @@ static const u8 *const sCantTradeMonTexts[] = {
sText_CantTradeForPartnersMon sText_CantTradeForPartnersMon
}; };
ALIGNED(4) static const u8 sText_TradeOfferRejected[] = _("Your trade offer was rejected.\p"); ALIGNED(4) static const u8 sText_TradeOfferRejected[] = _("你的交换请求被拒绝。\p");
ALIGNED(4) static const u8 sText_EggTrade[] = _("EGG TRADE"); ALIGNED(4) static const u8 sText_EggTrade[] = _("蛋的交换");
ALIGNED(4) static const u8 sText_ChooseJoinCancel[] = _("{DPAD_UPDOWN}CHOOSE {A_BUTTON}JOIN {B_BUTTON}CANCEL"); ALIGNED(4) static const u8 sText_ChooseJoinCancel[] = _("{DPAD_UPDOWN}选择{A_BUTTON}加入{B_BUTTON}取消");
ALIGNED(4) static const u8 sText_ChooseTrainer[] = _("Please choose a TRAINER."); ALIGNED(4) static const u8 sText_ChooseTrainer[] = _("请选择一名训练师。");
ALIGNED(4) static const u8 sText_ChooseTrainerSingleBattle[] = _("Please choose a TRAINER for\na SINGLE BATTLE."); ALIGNED(4) static const u8 sText_ChooseTrainerSingleBattle[] = _("请选择一名训练师来进行\n单打对战。");
ALIGNED(4) static const u8 sText_ChooseTrainerDoubleBattle[] = _("Please choose a TRAINER for\na DOUBLE BATTLE."); ALIGNED(4) static const u8 sText_ChooseTrainerDoubleBattle[] = _("请选择一名训练师来进行\n双打对战。");
ALIGNED(4) static const u8 sText_ChooseLeaderMultiBattle[] = _("Please choose the LEADER\nfor a MULTI BATTLE."); ALIGNED(4) static const u8 sText_ChooseLeaderMultiBattle[] = _("请选择队长\n进行多人对战。");
ALIGNED(4) static const u8 sText_ChooseTrainerToTradeWith[] = _("Please choose the TRAINER to\ntrade with."); ALIGNED(4) static const u8 sText_ChooseTrainerToTradeWith[] = _("请选择训练师来进行\n交换。");
ALIGNED(4) static const u8 sText_ChooseTrainerToShareWonderCards[] = _("Please choose the TRAINER who is\nsharing WONDER CARDS."); ALIGNED(4) static const u8 sText_ChooseTrainerToShareWonderCards[] = _("请选择一名训练师\n可以共享奇异卡片。");
ALIGNED(4) static const u8 sText_ChooseTrainerToShareWonderNews[] = _("Please choose the TRAINER who is\nsharing WONDER NEWS."); ALIGNED(4) static const u8 sText_ChooseTrainerToShareWonderNews[] = _("请选择一名训练师\n可以共享奇异新闻。");
ALIGNED(4) static const u8 sText_ChooseLeaderPokemonJump[] = _("Jump with mini POKéMON!\nPlease choose the LEADER."); ALIGNED(4) static const u8 sText_ChooseLeaderPokemonJump[] = _("和宝可梦一起跳!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderBerryCrush[] = _("BERRY CRUSH!\nPlease choose the LEADER."); ALIGNED(4) static const u8 sText_ChooseLeaderBerryCrush[] = _("混合树果!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderBerryPicking[] = _("DODRIO BERRY-PICKING!\nPlease choose the LEADER."); ALIGNED(4) static const u8 sText_ChooseLeaderBerryPicking[] = _("嘟嘟利摘树果!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderBerryBlender[] = _("BERRY BLENDER!\nPlease choose the LEADER."); ALIGNED(4) static const u8 sText_ChooseLeaderBerryBlender[] = _("树果混合机!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderRecordCorner[] = _("RECORD CORNER!\nPlease choose the LEADER."); ALIGNED(4) static const u8 sText_ChooseLeaderRecordCorner[] = _("联机中心!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderCoolContest[] = _("COOLNESS CONTEST!\nPlease choose the LEADER."); ALIGNED(4) static const u8 sText_ChooseLeaderCoolContest[] = _("帅气组!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderBeautyContest[] = _("BEAUTY CONTEST!\nPlease choose the LEADER."); ALIGNED(4) static const u8 sText_ChooseLeaderBeautyContest[] = _("美丽组!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderCuteContest[] = _("CUTENESS CONTEST!\nPlease choose the LEADER."); ALIGNED(4) static const u8 sText_ChooseLeaderCuteContest[] = _("可爱组!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderSmartContest[] = _("SMARTNESS CONTEST!\nPlease choose the LEADER."); ALIGNED(4) static const u8 sText_ChooseLeaderSmartContest[] = _("聪明组!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderToughContest[] = _("TOUGHNESS CONTEST!\nPlease choose the LEADER."); ALIGNED(4) static const u8 sText_ChooseLeaderToughContest[] = _("强壮组!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderBattleTowerLv50[] = _("BATTLE TOWER LEVEL 50!\nPlease choose the LEADER."); ALIGNED(4) static const u8 sText_ChooseLeaderBattleTowerLv50[] = _("等级50对战塔!\n请选择队长。");
ALIGNED(4) static const u8 sText_ChooseLeaderBattleTowerOpenLv[] = _("BATTLE TOWER OPEN LEVEL!\nPlease choose the LEADER."); ALIGNED(4) static const u8 sText_ChooseLeaderBattleTowerOpenLv[] = _("对战塔!\n请选择队长。");
static const u8 *const sChooseTrainerTexts[NUM_LINK_GROUP_TYPES] = 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 [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_SearchingForWirelessSystemWait[] = _("搜索一个无线通讯系统。\n等待…");
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_MustHaveTwoMonsForDoubleBattle[] = _("参加双打对战,你至少要有\n两只宝可梦。\p"); // Unused
ALIGNED(4) static const u8 sText_AwaitingPlayersResponse[] = _("Awaiting {STR_VAR_1}'s response…"); ALIGNED(4) static const u8 sText_AwaitingPlayersResponse[] = _("等待{STR_VAR_1}的回复…");
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_PlayerHasBeenAskedToRegisterYouPleaseWait[] = _("{STR_VAR_1}想要登记你\n为成员。请稍后。");
ALIGNED(4) static const u8 sText_AwaitingResponseFromWirelessSystem[] = _("Awaiting a response from the\nWIRELESS COMMUNICATION SYSTEM."); ALIGNED(4) static const u8 sText_AwaitingResponseFromWirelessSystem[] = _("等待\n从无线通讯系统来的回复。");
ALIGNED(4) static const u8 sText_PleaseWaitForOtherTrainersToGather[] = _("Please wait for other TRAINERS to\ngather and get ready."); // Unused ALIGNED(4) static const u8 sText_PleaseWaitForOtherTrainersToGather[] = _("请等待其他训练师\n加入并准备完毕。"); // Unused
ALIGNED(4) static const u8 sText_NoCardsSharedRightNow[] = _("No CARDS appear to be shared \nright now."); ALIGNED(4) static const u8 sText_NoCardsSharedRightNow[] = _("好像没有卡片\n正在共享。");
ALIGNED(4) static const u8 sText_NoNewsSharedRightNow[] = _("No NEWS appears to be shared\nright now."); ALIGNED(4) static const u8 sText_NoNewsSharedRightNow[] = _("好像没有新闻\n正在共享。");
static const u8 *const sNoWonderSharedTexts[] = { static const u8 *const sNoWonderSharedTexts[] = {
sText_NoCardsSharedRightNow, sText_NoCardsSharedRightNow,
sText_NoNewsSharedRightNow sText_NoNewsSharedRightNow
}; };
ALIGNED(4) static const u8 sText_Battle[] = _("BATTLE"); ALIGNED(4) static const u8 sText_Battle[] = _("宝可梦对战");
ALIGNED(4) static const u8 sText_Chat2[] = _("CHAT"); ALIGNED(4) static const u8 sText_Chat2[] = _("聊天");
ALIGNED(4) static const u8 sText_Greetings[] = _("GREETINGS"); ALIGNED(4) static const u8 sText_Greetings[] = _("问候");
ALIGNED(4) static const u8 sText_Exit[] = _("EXIT"); ALIGNED(4) static const u8 sText_Exit[] = _("退出");
ALIGNED(4) static const u8 sText_Exit2[] = _("EXIT"); ALIGNED(4) static const u8 sText_Exit2[] = _("退出");
ALIGNED(4) static const u8 sText_Info[] = _("INFO"); ALIGNED(4) static const u8 sText_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_NameWantedOfferLv[] = _("名字{CLEAR_TO 60}需求{CLEAR_TO 110}提供{CLEAR_TO 198}等级");
ALIGNED(4) static const u8 sText_SingleBattle[] = _("SINGLE BATTLE"); ALIGNED(4) static const u8 sText_SingleBattle[] = _("单打对战");
ALIGNED(4) static const u8 sText_DoubleBattle[] = _("DOUBLE BATTLE"); ALIGNED(4) static const u8 sText_DoubleBattle[] = _("双打对战");
ALIGNED(4) static const u8 sText_MultiBattle[] = _("MULTI BATTLE"); ALIGNED(4) static const u8 sText_MultiBattle[] = _("多人对战");
ALIGNED(4) static const u8 sText_PokemonTrades[] = _("POKéMON TRADES"); ALIGNED(4) static const u8 sText_PokemonTrades[] = _("宝可梦交换");
ALIGNED(4) static const u8 sText_Chat[] = _("CHAT"); ALIGNED(4) static const u8 sText_Chat[] = _("聊天");
ALIGNED(4) static const u8 sText_Cards[] = _("CARDS"); ALIGNED(4) static const u8 sText_Cards[] = _("卡片");
ALIGNED(4) static const u8 sText_WonderCards[] = _("WONDER CARDS"); ALIGNED(4) static const u8 sText_WonderCards[] = _("奇异卡片");
ALIGNED(4) static const u8 sText_WonderNews[] = _("WONDER NEWS"); ALIGNED(4) static const u8 sText_WonderNews[] = _("奇异新闻");
ALIGNED(4) static const u8 sText_PokemonJump[] = _("POKéMON JUMP"); ALIGNED(4) static const u8 sText_PokemonJump[] = _("宝可梦跳跃");
ALIGNED(4) static const u8 sText_BerryCrush[] = _("BERRY CRUSH"); ALIGNED(4) static const u8 sText_BerryCrush[] = _("树果混合");
ALIGNED(4) static const u8 sText_BerryPicking[] = _("BERRY-PICKING"); ALIGNED(4) static const u8 sText_BerryPicking[] = _("摘树果");
ALIGNED(4) static const u8 sText_Search[] = _("SEARCH"); ALIGNED(4) static const u8 sText_Search[] = _("搜索");
ALIGNED(4) static const u8 sText_BerryBlender[] = _("BERRY BLENDER"); ALIGNED(4) static const u8 sText_BerryBlender[] = _("树果混合机");
ALIGNED(4) static const u8 sText_RecordCorner[] = _("RECORD CORNER"); ALIGNED(4) static const u8 sText_RecordCorner[] = _("联机中心");
ALIGNED(4) static const u8 sText_CoolContest[] = _("COOL CONTEST"); ALIGNED(4) static const u8 sText_CoolContest[] = _("帅气组");
ALIGNED(4) static const u8 sText_BeautyContest[] = _("BEAUTY CONTEST"); ALIGNED(4) static const u8 sText_BeautyContest[] = _("美丽组");
ALIGNED(4) static const u8 sText_CuteContest[] = _("CUTE CONTEST"); ALIGNED(4) static const u8 sText_CuteContest[] = _("可爱组");
ALIGNED(4) static const u8 sText_SmartContest[] = _("SMART CONTEST"); ALIGNED(4) static const u8 sText_SmartContest[] = _("聪明组");
ALIGNED(4) static const u8 sText_ToughContest[] = _("TOUGH CONTEST"); ALIGNED(4) static const u8 sText_ToughContest[] = _("强壮组");
ALIGNED(4) static const u8 sText_BattleTowerLv50[] = _("BATTLE TOWER LV. 50"); ALIGNED(4) static const u8 sText_BattleTowerLv50[] = _("等级50对战塔");
ALIGNED(4) static const u8 sText_BattleTowerOpenLv[] = _("BATTLE TOWER OPEN LEVEL"); ALIGNED(4) static const u8 sText_BattleTowerOpenLv[] = _("对战塔");
ALIGNED(4) static const u8 sText_ItsNormalCard[] = _("It's a NORMAL CARD."); ALIGNED(4) static const u8 sText_ItsNormalCard[] = _("这是普通卡。");
ALIGNED(4) static const u8 sText_ItsBronzeCard[] = _("It's a BRONZE CARD!"); ALIGNED(4) static const u8 sText_ItsBronzeCard[] = _("这是蓝钴卡!");
ALIGNED(4) static const u8 sText_ItsCopperCard[] = _("It's a COPPER CARD!"); ALIGNED(4) static const u8 sText_ItsCopperCard[] = _("这是青铜卡!");
ALIGNED(4) static const u8 sText_ItsSilverCard[] = _("It's a SILVER CARD!"); ALIGNED(4) static const u8 sText_ItsSilverCard[] = _("这是白银卡");
ALIGNED(4) static const u8 sText_ItsGoldCard[] = _("It's a GOLD CARD!"); ALIGNED(4) static const u8 sText_ItsGoldCard[] = _("这是黄金卡!");
static const u8 *const sCardColorTexts[] = { static const u8 *const sCardColorTexts[] = {
sText_ItsNormalCard, sText_ItsNormalCard,
@ -577,17 +577,17 @@ static const u8 *const sCardColorTexts[] = {
sText_ItsGoldCard 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_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[] = _("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_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}: Glad to have met you!{PAUSE 60}"); ALIGNED(4) static const u8 sText_GladToMeetYouMale[] = _("{DYNAMIC 1}: 很高兴认识了你!{PAUSE 60}");
ALIGNED(4) static const u8 sText_GladToMeetYouFemale[] = _("{DYNAMIC 1}: Glad to meet you!{PAUSE 60}"); ALIGNED(4) static const u8 sText_GladToMeetYouFemale[] = _("{DYNAMIC 1}: 很高兴认识你!{PAUSE 60}");
static const u8 *const sGladToMeetYouTexts[GENDER_COUNT] = { static const u8 *const sGladToMeetYouTexts[GENDER_COUNT] = {
sText_GladToMeetYouMale, sText_GladToMeetYouMale,
sText_GladToMeetYouFemale 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[] = { static const u8 *const sLinkGroupActivityNameTexts[] = {
[ACTIVITY_NONE] = sText_EmptyString, [ACTIVITY_NONE] = sText_EmptyString,

View File

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

View File

@ -1095,7 +1095,7 @@ const u8 gText_FromSpace[] = _("从");
const u8 gText_MixingRecords[] = _("混合存档中…"); const u8 gText_MixingRecords[] = _("混合存档中…");
const u8 gText_RecordMixingComplete[] = _("存档混合完成。\n感谢您的等待。"); const u8 gText_RecordMixingComplete[] = _("存档混合完成。\n感谢您的等待。");
const u8 gText_YourName[] = _("你的名字?"); const u8 gText_YourName[] = _("你的名字?");
const u8 gText_BoxName[] = _("箱子的名字?"); const u8 gText_BoxName[] = _("盒子的名字?");
const u8 gText_PkmnsNickname[] = _("{STR_VAR_1}的昵称?"); const u8 gText_PkmnsNickname[] = _("{STR_VAR_1}的昵称?");
const u8 gText_TellHimTheWords[] = _("告诉他那个单词。"); const u8 gText_TellHimTheWords[] = _("告诉他那个单词。");
const u8 gText_MoveOkBack[] = _("{DPAD_NONE}移动 {A_BUTTON}确认 {B_BUTTON}返回"); 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!"); 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); } 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); } 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) SINGLE_BATTLE_TEST("Dynamax: Dynamax expires after three turns", u16 hp)
{ {
u32 dynamax; 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") DOUBLE_BATTLE_TEST("Ally Switch swaps Illusion data")
{ {
KNOWN_FAILING; // Test passes in isolation but fails on CI
GIVEN { GIVEN {
ASSUME(GetMoveEffect(MOVE_ALLY_SWITCH) == EFFECT_ALLY_SWITCH); ASSUME(GetMoveEffect(MOVE_ALLY_SWITCH) == EFFECT_ALLY_SWITCH);
PLAYER(SPECIES_HOOPA); PLAYER(SPECIES_HOOPA);
@ -295,7 +292,6 @@ DOUBLE_BATTLE_TEST("Ally Switch swaps Illusion data")
EXPECT(&gPlayerParty[2] == gBattleStruct->illusion[0].mon); EXPECT(&gPlayerParty[2] == gBattleStruct->illusion[0].mon);
} }
} }
*/
// Triple Battles required to test // 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"); //TO_DO_BATTLE_TEST("Ally Switch fails if the user is in the middle of the field in a Triple Battle");