mirror of https://github.com/pret/pokeplatinum
Document battle tower multi battle scripts (#848)
This commit is contained in:
parent
ac5f4a411f
commit
30f97f3b48
|
|
@ -2925,9 +2925,9 @@
|
|||
.short \word2
|
||||
.endm
|
||||
|
||||
.macro ScrCmd_1FE arg0
|
||||
.macro PrintBattleTowerIntroMessage opponentID
|
||||
.short 510
|
||||
.byte \arg0
|
||||
.byte \opponentID
|
||||
.endm
|
||||
|
||||
.macro MessageSeenBanlistSpecies banlistMsgStartIdx, numPokemonRequired
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
BATTLE_TOWER_FUNCTION_CHECK_ENOUGH_VALID_POKEMON = 1
|
||||
BATTLE_TOWER_FUNCTION_UNK_02
|
||||
BATTLE_TOWER_FUNCTION_RESET_SYSTEM
|
||||
BATTLE_TOWER_FUNCTION_UNK_03
|
||||
BATTLE_TOWER_FUNCTION_UNK_04
|
||||
BATTLE_TOWER_FUNCTION_SET_COMMUNICATION_CLUB_ACCESSIBLE
|
||||
|
|
@ -15,20 +15,21 @@ BATTLE_TOWER_FUNCTION_UNK_16
|
|||
BATTLE_TOWER_FUNCTION_UNK_30 = 30
|
||||
BATTLE_TOWER_FUNCTION_UNK_31
|
||||
BATTLE_TOWER_FUNCTION_CHECK_DUPLICATE_SPECIES_AND_HELD_ITEMS
|
||||
BATTLE_TOWER_FUNCTION_UNK_33
|
||||
BATTLE_TOWER_FUNCTION_GET_NEXT_OPPONENT_NUM
|
||||
BATTLE_TOWER_FUNCTION_UNK_34
|
||||
BATTLE_TOWER_FUNCTION_UNK_35
|
||||
BATTLE_TOWER_FUNCTION_HAS_DEFEATED_SEVEN_TRAINERS
|
||||
BATTLE_TOWER_FUNCTION_UNK_36
|
||||
BATTLE_TOWER_FUNCTION_UNK_37
|
||||
BATTLE_TOWER_FUNCTION_UNK_38
|
||||
BATTLE_TOWER_FUNCTION_UPDATE_GAME_RECORDS
|
||||
BATTLE_TOWER_FUNCTION_UPDATE_GAME_RECORDS_AND_JOURNAL
|
||||
BATTLE_TOWER_FUNCTION_UNK_39
|
||||
BATTLE_TOWER_FUNCTION_UNK_40
|
||||
BATTLE_TOWER_FUNCTION_SET_OPPONENT_TEAMS
|
||||
BATTLE_TOWER_FUNCTION_GET_OPPONENT_OBJECT_ID
|
||||
BATTLE_TOWER_FUNCTION_UNK_42
|
||||
BATTLE_TOWER_FUNCTION_GET_CHALLENGE_MODE
|
||||
BATTLE_TOWER_FUNCTION_UNK_44
|
||||
BATTLE_TOWER_FUNCTION_UNK_45
|
||||
BATTLE_TOWER_FUNCTION_UNK_47 = 47
|
||||
BATTLE_TOWER_FUNCTION_UNK_46
|
||||
BATTLE_TOWER_FUNCTION_UNK_47
|
||||
BATTLE_TOWER_FUNCTION_UNK_48
|
||||
BATTLE_TOWER_FUNCTION_UNK_49
|
||||
BATTLE_TOWER_FUNCTION_SET_PARTNER_ID
|
||||
|
|
@ -40,4 +41,5 @@ BATTLE_TOWER_FUNCTION_GET_PARTNER_PARAM
|
|||
BATTLE_TOWER_FUNCTION_UNK_56
|
||||
BATTLE_TOWER_FUNCTION_UNK_57
|
||||
BATTLE_TOWER_FUNCTION_UNK_58
|
||||
BATTLE_TOWER_FUNCTION_UNK_59
|
||||
BATTLE_TOWER_FUNCTION_CHECK_IS_NULL = 100
|
||||
|
|
|
|||
|
|
@ -488,8 +488,8 @@ FLAG_UNK_0x01E6
|
|||
FLAG_UNK_0x01E7
|
||||
FLAG_UNK_0x01E8
|
||||
FLAG_UNK_0x01E9
|
||||
FLAG_UNK_0x01EA
|
||||
FLAG_UNK_0x01EB
|
||||
FLAG_HIDE_MULTI_BATTLE_ROOM_OPPONENT_1
|
||||
FLAG_HIDE_MULTI_BATTLE_ROOM_OPPONENT_2
|
||||
FLAG_HIDE_BATTLE_SALON_CHERYL
|
||||
FLAG_HIDE_BATTLE_SALON_MIRA
|
||||
FLAG_HIDE_BATTLE_SALON_RILEY
|
||||
|
|
|
|||
|
|
@ -12,4 +12,9 @@
|
|||
#define BT_PARTNER_BUCK 4
|
||||
#define BT_PARTNERS_COUNT 5
|
||||
|
||||
#define BT_OPPONENTS_COUNT 7
|
||||
|
||||
#define BT_SINGLES_PARTY_SIZE 3
|
||||
#define BT_DOUBLES_PARTY_SIZE 4
|
||||
|
||||
#endif // POKEPLATINUM_CONSTANTS_BATTLE_TOWER_H
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "constants/moves.h"
|
||||
#include "constants/string.h"
|
||||
#include "generated/pokemon_stats.h"
|
||||
|
||||
typedef struct FrontierTrainerDataDTO {
|
||||
u32 trainerID;
|
||||
|
|
@ -45,7 +46,7 @@ typedef struct FrontierPokemonDataDTO {
|
|||
u8 spAtkEV;
|
||||
u8 spDefEV;
|
||||
};
|
||||
u8 evList[6];
|
||||
u8 evList[STAT_MAX];
|
||||
};
|
||||
union {
|
||||
struct {
|
||||
|
|
|
|||
|
|
@ -14,9 +14,9 @@
|
|||
#include "string_template.h"
|
||||
#include "trainer_info.h"
|
||||
|
||||
BattleFrontierTrainerData *ov104_0222DCE0(u16 param0, int param1, enum NarcID narcID);
|
||||
void ov104_0222DCF4(BattleFrontierPokemonData *param0, int param1, enum NarcID narcID);
|
||||
BattleFrontierTrainerData *ov104_0222DD04(FrontierTrainerDataDTO *param0, int param1, int heapID, int param3);
|
||||
BattleFrontierTrainerData *BattleTower_GetTrainerDataFromTrainerIDAndNarcID(u16 battleTowerTrainerID, enum HeapID heapID, enum NarcID narcID);
|
||||
void BattleTower_GetMonDataFromSetIDAndNarcID(BattleFrontierPokemonData *monData, int setID, enum NarcID narcID);
|
||||
BattleFrontierTrainerData *BattleTower_GetTrainerData(FrontierTrainerDataDTO *trDataDTO, int battleTowerTrainerID, enum HeapID heapID, enum NarcID narcID);
|
||||
u32 ov104_0222DD6C(FrontierPokemonDataDTO *param0, u16 param1, u32 param2, u32 param3, u8 param4, u8 param5, BOOL param6, int param7, enum NarcID narcID);
|
||||
void ov104_0222DF40(const FrontierPokemonDataDTO *param0, Pokemon *param1, u8 param2);
|
||||
u16 ov104_0222E10C(u8 param0);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
#include "savedata.h"
|
||||
|
||||
void ov104_022394A4(BattleTower *battleTower, SaveData *saveData);
|
||||
void BattleTower_CreateOpponentParties(BattleTower *battleTower, SaveData *saveData);
|
||||
u16 ov104_02239588(BattleTower *battleTower, u16 param1);
|
||||
void ov104_022395A0(BattleTower *battleTower, u16 param1);
|
||||
u16 ov104_022395B4(BattleTower *battleTower);
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@
|
|||
#include "field_battle_data_transfer.h"
|
||||
#include "savedata.h"
|
||||
|
||||
BOOL ov104_0223A0C4(BattleTower *battleTower, FrontierDataDTO *param1, u16 param2, int param3, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int heapID);
|
||||
BOOL BattleTower_CreateTrainerParty(BattleTower *battleTower, FrontierDataDTO *opponentDataDTO, u16 battleTowerTrainerID, int partySize, u16 *species, u16 *items, UnkStruct_0204B404 *param6, int heapID);
|
||||
void ov104_0223A30C(SaveData *saveData, FrontierDataDTO *param1, const u8 param2);
|
||||
FieldBattleDTO *ov104_0223A580(BattleTower *battleTower, UnkStruct_ov104_02230BE4 *param1);
|
||||
void ov104_0223A734(BattleTower *battleTower, u16 param1);
|
||||
u16 ov104_0223A750(BattleTower *battleTower, const u16 *param1);
|
||||
int ov104_0223A790(u8 param0);
|
||||
int BattleTower_GetTrainerMessagesBankID(u8 challengeMode);
|
||||
|
||||
#endif // POKEPLATINUM_OV104_0223A0C4_H
|
||||
|
|
|
|||
|
|
@ -15,11 +15,11 @@ typedef struct BattleTower {
|
|||
int unk_00;
|
||||
int heapID;
|
||||
u32 unk_08;
|
||||
u8 unk_0C;
|
||||
u8 nextOpponentNum;
|
||||
u8 unk_0D;
|
||||
u8 partySize;
|
||||
u8 challengeMode;
|
||||
u8 unk_10_0 : 1;
|
||||
u8 defeatedSevenTrainers : 1;
|
||||
u8 unk_10_1 : 2;
|
||||
u8 unk_10_3 : 1;
|
||||
u8 unk_10_4 : 1;
|
||||
|
|
@ -29,7 +29,7 @@ typedef struct BattleTower {
|
|||
u16 unk_14;
|
||||
u16 unk_16[2];
|
||||
u16 unk_1A;
|
||||
u16 unk_1C;
|
||||
u16 roomNum;
|
||||
u32 unk_20;
|
||||
u16 unk_24;
|
||||
u16 unk_26;
|
||||
|
|
@ -37,11 +37,11 @@ typedef struct BattleTower {
|
|||
u8 unk_2A[4];
|
||||
u16 unk_2E[4];
|
||||
u16 unk_36[4];
|
||||
u16 unk_3E[14];
|
||||
u16 trainerIDs[BT_OPPONENTS_COUNT * 2];
|
||||
Location unk_5C;
|
||||
UnkStruct_0202D060 *unk_70;
|
||||
UnkStruct_0202D750 *unk_74;
|
||||
FrontierDataDTO unk_78[2];
|
||||
FrontierDataDTO opponentsDataDTO[2];
|
||||
FrontierDataDTO partnersDataDTO[BT_PARTNERS_COUNT];
|
||||
UnkStruct_0204B404 unk_7E8[BT_PARTNERS_COUNT];
|
||||
u8 unk_838[BT_PARTNERS_COUNT];
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
u16 BattleTower_GetPartySizeForChallengeMode(u16 param0);
|
||||
BOOL sub_02049EC4(u16 param0, SaveData *saveData, u8 param2);
|
||||
void sub_02049F8C(void);
|
||||
void BattleTower_ResetSystem(void);
|
||||
void sub_02049F98(UnkStruct_0202D060 *param0);
|
||||
BOOL sub_02049FA0(UnkStruct_0202D060 *param0);
|
||||
void BattleTower_SetCommunicationClubAccessible(FieldSystem *fieldSystem);
|
||||
|
|
@ -29,10 +29,10 @@ void sub_0204A358(BattleTower *battleTower, FieldTask *param1, void **param2);
|
|||
BOOL sub_0204A378(BattleTower *battleTower, void **param1, SaveData *saveData);
|
||||
int BattleTower_CheckDuplicateSpeciesAndHeldItems(BattleTower *battleTower, SaveData *saveData);
|
||||
void sub_0204A4C8(BattleTower *battleTower, SaveData *saveData);
|
||||
u16 sub_0204A578(BattleTower *battleTower);
|
||||
BOOL sub_0204A57C(BattleTower *battleTower);
|
||||
void sub_0204A660(BattleTower *battleTower, SaveData *saveData);
|
||||
void sub_0204A7A4(BattleTower *battleTower, SaveData *saveData, JournalEntry *param2);
|
||||
u16 BattleTower_GetNextOpponentNum(BattleTower *battleTower);
|
||||
BOOL BattleTower_HasDefeatedSevenTrainers(BattleTower *battleTower);
|
||||
void BattleTower_UpdateGameRecords(BattleTower *battleTower, SaveData *saveData);
|
||||
void BattleTower_UpdateGameRecordsAndJournal(BattleTower *battleTower, SaveData *saveData, JournalEntry *journalEntry);
|
||||
void sub_0204A8C8(BattleTower *battleTower);
|
||||
void sub_0204A97C(BattleTower *battleTower);
|
||||
u16 BattleTower_GetObjectIDFromOpponentID(BattleTower *battleTower, u16 param1);
|
||||
|
|
@ -45,6 +45,6 @@ u16 sub_0204AB68(BattleTower *battleTower, SaveData *saveData);
|
|||
u16 sub_0204ABA0(BattleTower *battleTower, SaveData *saveData);
|
||||
u16 sub_0204ABF4(BattleTower *battleTower, SaveData *saveData);
|
||||
u8 BattleTower_GetIVsFromTrainerID(u16 param0);
|
||||
u16 sub_0204AEC0(BattleTower *battleTower);
|
||||
u16 BattleTower_GetRandom(BattleTower *battleTower);
|
||||
|
||||
#endif // POKEPLATINUM_UNK_02049D08_H
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ u16 sub_0204B044(FieldSystem *fieldSystem, const u16 *param1);
|
|||
void sub_0204B060(BattleTower *battleTower, SaveData *saveData);
|
||||
void sub_0204B0BC(BattleTower *battleTower);
|
||||
void sub_0204B0D4(BattleTower *battleTower, u16 param1);
|
||||
u16 sub_0204B0F0(BattleTower *battleTower, u8 param1, u8 param2, int param3);
|
||||
u16 BattleTower_GetTrainerIDForRoomAndOpponentNum(BattleTower *battleTower, u8 roomNum, u8 opponentNum, int challengeMode);
|
||||
BOOL sub_0204B3B8(BattleTower *battleTower, FrontierDataDTO *param1, u16 partnerBattleTowerID, int partysize, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int heapID);
|
||||
void sub_0204B404(BattleTower *battleTower, FrontierDataDTO *param1, u16 partnerBattleTowerID, BOOL param3, const UnkStruct_0204B404 *param4, int heapID);
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
"y": 0
|
||||
},
|
||||
{
|
||||
"id": "BATTLE_TOWER_CORRIDOR_MULTI_PLAYER_LEADER",
|
||||
"id": "BATTLE_TOWER_CORRIDOR_MULTI_LEADER",
|
||||
"graphics_id": "OBJ_EVENT_GFX_COUNTERPART",
|
||||
"movement_type": "MOVEMENT_TYPE_NONE",
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
"y": 0
|
||||
},
|
||||
{
|
||||
"id": "BATTLE_TOWER_CORRIDOR_MULTI_PLAYER_PARTNER",
|
||||
"id": "BATTLE_TOWER_CORRIDOR_MULTI_PARTNER",
|
||||
"graphics_id": "OBJ_EVENT_GFX_UNK_102",
|
||||
"movement_type": "MOVEMENT_TYPE_NONE",
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
"bg_events": [],
|
||||
"object_events": [
|
||||
{
|
||||
"id": "BATTLE_TOWER_MULTI_BATTLE_ROOM_TEALA_0",
|
||||
"id": "BATTLE_TOWER_MULTI_BATTLE_ROOM_ATTENDANT_NORTH",
|
||||
"graphics_id": "OBJ_EVENT_GFX_TEALA",
|
||||
"movement_type": "MOVEMENT_TYPE_NONE",
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
"y": 0
|
||||
},
|
||||
{
|
||||
"id": "BATTLE_TOWER_MULTI_BATTLE_ROOM_TEALA_1",
|
||||
"id": "BATTLE_TOWER_MULTI_BATTLE_ROOM_ATTENDANT_SOUTH",
|
||||
"graphics_id": "OBJ_EVENT_GFX_TEALA",
|
||||
"movement_type": "MOVEMENT_TYPE_NONE",
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
"y": 0
|
||||
},
|
||||
{
|
||||
"id": "BATTLE_TOWER_MULTI_BATTLE_ROOM_COUNTERPART_2",
|
||||
"id": "BATTLE_TOWER_MULTI_BATTLE_ROOM_LEADER",
|
||||
"graphics_id": "OBJ_EVENT_GFX_COUNTERPART",
|
||||
"movement_type": "MOVEMENT_TYPE_NONE",
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
|
|
@ -47,7 +47,7 @@
|
|||
"y": 0
|
||||
},
|
||||
{
|
||||
"id": "BATTLE_TOWER_MULTI_BATTLE_ROOM_UNK_102_3",
|
||||
"id": "BATTLE_TOWER_MULTI_BATTLE_ROOM_PARTNER",
|
||||
"graphics_id": "OBJ_EVENT_GFX_UNK_102",
|
||||
"movement_type": "MOVEMENT_TYPE_NONE",
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
|
|
@ -62,11 +62,11 @@
|
|||
"y": 0
|
||||
},
|
||||
{
|
||||
"id": "BATTLE_TOWER_MULTI_BATTLE_ROOM_UNK_104_4",
|
||||
"id": "BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_2",
|
||||
"graphics_id": "OBJ_EVENT_GFX_UNK_104",
|
||||
"movement_type": "MOVEMENT_TYPE_NONE",
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"hidden_flag": "FLAG_UNK_0x01EB",
|
||||
"hidden_flag": "FLAG_HIDE_MULTI_BATTLE_ROOM_OPPONENT_2",
|
||||
"script": 0,
|
||||
"initial_dir": 1,
|
||||
"data": [],
|
||||
|
|
@ -77,11 +77,11 @@
|
|||
"y": 0
|
||||
},
|
||||
{
|
||||
"id": "BATTLE_TOWER_MULTI_BATTLE_ROOM_UNK_103_5",
|
||||
"id": "BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_1",
|
||||
"graphics_id": "OBJ_EVENT_GFX_UNK_103",
|
||||
"movement_type": "MOVEMENT_TYPE_NONE",
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"hidden_flag": "FLAG_UNK_0x01EA",
|
||||
"hidden_flag": "FLAG_HIDE_MULTI_BATTLE_ROOM_OPPONENT_1",
|
||||
"script": 0,
|
||||
"initial_dir": 1,
|
||||
"data": [],
|
||||
|
|
|
|||
|
|
@ -619,7 +619,7 @@ _09FB:
|
|||
FadeScreenOut
|
||||
WaitFadeScreen
|
||||
CloseMessage
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_02, 0, 0
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_RESET_SYSTEM, 0, 0
|
||||
ReleaseAll
|
||||
End
|
||||
|
||||
|
|
@ -878,7 +878,7 @@ _0EBF:
|
|||
Call _0724
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_CHECK_IS_NULL, 0, VAR_RESULT
|
||||
GoToIfEq VAR_RESULT, TRUE, BattleTower_WeHopeToSeeYouAgain
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_35, 0, VAR_RESULT
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_HAS_DEFEATED_SEVEN_TRAINERS, 0, VAR_RESULT
|
||||
GoToIfEq VAR_RESULT, 1, _0F7E
|
||||
GoTo _0F05
|
||||
End
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#include "macros/scrcmd.inc"
|
||||
#include "res/text/bank/battle_tower_battle_room.h"
|
||||
#include "res/text/bank/menu_entries.h"
|
||||
#include "constants/map_object.h"
|
||||
|
||||
|
||||
|
|
@ -87,9 +88,9 @@ _012C:
|
|||
End
|
||||
|
||||
_015D:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_40, 0, 0
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_SET_OPPONENT_TEAMS, 0, 0
|
||||
Call _045C
|
||||
ScrCmd_1FE 0
|
||||
PrintBattleTowerIntroMessage 0
|
||||
WaitABPress
|
||||
CloseMessage
|
||||
Call _047E
|
||||
|
|
@ -99,12 +100,12 @@ _015D:
|
|||
Return
|
||||
|
||||
_018C:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_37, 0, 0
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UPDATE_GAME_RECORDS, 0, 0
|
||||
GoTo _007D
|
||||
End
|
||||
|
||||
_019C:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_38, 0, 0
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UPDATE_GAME_RECORDS_AND_JOURNAL, 0, 0
|
||||
GoTo _007D
|
||||
End
|
||||
|
||||
|
|
@ -121,7 +122,7 @@ _01AC:
|
|||
FadeScreenOut
|
||||
WaitFadeScreen
|
||||
CloseMessage
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_02, 0, 0
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_RESET_SYSTEM, 0, 0
|
||||
End
|
||||
|
||||
_01E7:
|
||||
|
|
@ -130,14 +131,14 @@ _01E7:
|
|||
|
||||
_01EF:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_34, 0, VAR_RESULT
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_35, 0, VAR_RESULT
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_HAS_DEFEATED_SEVEN_TRAINERS, 0, VAR_RESULT
|
||||
Return
|
||||
|
||||
_0201:
|
||||
Call _015D
|
||||
GoToIfEq VAR_0x8004, FALSE, _018C
|
||||
Call _01EF
|
||||
GoToIfEq VAR_RESULT, 1, _019C
|
||||
GoToIfEq VAR_RESULT, TRUE, _019C
|
||||
Call _0492
|
||||
Call _04A6
|
||||
Call _0070
|
||||
|
|
@ -145,14 +146,14 @@ _0201:
|
|||
End
|
||||
|
||||
_0241:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_33, 0, VAR_0x8004
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_NEXT_OPPONENT_NUM, 0, VAR_0x8004
|
||||
BufferNumber 0, VAR_0x8004
|
||||
Message 1
|
||||
InitGlobalTextListMenu 31, 11, 0, VAR_RESULT, NO_EXIT_ON_B
|
||||
SetMenuXOriginToRight
|
||||
AddListMenuEntry 146, 0
|
||||
AddListMenuEntry 147, 1
|
||||
AddListMenuEntry 148, 2
|
||||
AddListMenuEntry MenuEntries_Text_BattleTowerBattleRoom_KeepGoing, 0
|
||||
AddListMenuEntry MenuEntries_Text_BattleTowerBattleRoom_Rest, 1
|
||||
AddListMenuEntry MenuEntries_Text_BattleTowerBattleRoom_Retire, 2
|
||||
ShowListMenu
|
||||
CloseMessage
|
||||
SetVar VAR_0x8008, VAR_RESULT
|
||||
|
|
@ -196,9 +197,9 @@ _0336:
|
|||
Message 14
|
||||
InitGlobalTextListMenu 31, 11, 0, VAR_RESULT, NO_EXIT_ON_B
|
||||
SetMenuXOriginToRight
|
||||
AddListMenuEntry 146, 0
|
||||
AddListMenuEntry 147, 1
|
||||
AddListMenuEntry 148, 2
|
||||
AddListMenuEntry MenuEntries_Text_BattleTowerBattleRoom_KeepGoing, 0
|
||||
AddListMenuEntry MenuEntries_Text_BattleTowerBattleRoom_Rest, 1
|
||||
AddListMenuEntry MenuEntries_Text_BattleTowerBattleRoom_Retire, 2
|
||||
ShowListMenu
|
||||
CloseMessage
|
||||
SetVar VAR_0x8008, VAR_RESULT
|
||||
|
|
@ -210,7 +211,7 @@ _0336:
|
|||
|
||||
_0395:
|
||||
Call _04BA
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_40, 0, 0
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_SET_OPPONENT_TEAMS, 0, 0
|
||||
Call _04CE
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_36, 0, VAR_RESULT
|
||||
GoToIfEq VAR_RESULT, 48, _041E
|
||||
|
|
|
|||
|
|
@ -28,8 +28,8 @@ BattleTowerCorridorMulti_SetPlayer2Graphics:
|
|||
|
||||
_0068:
|
||||
CallIfNe VAR_UNK_0x40DD, 0, _007F
|
||||
HideObject 2
|
||||
HideObject 3
|
||||
HideObject BATTLE_TOWER_CORRIDOR_MULTI_LEADER
|
||||
HideObject BATTLE_TOWER_CORRIDOR_MULTI_PARTNER
|
||||
End
|
||||
|
||||
_007F:
|
||||
|
|
@ -60,10 +60,10 @@ BattleTowerCorridorMulti_PlayEnterCorridorAnimation:
|
|||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_LEFT_ATTENDANT, BattleTowerCorridorMulti_AttendantEnterCorridorMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_RIGHT_ATTENDANT, BattleTowerCorridorMulti_AttendantEnterCorridorMovement
|
||||
WaitMovement
|
||||
ShowObject BATTLE_TOWER_CORRIDOR_MULTI_PLAYER_LEADER
|
||||
ShowObject BATTLE_TOWER_CORRIDOR_MULTI_PLAYER_PARTNER
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_PLAYER_LEADER, BattleTowerCorridorMulti_PlayerEnterCorridorMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_PLAYER_PARTNER, BattleTowerCorridorMulti_PlayerEnterCorridorMovement
|
||||
ShowObject BATTLE_TOWER_CORRIDOR_MULTI_LEADER
|
||||
ShowObject BATTLE_TOWER_CORRIDOR_MULTI_PARTNER
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_LEADER, BattleTowerCorridorMulti_PlayerEnterCorridorMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_PARTNER, BattleTowerCorridorMulti_PlayerEnterCorridorMovement
|
||||
WaitMovement
|
||||
PlayDoorCloseAnimation ANIMATION_TAG_DOOR_1
|
||||
PlayDoorCloseAnimation ANIMATION_TAG_DOOR_2
|
||||
|
|
@ -75,17 +75,17 @@ BattleTowerCorridorMulti_PlayEnterCorridorAnimation:
|
|||
|
||||
BattleTowerCorridorMulti_ApplyWalkToBattleRoomMovement:
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_LEFT_ATTENDANT, BattleTowerCorridorMulti_LeftAttendantWalkToBattleRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_PLAYER_LEADER, BattleTowerCorridorMulti_PlayerLeaderWalkToBattleRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_LEADER, BattleTowerCorridorMulti_LeaderWalkToBattleRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_RIGHT_ATTENDANT, BattleTowerCorridorMulti_RightAttendantWalkToBattleRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_PLAYER_PARTNER, BattleTowerCorridorMulti_PlayerFriendWalkToBattleRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_PARTNER, BattleTowerCorridorMulti_FriendWalkToBattleRoomMovement
|
||||
WaitMovement
|
||||
Return
|
||||
|
||||
BattleTowerCorridorMulti_ApplyEnterBattleRoomMovement:
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_LEFT_ATTENDANT, BattleTowerCorridorMulti_AttendantEnterBattleRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_RIGHT_ATTENDANT, BattleTowerCorridorMulti_AttendantEnterBattleRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_PLAYER_LEADER, BattleTowerCorridorMulti_PlayerEnterBattleRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_PLAYER_PARTNER, BattleTowerCorridorMulti_PlayerEnterBattleRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_LEADER, BattleTowerCorridorMulti_PlayerEnterBattleRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_CORRIDOR_MULTI_PARTNER, BattleTowerCorridorMulti_PlayerEnterBattleRoomMovement
|
||||
WaitMovement
|
||||
Return
|
||||
|
||||
|
|
@ -101,13 +101,13 @@ BattleTowerCorridorMulti_PlayerEnterCorridorMovement:
|
|||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
BattleTowerCorridorMulti_PlayerLeaderWalkToBattleRoomMovement:
|
||||
BattleTowerCorridorMulti_LeaderWalkToBattleRoomMovement:
|
||||
WalkNormalSouth
|
||||
WalkNormalEast 5
|
||||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
BattleTowerCorridorMulti_PlayerFriendWalkToBattleRoomMovement:
|
||||
BattleTowerCorridorMulti_FriendWalkToBattleRoomMovement:
|
||||
WalkNormalSouth
|
||||
WalkNormalWest 5
|
||||
EndMovement
|
||||
|
|
|
|||
|
|
@ -1,61 +1,63 @@
|
|||
#include "macros/scrcmd.inc"
|
||||
#include "res/text/bank/battle_tower_multi_battle_room.h"
|
||||
#include "res/text/bank/menu_entries.h"
|
||||
#include "res/field/events/events_battle_tower_multi_battle_room.h"
|
||||
#include "constants/map_object.h"
|
||||
|
||||
|
||||
ScriptEntry _0012
|
||||
ScriptEntry _0074
|
||||
ScriptEntry _0156
|
||||
ScriptEntry _0181
|
||||
ScriptEntry BattleTowerMultiBattleRoom_SetPlayerGraphics
|
||||
ScriptEntry BattleTowerMultiBattleRoom_SetPositions
|
||||
ScriptEntry BattleTowerMultiBattleRoom_Enter
|
||||
ScriptEntry BattleTowerMultiBattleRoom_ContinueMultiChallenge
|
||||
ScriptEntryEnd
|
||||
|
||||
_0012:
|
||||
GoToIfEq VAR_UNK_0x40DE, 0, _0054
|
||||
SetFlag FLAG_UNK_0x01EA
|
||||
SetFlag FLAG_UNK_0x01EB
|
||||
BattleTowerMultiBattleRoom_SetPlayerGraphics:
|
||||
GoToIfEq VAR_UNK_0x40DE, 0, BattleTowerMultiBattleRoom_DontSetPlayerGraphics
|
||||
SetFlag FLAG_HIDE_MULTI_BATTLE_ROOM_OPPONENT_1
|
||||
SetFlag FLAG_HIDE_MULTI_BATTLE_ROOM_OPPONENT_2
|
||||
GetCurNetID VAR_MAP_LOCAL_0
|
||||
GoToIfEq VAR_MAP_LOCAL_0, 1, _0056
|
||||
GoToIfEq VAR_MAP_LOCAL_0, 1, BattleTowerMultiBattleRoom_SetPlayer2Graphics
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_PARTNER_PARAM, BT_PARAM_PLAYER_GRAPHICS_ID, VAR_MAP_LOCAL_0
|
||||
SetVar VAR_OBJ_GFX_ID_0, VAR_MAP_LOCAL_0
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_PARTNER_PARAM, BT_PARAM_PARTNER_GRAPHICS_ID, VAR_MAP_LOCAL_0
|
||||
SetVar VAR_OBJ_GFX_ID_1, VAR_MAP_LOCAL_0
|
||||
_0054:
|
||||
BattleTowerMultiBattleRoom_DontSetPlayerGraphics:
|
||||
End
|
||||
|
||||
_0056:
|
||||
BattleTowerMultiBattleRoom_SetPlayer2Graphics:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_PARTNER_PARAM, BT_PARAM_PLAYER_GRAPHICS_ID, VAR_MAP_LOCAL_0
|
||||
SetVar VAR_OBJ_GFX_ID_1, VAR_MAP_LOCAL_0
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_PARTNER_PARAM, BT_PARAM_PARTNER_GRAPHICS_ID, VAR_MAP_LOCAL_0
|
||||
SetVar VAR_OBJ_GFX_ID_0, VAR_MAP_LOCAL_0
|
||||
End
|
||||
|
||||
_0074:
|
||||
CallIfNe VAR_UNK_0x40DE, 0, _0090
|
||||
GoToIfEq VAR_UNK_0x40DE, 3, _009E
|
||||
_008E:
|
||||
BattleTowerMultiBattleRoom_SetPositions:
|
||||
CallIfNe VAR_UNK_0x40DE, 0, BattleTowerMultiBattleRoom_HidePlayer
|
||||
GoToIfEq VAR_UNK_0x40DE, 3, BattleTowerMultiBattleRoom_SetPlayerPositionsForBattle
|
||||
BattleTowerMultiBattleRoom_EndSetPositions:
|
||||
End
|
||||
|
||||
_0090:
|
||||
BattleTowerMultiBattleRoom_HidePlayer:
|
||||
HideObject LOCALID_PLAYER
|
||||
MoveCamera 8, 0, 0
|
||||
Return
|
||||
|
||||
_009E:
|
||||
SetPosition 2, 5, 0, 5, 3
|
||||
SetPosition 3, 5, 0, 6, 3
|
||||
GoTo _008E
|
||||
BattleTowerMultiBattleRoom_SetPlayerPositionsForBattle:
|
||||
SetPosition BATTLE_TOWER_MULTI_BATTLE_ROOM_LEADER, 5, 0, 5, 3
|
||||
SetPosition BATTLE_TOWER_MULTI_BATTLE_ROOM_PARTNER, 5, 0, 6, 3
|
||||
GoTo BattleTowerMultiBattleRoom_EndSetPositions
|
||||
End
|
||||
|
||||
_00BE:
|
||||
Message 2
|
||||
BattleTowerMultiBattleRoom_RestorePokemon:
|
||||
Message BattleTowerMultiBattleRoom_Text_YourPokemonWillBeRestored
|
||||
PlaySound SEQ_ASA
|
||||
WaitSound
|
||||
HealParty
|
||||
Return
|
||||
|
||||
_00CB:
|
||||
BattleTowerMultiBattleRoom_EndChallenge:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_CHALLENGE_MODE, 0, VAR_RESULT
|
||||
GoToIfEq VAR_RESULT, BATTLE_TOWER_MODE_LINK_MULTI, _0114
|
||||
GoToIfEq VAR_RESULT, BATTLE_TOWER_MODE_LINK_MULTI, BattleTowerMultiBattleRoom_EndLinkMultiChallenge
|
||||
WaitTime 30, VAR_RESULT
|
||||
SetVar VAR_UNK_0x40D8, 1
|
||||
FadeScreenOut
|
||||
|
|
@ -66,7 +68,7 @@ _00CB:
|
|||
ReleaseAll
|
||||
End
|
||||
|
||||
_0114:
|
||||
BattleTowerMultiBattleRoom_EndLinkMultiChallenge:
|
||||
WaitTime 30, VAR_RESULT
|
||||
SetVar VAR_UNK_0x40D8, 1
|
||||
ClearReceivedTempDataAllPlayers
|
||||
|
|
@ -82,52 +84,52 @@ _0114:
|
|||
ReleaseAll
|
||||
End
|
||||
|
||||
_0156:
|
||||
BattleTowerMultiBattleRoom_Enter:
|
||||
LockAll
|
||||
SetVar VAR_UNK_0x40DE, 3
|
||||
Call _048D
|
||||
Call BattleTowerMultiBattleRoom_ApplyPlayersEnterRoomMovement
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_CHALLENGE_MODE, 0, VAR_RESULT
|
||||
GoToIfEq VAR_RESULT, BATTLE_TOWER_MODE_LINK_MULTI, _039E
|
||||
GoTo _02B0
|
||||
GoToIfEq VAR_RESULT, BATTLE_TOWER_MODE_LINK_MULTI, BattleTowerMultiBattleRoom_DoLinkMultiBattle
|
||||
GoTo BattleTowerMultiBattleRoom_DoMultiBattle
|
||||
End
|
||||
|
||||
_0181:
|
||||
BattleTowerMultiBattleRoom_ContinueMultiChallenge:
|
||||
LockAll
|
||||
SetVar VAR_UNK_0x40DE, 3
|
||||
Call _048D
|
||||
Call _04A1
|
||||
GoTo _02E8
|
||||
Call BattleTowerMultiBattleRoom_ApplyPlayersEnterRoomMovement
|
||||
Call BattleTowerMultiBattleRoom_PlayersAndAttendantFaceEachOther
|
||||
GoTo BattleTowerMultiBattleRoom_AskReadyForNextMultiBattle
|
||||
End
|
||||
|
||||
_019D:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_40, 0, 0
|
||||
Call _04C5
|
||||
Call _0529
|
||||
ScrCmd_1FE 0
|
||||
BattleTowerMultiBattleRoom_DoNextMultiBattle:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_SET_OPPONENT_TEAMS, 0, 0
|
||||
Call BattleTowerMultiBattleRoom_SetOpponentGraphicsAndEnterRoom
|
||||
Call BattleTowerMultiBattleRoom_ApplyOpponent1WalkOnSpotSlowWestMovement
|
||||
PrintBattleTowerIntroMessage 0
|
||||
WaitABPress
|
||||
CloseMessage
|
||||
Call _0535
|
||||
ScrCmd_1FE 1
|
||||
Call BattleTowerMultiBattleRoom_ApplyOpponent2WalkOnSpotSlowWestMovement
|
||||
PrintBattleTowerIntroMessage 1
|
||||
WaitABPress
|
||||
CloseMessage
|
||||
Call _0505
|
||||
Call BattleTowerMultiBattleRoom_PlayersAndOpponentsApproachEachOther
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_42, 0, 0
|
||||
CheckWonBattle VAR_RESULT
|
||||
SetVar VAR_0x8004, VAR_RESULT
|
||||
Return
|
||||
|
||||
_01DF:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_40, 0, 0
|
||||
Call _04C5
|
||||
Call _0529
|
||||
ScrCmd_1FE 0
|
||||
BattleTowerMultiBattleRoom_DoNextLinkMultiBattle:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_SET_OPPONENT_TEAMS, 0, 0
|
||||
Call BattleTowerMultiBattleRoom_SetOpponentGraphicsAndEnterRoom
|
||||
Call BattleTowerMultiBattleRoom_ApplyOpponent1WalkOnSpotSlowWestMovement
|
||||
PrintBattleTowerIntroMessage 0
|
||||
WaitTime 30, VAR_RESULT
|
||||
CloseMessage
|
||||
Call _0535
|
||||
ScrCmd_1FE 1
|
||||
Call BattleTowerMultiBattleRoom_ApplyOpponent2WalkOnSpotSlowWestMovement
|
||||
PrintBattleTowerIntroMessage 1
|
||||
WaitTime 30, VAR_RESULT
|
||||
CloseMessage
|
||||
Call _0505
|
||||
Call BattleTowerMultiBattleRoom_PlayersAndOpponentsApproachEachOther
|
||||
ClearReceivedTempDataAllPlayers
|
||||
ScrCmd_135 4
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_42, 0, 0
|
||||
|
|
@ -135,23 +137,23 @@ _01DF:
|
|||
SetVar VAR_0x8004, VAR_RESULT
|
||||
Return
|
||||
|
||||
_022F:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_37, 0, 0
|
||||
BattleTowerMultiBattleRoom_EndChallengeAndUpdateGameRecords:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UPDATE_GAME_RECORDS, 0, 0
|
||||
SetVar VAR_MAP_LOCAL_0, 0
|
||||
GoTo _00CB
|
||||
GoTo BattleTowerMultiBattleRoom_EndChallenge
|
||||
End
|
||||
|
||||
_0245:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_38, 0, 0
|
||||
BattleTowerMultiBattleRoom_EndChallengeAndUpdateGameRecordsAndJournal:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UPDATE_GAME_RECORDS_AND_JOURNAL, 0, 0
|
||||
SetVar VAR_MAP_LOCAL_0, 1
|
||||
GoTo _00CB
|
||||
GoTo BattleTowerMultiBattleRoom_EndChallenge
|
||||
End
|
||||
|
||||
_025B:
|
||||
BattleTowerMultiBattleRoom_SaveAndQuitMultiChallenge:
|
||||
SetVar VAR_UNK_0x40D8, 2
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_39, 0, 0
|
||||
FreeBattleTower
|
||||
Message 0
|
||||
Message BattleTowerMultiBattleRoom_Text_ThanksForParticipating
|
||||
ShowSavingIcon
|
||||
TrySaveGame VAR_RESULT
|
||||
HideSavingIcon
|
||||
|
|
@ -160,189 +162,189 @@ _025B:
|
|||
FadeScreenOut
|
||||
WaitFadeScreen
|
||||
CloseMessage
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_02, 0, 0
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_RESET_SYSTEM, 0, 0
|
||||
End
|
||||
|
||||
_0296:
|
||||
GoTo _022F
|
||||
BattleTowerMultiBattleRoom_GoToEndChallengeAndUpdateGameRecords:
|
||||
GoTo BattleTowerMultiBattleRoom_EndChallengeAndUpdateGameRecords
|
||||
End
|
||||
|
||||
_029E:
|
||||
BattleTowerMultiBattleRoom_HasDefeatedSevenTrainers:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_34, 0, VAR_RESULT
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_35, 0, VAR_RESULT
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_HAS_DEFEATED_SEVEN_TRAINERS, 0, VAR_RESULT
|
||||
Return
|
||||
|
||||
_02B0:
|
||||
Call _019D
|
||||
GoToIfEq VAR_0x8004, FALSE, _022F
|
||||
Call _029E
|
||||
GoToIfEq VAR_RESULT, 1, _0245
|
||||
Call _0541
|
||||
Call _0565
|
||||
Call _00BE
|
||||
_02E8:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_33, 0, VAR_0x8004
|
||||
BattleTowerMultiBattleRoom_DoMultiBattle:
|
||||
Call BattleTowerMultiBattleRoom_DoNextMultiBattle
|
||||
GoToIfEq VAR_0x8004, FALSE, BattleTowerMultiBattleRoom_EndChallengeAndUpdateGameRecords
|
||||
Call BattleTowerMultiBattleRoom_HasDefeatedSevenTrainers
|
||||
GoToIfEq VAR_RESULT, TRUE, BattleTowerMultiBattleRoom_EndChallengeAndUpdateGameRecordsAndJournal
|
||||
Call BattleTowerMultiBattleRoom_OpponentsLeaveRoom
|
||||
Call BattleTowerMultiBattleRoom_PlayersAndAttendantApproachEachOther
|
||||
Call BattleTowerMultiBattleRoom_RestorePokemon
|
||||
BattleTowerMultiBattleRoom_AskReadyForNextMultiBattle:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_NEXT_OPPONENT_NUM, 0, VAR_0x8004
|
||||
BufferNumber 0, VAR_0x8004
|
||||
Message 3
|
||||
Message BattleTowerMultiBattleRoom_Text_AskReadyForNextPair
|
||||
InitGlobalTextListMenu 31, 11, 0, VAR_RESULT, NO_EXIT_ON_B
|
||||
SetMenuXOriginToRight
|
||||
AddListMenuEntry 146, 0
|
||||
AddListMenuEntry 147, 1
|
||||
AddListMenuEntry 148, 2
|
||||
AddListMenuEntry MenuEntries_Text_BattleTowerBattleRoom_KeepGoing, 0
|
||||
AddListMenuEntry MenuEntries_Text_BattleTowerBattleRoom_Rest, 1
|
||||
AddListMenuEntry MenuEntries_Text_BattleTowerBattleRoom_Retire, 2
|
||||
ShowListMenu
|
||||
CloseMessage
|
||||
SetVar VAR_0x8008, VAR_RESULT
|
||||
GoToIfEq VAR_0x8008, 0, _0354
|
||||
GoToIfEq VAR_0x8008, 1, _0362
|
||||
GoToIfEq VAR_0x8008, 2, _0380
|
||||
GoTo _0354
|
||||
GoToIfEq VAR_0x8008, 0, BattleTowerMultiBattleRoom_GoToNextMultiBattle
|
||||
GoToIfEq VAR_0x8008, 1, BattleTowerMultiBattleRoom_AskSaveAndQuitMultiChallenge
|
||||
GoToIfEq VAR_0x8008, 2, BattleTowerMultiBattleRoom_AskCancelMultiChallenge
|
||||
GoTo BattleTowerMultiBattleRoom_GoToNextMultiBattle
|
||||
End
|
||||
|
||||
_0354:
|
||||
Call _0589
|
||||
GoTo _02B0
|
||||
BattleTowerMultiBattleRoom_GoToNextMultiBattle:
|
||||
Call BattleTowerMultiBattleRoom_PlayersAndAttendantsMoveBack
|
||||
GoTo BattleTowerMultiBattleRoom_DoMultiBattle
|
||||
End
|
||||
|
||||
_0362:
|
||||
Message 4
|
||||
BattleTowerMultiBattleRoom_AskSaveAndQuitMultiChallenge:
|
||||
Message BattleTowerMultiBattleRoom_Text_AskSaveAndQuit
|
||||
ShowYesNoMenu VAR_RESULT
|
||||
CloseMessage
|
||||
GoToIfEq VAR_RESULT, MENU_YES, _025B
|
||||
GoTo _02E8
|
||||
GoToIfEq VAR_RESULT, MENU_YES, BattleTowerMultiBattleRoom_SaveAndQuitMultiChallenge
|
||||
GoTo BattleTowerMultiBattleRoom_AskReadyForNextMultiBattle
|
||||
End
|
||||
|
||||
_0380:
|
||||
Message 5
|
||||
BattleTowerMultiBattleRoom_AskCancelMultiChallenge:
|
||||
Message BattleTowerMultiBattleRoom_Text_AskCancelChallenge
|
||||
ShowYesNoMenu VAR_RESULT
|
||||
CloseMessage
|
||||
GoToIfEq VAR_RESULT, MENU_YES, _0296
|
||||
GoTo _02E8
|
||||
GoToIfEq VAR_RESULT, MENU_YES, BattleTowerMultiBattleRoom_GoToEndChallengeAndUpdateGameRecords
|
||||
GoTo BattleTowerMultiBattleRoom_AskReadyForNextMultiBattle
|
||||
End
|
||||
|
||||
_039E:
|
||||
Call _01DF
|
||||
GoToIfEq VAR_0x8004, FALSE, _022F
|
||||
Call _029E
|
||||
GoToIfEq VAR_RESULT, 1, _0245
|
||||
Call _0541
|
||||
Call _0565
|
||||
Call _00BE
|
||||
_03D6:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_UNK_33, 0, VAR_0x8004
|
||||
BattleTowerMultiBattleRoom_DoLinkMultiBattle:
|
||||
Call BattleTowerMultiBattleRoom_DoNextLinkMultiBattle
|
||||
GoToIfEq VAR_0x8004, FALSE, BattleTowerMultiBattleRoom_EndChallengeAndUpdateGameRecords
|
||||
Call BattleTowerMultiBattleRoom_HasDefeatedSevenTrainers
|
||||
GoToIfEq VAR_RESULT, TRUE, BattleTowerMultiBattleRoom_EndChallengeAndUpdateGameRecordsAndJournal
|
||||
Call BattleTowerMultiBattleRoom_OpponentsLeaveRoom
|
||||
Call BattleTowerMultiBattleRoom_PlayersAndAttendantApproachEachOther
|
||||
Call BattleTowerMultiBattleRoom_RestorePokemon
|
||||
BattleTowerMultiBattleRoom_AskReadyForNextLinkMultiBattle:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_NEXT_OPPONENT_NUM, 0, VAR_0x8004
|
||||
BufferNumber 0, VAR_0x8004
|
||||
Message 3
|
||||
Message BattleTowerMultiBattleRoom_Text_AskReadyForNextPair
|
||||
InitGlobalTextListMenu 31, 13, 0, VAR_RESULT, NO_EXIT_ON_B
|
||||
SetMenuXOriginToRight
|
||||
AddListMenuEntry 146, 0
|
||||
AddListMenuEntry 148, 1
|
||||
AddListMenuEntry MenuEntries_Text_BattleTowerBattleRoom_KeepGoing, 0
|
||||
AddListMenuEntry MenuEntries_Text_BattleTowerBattleRoom_Retire, 1
|
||||
ShowListMenu
|
||||
CloseMessage
|
||||
SetVar VAR_MAP_LOCAL_0, 0
|
||||
GoToIfEq VAR_RESULT, 1, _0452
|
||||
_0418:
|
||||
Message 12
|
||||
GoToIfEq VAR_RESULT, 1, BattleTowerMultiBattleRoom_AskCancelLinkMultiChallenge
|
||||
BattleTowerMultiBattleRoom_HandleLinkMultiDecision:
|
||||
Message BattleTowerMultiBattleRoom_Text_AwaitingResponseFromFriend
|
||||
ClearReceivedTempDataAllPlayers
|
||||
ScrCmd_135 5
|
||||
ScrCmd_1E1 2, VAR_MAP_LOCAL_0, VAR_RESULT
|
||||
ScrCmd_1E2 2, VAR_MAP_LOCAL_0
|
||||
CloseMessage
|
||||
SetVar VAR_0x8008, VAR_MAP_LOCAL_0
|
||||
GoToIfEq VAR_0x8008, 1, _0474
|
||||
Call _0589
|
||||
GoTo _039E
|
||||
GoToIfEq VAR_0x8008, 1, BattleTowerMultiBattleRoom_LinkMultiRetire
|
||||
Call BattleTowerMultiBattleRoom_PlayersAndAttendantsMoveBack
|
||||
GoTo BattleTowerMultiBattleRoom_DoLinkMultiBattle
|
||||
End
|
||||
|
||||
_0452:
|
||||
Message 5
|
||||
BattleTowerMultiBattleRoom_AskCancelLinkMultiChallenge:
|
||||
Message BattleTowerMultiBattleRoom_Text_AskCancelChallenge
|
||||
ShowYesNoMenu VAR_RESULT
|
||||
GoToIfEq VAR_RESULT, MENU_NO, _03D6
|
||||
GoToIfEq VAR_RESULT, MENU_NO, BattleTowerMultiBattleRoom_AskReadyForNextLinkMultiBattle
|
||||
SetVar VAR_MAP_LOCAL_0, 1
|
||||
GoTo _0418
|
||||
GoTo BattleTowerMultiBattleRoom_HandleLinkMultiDecision
|
||||
End
|
||||
|
||||
_0474:
|
||||
Message 11
|
||||
BattleTowerMultiBattleRoom_LinkMultiRetire:
|
||||
Message BattleTowerMultiBattleRoom_Text_YouHaveChosenToRetire
|
||||
WaitTime 30, VAR_RESULT
|
||||
ClearReceivedTempDataAllPlayers
|
||||
ScrCmd_135 7
|
||||
CloseMessage
|
||||
GoTo _0296
|
||||
GoTo BattleTowerMultiBattleRoom_GoToEndChallengeAndUpdateGameRecords
|
||||
End
|
||||
|
||||
_048D:
|
||||
ApplyMovement 2, _05B0
|
||||
ApplyMovement 3, _05C4
|
||||
BattleTowerMultiBattleRoom_ApplyPlayersEnterRoomMovement:
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_LEADER, BattleTowerMultiBattleRoom_LeaderEnterRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_PARTNER, BattleTowerMultiBattleRoom_PartnerEnterRoomMovement
|
||||
WaitMovement
|
||||
Return
|
||||
|
||||
_04A1:
|
||||
ApplyMovement 0, _0644
|
||||
ApplyMovement 1, _0644
|
||||
ApplyMovement 2, _0664
|
||||
ApplyMovement 3, _0664
|
||||
BattleTowerMultiBattleRoom_PlayersAndAttendantFaceEachOther:
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_ATTENDANT_NORTH, BattleTowerMultiBattleRoom_AttendantApproachPlayerMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_ATTENDANT_SOUTH, BattleTowerMultiBattleRoom_AttendantApproachPlayerMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_LEADER, BattleTowerMultiBattleRoom_PlayerFaceAttendantMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_PARTNER, BattleTowerMultiBattleRoom_PlayerFaceAttendantMovement
|
||||
WaitMovement
|
||||
Return
|
||||
|
||||
_04C5:
|
||||
BattleTowerMultiBattleRoom_SetOpponentGraphicsAndEnterRoom:
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_OPPONENT_OBJECT_ID, 0, VAR_RESULT
|
||||
SetVar VAR_OBJ_GFX_ID_2, VAR_RESULT
|
||||
CallBattleTowerFunction BATTLE_TOWER_FUNCTION_GET_OPPONENT_OBJECT_ID, 1, VAR_RESULT
|
||||
SetVar VAR_OBJ_GFX_ID_3, VAR_RESULT
|
||||
ClearFlag FLAG_UNK_0x01EA
|
||||
ClearFlag FLAG_UNK_0x01EB
|
||||
AddObject 5
|
||||
AddObject 4
|
||||
ApplyMovement 5, _05D8
|
||||
ApplyMovement 4, _05EC
|
||||
ClearFlag FLAG_HIDE_MULTI_BATTLE_ROOM_OPPONENT_1
|
||||
ClearFlag FLAG_HIDE_MULTI_BATTLE_ROOM_OPPONENT_2
|
||||
AddObject BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_1
|
||||
AddObject BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_2
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_1, BattleTowerMultiBattleRoom_Opponent1EnterRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_2, BattleTowerMultiBattleRoom_Opponent2EnterRoomMovement
|
||||
WaitMovement
|
||||
Return
|
||||
|
||||
_0505:
|
||||
ApplyMovement 2, _0600
|
||||
ApplyMovement 3, _0600
|
||||
ApplyMovement 5, _0608
|
||||
ApplyMovement 4, _0608
|
||||
BattleTowerMultiBattleRoom_PlayersAndOpponentsApproachEachOther:
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_LEADER, BattleTowerMultiBattleRoom_PlayerApproachOpponentMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_PARTNER, BattleTowerMultiBattleRoom_PlayerApproachOpponentMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_1, BattleTowerMultiBattleRoom_OpponentApproachPlayerMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_2, BattleTowerMultiBattleRoom_OpponentApproachPlayerMovement
|
||||
WaitMovement
|
||||
Return
|
||||
|
||||
_0529:
|
||||
ApplyMovement 5, _0610
|
||||
BattleTowerMultiBattleRoom_ApplyOpponent1WalkOnSpotSlowWestMovement:
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_1, BattleTowerMultiBattleRoom_WalkOnSpotSlowWestMovement
|
||||
WaitMovement
|
||||
Return
|
||||
|
||||
_0535:
|
||||
ApplyMovement 4, _0610
|
||||
BattleTowerMultiBattleRoom_ApplyOpponent2WalkOnSpotSlowWestMovement:
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_2, BattleTowerMultiBattleRoom_WalkOnSpotSlowWestMovement
|
||||
WaitMovement
|
||||
Return
|
||||
|
||||
_0541:
|
||||
ApplyMovement 5, _0618
|
||||
ApplyMovement 4, _0628
|
||||
BattleTowerMultiBattleRoom_OpponentsLeaveRoom:
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_1, BattleTowerMultiBattleRoom_Opponent2LeaveRoomMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_2, BattleTowerMultiBattleRoom_Opponent1LeaveRoomMovement
|
||||
WaitMovement
|
||||
SetFlag FLAG_UNK_0x01EA
|
||||
SetFlag FLAG_UNK_0x01EB
|
||||
RemoveObject 5
|
||||
RemoveObject 4
|
||||
SetFlag FLAG_HIDE_MULTI_BATTLE_ROOM_OPPONENT_1
|
||||
SetFlag FLAG_HIDE_MULTI_BATTLE_ROOM_OPPONENT_2
|
||||
RemoveObject BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_1
|
||||
RemoveObject BATTLE_TOWER_MULTI_BATTLE_ROOM_OPPONENT_2
|
||||
Return
|
||||
|
||||
_0565:
|
||||
ApplyMovement 2, _0638
|
||||
ApplyMovement 3, _0638
|
||||
ApplyMovement 0, _0644
|
||||
ApplyMovement 1, _0644
|
||||
BattleTowerMultiBattleRoom_PlayersAndAttendantApproachEachOther:
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_LEADER, BattleTowerMultiBattleRoom_PlayerApproachAttendantMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_PARTNER, BattleTowerMultiBattleRoom_PlayerApproachAttendantMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_ATTENDANT_NORTH, BattleTowerMultiBattleRoom_AttendantApproachPlayerMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_ATTENDANT_SOUTH, BattleTowerMultiBattleRoom_AttendantApproachPlayerMovement
|
||||
WaitMovement
|
||||
Return
|
||||
|
||||
_0589:
|
||||
ApplyMovement 2, _064C
|
||||
ApplyMovement 3, _064C
|
||||
ApplyMovement 0, _0654
|
||||
ApplyMovement 1, _0654
|
||||
BattleTowerMultiBattleRoom_PlayersAndAttendantsMoveBack:
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_LEADER, BattleTowerMultiBattleRoom_PlayersMoveBackEastMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_PARTNER, BattleTowerMultiBattleRoom_PlayersMoveBackEastMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_ATTENDANT_NORTH, BattleTowerMultiBattleRoom_AttendantsMoveBackWestMovement
|
||||
ApplyMovement BATTLE_TOWER_MULTI_BATTLE_ROOM_ATTENDANT_SOUTH, BattleTowerMultiBattleRoom_AttendantsMoveBackWestMovement
|
||||
WaitMovement
|
||||
Return
|
||||
|
||||
.balign 4, 0
|
||||
_05B0:
|
||||
BattleTowerMultiBattleRoom_LeaderEnterRoomMovement:
|
||||
WalkNormalNorth
|
||||
WalkNormalWest 3
|
||||
WalkNormalNorth 3
|
||||
|
|
@ -350,7 +352,7 @@ _05B0:
|
|||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_05C4:
|
||||
BattleTowerMultiBattleRoom_PartnerEnterRoomMovement:
|
||||
WalkNormalNorth
|
||||
WalkNormalWest 4
|
||||
WalkNormalNorth 2
|
||||
|
|
@ -358,7 +360,7 @@ _05C4:
|
|||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_05D8:
|
||||
BattleTowerMultiBattleRoom_Opponent1EnterRoomMovement:
|
||||
WalkNormalSouth
|
||||
WalkNormalEast 3
|
||||
WalkNormalSouth 3
|
||||
|
|
@ -366,7 +368,7 @@ _05D8:
|
|||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_05EC:
|
||||
BattleTowerMultiBattleRoom_Opponent2EnterRoomMovement:
|
||||
WalkNormalSouth
|
||||
WalkNormalEast 4
|
||||
WalkNormalSouth 2
|
||||
|
|
@ -374,58 +376,58 @@ _05EC:
|
|||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_0600:
|
||||
BattleTowerMultiBattleRoom_PlayerApproachOpponentMovement:
|
||||
WalkNormalEast
|
||||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_0608:
|
||||
BattleTowerMultiBattleRoom_OpponentApproachPlayerMovement:
|
||||
WalkNormalWest
|
||||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_0610:
|
||||
BattleTowerMultiBattleRoom_WalkOnSpotSlowWestMovement:
|
||||
WalkOnSpotSlowWest
|
||||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_0618:
|
||||
BattleTowerMultiBattleRoom_Opponent2LeaveRoomMovement:
|
||||
WalkNormalNorth 3
|
||||
WalkNormalWest 2
|
||||
WalkNormalNorth
|
||||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_0628:
|
||||
BattleTowerMultiBattleRoom_Opponent1LeaveRoomMovement:
|
||||
WalkNormalNorth 2
|
||||
WalkNormalWest 3
|
||||
WalkNormalNorth
|
||||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_0638:
|
||||
BattleTowerMultiBattleRoom_PlayerApproachAttendantMovement:
|
||||
WalkNormalWest
|
||||
FaceWest
|
||||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_0644:
|
||||
BattleTowerMultiBattleRoom_AttendantApproachPlayerMovement:
|
||||
WalkNormalEast
|
||||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_064C:
|
||||
BattleTowerMultiBattleRoom_PlayersMoveBackEastMovement:
|
||||
FaceEast
|
||||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_0654:
|
||||
BattleTowerMultiBattleRoom_AttendantsMoveBackWestMovement:
|
||||
FaceWest
|
||||
WalkNormalWest
|
||||
FaceEast
|
||||
EndMovement
|
||||
|
||||
.balign 4, 0
|
||||
_0664:
|
||||
BattleTowerMultiBattleRoom_PlayerFaceAttendantMovement:
|
||||
FaceWest
|
||||
EndMovement
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
"key": 9318,
|
||||
"messages": [
|
||||
{
|
||||
"id": "pl_msg_00000306_00000",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_ThanksForParticipating",
|
||||
"en_US": [
|
||||
"Thank you so much for participating!\r",
|
||||
"Please wait while I save the game.\n",
|
||||
|
|
@ -10,85 +10,85 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00001",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_WeHopeToSeeYouAgain",
|
||||
"en_US": "We hope to see you again!"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00002",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_YourPokemonWillBeRestored",
|
||||
"en_US": [
|
||||
"Your Pokémon will be restored to\n",
|
||||
"full health."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00003",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_AskReadyForNextPair",
|
||||
"en_US": [
|
||||
"Up next, opponent pair no. {STRVAR_1 50, 0, 0}.\n",
|
||||
"Are you ready?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00004",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_AskSaveAndQuit",
|
||||
"en_US": [
|
||||
"Would you like to save and\n",
|
||||
"quit the game?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00005",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_AskCancelChallenge",
|
||||
"en_US": [
|
||||
"Would you like to cancel your\n",
|
||||
"Battle Room challenge?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00006",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_AskSaveBattleVideo",
|
||||
"en_US": [
|
||||
"Would you like to save the last battle\n",
|
||||
"as your Battle Video?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00007",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_BattleHasBeenSaved",
|
||||
"en_US": [
|
||||
"{STRVAR_1 3, 0, 0}’s battle has been saved\n",
|
||||
"as a Battle Video.\r"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00008",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_BattleVideoCouldntBeSaved",
|
||||
"en_US": [
|
||||
"There was an error.\n",
|
||||
"The Battle Video couldn’t be saved.\r"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00009",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_AskDeleteExistingBattleVideo",
|
||||
"en_US": [
|
||||
"Delete your existing Battle Video and\n",
|
||||
"save the last battle?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00010",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_SavingDontTurnOffPower",
|
||||
"en_US": [
|
||||
"Saving...\n",
|
||||
"Don’t turn off the power."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00011",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_YouHaveChosenToRetire",
|
||||
"en_US": [
|
||||
"You have chosen to retire from\n",
|
||||
"this Battle Room challenge."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00012",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_AwaitingResponseFromFriend",
|
||||
"en_US": "Awaiting response from a friend..."
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00013",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_YouHaveClearedYourSeventhMatch",
|
||||
"en_US": [
|
||||
"You have cleared your seventh match!\n",
|
||||
"Congratulations!\r",
|
||||
|
|
@ -97,18 +97,18 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00014",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_PlayerReceivedBP",
|
||||
"en_US": "{STRVAR_1 3, 0, 0} received {STRVAR_1 51, 1, 0} BP!\r"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00015",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_SavingDontTurnOffPower2",
|
||||
"en_US": [
|
||||
"Saving...\n",
|
||||
"Don’t turn off the power."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000306_00016",
|
||||
"id": "BattleTowerMultiBattleRoom_Text_PleaseWait",
|
||||
"en_US": "Please wait."
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -610,15 +610,15 @@
|
|||
"en_US": "DOUBLE"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000361_00146",
|
||||
"id": "MenuEntries_Text_BattleTowerBattleRoom_KeepGoing",
|
||||
"en_US": "KEEP GOING"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000361_00147",
|
||||
"id": "MenuEntries_Text_BattleTowerBattleRoom_Rest",
|
||||
"en_US": "REST"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000361_00148",
|
||||
"id": "MenuEntries_Text_BattleTowerBattleRoom_Retire",
|
||||
"en_US": "RETIRE"
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
#include "constants/heap.h"
|
||||
#include "constants/narc.h"
|
||||
#include "constants/string.h"
|
||||
#include "generated/object_events.h"
|
||||
#include "generated/species_data_params.h"
|
||||
#include "generated/trainer_classes.h"
|
||||
|
|
@ -100,36 +101,36 @@ static const u16 sTrainerClassToObjectID[][2] = {
|
|||
{ TRAINER_CLASS_POKE_KID, OBJ_EVENT_GFX_PIKACHU }
|
||||
};
|
||||
|
||||
BattleFrontierTrainerData *ov104_0222DCE0(u16 param0, int param1, enum NarcID narcID)
|
||||
BattleFrontierTrainerData *BattleTower_GetTrainerDataFromTrainerIDAndNarcID(u16 battleTowerTrainerID, enum HeapID heapID, enum NarcID narcID)
|
||||
{
|
||||
return NARC_AllocAndReadWholeMemberByIndexPair(narcID, param0, param1);
|
||||
return NARC_AllocAndReadWholeMemberByIndexPair(narcID, battleTowerTrainerID, heapID);
|
||||
}
|
||||
|
||||
void ov104_0222DCF4(BattleFrontierPokemonData *param0, int param1, enum NarcID narcID)
|
||||
void BattleTower_GetMonDataFromSetIDAndNarcID(BattleFrontierPokemonData *monData, int setID, enum NarcID narcID)
|
||||
{
|
||||
NARC_ReadWholeMemberByIndexPair(param0, narcID, param1);
|
||||
NARC_ReadWholeMemberByIndexPair(monData, narcID, setID);
|
||||
}
|
||||
|
||||
BattleFrontierTrainerData *ov104_0222DD04(FrontierTrainerDataDTO *param0, int param1, int heapID, int param3)
|
||||
BattleFrontierTrainerData *BattleTower_GetTrainerData(FrontierTrainerDataDTO *trDataDTO, int battleTowerTrainerID, enum HeapID heapID, enum NarcID narcID)
|
||||
{
|
||||
MessageLoader *v1 = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_FRONTIER_TRAINER_NAMES, heapID);
|
||||
MessageLoader *msgLoader = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_FRONTIER_TRAINER_NAMES, heapID);
|
||||
|
||||
MI_CpuClear8(param0, sizeof(FrontierTrainerDataDTO));
|
||||
MI_CpuClear8(trDataDTO, sizeof(FrontierTrainerDataDTO));
|
||||
|
||||
BattleFrontierTrainerData *v0 = ov104_0222DCE0(param1, heapID, param3);
|
||||
BattleFrontierTrainerData *trData = BattleTower_GetTrainerDataFromTrainerIDAndNarcID(battleTowerTrainerID, heapID, narcID);
|
||||
|
||||
param0->trainerID = param1;
|
||||
param0->unk_18[0] = 0xFFFF;
|
||||
param0->unk_18[1] = param1 * 3;
|
||||
param0->trainerType = v0->trainerType;
|
||||
trDataDTO->trainerID = battleTowerTrainerID;
|
||||
trDataDTO->unk_18[0] = 0xFFFF;
|
||||
trDataDTO->unk_18[1] = battleTowerTrainerID * 3;
|
||||
trDataDTO->trainerType = trData->trainerType;
|
||||
|
||||
Strbuf *v2 = MessageLoader_GetNewStrbuf(v1, param1);
|
||||
Strbuf *strbuf = MessageLoader_GetNewStrbuf(msgLoader, battleTowerTrainerID);
|
||||
|
||||
Strbuf_ToChars(v2, ¶m0->trainerName[0], 8);
|
||||
Strbuf_Free(v2);
|
||||
MessageLoader_Free(v1);
|
||||
Strbuf_ToChars(strbuf, &trDataDTO->trainerName[0], TRAINER_NAME_LEN + 1);
|
||||
Strbuf_Free(strbuf);
|
||||
MessageLoader_Free(msgLoader);
|
||||
|
||||
return v0;
|
||||
return trData;
|
||||
}
|
||||
|
||||
static const u16 Unk_ov104_0223F290[] = {
|
||||
|
|
@ -147,7 +148,7 @@ u32 ov104_0222DD6C(FrontierPokemonDataDTO *param0, u16 param1, u32 param2, u32 p
|
|||
BattleFrontierPokemonData v4;
|
||||
|
||||
MI_CpuClear8(param0, sizeof(FrontierPokemonDataDTO));
|
||||
ov104_0222DCF4(&v4, param1, narcID);
|
||||
BattleTower_GetMonDataFromSetIDAndNarcID(&v4, param1, narcID);
|
||||
|
||||
param0->species = v4.species;
|
||||
param0->form = v4.form;
|
||||
|
|
@ -407,7 +408,7 @@ u8 ov104_0222E240(u16 param0, u16 param1)
|
|||
|
||||
void ov104_0222E278(FrontierDataDTO *param0, u16 param1, int heapID, int param3)
|
||||
{
|
||||
Heap_Free(ov104_0222DD04(¶m0->trDataDTO, param1, heapID, param3));
|
||||
Heap_Free(BattleTower_GetTrainerData(¶m0->trDataDTO, param1, heapID, param3));
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
@ -503,7 +504,7 @@ BOOL ov104_0222E3E4(BattleFrontierTrainerData *param0, const u16 param1[], const
|
|||
v5 = (LCRNG_Next() % param0->numSets);
|
||||
v1 = param0->setIDs[v5];
|
||||
|
||||
ov104_0222DCF4(&v3[v0], v1, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDPM);
|
||||
BattleTower_GetMonDataFromSetIDAndNarcID(&v3[v0], v1, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDPM);
|
||||
|
||||
for (v4 = 0; v4 < v0; v4++) {
|
||||
if ((v3[v4].species == v3[v0].species) || (v3[v4].item == v3[v0].item)) {
|
||||
|
|
@ -547,7 +548,7 @@ void ov104_0222E4BC(u8 param0, u16 param1, u16 param2, u16 *param3, FrontierPoke
|
|||
FrontierTrainerDataDTO v4;
|
||||
BattleFrontierPokemonData v6;
|
||||
|
||||
BattleFrontierTrainerData *v5 = ov104_0222DD04(&v4, param1, HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR);
|
||||
BattleFrontierTrainerData *v5 = BattleTower_GetTrainerData(&v4, param1, HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR);
|
||||
|
||||
for (v0 = 0; v0 < param0; v0++) {
|
||||
param5[v0] = ov104_0222E3A8(param1);
|
||||
|
|
@ -559,13 +560,13 @@ void ov104_0222E4BC(u8 param0, u16 param1, u16 param2, u16 *param3, FrontierPoke
|
|||
ov104_0222E3E4(v5, v2, v3, 0, (param0 / 2), param3, 11);
|
||||
|
||||
for (v0 = 0; v0 < (param0 / 2); v0++) {
|
||||
ov104_0222DCF4(&v6, param3[v0], NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDPM);
|
||||
BattleTower_GetMonDataFromSetIDAndNarcID(&v6, param3[v0], NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDPM);
|
||||
v2[v0] = v6.species;
|
||||
v3[v0] = v6.item;
|
||||
}
|
||||
|
||||
Heap_Free(v5);
|
||||
v5 = ov104_0222DD04(&v4, param2, HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR);
|
||||
v5 = BattleTower_GetTrainerData(&v4, param2, HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR);
|
||||
ov104_0222E3E4(v5, v2, v3, (param0 / 2), (param0 / 2), ¶m3[param0 / 2], 11);
|
||||
|
||||
for (v0 = 0; v0 < (param0 / 2); v0++) {
|
||||
|
|
|
|||
|
|
@ -437,7 +437,7 @@ u16 ov104_02234440(UnkStruct_ov104_0223ADA0 *param0, u8 param1)
|
|||
FrontierTrainerDataDTO v0;
|
||||
u8 v2 = param0->unk_06 + (param1 * 7);
|
||||
|
||||
Heap_Free(ov104_0222DD04(&v0, param0->unk_18[v2], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
Heap_Free(BattleTower_GetTrainerData(&v0, param0->unk_18[v2], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
|
||||
return ov104_0222E10C(v0.trainerType);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -329,7 +329,7 @@ u16 ov104_022354C0(UnkStruct_ov104_0223B5C0 *param0, u8 param1)
|
|||
FrontierTrainerDataDTO v0;
|
||||
u8 v2 = (param0->unk_05 * 2) + param1;
|
||||
|
||||
Heap_Free(ov104_0222DD04(&v0, param0->unk_18[v2], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
Heap_Free(BattleTower_GetTrainerData(&v0, param0->unk_18[v2], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
|
||||
return ov104_0222E10C(v0.trainerType);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -437,7 +437,7 @@ u16 ov104_02236B58(UnkStruct_ov104_0223BA10 *param0, u8 param1)
|
|||
FrontierTrainerDataDTO v0;
|
||||
u8 v2 = param0->unk_11 + (param1 * 7);
|
||||
|
||||
Heap_Free(ov104_0222DD04(&v0, param0->unk_30[v2], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
Heap_Free(BattleTower_GetTrainerData(&v0, param0->unk_30[v2], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
|
||||
return ov104_0222E10C(v0.trainerType);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -444,7 +444,7 @@ u16 ov104_02238464(UnkStruct_ov104_0223BFFC *param0, u8 param1)
|
|||
FrontierTrainerDataDTO v0;
|
||||
u8 v2 = ov104_02238498(param0, param1);
|
||||
|
||||
Heap_Free(ov104_0222DD04(&v0, param0->unk_78[v2], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
Heap_Free(BattleTower_GetTrainerData(&v0, param0->unk_78[v2], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
|
||||
return ov104_0222E10C(v0.trainerType);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include <string.h>
|
||||
|
||||
#include "constants/battle_tower.h"
|
||||
#include "generated/battle_tower_functions.h"
|
||||
#include "generated/battle_tower_modes.h"
|
||||
#include "generated/game_records.h"
|
||||
#include "generated/object_events.h"
|
||||
|
|
@ -48,71 +49,69 @@ static BOOL ov104_02239464(UnkStruct_ov104_0222E930 *param0, BattleTower *battle
|
|||
BOOL ov104_02239130(UnkStruct_ov104_0222E930 *param0)
|
||||
{
|
||||
TVBroadcast *broadcast;
|
||||
Pokemon *v1;
|
||||
BattleTower *battleTower;
|
||||
int v3, v4;
|
||||
u16 v5, v6;
|
||||
u16 functionIndex, v6;
|
||||
u16 *v7;
|
||||
UnkStruct_ov104_02230BE4 *v8 = sub_0209B970(param0->unk_00->unk_00);
|
||||
|
||||
v5 = ov104_0222EA48(param0);
|
||||
functionIndex = ov104_0222EA48(param0);
|
||||
v6 = ov104_0222FC00(param0);
|
||||
v7 = ov104_0222FBE4(param0);
|
||||
battleTower = sub_0209B978(param0->unk_00->unk_00);
|
||||
|
||||
switch (v5) {
|
||||
case 2:
|
||||
sub_02049F8C();
|
||||
switch (functionIndex) {
|
||||
case BATTLE_TOWER_FUNCTION_RESET_SYSTEM:
|
||||
BattleTower_ResetSystem();
|
||||
break;
|
||||
case (30 + 16):
|
||||
case BATTLE_TOWER_FUNCTION_UNK_46:
|
||||
*v7 = sub_0204AA04(battleTower);
|
||||
broadcast = SaveData_GetTVBroadcast(v8->saveData);
|
||||
sub_0206D0C8(broadcast, *v7);
|
||||
GameRecords_AddToRecordValue(SaveData_GetGameRecords(v8->saveData), RECORD_UNK_068, *v7);
|
||||
break;
|
||||
case (30 + 25):
|
||||
case BATTLE_TOWER_FUNCTION_GET_PARTNER_PARAM:
|
||||
*v7 = ov104_0223927C(battleTower, v6);
|
||||
break;
|
||||
case (30 + 3):
|
||||
*v7 = sub_0204A578(battleTower);
|
||||
case BATTLE_TOWER_FUNCTION_GET_NEXT_OPPONENT_NUM:
|
||||
*v7 = BattleTower_GetNextOpponentNum(battleTower);
|
||||
break;
|
||||
case (30 + 4):
|
||||
case BATTLE_TOWER_FUNCTION_UNK_34:
|
||||
*v7 = ov104_022395B4(battleTower);
|
||||
break;
|
||||
case (30 + 5):
|
||||
*v7 = sub_0204A57C(battleTower);
|
||||
case BATTLE_TOWER_FUNCTION_HAS_DEFEATED_SEVEN_TRAINERS:
|
||||
*v7 = BattleTower_HasDefeatedSevenTrainers(battleTower);
|
||||
break;
|
||||
case (30 + 6):
|
||||
case BATTLE_TOWER_FUNCTION_UNK_36:
|
||||
*v7 = ov104_022395D8(battleTower);
|
||||
break;
|
||||
case (30 + 13):
|
||||
case BATTLE_TOWER_FUNCTION_GET_CHALLENGE_MODE:
|
||||
*v7 = (u16)BattleTower_GetChallengeMode(battleTower);
|
||||
break;
|
||||
case (30 + 10):
|
||||
ov104_022394A4(battleTower, v8->saveData);
|
||||
case BATTLE_TOWER_FUNCTION_SET_OPPONENT_TEAMS:
|
||||
BattleTower_CreateOpponentParties(battleTower, v8->saveData);
|
||||
break;
|
||||
case (30 + 11):
|
||||
case BATTLE_TOWER_FUNCTION_GET_OPPONENT_OBJECT_ID:
|
||||
*v7 = ov104_02239588(battleTower, v6);
|
||||
break;
|
||||
case (30 + 14):
|
||||
case BATTLE_TOWER_FUNCTION_UNK_44:
|
||||
ov104_022395A0(battleTower, v6);
|
||||
break;
|
||||
case (30 + 7):
|
||||
sub_0204A660(battleTower, v8->saveData);
|
||||
case BATTLE_TOWER_FUNCTION_UPDATE_GAME_RECORDS:
|
||||
BattleTower_UpdateGameRecords(battleTower, v8->saveData);
|
||||
break;
|
||||
case (30 + 8):
|
||||
sub_0204A7A4(battleTower, v8->saveData, v8->journalEntry);
|
||||
case BATTLE_TOWER_FUNCTION_UPDATE_GAME_RECORDS_AND_JOURNAL:
|
||||
BattleTower_UpdateGameRecordsAndJournal(battleTower, v8->saveData, v8->journalEntry);
|
||||
break;
|
||||
case (30 + 9):
|
||||
case BATTLE_TOWER_FUNCTION_UNK_39:
|
||||
sub_0204A8C8(battleTower);
|
||||
break;
|
||||
case (30 + 28):
|
||||
case BATTLE_TOWER_FUNCTION_UNK_58:
|
||||
MI_CpuClear8(battleTower->unk_884, 70);
|
||||
break;
|
||||
case (30 + 29):
|
||||
case BATTLE_TOWER_FUNCTION_UNK_59:
|
||||
battleTower->unk_8D6 = 1;
|
||||
break;
|
||||
case 100:
|
||||
case BATTLE_TOWER_FUNCTION_CHECK_IS_NULL:
|
||||
if (battleTower == NULL) {
|
||||
*v7 = 1;
|
||||
} else {
|
||||
|
|
@ -124,7 +123,7 @@ BOOL ov104_02239130(UnkStruct_ov104_0222E930 *param0)
|
|||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static u16 ov104_0223927C(BattleTower *battleTower, u8 param)
|
||||
|
|
@ -174,9 +173,9 @@ BOOL ov104_022392C0(UnkStruct_ov104_0222E930 *param0)
|
|||
return 0;
|
||||
}
|
||||
|
||||
v1 = battleTower->unk_78[v4].trDataDTO.unk_18;
|
||||
v1 = battleTower->opponentsDataDTO[v4].trDataDTO.unk_18;
|
||||
|
||||
ov104_0223310C(param0, v1, ov104_0223A790(battleTower->challengeMode));
|
||||
ov104_0223310C(param0, v1, BattleTower_GetTrainerMessagesBankID(battleTower->challengeMode));
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "generated/battle_tower_modes.h"
|
||||
|
||||
#include "struct_defs/battle_tower.h"
|
||||
|
||||
#include "overlay104/ov104_0222DCE0.h"
|
||||
|
|
@ -14,39 +16,39 @@ void ov104_022395A0(BattleTower *battleTower, u16 param1);
|
|||
u16 ov104_022395B4(BattleTower *battleTower);
|
||||
u16 ov104_022395D8(BattleTower *battleTower);
|
||||
|
||||
void ov104_022394A4(BattleTower *battleTower, SaveData *saveData)
|
||||
void BattleTower_CreateOpponentParties(BattleTower *battleTower, SaveData *saveData)
|
||||
{
|
||||
switch (battleTower->challengeMode) {
|
||||
case 4:
|
||||
case 5:
|
||||
ov104_0223A30C(saveData, battleTower->unk_78, battleTower->unk_0C - 1);
|
||||
case BATTLE_TOWER_MODE_WIFI:
|
||||
case BATTLE_TOWER_MODE_5:
|
||||
ov104_0223A30C(saveData, battleTower->opponentsDataDTO, battleTower->nextOpponentNum - 1);
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
case 6:
|
||||
ov104_0223A0C4(battleTower, &(battleTower->unk_78[0]), battleTower->unk_3E[(battleTower->unk_0C - 1) * 2 + 0], battleTower->partySize, NULL, NULL, NULL, battleTower->heapID);
|
||||
case BATTLE_TOWER_MODE_MULTI:
|
||||
case BATTLE_TOWER_MODE_LINK_MULTI:
|
||||
case BATTLE_TOWER_MODE_6:
|
||||
BattleTower_CreateTrainerParty(battleTower, &(battleTower->opponentsDataDTO[0]), battleTower->trainerIDs[(battleTower->nextOpponentNum - 1) * 2 + 0], battleTower->partySize, NULL, NULL, NULL, battleTower->heapID);
|
||||
|
||||
u16 v1[2];
|
||||
u16 v2[2];
|
||||
u16 species[2];
|
||||
u16 items[2];
|
||||
|
||||
for (int v0 = 0; v0 < battleTower->partySize; v0++) {
|
||||
v1[v0] = battleTower->unk_78[0].monDataDTO[v0].species;
|
||||
v2[v0] = battleTower->unk_78[0].monDataDTO[v0].item;
|
||||
species[v0] = battleTower->opponentsDataDTO[0].monDataDTO[v0].species;
|
||||
items[v0] = battleTower->opponentsDataDTO[0].monDataDTO[v0].item;
|
||||
}
|
||||
|
||||
ov104_0223A0C4(battleTower, &(battleTower->unk_78[1]), battleTower->unk_3E[(battleTower->unk_0C - 1) * 2 + 1], battleTower->partySize, v1, v2, NULL, battleTower->heapID);
|
||||
BattleTower_CreateTrainerParty(battleTower, &(battleTower->opponentsDataDTO[1]), battleTower->trainerIDs[(battleTower->nextOpponentNum - 1) * 2 + 1], battleTower->partySize, species, items, NULL, battleTower->heapID);
|
||||
break;
|
||||
case 1:
|
||||
case 0:
|
||||
case BATTLE_TOWER_MODE_DOUBLE:
|
||||
case BATTLE_TOWER_MODE_SINGLE:
|
||||
default:
|
||||
ov104_0223A0C4(battleTower, &(battleTower->unk_78[0]), battleTower->unk_3E[battleTower->unk_0C - 1], battleTower->partySize, NULL, NULL, NULL, battleTower->heapID);
|
||||
BattleTower_CreateTrainerParty(battleTower, &(battleTower->opponentsDataDTO[0]), battleTower->trainerIDs[battleTower->nextOpponentNum - 1], battleTower->partySize, NULL, NULL, NULL, battleTower->heapID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
u16 ov104_02239588(BattleTower *battleTower, u16 param1)
|
||||
{
|
||||
return ov104_0222E10C(battleTower->unk_78[param1].trDataDTO.trainerType);
|
||||
return ov104_0222E10C(battleTower->opponentsDataDTO[param1].trDataDTO.trainerType);
|
||||
}
|
||||
|
||||
void ov104_022395A0(BattleTower *battleTower, u16 param1)
|
||||
|
|
@ -58,11 +60,11 @@ u16 ov104_022395B4(BattleTower *battleTower)
|
|||
{
|
||||
++battleTower->unk_0D;
|
||||
|
||||
if (battleTower->challengeMode != 6) {
|
||||
if (battleTower->challengeMode != BATTLE_TOWER_MODE_6) {
|
||||
battleTower->unk_08 = sub_0206BFF0(battleTower->unk_08);
|
||||
}
|
||||
|
||||
return ++battleTower->unk_0C;
|
||||
return ++battleTower->nextOpponentNum;
|
||||
}
|
||||
|
||||
u16 ov104_022395D8(BattleTower *battleTower)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include <string.h>
|
||||
|
||||
#include "constants/battle_tower.h"
|
||||
#include "generated/battle_tower_modes.h"
|
||||
|
||||
#include "struct_decls/struct_0202D750_decl.h"
|
||||
#include "struct_defs/battle_tower.h"
|
||||
|
|
@ -326,10 +327,10 @@ BOOL ov104_02239B14(UnkStruct_ov104_0222E930 *param0)
|
|||
v4 = *v3;
|
||||
ov104_02239C7C(v3);
|
||||
|
||||
battleTower = BattleTower_Init(v2->saveData, 0, 6);
|
||||
battleTower = BattleTower_Init(v2->saveData, 0, BATTLE_TOWER_MODE_6);
|
||||
sub_0209B980(param0->unk_00->unk_00, battleTower);
|
||||
|
||||
if (battleTower->challengeMode == 6) {
|
||||
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
|
||||
ov104_0222E630(v2->saveData);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "constants/battle_tower.h"
|
||||
#include "generated/battle_tower_modes.h"
|
||||
#include "generated/species_data_params.h"
|
||||
|
||||
|
|
@ -623,151 +624,151 @@ static const UnkStruct_ov104_0223FCB4 Unk_ov104_0223FCB4[] = {
|
|||
},
|
||||
};
|
||||
|
||||
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0);
|
||||
void ov104_0223A30C(SaveData *saveData, FrontierDataDTO *param1, const u8 param2);
|
||||
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *dto);
|
||||
void ov104_0223A30C(SaveData *saveData, FrontierDataDTO *dto, const u8 param2);
|
||||
FieldBattleDTO *ov104_0223A580(BattleTower *battleTower, UnkStruct_ov104_02230BE4 *param1);
|
||||
void ov104_0223A734(BattleTower *battleTower, u16 param1);
|
||||
u16 ov104_0223A750(BattleTower *battleTower, const u16 *param1);
|
||||
int ov104_0223A768(u8 param0);
|
||||
int ov104_0223A77C(u8 param0);
|
||||
int ov104_0223A790(u8 param0);
|
||||
static BOOL ov104_0223A118(BattleTower *battleTower, BattleFrontierTrainerData *param1, u16 param2, FrontierPokemonDataDTO *param3, u8 param4, u16 *param5, u16 *param6, UnkStruct_0204B404 *param7, int param8);
|
||||
int BattleTower_GetPokemonDataNarcID(u8 challengeMode);
|
||||
int BattleTower_GetTrainerDataNarcID(u8 challengeMode);
|
||||
int BattleTower_GetTrainerMessagesBankID(u8 challengeMode);
|
||||
static BOOL BattleTower_CreateRandomTrainerParty(BattleTower *battleTower, BattleFrontierTrainerData *trData, u16 battleTowerTrainerID, FrontierPokemonDataDTO *monDataDTO, u8 partySize, u16 *species, u16 *items, UnkStruct_0204B404 *param7, int heapID);
|
||||
static void ov104_0223A348(FrontierDataDTO *param0, const u8 param1);
|
||||
static u32 ov104_0223A3A8(BattleTower *battleTower, FrontierPokemonDataDTO *param1, u16 param2, u32 param3, u32 param4, u8 param5, u8 param6, BOOL param7, int param8);
|
||||
static u32 BattleTower_CopySetToPokemonDataDTO(BattleTower *battleTower, FrontierPokemonDataDTO *monDataDTO, u16 setID, u32 otID, u32 givenPersonality, u8 ivs, u8 partyIndex, BOOL giveReservedItem, int heapID);
|
||||
static u32 BattleTower_GetBattleTypeFromChallengeMode(u8 challengeMode);
|
||||
static void ov104_0223A6AC(FieldBattleDTO *param0, FrontierDataDTO *param1, int param2, int param3, int param4);
|
||||
static int ov104_0223A7AC(u8 param0);
|
||||
static int BattleTower_AreAllConnectedGamesPlatinum(u8 challengeMode);
|
||||
|
||||
BOOL ov104_0223A0C4(BattleTower *battleTower, FrontierDataDTO *param1, u16 param2, int param3, u16 *param4, u16 *param5, UnkStruct_0204B404 *param6, int heapID)
|
||||
BOOL BattleTower_CreateTrainerParty(BattleTower *battleTower, FrontierDataDTO *opponentDataDTO, u16 battleTowerTrainerID, int partySize, u16 *species, u16 *items, UnkStruct_0204B404 *param6, int heapID)
|
||||
{
|
||||
BOOL v0 = 0;
|
||||
BattleFrontierTrainerData *v1 = ov104_0222DD04(¶m1->trDataDTO, param2, heapID, ov104_0223A77C(battleTower->challengeMode));
|
||||
v0 = ov104_0223A118(battleTower, v1, param2, ¶m1->monDataDTO[0], param3, param4, param5, param6, heapID);
|
||||
BattleFrontierTrainerData *trData = BattleTower_GetTrainerData(&opponentDataDTO->trDataDTO, battleTowerTrainerID, heapID, BattleTower_GetTrainerDataNarcID(battleTower->challengeMode));
|
||||
v0 = BattleTower_CreateRandomTrainerParty(battleTower, trData, battleTowerTrainerID, &opponentDataDTO->monDataDTO[0], partySize, species, items, param6, heapID);
|
||||
|
||||
Heap_Free(v1);
|
||||
Heap_Free(trData);
|
||||
|
||||
return v0;
|
||||
}
|
||||
|
||||
static BOOL ov104_0223A118(BattleTower *battleTower, BattleFrontierTrainerData *param1, u16 param2, FrontierPokemonDataDTO *param3, u8 param4, u16 *param5, u16 *param6, UnkStruct_0204B404 *param7, int param8)
|
||||
static BOOL BattleTower_CreateRandomTrainerParty(BattleTower *battleTower, BattleFrontierTrainerData *trData, u16 battleTowerTrainerID, FrontierPokemonDataDTO *monDataDTO, u8 partySize, u16 *species, u16 *items, UnkStruct_0204B404 *param7, int heapID)
|
||||
{
|
||||
int v0;
|
||||
u8 v2;
|
||||
u8 v3;
|
||||
int i;
|
||||
u8 ivs;
|
||||
u8 random;
|
||||
u32 v4;
|
||||
int v5;
|
||||
int v6[4];
|
||||
u32 v7[4];
|
||||
int v8;
|
||||
int v9;
|
||||
BOOL v10 = 0;
|
||||
BattleFrontierPokemonData v11;
|
||||
BattleFrontierPokemonData v12;
|
||||
int setID;
|
||||
int setIDs[BT_DOUBLES_PARTY_SIZE];
|
||||
u32 personalities[BT_DOUBLES_PARTY_SIZE];
|
||||
int partyIndex;
|
||||
int dupeItemFailsafeCount;
|
||||
BOOL giveReservedItem = 0;
|
||||
BattleFrontierPokemonData monDataPrev;
|
||||
BattleFrontierPokemonData monDataCurr;
|
||||
|
||||
GF_ASSERT(param4 <= 4);
|
||||
GF_ASSERT(partySize <= BT_DOUBLES_PARTY_SIZE);
|
||||
|
||||
v8 = 0;
|
||||
v9 = 0;
|
||||
partyIndex = 0;
|
||||
dupeItemFailsafeCount = 0;
|
||||
|
||||
while (v8 != param4) {
|
||||
v3 = sub_0204AEC0(battleTower) % param1->numSets;
|
||||
v5 = param1->setIDs[v3];
|
||||
while (partyIndex != partySize) {
|
||||
random = BattleTower_GetRandom(battleTower) % trData->numSets;
|
||||
setID = trData->setIDs[random];
|
||||
|
||||
ov104_0222DCF4(&v12, v5, ov104_0223A768(battleTower->challengeMode));
|
||||
BattleTower_GetMonDataFromSetIDAndNarcID(&monDataCurr, setID, BattleTower_GetPokemonDataNarcID(battleTower->challengeMode));
|
||||
|
||||
for (v0 = 0; v0 < v8; v0++) {
|
||||
ov104_0222DCF4(&v11, v6[v0], ov104_0223A768(battleTower->challengeMode));
|
||||
for (i = 0; i < partyIndex; i++) {
|
||||
BattleTower_GetMonDataFromSetIDAndNarcID(&monDataPrev, setIDs[i], BattleTower_GetPokemonDataNarcID(battleTower->challengeMode));
|
||||
|
||||
if (v11.species == v12.species) {
|
||||
if (monDataPrev.species == monDataCurr.species) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (v0 != v8) {
|
||||
if (i != partyIndex) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (param5 != NULL) {
|
||||
for (v0 = 0; v0 < param4; v0++) {
|
||||
if (param5[v0] == v12.species) {
|
||||
if (species != NULL) {
|
||||
for (i = 0; i < partySize; i++) {
|
||||
if (species[i] == monDataCurr.species) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (v0 != param4) {
|
||||
if (i != partySize) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (v9 < 50) {
|
||||
for (v0 = 0; v0 < v8; v0++) {
|
||||
ov104_0222DCF4(&v11, v6[v0], ov104_0223A768(battleTower->challengeMode));
|
||||
if (dupeItemFailsafeCount < 50) {
|
||||
for (i = 0; i < partyIndex; i++) {
|
||||
BattleTower_GetMonDataFromSetIDAndNarcID(&monDataPrev, setIDs[i], BattleTower_GetPokemonDataNarcID(battleTower->challengeMode));
|
||||
|
||||
if ((v11.item) && (v11.item == v12.item)) {
|
||||
if (monDataPrev.item && monDataPrev.item == monDataCurr.item) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (v0 != v8) {
|
||||
v9++;
|
||||
if (i != partyIndex) {
|
||||
dupeItemFailsafeCount++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (param6 != NULL) {
|
||||
for (v0 = 0; v0 < param4; v0++) {
|
||||
if ((param6[v0] == v12.item) && (param6[v0] != 0)) {
|
||||
if (items != NULL) {
|
||||
for (i = 0; i < partySize; i++) {
|
||||
if (items[i] == monDataCurr.item && items[i] != 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (v0 != param4) {
|
||||
v9++;
|
||||
if (i != partySize) {
|
||||
dupeItemFailsafeCount++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
v6[v8] = v5;
|
||||
v8++;
|
||||
setIDs[partyIndex] = setID;
|
||||
partyIndex++;
|
||||
}
|
||||
|
||||
v2 = BattleTower_GetIVsFromTrainerID(param2);
|
||||
v4 = (sub_0204AEC0(battleTower) | (sub_0204AEC0(battleTower) << 16));
|
||||
ivs = BattleTower_GetIVsFromTrainerID(battleTowerTrainerID);
|
||||
v4 = BattleTower_GetRandom(battleTower) | (BattleTower_GetRandom(battleTower) << 16);
|
||||
|
||||
if (v9 >= 50) {
|
||||
v10 = 1;
|
||||
if (dupeItemFailsafeCount >= 50) {
|
||||
giveReservedItem = TRUE;
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < v8; v0++) {
|
||||
v7[v0] = ov104_0223A3A8(battleTower, &(param3[v0]), v6[v0], v4, 0, v2, v0, v10, param8);
|
||||
for (i = 0; i < partyIndex; i++) {
|
||||
personalities[i] = BattleTower_CopySetToPokemonDataDTO(battleTower, &(monDataDTO[i]), setIDs[i], v4, 0, ivs, i, giveReservedItem, heapID);
|
||||
}
|
||||
|
||||
if (param7 == NULL) {
|
||||
return v10;
|
||||
return giveReservedItem;
|
||||
}
|
||||
|
||||
param7->unk_00 = v4;
|
||||
|
||||
for (v0 = 0; v0 < 2; v0++) {
|
||||
param7->unk_04[v0] = v6[v0];
|
||||
param7->unk_08[v0] = v7[v0];
|
||||
for (i = 0; i < 2; i++) {
|
||||
param7->unk_04[i] = setIDs[i];
|
||||
param7->unk_08[i] = personalities[i];
|
||||
}
|
||||
|
||||
return v10;
|
||||
return giveReservedItem;
|
||||
}
|
||||
|
||||
void ov104_0223A30C(SaveData *saveData, FrontierDataDTO *param1, const u8 param2)
|
||||
void ov104_0223A30C(SaveData *saveData, FrontierDataDTO *dto, const u8 param2)
|
||||
{
|
||||
MI_CpuClear8(param1, sizeof(FrontierDataDTO));
|
||||
MI_CpuClear8(dto, sizeof(FrontierDataDTO));
|
||||
|
||||
UnkStruct_0202D764 *v1 = sub_0202D764(saveData);
|
||||
|
||||
if (!sub_0202D5E8(v1)) {
|
||||
ov104_0223A348(param1, param2);
|
||||
ov104_0223A348(dto, param2);
|
||||
return;
|
||||
}
|
||||
|
||||
sub_0202D63C(v1, param1, param2);
|
||||
sub_0202D63C(v1, dto, param2);
|
||||
}
|
||||
|
||||
static void ov104_0223A348(FrontierDataDTO *param0, const u8 param1)
|
||||
|
|
@ -787,101 +788,101 @@ static void ov104_0223A348(FrontierDataDTO *param0, const u8 param1)
|
|||
}
|
||||
}
|
||||
|
||||
static const u16 Unk_ov104_0223FCAC[] = {
|
||||
static const u16 sBattleTowerReservedItems[] = {
|
||||
ITEM_BRIGHTPOWDER,
|
||||
ITEM_LUM_BERRY,
|
||||
ITEM_LEFTOVERS,
|
||||
ITEM_QUICK_CLAW,
|
||||
};
|
||||
|
||||
static u32 ov104_0223A3A8(BattleTower *battleTower, FrontierPokemonDataDTO *param1, u16 param2, u32 param3, u32 param4, u8 param5, u8 param6, BOOL param7, int param8)
|
||||
static u32 BattleTower_CopySetToPokemonDataDTO(BattleTower *battleTower, FrontierPokemonDataDTO *monDataDTO, u16 setID, u32 otID, u32 givenPersonality, u8 ivs, u8 partyIndex, BOOL giveReservedItem, int heapID)
|
||||
{
|
||||
int v0;
|
||||
int v1;
|
||||
u32 v2;
|
||||
BattleFrontierPokemonData v4;
|
||||
int evs;
|
||||
u32 randomPersonality;
|
||||
BattleFrontierPokemonData monData;
|
||||
|
||||
MI_CpuClear8(param1, sizeof(FrontierPokemonDataDTO));
|
||||
ov104_0222DCF4(&v4, param2, ov104_0223A768(battleTower->challengeMode));
|
||||
MI_CpuClear8(monDataDTO, sizeof(FrontierPokemonDataDTO));
|
||||
BattleTower_GetMonDataFromSetIDAndNarcID(&monData, setID, BattleTower_GetPokemonDataNarcID(battleTower->challengeMode));
|
||||
|
||||
param1->species = v4.species;
|
||||
param1->form = v4.form;
|
||||
monDataDTO->species = monData.species;
|
||||
monDataDTO->form = monData.form;
|
||||
|
||||
if (param7) {
|
||||
param1->item = Unk_ov104_0223FCAC[param6];
|
||||
if (giveReservedItem) {
|
||||
monDataDTO->item = sBattleTowerReservedItems[partyIndex];
|
||||
} else {
|
||||
param1->item = v4.item;
|
||||
monDataDTO->item = monData.item;
|
||||
}
|
||||
|
||||
u8 friendship = MAX_FRIENDSHIP_VALUE;
|
||||
|
||||
for (v0 = 0; v0 < LEARNED_MOVES_MAX; v0++) {
|
||||
param1->moves[v0] = v4.moves[v0];
|
||||
monDataDTO->moves[v0] = monData.moves[v0];
|
||||
|
||||
if (v4.moves[v0] == MOVE_FRUSTRATION) {
|
||||
if (monData.moves[v0] == MOVE_FRUSTRATION) {
|
||||
friendship = 0;
|
||||
}
|
||||
}
|
||||
|
||||
param1->otID = param3;
|
||||
monDataDTO->otID = otID;
|
||||
|
||||
if (param4 == 0) {
|
||||
if (givenPersonality == 0) {
|
||||
do {
|
||||
v2 = (sub_0204AEC0(battleTower) | sub_0204AEC0(battleTower) << 16);
|
||||
} while ((v4.nature != Pokemon_GetNatureOf(v2)) || (Pokemon_IsPersonalityShiny(param3, v2) == 1));
|
||||
randomPersonality = BattleTower_GetRandom(battleTower) | BattleTower_GetRandom(battleTower) << 16;
|
||||
} while (monData.nature != Pokemon_GetNatureOf(randomPersonality) || Pokemon_IsPersonalityShiny(otID, randomPersonality) == 1);
|
||||
|
||||
param1->personality = v2;
|
||||
monDataDTO->personality = randomPersonality;
|
||||
} else {
|
||||
param1->personality = param4;
|
||||
v2 = param4;
|
||||
monDataDTO->personality = givenPersonality;
|
||||
randomPersonality = givenPersonality;
|
||||
}
|
||||
|
||||
param1->hpIV = param5;
|
||||
param1->atkIV = param5;
|
||||
param1->defIV = param5;
|
||||
param1->speedIV = param5;
|
||||
param1->spAtkIV = param5;
|
||||
param1->spDefIV = param5;
|
||||
monDataDTO->hpIV = ivs;
|
||||
monDataDTO->atkIV = ivs;
|
||||
monDataDTO->defIV = ivs;
|
||||
monDataDTO->speedIV = ivs;
|
||||
monDataDTO->spAtkIV = ivs;
|
||||
monDataDTO->spDefIV = ivs;
|
||||
|
||||
v1 = 0;
|
||||
evs = 0;
|
||||
|
||||
for (v0 = 0; v0 < 6; v0++) {
|
||||
if (v4.evFlags & FlagIndex(v0)) {
|
||||
v1++;
|
||||
for (v0 = 0; v0 < STAT_MAX; v0++) {
|
||||
if (monData.evFlags & FlagIndex(v0)) {
|
||||
evs++;
|
||||
}
|
||||
}
|
||||
|
||||
if ((510 / v1) > 255) {
|
||||
v1 = 255;
|
||||
if (MAX_EVS_ALL_STATS / evs > MAX_EVS_SINGLE_STAT) {
|
||||
evs = MAX_EVS_SINGLE_STAT;
|
||||
} else {
|
||||
v1 = 510 / v1;
|
||||
evs = MAX_EVS_ALL_STATS / evs;
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < 6; v0++) {
|
||||
if (v4.evFlags & FlagIndex(v0)) {
|
||||
param1->evList[v0] = v1;
|
||||
for (v0 = 0; v0 < STAT_MAX; v0++) {
|
||||
if (monData.evFlags & FlagIndex(v0)) {
|
||||
monDataDTO->evList[v0] = evs;
|
||||
}
|
||||
}
|
||||
|
||||
param1->combinedPPUps = 0;
|
||||
param1->language = gGameLanguage;
|
||||
monDataDTO->combinedPPUps = 0;
|
||||
monDataDTO->language = gGameLanguage;
|
||||
|
||||
v0 = SpeciesData_GetSpeciesValue(param1->species, SPECIES_DATA_ABILITY_2);
|
||||
v0 = SpeciesData_GetSpeciesValue(monDataDTO->species, SPECIES_DATA_ABILITY_2);
|
||||
|
||||
if (v0) {
|
||||
if (param1->personality & 1) {
|
||||
param1->ability = v0;
|
||||
if (monDataDTO->personality & 1) {
|
||||
monDataDTO->ability = v0;
|
||||
} else {
|
||||
param1->ability = SpeciesData_GetSpeciesValue(param1->species, SPECIES_DATA_ABILITY_1);
|
||||
monDataDTO->ability = SpeciesData_GetSpeciesValue(monDataDTO->species, SPECIES_DATA_ABILITY_1);
|
||||
}
|
||||
} else {
|
||||
param1->ability = SpeciesData_GetSpeciesValue(param1->species, SPECIES_DATA_ABILITY_1);
|
||||
monDataDTO->ability = SpeciesData_GetSpeciesValue(monDataDTO->species, SPECIES_DATA_ABILITY_1);
|
||||
}
|
||||
|
||||
param1->friendship = friendship;
|
||||
MessageLoader_GetSpeciesName(param1->species, param8, &(param1->nickname[0]));
|
||||
monDataDTO->friendship = friendship;
|
||||
MessageLoader_GetSpeciesName(monDataDTO->species, heapID, &(monDataDTO->nickname[0]));
|
||||
|
||||
return v2;
|
||||
return randomPersonality;
|
||||
}
|
||||
|
||||
FieldBattleDTO *ov104_0223A580(BattleTower *battleTower, UnkStruct_ov104_02230BE4 *param1)
|
||||
|
|
@ -918,19 +919,19 @@ FieldBattleDTO *ov104_0223A580(BattleTower *battleTower, UnkStruct_ov104_02230BE
|
|||
Heap_Free(mon);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v3);
|
||||
|
||||
ov104_0223A6AC(v3, &(battleTower->unk_78[0]), battleTower->partySize, BATTLER_ENEMY_1, battleTower->heapID);
|
||||
ov104_0223A6AC(v3, &(battleTower->opponentsDataDTO[0]), battleTower->partySize, BATTLER_ENEMY_1, battleTower->heapID);
|
||||
|
||||
for (v0 = 0; v0 < MAX_BATTLERS; v0++) {
|
||||
v3->trainer[v0].header.aiMask = (0x1 | 0x2 | 0x4);
|
||||
}
|
||||
|
||||
switch (battleTower->challengeMode) {
|
||||
case 2:
|
||||
case BATTLE_TOWER_MODE_MULTI:
|
||||
ov104_0223A6AC(v3, &(battleTower->partnersDataDTO[battleTower->partnerID]), battleTower->partySize, BATTLER_PLAYER_2, battleTower->heapID);
|
||||
// fall through
|
||||
case 3:
|
||||
case 6:
|
||||
ov104_0223A6AC(v3, &(battleTower->unk_78[1]), battleTower->partySize, BATTLER_ENEMY_2, battleTower->heapID);
|
||||
case BATTLE_TOWER_MODE_LINK_MULTI:
|
||||
case BATTLE_TOWER_MODE_6:
|
||||
ov104_0223A6AC(v3, &(battleTower->opponentsDataDTO[1]), battleTower->partySize, BATTLER_ENEMY_2, battleTower->heapID);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
|
@ -987,38 +988,38 @@ u16 ov104_0223A750(BattleTower *battleTower, const u16 *param1)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int ov104_0223A768(u8 param0)
|
||||
int BattleTower_GetPokemonDataNarcID(u8 challengeMode)
|
||||
{
|
||||
if (ov104_0223A7AC(param0) == FALSE) {
|
||||
if (BattleTower_AreAllConnectedGamesPlatinum(challengeMode) == FALSE) {
|
||||
return NARC_INDEX_BATTLE__B_TOWER__BTDPM;
|
||||
}
|
||||
|
||||
return NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDPM;
|
||||
}
|
||||
|
||||
int ov104_0223A77C(u8 param0)
|
||||
int BattleTower_GetTrainerDataNarcID(u8 challengeMode)
|
||||
{
|
||||
if (ov104_0223A7AC(param0) == FALSE) {
|
||||
if (BattleTower_AreAllConnectedGamesPlatinum(challengeMode) == FALSE) {
|
||||
return NARC_INDEX_BATTLE__B_TOWER__BTDTR;
|
||||
}
|
||||
|
||||
return NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR;
|
||||
}
|
||||
|
||||
int ov104_0223A790(u8 param0)
|
||||
int BattleTower_GetTrainerMessagesBankID(u8 challengeMode)
|
||||
{
|
||||
if (ov104_0223A7AC(param0) == FALSE) {
|
||||
if (BattleTower_AreAllConnectedGamesPlatinum(challengeMode) == FALSE) {
|
||||
return TEXT_BANK_UNK_0613;
|
||||
}
|
||||
|
||||
return TEXT_BANK_FRONTIER_TRAINER_MESSAGES;
|
||||
}
|
||||
|
||||
static int ov104_0223A7AC(u8 param0)
|
||||
static int BattleTower_AreAllConnectedGamesPlatinum(u8 challengeMode)
|
||||
{
|
||||
switch (param0) {
|
||||
case 3:
|
||||
case 6:
|
||||
switch (challengeMode) {
|
||||
case BATTLE_TOWER_MODE_LINK_MULTI:
|
||||
case BATTLE_TOWER_MODE_6:
|
||||
TrainerInfo *v0 = CommInfo_TrainerInfo(0);
|
||||
|
||||
if (v0 == NULL) {
|
||||
|
|
@ -1034,7 +1035,7 @@ static int ov104_0223A7AC(u8 param0)
|
|||
u8 v2 = TrainerInfo_GameCode(v0);
|
||||
u8 v3 = TrainerInfo_GameCode(v1);
|
||||
|
||||
if ((v2 == 0) || (v3 == 0)) {
|
||||
if (v2 == 0 || v3 == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ BOOL ov104_0223A918(const u16 param0[], const u16 param1[], int param2, int para
|
|||
v0 = v7->unk_06;
|
||||
}
|
||||
|
||||
ov104_0222DCF4(&v4[v1], v3, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDPM);
|
||||
BattleTower_GetMonDataFromSetIDAndNarcID(&v4[v1], v3, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDPM);
|
||||
|
||||
for (v5 = 0; v5 < v1; v5++) {
|
||||
if ((v4[v5].species == v4[v1].species) || (v4[v5].item == v4[v1].item)) {
|
||||
|
|
@ -360,7 +360,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
|
|||
Heap_Free(v5);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v4);
|
||||
|
||||
Heap_Free(ov104_0222DD04(&v6, param0->unk_18[param0->unk_06], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
Heap_Free(BattleTower_GetTrainerData(&v6, param0->unk_18[param0->unk_06], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
|
||||
ov104_0222E284(v4, &v6, v3, 1, 11);
|
||||
Party_InitWithCapacity(v4->parties[1], ov104_0223AA74(param0->unk_04, 0));
|
||||
|
|
@ -385,7 +385,7 @@ FieldBattleDTO *ov104_0223ABA0(UnkStruct_ov104_0223ADA0 *param0, UnkStruct_ov104
|
|||
|
||||
TrainerInfo_Copy(CommInfo_TrainerInfo(1 - CommSys_CurNetId()), v4->trainerInfo[2]);
|
||||
|
||||
Heap_Free(ov104_0222DD04(&v6, param0->unk_18[param0->unk_06 + 7], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
Heap_Free(BattleTower_GetTrainerData(&v6, param0->unk_18[param0->unk_06 + 7], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
|
||||
ov104_0222E284(v4, &v6, v3, 3, 11);
|
||||
Party_InitWithCapacity(v4->parties[3], ov104_0223AA74(param0->unk_04, 0));
|
||||
|
|
|
|||
|
|
@ -1592,7 +1592,7 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104
|
|||
Heap_Free(v9);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v8);
|
||||
|
||||
Heap_Free(ov104_0222DD04(&v10, param0->unk_18[v6], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
Heap_Free(BattleTower_GetTrainerData(&v10, param0->unk_18[v6], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
ov104_0222E284(v8, &v10, v5, 1, 11);
|
||||
Party_InitWithCapacity(v8->parties[1], v5);
|
||||
|
||||
|
|
@ -1634,7 +1634,7 @@ FieldBattleDTO *ov104_0223B250(UnkStruct_ov104_0223B5C0 *param0, UnkStruct_ov104
|
|||
|
||||
TrainerInfo_Copy(CommInfo_TrainerInfo(1 - CommSys_CurNetId()), v8->trainerInfo[2]);
|
||||
|
||||
Heap_Free(ov104_0222DD04(&v10, param0->unk_18[v6 + 1], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
Heap_Free(BattleTower_GetTrainerData(&v10, param0->unk_18[v6 + 1], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
|
||||
ov104_0222E284(v8, &v10, v5, 3, 11);
|
||||
Party_InitWithCapacity(v8->parties[3], v5);
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
|
|||
Heap_Free(v6);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v5);
|
||||
|
||||
Heap_Free(ov104_0222DD04(&v7, param0->unk_30[param0->unk_11], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
Heap_Free(BattleTower_GetTrainerData(&v7, param0->unk_30[param0->unk_11], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
ov104_0222E284(v5, &v7, v3, 1, 11);
|
||||
Party_InitWithCapacity(v5->parties[1], ov104_0223B7DC(param0->unk_10, 0));
|
||||
|
||||
|
|
@ -212,7 +212,7 @@ FieldBattleDTO *ov104_0223B810(UnkStruct_ov104_0223BA10 *param0, UnkStruct_ov104
|
|||
|
||||
TrainerInfo_Copy(CommInfo_TrainerInfo(1 - CommSys_CurNetId()), v5->trainerInfo[2]);
|
||||
|
||||
Heap_Free(ov104_0222DD04(&v7, param0->unk_30[param0->unk_11 + 7], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
Heap_Free(BattleTower_GetTrainerData(&v7, param0->unk_30[param0->unk_11 + 7], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR));
|
||||
|
||||
ov104_0222E284(v5, &v7, v3, 3, 11);
|
||||
Party_InitWithCapacity(v5->parties[3], ov104_0223B7DC(param0->unk_10, 0));
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
|
|||
Heap_Free(v6);
|
||||
FieldBattleDTO_CopyPlayerInfoToTrainerData(v5);
|
||||
|
||||
BattleFrontierTrainerData *v8 = ov104_0222DD04(&v7, param0->unk_78[param0->unk_11], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR);
|
||||
BattleFrontierTrainerData *v8 = BattleTower_GetTrainerData(&v7, param0->unk_78[param0->unk_11], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR);
|
||||
|
||||
Heap_Free(v8);
|
||||
ov104_0222E284(v5, &v7, v3, 1, 11);
|
||||
|
|
@ -228,7 +228,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
|
|||
|
||||
TrainerInfo_Copy(CommInfo_TrainerInfo(1 - CommSys_CurNetId()), v5->trainerInfo[2]);
|
||||
|
||||
v8 = ov104_0222DD04(&v7, param0->unk_78[param0->unk_11 + 7], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR);
|
||||
v8 = BattleTower_GetTrainerData(&v7, param0->unk_78[param0->unk_11 + 7], HEAP_ID_FIELD2, NARC_INDEX_BATTLE__B_PL_TOWER__PL_BTDTR);
|
||||
Heap_Free(v8);
|
||||
|
||||
ov104_0222E284(v5, &v7, v3, 3, 11);
|
||||
|
|
|
|||
10
src/scrcmd.c
10
src/scrcmd.c
|
|
@ -290,7 +290,7 @@ static BOOL ScrCmd_MessageFromBankInstant(ScriptContext *ctx);
|
|||
static BOOL ScrCmd_MessageFromBank(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_SentenceInstant(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_Sentence(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_1FE(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_PrintBattleTowerIntroMessage(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_MessageSeenBanlistSpecies(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_MessageUnown(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_Message(ScriptContext *ctx);
|
||||
|
|
@ -1279,7 +1279,7 @@ const ScrCmdFunc Unk_020EAC58[] = {
|
|||
ScrCmd_MessageFromBank,
|
||||
ScrCmd_SentenceInstant,
|
||||
ScrCmd_Sentence,
|
||||
ScrCmd_1FE,
|
||||
ScrCmd_PrintBattleTowerIntroMessage,
|
||||
ScrCmd_MessageSeenBanlistSpecies,
|
||||
ScrCmd_GetPreviousMapID,
|
||||
ScrCmd_GetCurrentMapID,
|
||||
|
|
@ -2090,9 +2090,9 @@ static BOOL ScrCmd_Sentence(ScriptContext *ctx)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL ScrCmd_1FE(ScriptContext *ctx)
|
||||
static BOOL ScrCmd_PrintBattleTowerIntroMessage(ScriptContext *ctx)
|
||||
{
|
||||
u16 v3 = ScriptContext_ReadByte(ctx);
|
||||
u16 opponentID = ScriptContext_ReadByte(ctx);
|
||||
|
||||
BattleTower *battleTower = ctx->fieldSystem->battleTower;
|
||||
|
||||
|
|
@ -2100,7 +2100,7 @@ static BOOL ScrCmd_1FE(ScriptContext *ctx)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
u16 *v0 = battleTower->unk_78[v3].trDataDTO.unk_18;
|
||||
u16 *v0 = battleTower->opponentsDataDTO[opponentID].trDataDTO.unk_18;
|
||||
|
||||
if (v0[0] == 0xFFFF) {
|
||||
MessageLoader *msgLoader = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_UNK_0613, HEAP_ID_FIELD3);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "constants/battle_tower.h"
|
||||
|
||||
#include "struct_defs/battle_frontier.h"
|
||||
#include "struct_defs/sentence.h"
|
||||
#include "struct_defs/struct_0202D060.h"
|
||||
|
|
@ -75,7 +77,7 @@ u32 sub_0202D0BC(UnkStruct_0202D060 *param0, int param1, void *param2)
|
|||
case 7:
|
||||
return param0->unk_00_0;
|
||||
case 8:
|
||||
MI_CpuCopy8(param0->unk_0C, param2, 2 * 14);
|
||||
MI_CpuCopy8(param0->unk_0C, param2, BT_OPPONENTS_COUNT * 2 * sizeof(u16));
|
||||
return 0;
|
||||
case 9:
|
||||
return param0->unk_00_5;
|
||||
|
|
|
|||
|
|
@ -75,8 +75,8 @@ BOOL ScrCmd_CallBattleTowerFunction(ScriptContext *ctx)
|
|||
*destVar = sub_02049EC4(functionArgument, ctx->fieldSystem->saveData, 1);
|
||||
}
|
||||
break;
|
||||
case BATTLE_TOWER_FUNCTION_UNK_02:
|
||||
sub_02049F8C();
|
||||
case BATTLE_TOWER_FUNCTION_RESET_SYSTEM:
|
||||
BattleTower_ResetSystem();
|
||||
break;
|
||||
case BATTLE_TOWER_FUNCTION_UNK_03:
|
||||
sub_02049F98(sub_0202D740(ctx->fieldSystem->saveData));
|
||||
|
|
@ -125,14 +125,14 @@ BOOL ScrCmd_CallBattleTowerFunction(ScriptContext *ctx)
|
|||
case BATTLE_TOWER_FUNCTION_CHECK_DUPLICATE_SPECIES_AND_HELD_ITEMS:
|
||||
*destVar = BattleTower_CheckDuplicateSpeciesAndHeldItems(battleTower, ctx->fieldSystem->saveData);
|
||||
break;
|
||||
case BATTLE_TOWER_FUNCTION_UNK_35:
|
||||
*destVar = sub_0204A57C(battleTower);
|
||||
case BATTLE_TOWER_FUNCTION_HAS_DEFEATED_SEVEN_TRAINERS:
|
||||
*destVar = BattleTower_HasDefeatedSevenTrainers(battleTower);
|
||||
break;
|
||||
case BATTLE_TOWER_FUNCTION_UNK_37:
|
||||
sub_0204A660(battleTower, ctx->fieldSystem->saveData);
|
||||
case BATTLE_TOWER_FUNCTION_UPDATE_GAME_RECORDS:
|
||||
BattleTower_UpdateGameRecords(battleTower, ctx->fieldSystem->saveData);
|
||||
break;
|
||||
case BATTLE_TOWER_FUNCTION_UNK_38:
|
||||
sub_0204A7A4(battleTower, ctx->fieldSystem->saveData, ctx->fieldSystem->journalEntry);
|
||||
case BATTLE_TOWER_FUNCTION_UPDATE_GAME_RECORDS_AND_JOURNAL:
|
||||
BattleTower_UpdateGameRecordsAndJournal(battleTower, ctx->fieldSystem->saveData, ctx->fieldSystem->journalEntry);
|
||||
break;
|
||||
case BATTLE_TOWER_FUNCTION_UNK_39:
|
||||
sub_0204A8C8(battleTower);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "constants/battle_tower.h"
|
||||
#include "generated/battle_tower_modes.h"
|
||||
#include "generated/frontier_trainers.h"
|
||||
#include "generated/game_records.h"
|
||||
|
|
@ -26,6 +27,7 @@
|
|||
#include "inlines.h"
|
||||
#include "journal.h"
|
||||
#include "location.h"
|
||||
#include "main.h"
|
||||
#include "math_util.h"
|
||||
#include "party.h"
|
||||
#include "player_avatar.h"
|
||||
|
|
@ -208,9 +210,9 @@ BOOL sub_02049EC4(u16 param0, SaveData *saveData, u8 param2)
|
|||
return sub_02049DB4(v8, param0, v2, (v2 - param0) + 1);
|
||||
}
|
||||
|
||||
void sub_02049F8C(void)
|
||||
void BattleTower_ResetSystem(void)
|
||||
{
|
||||
OS_ResetSystem(0);
|
||||
OS_ResetSystem(RESET_CLEAN);
|
||||
}
|
||||
|
||||
void sub_02049F98(UnkStruct_0202D060 *param0)
|
||||
|
|
@ -334,15 +336,15 @@ BattleTower *BattleTower_Init(SaveData *saveData, u16 param1, u16 challengeMode)
|
|||
if (param1 == 0) {
|
||||
battleTower->challengeMode = challengeMode;
|
||||
battleTower->partySize = (u8)BattleTower_GetPartySizeForChallengeMode(battleTower->challengeMode);
|
||||
battleTower->unk_0C = 1;
|
||||
battleTower->nextOpponentNum = 1;
|
||||
battleTower->unk_0D = 0;
|
||||
|
||||
for (v1 = 0; v1 < 4; v1++) {
|
||||
battleTower->unk_2A[v1] = 0xFF;
|
||||
}
|
||||
|
||||
for (v1 = 0; v1 < 14; v1++) {
|
||||
battleTower->unk_3E[v1] = 0xFFFF;
|
||||
for (v1 = 0; v1 < BT_OPPONENTS_COUNT * 2; v1++) {
|
||||
battleTower->trainerIDs[v1] = 0xFFFF;
|
||||
}
|
||||
|
||||
sub_0202D060(battleTower->unk_70);
|
||||
|
|
@ -350,12 +352,12 @@ BattleTower *BattleTower_Init(SaveData *saveData, u16 param1, u16 challengeMode)
|
|||
sub_0202D140(battleTower->unk_70, 0, &v0);
|
||||
} else {
|
||||
battleTower->challengeMode = (u8)sub_0202D0BC(battleTower->unk_70, 0, NULL);
|
||||
battleTower->unk_0C = (u8)sub_0202D0BC(battleTower->unk_70, 1, NULL);
|
||||
battleTower->unk_0D = battleTower->unk_0C - 1;
|
||||
battleTower->nextOpponentNum = (u8)sub_0202D0BC(battleTower->unk_70, 1, NULL);
|
||||
battleTower->unk_0D = battleTower->nextOpponentNum - 1;
|
||||
battleTower->partySize = (u8)BattleTower_GetPartySizeForChallengeMode(battleTower->challengeMode);
|
||||
|
||||
sub_0202D0BC(battleTower->unk_70, 5, battleTower->unk_2A);
|
||||
sub_0202D0BC(battleTower->unk_70, 8, battleTower->unk_3E);
|
||||
sub_0202D0BC(battleTower->unk_70, 8, battleTower->trainerIDs);
|
||||
|
||||
battleTower->unk_08 = sub_0202D0BC(battleTower->unk_70, 10, NULL);
|
||||
|
||||
|
|
@ -388,14 +390,14 @@ BattleTower *BattleTower_Init(SaveData *saveData, u16 param1, u16 challengeMode)
|
|||
frontier, 1 + battleTower->challengeMode * 2, 0xff);
|
||||
}
|
||||
|
||||
battleTower->unk_1C = sub_0202D3B4(battleTower->unk_74, battleTower->challengeMode, 0);
|
||||
battleTower->roomNum = sub_0202D3B4(battleTower->unk_74, battleTower->challengeMode, 0);
|
||||
}
|
||||
|
||||
battleTower->unk_20 = GameRecords_GetRecordValue(v5, RECORD_UNK_029);
|
||||
}
|
||||
|
||||
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
|
||||
battleTower->unk_1C = sub_0202D3FC(battleTower->unk_74, 6, battleTower->unk_1A / 7);
|
||||
battleTower->roomNum = sub_0202D3FC(battleTower->unk_74, BATTLE_TOWER_MODE_6, battleTower->unk_1A / 7);
|
||||
}
|
||||
|
||||
return battleTower;
|
||||
|
|
@ -476,66 +478,66 @@ int BattleTower_CheckDuplicateSpeciesAndHeldItems(BattleTower *battleTower, Save
|
|||
return 0;
|
||||
}
|
||||
|
||||
static BOOL sub_0204A4A0(u16 *param0, u16 param1, u16 param2)
|
||||
static BOOL BattleTower_IsTrainerAlreadyUsed(u16 *trainerIDs, u16 trainerID, u16 currOpponentNum)
|
||||
{
|
||||
u16 v0;
|
||||
u16 opponentNum;
|
||||
|
||||
for (v0 = 0; v0 < param2; v0++) {
|
||||
if (param0[v0] == param1) {
|
||||
return 1;
|
||||
for (opponentNum = 0; opponentNum < currOpponentNum; opponentNum++) {
|
||||
if (trainerIDs[opponentNum] == trainerID) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_0204A4C8(BattleTower *battleTower, SaveData *saveData)
|
||||
{
|
||||
int v0;
|
||||
u16 v1, v2;
|
||||
int opponentNum;
|
||||
u16 trainerID, roomNum;
|
||||
|
||||
if (battleTower->challengeMode == BATTLE_TOWER_MODE_MULTI || battleTower->challengeMode == BATTLE_TOWER_MODE_6 || battleTower->challengeMode == BATTLE_TOWER_MODE_LINK_MULTI) {
|
||||
if ((battleTower->challengeMode == BATTLE_TOWER_MODE_LINK_MULTI && battleTower->unk_14 > battleTower->unk_1C) || (battleTower->challengeMode == BATTLE_TOWER_MODE_6 && battleTower->unk_14 > battleTower->unk_1C)) {
|
||||
v2 = battleTower->unk_14;
|
||||
if ((battleTower->challengeMode == BATTLE_TOWER_MODE_LINK_MULTI && battleTower->unk_14 > battleTower->roomNum) || (battleTower->challengeMode == BATTLE_TOWER_MODE_6 && battleTower->unk_14 > battleTower->roomNum)) {
|
||||
roomNum = battleTower->unk_14;
|
||||
} else {
|
||||
v2 = battleTower->unk_1C;
|
||||
roomNum = battleTower->roomNum;
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < 14; v0++) {
|
||||
for (opponentNum = 0; opponentNum < BT_OPPONENTS_COUNT * 2; opponentNum++) {
|
||||
do {
|
||||
v1 = sub_0204B0F0(battleTower, v2, v0 / 2, battleTower->challengeMode);
|
||||
} while (sub_0204A4A0(battleTower->unk_3E, v1, v0));
|
||||
trainerID = BattleTower_GetTrainerIDForRoomAndOpponentNum(battleTower, roomNum, opponentNum / 2, battleTower->challengeMode);
|
||||
} while (BattleTower_IsTrainerAlreadyUsed(battleTower->trainerIDs, trainerID, opponentNum));
|
||||
|
||||
battleTower->unk_3E[v0] = v1;
|
||||
battleTower->trainerIDs[opponentNum] = trainerID;
|
||||
}
|
||||
} else {
|
||||
for (v0 = 0; v0 < (14 / 2); v0++) {
|
||||
for (opponentNum = 0; opponentNum < BT_OPPONENTS_COUNT; opponentNum++) {
|
||||
do {
|
||||
v1 = sub_0204B0F0(battleTower, battleTower->unk_1C, v0, battleTower->challengeMode);
|
||||
} while (sub_0204A4A0(battleTower->unk_3E, v1, v0));
|
||||
trainerID = BattleTower_GetTrainerIDForRoomAndOpponentNum(battleTower, battleTower->roomNum, opponentNum, battleTower->challengeMode);
|
||||
} while (BattleTower_IsTrainerAlreadyUsed(battleTower->trainerIDs, trainerID, opponentNum));
|
||||
|
||||
battleTower->unk_3E[v0] = v1;
|
||||
battleTower->trainerIDs[opponentNum] = trainerID;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u16 sub_0204A578(BattleTower *battleTower)
|
||||
u16 BattleTower_GetNextOpponentNum(BattleTower *battleTower)
|
||||
{
|
||||
return battleTower->unk_0C;
|
||||
return battleTower->nextOpponentNum;
|
||||
}
|
||||
|
||||
BOOL sub_0204A57C(BattleTower *battleTower)
|
||||
BOOL BattleTower_HasDefeatedSevenTrainers(BattleTower *battleTower)
|
||||
{
|
||||
if (battleTower->unk_10_0) {
|
||||
return 1;
|
||||
if (battleTower->defeatedSevenTrainers) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (battleTower->unk_0C > 7) {
|
||||
battleTower->unk_10_0 = 1;
|
||||
return 1;
|
||||
if (battleTower->nextOpponentNum > 7) {
|
||||
battleTower->defeatedSevenTrainers = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_0204A5A0(BattleTower *battleTower, SaveData *saveData, u16 param2)
|
||||
|
|
@ -574,7 +576,7 @@ static void sub_0204A5EC(BattleTower *battleTower, SaveData *saveData, u8 param2
|
|||
v0 = battleTower->challengeMode;
|
||||
sub_0202D140(battleTower->unk_70, 0, &v0);
|
||||
|
||||
v0 = battleTower->unk_0C;
|
||||
v0 = battleTower->nextOpponentNum;
|
||||
sub_0202D140(battleTower->unk_70, 1, &v0);
|
||||
sub_0202D334(battleTower->unk_74, battleTower->unk_70);
|
||||
break;
|
||||
|
|
@ -583,7 +585,7 @@ static void sub_0204A5EC(BattleTower *battleTower, SaveData *saveData, u8 param2
|
|||
}
|
||||
}
|
||||
|
||||
void sub_0204A660(BattleTower *battleTower, SaveData *saveData)
|
||||
void BattleTower_UpdateGameRecords(BattleTower *battleTower, SaveData *saveData)
|
||||
{
|
||||
u32 v0 = 0;
|
||||
int v1;
|
||||
|
|
@ -642,7 +644,7 @@ void sub_0204A660(BattleTower *battleTower, SaveData *saveData)
|
|||
sub_0204A5EC(battleTower, saveData, 0, v0);
|
||||
}
|
||||
|
||||
void sub_0204A7A4(BattleTower *battleTower, SaveData *saveData, JournalEntry *journalEntry)
|
||||
void BattleTower_UpdateGameRecordsAndJournal(BattleTower *battleTower, SaveData *saveData, JournalEntry *journalEntry)
|
||||
{
|
||||
u32 v0 = 0;
|
||||
int v1;
|
||||
|
|
@ -706,12 +708,12 @@ void sub_0204A8C8(BattleTower *battleTower)
|
|||
v1[0] = battleTower->challengeMode;
|
||||
sub_0202D140(battleTower->unk_70, 0, v1);
|
||||
|
||||
v1[0] = battleTower->unk_0C;
|
||||
v1[0] = battleTower->nextOpponentNum;
|
||||
sub_0202D140(battleTower->unk_70, 1, v1);
|
||||
|
||||
sub_0202D140(battleTower->unk_70, 5, battleTower->unk_2A);
|
||||
sub_0202D1E8(battleTower->unk_70, battleTower->unk_28, battleTower->unk_24, battleTower->unk_26);
|
||||
sub_0202D140(battleTower->unk_70, 8, battleTower->unk_3E);
|
||||
sub_0202D140(battleTower->unk_70, 8, battleTower->trainerIDs);
|
||||
sub_0202D140(battleTower->unk_70, 10, &(battleTower->unk_08));
|
||||
sub_0202D21C(battleTower->unk_70, 1);
|
||||
|
||||
|
|
@ -735,7 +737,7 @@ void sub_0204A97C(BattleTower *battleTower)
|
|||
|
||||
u16 BattleTower_GetObjectIDFromOpponentID(BattleTower *battleTower, u16 opponentID)
|
||||
{
|
||||
return BattleFrontier_GetObjectIDFromTrainerClass(battleTower->unk_78[opponentID].trDataDTO.trainerType);
|
||||
return BattleFrontier_GetObjectIDFromTrainerClass(battleTower->opponentsDataDTO[opponentID].trDataDTO.trainerType);
|
||||
}
|
||||
|
||||
u16 BattleTower_GetChallengeMode(BattleTower *battleTower)
|
||||
|
|
@ -1055,7 +1057,7 @@ u8 BattleTower_GetIVsFromTrainerID(u16 battleTowerID)
|
|||
return ivs;
|
||||
}
|
||||
|
||||
u16 sub_0204AEC0(BattleTower *battleTower)
|
||||
u16 BattleTower_GetRandom(BattleTower *battleTower)
|
||||
{
|
||||
if (battleTower->challengeMode == BATTLE_TOWER_MODE_6) {
|
||||
return LCRNG_Next();
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
#include "constants/battle_tower.h"
|
||||
#include "generated/battle_tower_modes.h"
|
||||
#include "generated/frontier_trainers.h"
|
||||
#include "generated/object_events.h"
|
||||
#include "generated/species_data_params.h"
|
||||
#include "generated/trainer_classes.h"
|
||||
|
|
@ -182,7 +183,7 @@ u16 sub_0204B020(FieldSystem *fieldSystem, const u16 *param1)
|
|||
return 0;
|
||||
}
|
||||
|
||||
MI_CpuCopy8(param1, battleTower->unk_3E, 14 * 2);
|
||||
MI_CpuCopy8(param1, battleTower->trainerIDs, BT_OPPONENTS_COUNT * 2 * sizeof(u16));
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -217,7 +218,7 @@ void sub_0204B060(BattleTower *battleTower, SaveData *saveData)
|
|||
|
||||
void sub_0204B0BC(BattleTower *battleTower)
|
||||
{
|
||||
MI_CpuCopy8(battleTower->unk_3E, battleTower->unk_83E, 14 * 2);
|
||||
MI_CpuCopy8(battleTower->trainerIDs, battleTower->unk_83E, BT_OPPONENTS_COUNT * 2 * sizeof(u16));
|
||||
}
|
||||
|
||||
void sub_0204B0D4(BattleTower *battleTower, u16 param1)
|
||||
|
|
@ -226,56 +227,56 @@ void sub_0204B0D4(BattleTower *battleTower, u16 param1)
|
|||
battleTower->unk_83E[0] = param1;
|
||||
}
|
||||
|
||||
static const u16 Unk_020EBD58[][2] = {
|
||||
{ 0x0, 0x63 },
|
||||
{ 0x50, 0x77 },
|
||||
{ 0x64, 0x8B },
|
||||
{ 0x78, 0x9F },
|
||||
{ 0x8C, 0xB3 },
|
||||
{ 0xA0, 0xC7 },
|
||||
{ 0xB4, 0xDB },
|
||||
{ 0xC8, 0x12B }
|
||||
static const u16 sBattleTowerTrainerRangesPerRoom[][2] = {
|
||||
{ FRONTIER_TRAINER_YOUNGSTER_JIM, FRONTIER_TRAINER_REPORTER_GINGHAM },
|
||||
{ FRONTIER_TRAINER_HIKER_RAIDEN, FRONTIER_TRAINER_SOCIALITE_CARMEN },
|
||||
{ FRONTIER_TRAINER_CYCLIST_GASPAR, FRONTIER_TRAINER_CLOWN_PRESCOT },
|
||||
{ FRONTIER_TRAINER_PSYCHIC_ALPHA, FRONTIER_TRAINER_ACE_TRAINER_DANIELA },
|
||||
{ FRONTIER_TRAINER_ACE_TRAINER_YARDLEY, FRONTIER_TRAINER_IDOL_UTAH },
|
||||
{ FRONTIER_TRAINER_YOUNGSTER_KADEN, FRONTIER_TRAINER_PI_SERGEI },
|
||||
{ FRONTIER_TRAINER_JOGGER_COLT, FRONTIER_TRAINER_BREEDER_ANTONIA },
|
||||
{ FRONTIER_TRAINER_CAMPER_FREDDY, FRONTIER_TRAINER_IDOL_NISSA }
|
||||
};
|
||||
|
||||
static const u16 Unk_020EBD78[][2] = {
|
||||
{ 0x64, 0x77 },
|
||||
{ 0x78, 0x8B },
|
||||
{ 0x8C, 0x9F },
|
||||
{ 0xA0, 0xB3 },
|
||||
{ 0xB4, 0xC7 },
|
||||
{ 0xC8, 0xDB },
|
||||
{ 0xDC, 0xEF },
|
||||
{ 0xC8, 0x12B }
|
||||
static const u16 sBattleTowerBossTrainerRangesPerRoom[][2] = {
|
||||
{ FRONTIER_TRAINER_CYCLIST_GASPAR, FRONTIER_TRAINER_SOCIALITE_CARMEN },
|
||||
{ FRONTIER_TRAINER_PSYCHIC_ALPHA, FRONTIER_TRAINER_CLOWN_PRESCOT },
|
||||
{ FRONTIER_TRAINER_ACE_TRAINER_YARDLEY, FRONTIER_TRAINER_ACE_TRAINER_DANIELA },
|
||||
{ FRONTIER_TRAINER_YOUNGSTER_KADEN, FRONTIER_TRAINER_IDOL_UTAH },
|
||||
{ FRONTIER_TRAINER_JOGGER_COLT, FRONTIER_TRAINER_PI_SERGEI },
|
||||
{ FRONTIER_TRAINER_CAMPER_FREDDY, FRONTIER_TRAINER_BREEDER_ANTONIA },
|
||||
{ FRONTIER_TRAINER_ACE_TRAINER_SAWYER, FRONTIER_TRAINER_VETERAN_ALFRED },
|
||||
{ FRONTIER_TRAINER_CAMPER_FREDDY, FRONTIER_TRAINER_IDOL_NISSA }
|
||||
};
|
||||
|
||||
u16 sub_0204B0F0(BattleTower *battleTower, u8 param1, u8 param2, int challengeMode)
|
||||
u16 BattleTower_GetTrainerIDForRoomAndOpponentNum(BattleTower *battleTower, u8 roomNum, u8 opponentNum, int challengeMode)
|
||||
{
|
||||
u16 v0;
|
||||
u16 trainerID;
|
||||
|
||||
if (challengeMode == BATTLE_TOWER_MODE_SINGLE) {
|
||||
if (param1 == 2 && param2 == 6) {
|
||||
return 305;
|
||||
if (roomNum == 2 && opponentNum == BT_OPPONENTS_COUNT - 1) { // 21st battle
|
||||
return FRONTIER_TRAINER_TOWER_TYCOON_PALMER_SILVER;
|
||||
}
|
||||
|
||||
if (param1 == 6 && param2 == 6) {
|
||||
return 306;
|
||||
if (roomNum == 6 && opponentNum == BT_OPPONENTS_COUNT - 1) { // 49th battle
|
||||
return FRONTIER_TRAINER_TOWER_TYCOON_PALMER_GOLD;
|
||||
}
|
||||
}
|
||||
|
||||
if (param1 < 7) {
|
||||
if (param2 == (7 - 1)) {
|
||||
v0 = (Unk_020EBD78[param1][1] - Unk_020EBD78[param1][0]) + 1;
|
||||
v0 = Unk_020EBD78[param1][0] + (sub_0204AEC0(battleTower) % v0);
|
||||
if (roomNum < 7) {
|
||||
if (opponentNum == BT_OPPONENTS_COUNT - 1) {
|
||||
trainerID = sBattleTowerBossTrainerRangesPerRoom[roomNum][1] - sBattleTowerBossTrainerRangesPerRoom[roomNum][0] + 1;
|
||||
trainerID = sBattleTowerBossTrainerRangesPerRoom[roomNum][0] + (BattleTower_GetRandom(battleTower) % trainerID);
|
||||
} else {
|
||||
v0 = (Unk_020EBD58[param1][1] - Unk_020EBD58[param1][0]) + 1;
|
||||
v0 = Unk_020EBD58[param1][0] + (sub_0204AEC0(battleTower) % v0);
|
||||
trainerID = sBattleTowerTrainerRangesPerRoom[roomNum][1] - sBattleTowerTrainerRangesPerRoom[roomNum][0] + 1;
|
||||
trainerID = sBattleTowerTrainerRangesPerRoom[roomNum][0] + (BattleTower_GetRandom(battleTower) % trainerID);
|
||||
}
|
||||
} else {
|
||||
v0 = (Unk_020EBD58[7][1] - Unk_020EBD58[7][0]) + 1;
|
||||
v0 = Unk_020EBD58[7][0] + (sub_0204AEC0(battleTower) % v0);
|
||||
trainerID = sBattleTowerTrainerRangesPerRoom[7][1] - sBattleTowerTrainerRangesPerRoom[7][0] + 1;
|
||||
trainerID = sBattleTowerTrainerRangesPerRoom[7][0] + (BattleTower_GetRandom(battleTower) % trainerID);
|
||||
}
|
||||
|
||||
return v0;
|
||||
return trainerID;
|
||||
}
|
||||
|
||||
static BattleFrontierTrainerData *sub_0204B184(FrontierDataDTO *param0, u16 param1, int heapID)
|
||||
|
|
@ -339,7 +340,7 @@ static u32 sub_0204B1E8(BattleTower *battleTower, FrontierPokemonDataDTO *param1
|
|||
|
||||
if (param4 == 0) {
|
||||
do {
|
||||
v2 = (sub_0204AEC0(battleTower) | sub_0204AEC0(battleTower) << 16);
|
||||
v2 = (BattleTower_GetRandom(battleTower) | BattleTower_GetRandom(battleTower) << 16);
|
||||
} while ((v4.nature != Pokemon_GetNatureOf(v2)) || (Pokemon_IsPersonalityShiny(param3, v2) == 1));
|
||||
|
||||
param1->personality = v2;
|
||||
|
|
@ -441,7 +442,7 @@ static BOOL sub_0204B470(BattleTower *battleTower, BattleFrontierTrainerData *tr
|
|||
v9 = 0;
|
||||
|
||||
while (v8 != partySize) {
|
||||
v3 = sub_0204AEC0(battleTower) % trainerData->numSets;
|
||||
v3 = BattleTower_GetRandom(battleTower) % trainerData->numSets;
|
||||
v5 = trainerData->setIDs[v3];
|
||||
|
||||
sub_0204B640(&v12, v5);
|
||||
|
|
@ -503,7 +504,7 @@ static BOOL sub_0204B470(BattleTower *battleTower, BattleFrontierTrainerData *tr
|
|||
}
|
||||
|
||||
ivs = BattleTower_GetIVsFromTrainerID(partnerBattleTowerID);
|
||||
v4 = (sub_0204AEC0(battleTower) | (sub_0204AEC0(battleTower) << 16));
|
||||
v4 = (BattleTower_GetRandom(battleTower) | (BattleTower_GetRandom(battleTower) << 16));
|
||||
|
||||
if (v9 >= 50) {
|
||||
v10 = TRUE;
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ BOOL sub_0209BB08(BattleTower *battleTower)
|
|||
|
||||
v1 = (14 * 2);
|
||||
|
||||
MI_CpuCopy8(battleTower->unk_3E, battleTower->unk_83E, v1);
|
||||
MI_CpuCopy8(battleTower->trainerIDs, battleTower->unk_83E, v1);
|
||||
|
||||
if (CommSys_SendData(63, battleTower->unk_83E, v1) == 1) {
|
||||
v0 = 1;
|
||||
|
|
@ -167,7 +167,7 @@ static void sub_0209BB34(int param0, int param1, void *param2, void *param3)
|
|||
return;
|
||||
}
|
||||
|
||||
MI_CpuCopy8(v2, battleTower->unk_3E, 14 * 2);
|
||||
MI_CpuCopy8(v2, battleTower->trainerIDs, BT_OPPONENTS_COUNT * 2 * sizeof(u16));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue