pokeemmo/src/data/union_room.h
RoamerX 94e7f69fd3 批量文本修正
包括“携带”与“持有”,“碰到/上”与“遇到”,所有等级以及秘传招式相关的表述
统一学习器内容说明相关的文本
统一开拓区的两种等级的译名
将电视文本中的“酱油众”修正为“粉丝们”
修正了禁止参加名单的PM的展示(修改了一小部分代码)
2025-05-07 16:06:22 +08:00

1117 lines
53 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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[] = _("请从起始的地方开始。");
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[] = _("マルチバトルを かいさいする");
ALIGNED(4) static const u8 sJPText_TradePokemon[] = _("ポケモンこうかんを かいさいする");
ALIGNED(4) static const u8 sJPText_Chat[] = _("チャットを かいさいする");
ALIGNED(4) static const u8 sJPText_DistWonderCard[] = _("ふしぎなカードをくばる");
ALIGNED(4) static const u8 sJPText_DistWonderNews[] = _("ふしぎなニュースをくばる");
ALIGNED(4) static const u8 sJPText_DistMysteryEvent[] = _("ふしぎなできごとを かいさいする"); // Unused
ALIGNED(4) static const u8 sJPText_HoldPokemonJump[] = _("なわとびを かいさいする");
ALIGNED(4) static const u8 sJPText_HoldBerryCrush[] = _("きのみマッシャーを かいさいする");
ALIGNED(4) static const u8 sJPText_HoldBerryPicking[] = _("きのみどりを かいさいする");
ALIGNED(4) static const u8 sJPText_HoldSpinTrade[] = _("ぐるぐるこうかんを かいさいする");
ALIGNED(4) static const u8 sJPText_HoldSpinShop[] = _("ぐるぐるショップを かいさいする");
// Unused
static const u8 *const sJPLinkGroupActionTexts[] = {
sJPText_SingleBattle,
sJPText_DoubleBattle,
sJPText_MultiBattle,
sJPText_TradePokemon,
sJPText_Chat,
sJPText_DistWonderCard,
sJPText_DistWonderNews,
sJPText_DistWonderCard,
sJPText_HoldPokemonJump,
sJPText_HoldBerryCrush,
sJPText_HoldBerryPicking,
sJPText_HoldBerryPicking,
sJPText_HoldSpinTrade,
sJPText_HoldSpinShop
};
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
{
sText_1PlayerNeeded,
sText_2PlayerMode
},
// 4 players required
{
sText_3PlayersNeeded,
sText_2PlayersNeeded,
sText_1PlayerNeeded,
sText_4PlayerMode
},
// 2-5 players required
{
sText_1PlayerNeeded,
sText_2PlayerMode,
sText_3PlayerMode,
sText_4PlayerMode,
sText_5PlayerMode
},
// 3-5 players required
{
sText_2PlayersNeeded,
sText_1PlayerNeeded,
sText_3PlayerMode,
sText_4PlayerMode,
sText_5PlayerMode
},
// 2-4 players required
{
sText_1PlayerNeeded,
sText_2PlayerMode,
sText_3PlayerMode,
sText_4PlayerMode
}
};
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}想要与您连接\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[] = _("和其他成员的{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[] = _("其他训练师\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,
[RFU_STATUS_FATAL_ERROR] = sText_MemberNoLongerAvailable,
[RFU_STATUS_CONNECTION_ERROR] = sText_TrainerAppearsUnavailable,
[RFU_STATUS_CHILD_SEND_COMPLETE] = NULL,
[RFU_STATUS_NEW_CHILD_DETECTED] = NULL,
[RFU_STATUS_JOIN_GROUP_OK] = NULL,
[RFU_STATUS_JOIN_GROUP_NO] = sText_PlayerRepliedNo,
[RFU_STATUS_WAIT_ACK_JOIN_GROUP] = NULL,
[RFU_STATUS_LEAVE_GROUP_NOTICE] = NULL,
[RFU_STATUS_LEAVE_GROUP] = sText_StoppedBeingMember
};
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,
[RFU_STATUS_FATAL_ERROR] = sText_LinkWithFriendDropped,
[RFU_STATUS_CONNECTION_ERROR] = sText_LinkWithFriendDropped,
[RFU_STATUS_CHILD_SEND_COMPLETE] = NULL,
[RFU_STATUS_NEW_CHILD_DETECTED] = NULL,
[RFU_STATUS_JOIN_GROUP_OK] = NULL,
[RFU_STATUS_JOIN_GROUP_NO] = sText_PlayerRepliedNo2,
[RFU_STATUS_WAIT_ACK_JOIN_GROUP] = NULL,
[RFU_STATUS_LEAVE_GROUP_NOTICE] = NULL,
[RFU_STATUS_LEAVE_GROUP] = NULL
};
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[] = {
sText_DoYouWantXMode,
sText_DoYouWantXMode2
};
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[] = _("正在与{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[] = _("请稍等……{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[] = {
sText_Communicating,
sText_CommunicatingWithPlayer,
sText_PleaseWaitAWhile
};
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] = {
{
sText_HiDoSomethingMale,
sText_HiDoSomethingFemale
}, {
sText_HiDoSomethingAgainMale,
sText_HiDoSomethingAgainFemale
}
};
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] = {
{
sText_DoSomethingMale,
sText_DoSomethingFemale
}, {
sText_DoSomethingAgainMale,
sText_DoSomethingAgainMale // was probably supposed to be sText_DoSomethingAgainFemale
}
};
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[] = _("等待\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[] = _("其他训练师展示\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[] = {
sText_ShowTrainerCard,
sText_BattleChallenge,
sText_ChatInvitation,
sText_OfferToTradeMon
};
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] = {
{
sText_JoinChatMale,
sText_JoinChatFemale
}, {
sText_PlayerJoinChatMale,
sText_PlayerJoinChatFemale
}
};
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] = {
{
sText_WaitForBattleMale,
sText_WaitForChatMale,
NULL,
sText_ShowTrainerCardMale
}, {
sText_WaitForBattleFemale,
sText_WaitForChatFemale,
NULL,
sText_ShowTrainerCardFemale
}
};
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] = {
{
{
sText_BattleWillBeStarted,
sText_EnteringChat,
sText_TradeWillBeStarted
}, {
sText_BattleWillBeStarted,
sText_EnteringChat,
sText_TradeWillBeStarted
}
}, {
{
sText_DoneWaitingBattleMale,
sText_DoneWaitingChatMale,
sText_TradeWillBeStarted
}, {
sText_DoneWaitingBattleFemale,
sText_DoneWaitingChatFemale,
sText_TradeWillBeStarted
}
}
};
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[] = _("嗯?我的训练师卡片……\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[] = _("如果以后有什么事找我\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[] = _("哎呦!抱歉,但是我有事\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[] = _("好吧。\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] = {
sText_DeclineChatMale,
stext_DeclineChatFemale
};
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] = {
sText_ChatDeclinedMale,
sText_ChatDeclinedFemale
};
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] = {
{
sText_YoureToughMale,
sText_UsedGoodMoveMale,
sText_BattleSurpriseMale,
sText_SwitchedMonsMale
},
{
sText_YoureToughFemale,
sText_UsedGoodMoveFemale,
sText_BattleSurpriseFemale,
sText_SwitchedMonsFemale
}
};
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[] = _("哦?\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] = {
{
sText_LearnedSomethingMale,
sText_ThatsFunnyMale,
sText_RandomChatMale1,
sText_RandomChatMale2
},
{
sText_LearnedSomethingFemale,
sText_ThatsFunnyFemale,
sText_RandomChatFemale1,
sText_RandomChatFemale2
}
};
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] = {
{
sText_ShowedTrainerCardMale1,
sText_ShowedTrainerCardMale2
},
{
sText_ShowedTrainerCardFemale1,
sText_ShowedTrainerCardFemale2
}
};
ALIGNED(4) static const u8 sText_MaleTraded1[] = _("哈哈!\n我确实很想要这只宝可梦!\p\p");
ALIGNED(4) static const u8 sText_MaleTraded2[] = _("最终,一场交换使得\n宝可梦到手,圆了我\l长久的梦。\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] = {
{
sText_MaleTraded1,
sText_MaleTraded2
},
{
sText_FemaleTraded1,
sText_FemaleTraded2
}
};
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用于交换。");
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_1}想要的\n{STR_VAR_2}属性的宝可梦\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[] = {
sText_PlayerCantTradeForYourMon,
sText_CantTradeForPartnersMon
};
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] =
{
[LINK_GROUP_SINGLE_BATTLE] = sText_ChooseTrainerSingleBattle,
[LINK_GROUP_DOUBLE_BATTLE] = sText_ChooseTrainerDoubleBattle,
[LINK_GROUP_MULTI_BATTLE] = sText_ChooseLeaderMultiBattle,
[LINK_GROUP_TRADE] = sText_ChooseTrainerToTradeWith,
[LINK_GROUP_POKEMON_JUMP] = sText_ChooseLeaderPokemonJump,
[LINK_GROUP_BERRY_CRUSH] = sText_ChooseLeaderBerryCrush,
[LINK_GROUP_BERRY_PICKING] = sText_ChooseLeaderBerryPicking,
[LINK_GROUP_WONDER_CARD] = sText_ChooseTrainerToShareWonderCards,
[LINK_GROUP_WONDER_NEWS] = sText_ChooseTrainerToShareWonderNews,
[LINK_GROUP_UNION_ROOM_RESUME] = NULL,
[LINK_GROUP_UNION_ROOM_INIT] = NULL,
[LINK_GROUP_UNK_11] = NULL,
[LINK_GROUP_RECORD_CORNER] = sText_ChooseLeaderRecordCorner,
[LINK_GROUP_BERRY_BLENDER] = sText_ChooseLeaderBerryBlender,
[LINK_GROUP_UNK_14] = NULL,
[LINK_GROUP_COOL_CONTEST] = sText_ChooseLeaderCoolContest,
[LINK_GROUP_BEAUTY_CONTEST] = sText_ChooseLeaderBeautyContest,
[LINK_GROUP_CUTE_CONTEST] = sText_ChooseLeaderCuteContest,
[LINK_GROUP_SMART_CONTEST] = sText_ChooseLeaderSmartContest,
[LINK_GROUP_TOUGH_CONTEST] = sText_ChooseLeaderToughContest,
[LINK_GROUP_BATTLE_TOWER] = sText_ChooseLeaderBattleTowerLv50,
[LINK_GROUP_BATTLE_TOWER_OPEN] = sText_ChooseLeaderBattleTowerOpenLv
};
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[] = _("宝可梦对战");
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,
sText_ItsBronzeCard,
sText_ItsCopperCard,
sText_ItsSilverCard,
sText_ItsGoldCard
};
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[] = _("{DYNAMIC 1}的训练师卡片\n确认完毕。{PAUSE 60}");
static const u8 *const sLinkGroupActivityNameTexts[] = {
[ACTIVITY_NONE] = sText_EmptyString,
[ACTIVITY_BATTLE_SINGLE] = sText_SingleBattle,
[ACTIVITY_BATTLE_DOUBLE] = sText_DoubleBattle,
[ACTIVITY_BATTLE_MULTI] = sText_MultiBattle,
[ACTIVITY_TRADE] = sText_PokemonTrades,
[ACTIVITY_CHAT] = sText_Chat,
[ACTIVITY_WONDER_CARD_DUP] = sText_WonderCards,
[ACTIVITY_WONDER_NEWS_DUP] = sText_WonderNews,
[ACTIVITY_CARD] = sText_Cards,
[ACTIVITY_POKEMON_JUMP] = sText_PokemonJump,
[ACTIVITY_BERRY_CRUSH] = sText_BerryCrush,
[ACTIVITY_BERRY_PICK] = sText_BerryPicking,
[ACTIVITY_SEARCH] = sText_Search,
[ACTIVITY_SPIN_TRADE] = sText_EmptyString,
[ACTIVITY_BATTLE_TOWER_OPEN] = sText_BattleTowerOpenLv,
[ACTIVITY_RECORD_CORNER] = sText_RecordCorner,
[ACTIVITY_BERRY_BLENDER] = sText_BerryBlender,
[ACTIVITY_ACCEPT] = sText_EmptyString,
[ACTIVITY_DECLINE] = sText_EmptyString,
[ACTIVITY_NPCTALK] = sText_EmptyString,
[ACTIVITY_PLYRTALK] = sText_EmptyString,
[ACTIVITY_WONDER_CARD] = sText_WonderCards,
[ACTIVITY_WONDER_NEWS] = sText_WonderNews,
[ACTIVITY_CONTEST_COOL] = sText_CoolContest,
[ACTIVITY_CONTEST_BEAUTY] = sText_BeautyContest,
[ACTIVITY_CONTEST_CUTE] = sText_CuteContest,
[ACTIVITY_CONTEST_SMART] = sText_SmartContest,
[ACTIVITY_CONTEST_TOUGH] = sText_ToughContest,
[ACTIVITY_BATTLE_TOWER] = sText_BattleTowerLv50
};
static const struct WindowTemplate sWindowTemplate_BButtonCancel = {
.bg = 0,
.tilemapLeft = 0,
.tilemapTop = 0,
.width = 30,
.height = 2,
.paletteNum = 15,
.baseBlock = 0x0008
};
// Minimum and maximum number of players for a link group
// A minimum of 0 means the min and max are equal
#define LINK_GROUP_CAPACITY(min, max) (((min) << 12) | ((max) << 8))
#define GROUP_MAX(capacity) (capacity & 0x0F)
#define GROUP_MIN(capacity) (capacity >> 4)
#define GROUP_MIN2(capacity) (capacity & 0xF0) // Unnecessary to have both, but needed to match
static const u32 sLinkGroupToActivityAndCapacity[NUM_LINK_GROUP_TYPES] = {
[LINK_GROUP_SINGLE_BATTLE] = ACTIVITY_BATTLE_SINGLE | LINK_GROUP_CAPACITY(0, 2),
[LINK_GROUP_DOUBLE_BATTLE] = ACTIVITY_BATTLE_DOUBLE | LINK_GROUP_CAPACITY(0, 2),
[LINK_GROUP_MULTI_BATTLE] = ACTIVITY_BATTLE_MULTI | LINK_GROUP_CAPACITY(0, 4),
[LINK_GROUP_TRADE] = ACTIVITY_TRADE | LINK_GROUP_CAPACITY(0, 2),
[LINK_GROUP_POKEMON_JUMP] = ACTIVITY_POKEMON_JUMP | LINK_GROUP_CAPACITY(2, 5),
[LINK_GROUP_BERRY_CRUSH] = ACTIVITY_BERRY_CRUSH | LINK_GROUP_CAPACITY(2, 5),
[LINK_GROUP_BERRY_PICKING] = ACTIVITY_BERRY_PICK | LINK_GROUP_CAPACITY(3, 5),
[LINK_GROUP_WONDER_CARD] = ACTIVITY_NONE | LINK_GROUP_CAPACITY(0, 0),
[LINK_GROUP_WONDER_NEWS] = ACTIVITY_NONE | LINK_GROUP_CAPACITY(0, 0),
[LINK_GROUP_UNION_ROOM_RESUME] = ACTIVITY_NONE | LINK_GROUP_CAPACITY(0, 0),
[LINK_GROUP_UNION_ROOM_INIT] = ACTIVITY_NONE | LINK_GROUP_CAPACITY(0, 0),
[LINK_GROUP_UNK_11] = ACTIVITY_NONE | LINK_GROUP_CAPACITY(0, 0),
[LINK_GROUP_RECORD_CORNER] = ACTIVITY_RECORD_CORNER | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_BERRY_BLENDER] = ACTIVITY_BERRY_BLENDER | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_UNK_14] = ACTIVITY_NONE | LINK_GROUP_CAPACITY(0, 0),
[LINK_GROUP_COOL_CONTEST] = ACTIVITY_CONTEST_COOL | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_BEAUTY_CONTEST] = ACTIVITY_CONTEST_BEAUTY | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_CUTE_CONTEST] = ACTIVITY_CONTEST_CUTE | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_SMART_CONTEST] = ACTIVITY_CONTEST_SMART | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_TOUGH_CONTEST] = ACTIVITY_CONTEST_TOUGH | LINK_GROUP_CAPACITY(2, 4),
[LINK_GROUP_BATTLE_TOWER] = ACTIVITY_BATTLE_TOWER | LINK_GROUP_CAPACITY(0, 2),
[LINK_GROUP_BATTLE_TOWER_OPEN] = ACTIVITY_BATTLE_TOWER_OPEN | LINK_GROUP_CAPACITY(0, 2)
};
static const struct WindowTemplate sWindowTemplate_PlayerList = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 3,
.width = 13,
.height = 8,
.paletteNum = 15,
.baseBlock = 0x0044
};
static const struct WindowTemplate sWindowTemplate_5PlayerList = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 3,
.width = 13,
.height = 10,
.paletteNum = 15,
.baseBlock = 0x0044
};
static const struct WindowTemplate sWindowTemplate_NumPlayerMode = {
.bg = 0,
.tilemapLeft = 16,
.tilemapTop = 3,
.width = 7,
.height = 4,
.paletteNum = 15,
.baseBlock = 0x00c6
};
static const struct ListMenuItem sPossibleGroupMembersListMenuItems[] = {
{ sText_EmptyString, 0 },
{ sText_EmptyString, 1 },
{ sText_EmptyString, 2 },
{ sText_EmptyString, 3 },
{ sText_EmptyString, 4 }
};
static const struct ListMenuTemplate sListMenuTemplate_PossibleGroupMembers = {
.items = sPossibleGroupMembersListMenuItems,
.moveCursorFunc = NULL,
.itemPrintFunc = ItemPrintFunc_PossibleGroupMembers,
.totalItems = ARRAY_COUNT(sPossibleGroupMembersListMenuItems),
.maxShowed = 5,
.windowId = 0,
.header_X = 0,
.item_X = 0,
.cursor_X = 0,
.upText_Y = 1,
.cursorPal = 2,
.fillValue = 1,
.cursorShadowPal = 3,
.lettersSpacing = 0,
.itemVerticalPadding = 0,
.scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
.fontId = FONT_NORMAL,
.cursorKind = CURSOR_INVISIBLE
};
static const struct WindowTemplate sWindowTemplate_GroupList = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 3,
.width = 17,
.height = 10,
.paletteNum = 15,
.baseBlock = 0x0044
};
static const struct WindowTemplate sWindowTemplate_PlayerNameAndId = {
.bg = 0,
.tilemapLeft = 20,
.tilemapTop = 3,
.width = 7,
.height = 4,
.paletteNum = 15,
.baseBlock = 0x00ee
};
static const struct ListMenuItem sUnionRoomGroupsMenuItems[] = {
{ sText_EmptyString, 0 },
{ sText_EmptyString, 1 },
{ sText_EmptyString, 2 },
{ sText_EmptyString, 3 },
{ sText_EmptyString, 4 },
{ sText_EmptyString, 5 },
{ sText_EmptyString, 6 },
{ sText_EmptyString, 7 },
{ sText_EmptyString, 8 },
{ sText_EmptyString, 9 },
{ sText_EmptyString, 10 },
{ sText_EmptyString, 11 },
{ sText_EmptyString, 12 },
{ sText_EmptyString, 13 },
{ sText_EmptyString, 14 },
{ sText_EmptyString, 15 }
};
static const struct ListMenuTemplate sListMenuTemplate_UnionRoomGroups = {
.items = sUnionRoomGroupsMenuItems,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = ListMenuItemPrintFunc_UnionRoomGroups,
.totalItems = ARRAY_COUNT(sUnionRoomGroupsMenuItems),
.maxShowed = 5,
.windowId = 0,
.header_X = 0,
.item_X = 8,
.cursor_X = 0,
.upText_Y = 1,
.cursorPal = 2,
.fillValue = 1,
.cursorShadowPal = 3,
.lettersSpacing = 0,
.itemVerticalPadding = 0,
.scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD,
.fontId = FONT_NORMAL,
.cursorKind = CURSOR_BLACK_ARROW
};
static const struct WindowTemplate sWindowTemplate_InviteToActivity = {
.bg = 0,
.tilemapLeft = 20,
.tilemapTop = 5,
.width = 16,
.height = 8,
.paletteNum = 15,
.baseBlock = 0x0001
};
static const struct ListMenuItem sInviteToActivityMenuItems[] = {
{ sText_Greetings, ACTIVITY_CARD | LINK_GROUP_CAPACITY(0, 2)},
{ sText_Battle, ACTIVITY_BATTLE_SINGLE | IN_UNION_ROOM | LINK_GROUP_CAPACITY(0, 2)},
{ sText_Chat2, ACTIVITY_CHAT | IN_UNION_ROOM | LINK_GROUP_CAPACITY(0, 2)},
{ sText_Exit, ACTIVITY_NONE | IN_UNION_ROOM }
};
static const struct ListMenuTemplate sListMenuTemplate_InviteToActivity = {
.items = sInviteToActivityMenuItems,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = NULL,
.totalItems = ARRAY_COUNT(sInviteToActivityMenuItems),
.maxShowed = 4,
.windowId = 0,
.header_X = 0,
.item_X = 8,
.cursor_X = 0,
.upText_Y = 1,
.cursorPal = 2,
.fillValue = 1,
.cursorShadowPal = 3,
.lettersSpacing = 0,
.itemVerticalPadding = 0,
.scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
.fontId = FONT_NORMAL,
.cursorKind = CURSOR_BLACK_ARROW
};
static const struct WindowTemplate sWindowTemplate_RegisterForTrade = {
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 7,
.width = 16,
.height = 6,
.paletteNum = 15,
.baseBlock = 0x0001
};
static const struct ListMenuItem sRegisterForTradeListMenuItems[] = {
{ gText_Register, 1 },
{ sText_Info, 2 },
{ sText_Exit, 3 }
};
static const struct ListMenuTemplate sListMenuTemplate_RegisterForTrade = {
.items = sRegisterForTradeListMenuItems,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = NULL,
.totalItems = ARRAY_COUNT(sRegisterForTradeListMenuItems),
.maxShowed = 3,
.windowId = 0,
.header_X = 0,
.item_X = 8,
.cursor_X = 0,
.upText_Y = 1,
.cursorPal = 2,
.fillValue = 1,
.cursorShadowPal = 3,
.lettersSpacing = 0,
.itemVerticalPadding = 0,
.scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
.fontId = FONT_NORMAL,
.cursorKind = CURSOR_BLACK_ARROW
};
static const struct WindowTemplate sWindowTemplate_TradingBoardRequestType = {
.bg = 0,
.tilemapLeft = 20,
.tilemapTop = 1,
.width = 16,
.height = 12,
.paletteNum = 15,
.baseBlock = 0x0001
};
// Subtract two from the total type count to handle in-battle types not for display
static const struct ListMenuItem sTradingBoardTypes[NUMBER_OF_MON_TYPES - 2] = {
{ gTypesInfo[TYPE_NORMAL].name, TYPE_NORMAL },
{ gTypesInfo[TYPE_FIRE].name, TYPE_FIRE },
{ gTypesInfo[TYPE_WATER].name, TYPE_WATER },
{ gTypesInfo[TYPE_ELECTRIC].name, TYPE_ELECTRIC },
{ gTypesInfo[TYPE_GRASS].name, TYPE_GRASS },
{ gTypesInfo[TYPE_ICE].name, TYPE_ICE },
{ gTypesInfo[TYPE_GROUND].name, TYPE_GROUND },
{ gTypesInfo[TYPE_ROCK].name, TYPE_ROCK },
{ gTypesInfo[TYPE_FLYING].name, TYPE_FLYING },
{ gTypesInfo[TYPE_PSYCHIC].name, TYPE_PSYCHIC },
{ gTypesInfo[TYPE_FIGHTING].name, TYPE_FIGHTING },
{ gTypesInfo[TYPE_POISON].name, TYPE_POISON },
{ gTypesInfo[TYPE_BUG].name, TYPE_BUG },
{ gTypesInfo[TYPE_GHOST].name, TYPE_GHOST },
{ gTypesInfo[TYPE_DRAGON].name, TYPE_DRAGON },
{ gTypesInfo[TYPE_STEEL].name, TYPE_STEEL },
{ gTypesInfo[TYPE_DARK].name, TYPE_DARK },
{ gTypesInfo[TYPE_FAIRY].name, TYPE_FAIRY },
{ sText_Exit, NUMBER_OF_MON_TYPES }
};
static const struct ListMenuTemplate sMenuTemplate_TradingBoardRequestType = {
.items = sTradingBoardTypes,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = NULL,
.totalItems = ARRAY_COUNT(sTradingBoardTypes),
.maxShowed = 6,
.windowId = 0,
.header_X = 0,
.item_X = 8,
.cursor_X = 0,
.upText_Y = 1,
.cursorPal = 2,
.fillValue = 1,
.cursorShadowPal = 3,
.lettersSpacing = 0,
.itemVerticalPadding = 0,
.scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
.fontId = FONT_NORMAL,
.cursorKind = CURSOR_BLACK_ARROW
};
static const struct WindowTemplate sWindowTemplate_TradingBoardHeader = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 28,
.height = 2,
.paletteNum = 13,
.baseBlock = 0x0001
};
static const struct WindowTemplate sWindowTemplate_TradingBoardMain = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 5,
.width = 28,
.height = 12,
.paletteNum = 13,
.baseBlock = 0x0039
};
static const struct ListMenuItem sTradeBoardListMenuItems[] = {
{ sText_EmptyString, LIST_HEADER },
{ sText_EmptyString, 0 },
{ sText_EmptyString, 1 },
{ sText_EmptyString, 2 },
{ sText_EmptyString, 3 },
{ sText_EmptyString, 4 },
{ sText_EmptyString, 5 },
{ sText_EmptyString, 6 },
{ sText_EmptyString, 7 },
{ sText_Exit2, 8 }
};
static const struct ListMenuTemplate sTradeBoardListMenuTemplate = {
.items = sTradeBoardListMenuItems,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = TradeBoardListMenuItemPrintFunc,
.totalItems = ARRAY_COUNT(sTradeBoardListMenuItems),
.maxShowed = 6,
.windowId = 0,
.header_X = 0,
.item_X = 8,
.cursor_X = 0,
.upText_Y = 1,
.cursorPal = 14,
.fillValue = 15,
.cursorShadowPal = 13,
.lettersSpacing = 0,
.itemVerticalPadding = 0,
.scrollMultiple = LIST_NO_MULTIPLE_SCROLL,
.fontId = FONT_NORMAL,
.cursorKind = CURSOR_BLACK_ARROW
};
// Unused
static const struct WindowTemplate sWindowTemplate_Unused = {
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 5,
.width = 28,
.height = 12,
.paletteNum = 13,
.baseBlock = 0x0039
};
static const struct ListMenuItem sEmptyListMenuItems[] = {
{ sText_EmptyString, 0 },
{ sText_EmptyString, 1 },
{ sText_EmptyString, 2 },
{ sText_EmptyString, 3 },
{ sText_EmptyString, 4 },
{ sText_EmptyString, 5 },
{ sText_EmptyString, 6 },
{ sText_EmptyString, 7 },
{ sText_EmptyString, 8 },
{ sText_EmptyString, 9 },
{ sText_EmptyString, 10 },
{ sText_EmptyString, 11 },
{ sText_EmptyString, 12 },
{ sText_EmptyString, 13 },
{ sText_EmptyString, 14 },
{ sText_EmptyString, 15 }
};
// Unused
static const struct ListMenuTemplate sEmptyListMenuTemplate = {
.items = sEmptyListMenuItems,
.moveCursorFunc = ListMenuDefaultCursorMoveFunc,
.itemPrintFunc = ItemPrintFunc_EmptyList,
.totalItems = ARRAY_COUNT(sEmptyListMenuItems),
.maxShowed = 4,
.windowId = 0,
.header_X = 0,
.item_X = 8,
.cursor_X = 0,
.upText_Y = 1,
.cursorPal = 2,
.fillValue = 1,
.cursorShadowPal = 3,
.lettersSpacing = 0,
.itemVerticalPadding = 0,
.scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD,
.fontId = FONT_NORMAL,
.cursorKind = CURSOR_BLACK_ARROW
};
static const struct RfuPlayerData sUnionRoomPlayer_DummyRfu = {0};
ALIGNED(4) static const u8 sAcceptedActivityIds_SingleBattle[] = {ACTIVITY_BATTLE_SINGLE, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_DoubleBattle[] = {ACTIVITY_BATTLE_DOUBLE, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_MultiBattle[] = {ACTIVITY_BATTLE_MULTI, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_Trade[] = {ACTIVITY_TRADE, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_PokemonJump[] = {ACTIVITY_POKEMON_JUMP, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_BerryCrush[] = {ACTIVITY_BERRY_CRUSH, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_BerryPicking[] = {ACTIVITY_BERRY_PICK, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_WonderCard[] = {ACTIVITY_WONDER_CARD, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_WonderNews[] = {ACTIVITY_WONDER_NEWS, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_Resume[] = {
IN_UNION_ROOM | ACTIVITY_NONE,
IN_UNION_ROOM | ACTIVITY_BATTLE_SINGLE,
IN_UNION_ROOM | ACTIVITY_TRADE,
IN_UNION_ROOM | ACTIVITY_CHAT,
IN_UNION_ROOM | ACTIVITY_CARD,
IN_UNION_ROOM | ACTIVITY_ACCEPT,
IN_UNION_ROOM | ACTIVITY_DECLINE,
IN_UNION_ROOM | ACTIVITY_NPCTALK,
IN_UNION_ROOM | ACTIVITY_PLYRTALK,
0xff
};
ALIGNED(4) static const u8 sAcceptedActivityIds_Init[] = {ACTIVITY_SEARCH, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_Unk11[] = {
ACTIVITY_BATTLE_SINGLE,
ACTIVITY_BATTLE_DOUBLE,
ACTIVITY_BATTLE_MULTI,
ACTIVITY_TRADE,
ACTIVITY_POKEMON_JUMP,
ACTIVITY_BERRY_CRUSH,
ACTIVITY_BERRY_PICK,
ACTIVITY_WONDER_CARD,
ACTIVITY_WONDER_NEWS,
ACTIVITY_SPIN_TRADE,
0xff
};
ALIGNED(4) static const u8 sAcceptedActivityIds_RecordCorner[] = {ACTIVITY_RECORD_CORNER, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_BerryBlender[] = {ACTIVITY_BERRY_BLENDER, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_CoolContest[] = {ACTIVITY_CONTEST_COOL, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_BeautyContest[] = {ACTIVITY_CONTEST_BEAUTY, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_CuteContest[] = {ACTIVITY_CONTEST_CUTE, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_SmartContest[] = {ACTIVITY_CONTEST_SMART, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_ToughContest[] = {ACTIVITY_CONTEST_TOUGH, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_BattleTower[] = {ACTIVITY_BATTLE_TOWER, 0xff};
ALIGNED(4) static const u8 sAcceptedActivityIds_BattleTowerOpen[] = {ACTIVITY_BATTLE_TOWER_OPEN, 0xff};
static const u8 *const sAcceptedActivityIds[NUM_LINK_GROUP_TYPES] = {
[LINK_GROUP_SINGLE_BATTLE] = sAcceptedActivityIds_SingleBattle,
[LINK_GROUP_DOUBLE_BATTLE] = sAcceptedActivityIds_DoubleBattle,
[LINK_GROUP_MULTI_BATTLE] = sAcceptedActivityIds_MultiBattle,
[LINK_GROUP_TRADE] = sAcceptedActivityIds_Trade,
[LINK_GROUP_POKEMON_JUMP] = sAcceptedActivityIds_PokemonJump,
[LINK_GROUP_BERRY_CRUSH] = sAcceptedActivityIds_BerryCrush,
[LINK_GROUP_BERRY_PICKING] = sAcceptedActivityIds_BerryPicking,
[LINK_GROUP_WONDER_CARD] = sAcceptedActivityIds_WonderCard,
[LINK_GROUP_WONDER_NEWS] = sAcceptedActivityIds_WonderNews,
[LINK_GROUP_UNION_ROOM_RESUME] = sAcceptedActivityIds_Resume,
[LINK_GROUP_UNION_ROOM_INIT] = sAcceptedActivityIds_Init,
[LINK_GROUP_UNK_11] = sAcceptedActivityIds_Unk11,
[LINK_GROUP_RECORD_CORNER] = sAcceptedActivityIds_RecordCorner,
[LINK_GROUP_BERRY_BLENDER] = sAcceptedActivityIds_BerryBlender,
[LINK_GROUP_UNK_14] = NULL,
[LINK_GROUP_COOL_CONTEST] = sAcceptedActivityIds_CoolContest,
[LINK_GROUP_BEAUTY_CONTEST] = sAcceptedActivityIds_BeautyContest,
[LINK_GROUP_CUTE_CONTEST] = sAcceptedActivityIds_CuteContest,
[LINK_GROUP_SMART_CONTEST] = sAcceptedActivityIds_SmartContest,
[LINK_GROUP_TOUGH_CONTEST] = sAcceptedActivityIds_ToughContest,
[LINK_GROUP_BATTLE_TOWER] = sAcceptedActivityIds_BattleTower,
[LINK_GROUP_BATTLE_TOWER_OPEN] = sAcceptedActivityIds_BattleTowerOpen
};
static const u8 sLinkGroupToURoomActivity[NUM_LINK_GROUP_TYPES + 2] =
{
[LINK_GROUP_SINGLE_BATTLE] = ACTIVITY_BATTLE_SINGLE,
[LINK_GROUP_DOUBLE_BATTLE] = ACTIVITY_BATTLE_DOUBLE,
[LINK_GROUP_MULTI_BATTLE] = ACTIVITY_BATTLE_MULTI,
[LINK_GROUP_TRADE] = ACTIVITY_TRADE,
[LINK_GROUP_POKEMON_JUMP] = ACTIVITY_POKEMON_JUMP,
[LINK_GROUP_BERRY_CRUSH] = ACTIVITY_BERRY_CRUSH,
[LINK_GROUP_BERRY_PICKING] = ACTIVITY_BERRY_PICK,
[LINK_GROUP_WONDER_CARD] = ACTIVITY_WONDER_CARD,
[LINK_GROUP_WONDER_NEWS] = ACTIVITY_WONDER_NEWS,
[LINK_GROUP_UNION_ROOM_RESUME] = ACTIVITY_NONE,
[LINK_GROUP_UNION_ROOM_INIT] = ACTIVITY_NONE,
[LINK_GROUP_UNK_11] = ACTIVITY_NONE,
[LINK_GROUP_RECORD_CORNER] = ACTIVITY_RECORD_CORNER,
[LINK_GROUP_BERRY_BLENDER] = ACTIVITY_BERRY_BLENDER,
[LINK_GROUP_UNK_14] = ACTIVITY_NONE,
[LINK_GROUP_COOL_CONTEST] = ACTIVITY_CONTEST_COOL,
[LINK_GROUP_BEAUTY_CONTEST] = ACTIVITY_CONTEST_BEAUTY,
[LINK_GROUP_CUTE_CONTEST] = ACTIVITY_CONTEST_CUTE,
[LINK_GROUP_SMART_CONTEST] = ACTIVITY_CONTEST_SMART,
[LINK_GROUP_TOUGH_CONTEST] = ACTIVITY_CONTEST_TOUGH,
[LINK_GROUP_BATTLE_TOWER] = ACTIVITY_BATTLE_TOWER,
[LINK_GROUP_BATTLE_TOWER_OPEN] = ACTIVITY_BATTLE_TOWER_OPEN
};