diff options
-rw-r--r-- | asm/macros/battle_tent.inc | 164 | ||||
-rw-r--r-- | data/event_scripts.s | 1 | ||||
-rw-r--r-- | data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc | 10 | ||||
-rw-r--r-- | data/maps/FallarborTown_BattleTentLobby/scripts.inc | 24 | ||||
-rw-r--r-- | data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc | 3 | ||||
-rw-r--r-- | data/maps/SlateportCity_BattleTentCorridor/scripts.inc | 19 | ||||
-rw-r--r-- | data/maps/SlateportCity_BattleTentLobby/scripts.inc | 25 | ||||
-rw-r--r-- | data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc | 7 | ||||
-rw-r--r-- | data/maps/VerdanturfTown_BattleTentLobby/scripts.inc | 24 | ||||
-rw-r--r-- | include/constants/battle_tent.h | 32 | ||||
-rw-r--r-- | src/battle_tent.c | 75 |
11 files changed, 272 insertions, 112 deletions
diff --git a/asm/macros/battle_tent.inc b/asm/macros/battle_tent.inc index 9a304475b..c6f92ee15 100644 --- a/asm/macros/battle_tent.inc +++ b/asm/macros/battle_tent.inc @@ -1 +1,163 @@ -@ To be populated with macros for CallVerdanturfTentFunction, CallFallarborTentFunction, and CallSlateportTentFunction +@ TODO: Add explanatory comments + +@ Verdanturf Tent + + @ + .macro verdanturftent_init + setvar VAR_0x8004, VERDANTURF_TENT_FUNC_INIT + special CallVerdanturfTentFunction + .endm + + @ + .macro verdanturftent_getprize + setvar VAR_0x8004, VERDANTURF_TENT_FUNC_GET_PRIZE + special CallVerdanturfTentFunction + .endm + + @ Unused. + .macro verdanturftent_setprize + setvar VAR_0x8004, VERDANTURF_TENT_FUNC_SET_PRIZE + special CallVerdanturfTentFunction + .endm + + @ Unused. + .macro verdanturftent_setopponentgfx + setvar VAR_0x8004, VERDANTURF_TENT_FUNC_SET_OPPONENT_GFX + special CallVerdanturfTentFunction + .endm + + @ Buffers the opponents intro speech to STR_VAR_4. Despite being a Verdanturf Tent function, it serves the same purpose for all 3 tents. + .macro battletent_getopponentintro + setvar VAR_0x8004, VERDANTURF_TENT_FUNC_GET_OPPONENT_INTRO + special CallVerdanturfTentFunction + .endm + + @ + .macro verdanturftent_save challengeStatus:req + setvar VAR_0x8004, VERDANTURF_TENT_FUNC_SAVE + setvar VAR_0x8005, \challengeStatus + special CallVerdanturfTentFunction + .endm + + @ + .macro verdanturftent_setrandomprize + setvar VAR_0x8004, VERDANTURF_TENT_FUNC_SET_RANDOM_PRIZE + special CallVerdanturfTentFunction + .endm + + @ + .macro verdanturftent_giveprize + setvar VAR_0x8004, VERDANTURF_TENT_FUNC_GIVE_PRIZE + special CallVerdanturfTentFunction + .endm + + +@ Fallarbor Tent + + @ + .macro fallarbortent_init + setvar VAR_0x8004, FALLARBOR_TENT_FUNC_INIT + special CallFallarborTentFunction + .endm + + @ + .macro fallarbortent_getprize + setvar VAR_0x8004, FALLARBOR_TENT_FUNC_GET_PRIZE + special CallFallarborTentFunction + .endm + + @ Unused. + .macro fallarbortent_setprize + setvar VAR_0x8004, FALLARBOR_TENT_FUNC_SET_PRIZE + special CallFallarborTentFunction + .endm + + @ + .macro fallarbortent_save challengeStatus:req + setvar VAR_0x8004, FALLARBOR_TENT_FUNC_SAVE + setvar VAR_0x8005, \challengeStatus + special CallFallarborTentFunction + .endm + + @ + .macro fallarbortent_setrandomprize + setvar VAR_0x8004, FALLARBOR_TENT_FUNC_SET_RANDOM_PRIZE + special CallFallarborTentFunction + .endm + + @ + .macro fallarbortent_giveprize + setvar VAR_0x8004, FALLARBOR_TENT_FUNC_GIVE_PRIZE + special CallFallarborTentFunction + .endm + + @ + .macro fallarbortent_getopponentname + setvar VAR_0x8004, FALLARBOR_TENT_FUNC_GET_OPPONENT_NAME + special CallFallarborTentFunction + .endm + + +@ Slateport Tent + + @ + .macro slateporttent_init + setvar VAR_0x8004, SLATEPORT_TENT_FUNC_INIT + special CallSlateportTentFunction + .endm + + @ + .macro slateporttent_getprize + setvar VAR_0x8004, SLATEPORT_TENT_FUNC_GET_PRIZE + special CallSlateportTentFunction + .endm + + @ Unused. + .macro slateporttent_setprize + setvar VAR_0x8004, SLATEPORT_TENT_FUNC_SET_PRIZE + special CallSlateportTentFunction + .endm + + @ + .macro slateporttent_save challengeStatus:req + setvar VAR_0x8004, SLATEPORT_TENT_FUNC_SAVE + setvar VAR_0x8005, \challengeStatus + special CallSlateportTentFunction + .endm + + @ + .macro slateporttent_setrandomprize + setvar VAR_0x8004, SLATEPORT_TENT_FUNC_SET_RANDOM_PRIZE + special CallSlateportTentFunction + .endm + + @ + .macro slateporttent_giveprize + setvar VAR_0x8004, SLATEPORT_TENT_FUNC_GIVE_PRIZE + special CallSlateportTentFunction + .endm + + @ + .macro slateporttent_rentmons + setvar VAR_0x8004, SLATEPORT_TENT_FUNC_SELECT_RENT_MONS + special CallSlateportTentFunction + .endm + + @ + .macro slateporttent_swapmons + setvar VAR_0x8004, SLATEPORT_TENT_FUNC_SWAP_RENT_MONS + special CallSlateportTentFunction + .endm + + @ + .macro slateporttent_generateopponentmons + setvar VAR_0x8004, SLATEPORT_TENT_FUNC_GENERATE_OPPONENT_MONS + special CallSlateportTentFunction + .endm + + @ + .macro slateporttent_generaterentalmons + setvar VAR_0x8004, SLATEPORT_TENT_FUNC_GENERATE_RENTAL_MONS + special CallSlateportTentFunction + .endm + diff --git a/data/event_scripts.s b/data/event_scripts.s index 651e4d832..36919fce0 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -9,6 +9,7 @@ #include "constants/battle_pike.h" #include "constants/battle_pyramid.h" #include "constants/battle_setup.h" +#include "constants/battle_tent.h" #include "constants/battle_tower.h" #include "constants/berry.h" #include "constants/cable_club.h" diff --git a/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc b/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc index e65b6bd77..ba8b3536f 100644 --- a/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc +++ b/data/maps/FallarborTown_BattleTentBattleRoom/scripts.inc @@ -49,8 +49,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_20090F:: @ 820090F waitse waitmovement 0 msgbox BattleFrontier_BattleArenaBattleRoom_Text_SetKOTourneyBegin, MSGBOX_DEFAULT - setvar VAR_0x8004, 4 - special CallVerdanturfTentFunction + battletent_getopponentintro msgbox gStringVar4, MSGBOX_DEFAULT waitmessage call BattleFrontier_BattleArenaBattleRoom_EventScript_DoArenaBattle @@ -60,8 +59,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_20090F:: @ 820090F playse SE_W173 waitse waitmovement 0 - setvar VAR_0x8004, 6 - special CallFallarborTentFunction + fallarbortent_getopponentname msgbox BattleFrontier_BattleArenaBattleRoom_Text_WinnerIsOpponent, MSGBOX_DEFAULT FallarborTown_BattleTentBattleRoom_EventScript_20097E:: @ 820097E @@ -160,9 +158,7 @@ FallarborTown_BattleTentBattleRoom_EventScript_200B4A:: @ 8200B4A FallarborTown_BattleTentBattleRoom_EventScript_200B51:: @ 8200B51 message BattleFrontier_BattleArenaBattleRoom_Text_SavingPleaseWait waitmessage - setvar VAR_0x8004, 3 - setvar VAR_0x8005, 2 - special CallFallarborTentFunction + fallarbortent_save CHALLENGE_STATUS_PAUSED playse SE_SAVE waitse fadescreen 1 diff --git a/data/maps/FallarborTown_BattleTentLobby/scripts.inc b/data/maps/FallarborTown_BattleTentLobby/scripts.inc index 2bea29f38..fddadae15 100644 --- a/data/maps/FallarborTown_BattleTentLobby/scripts.inc +++ b/data/maps/FallarborTown_BattleTentLobby/scripts.inc @@ -39,19 +39,15 @@ FallarborTown_BattleTentLobby_EventScript_1FFEED:: @ 81FFEED msgbox FallarborTown_BattleTentLobby_Text_2C4EC3, MSGBOX_DEFAULT message FallarborTown_BattleTentLobby_Text_2C4EFF waitmessage - setvar VAR_0x8004, 4 - special CallFallarborTentFunction + fallarbortent_setrandomprize frontier_set FRONTIER_DATA_LVL_MODE, FRONTIER_LVL_50 - setvar VAR_0x8004, 3 - setvar VAR_0x8005, 0 - special CallFallarborTentFunction + fallarbortent_save 0 playse SE_SAVE waitse FallarborTown_BattleTentLobby_EventScript_1FFF27:: @ 81FFF27 msgbox FallarborTown_BattleTentLobby_Text_2C4F22, MSGBOX_DEFAULT - setvar VAR_0x8004, 5 - special CallFallarborTentFunction + fallarbortent_giveprize switch VAR_RESULT case 0, FallarborTown_BattleTentLobby_EventScript_1FFF73 frontier_set FRONTIER_DATA_CHALLENGE_STATUS, 0 @@ -84,9 +80,7 @@ FallarborTown_BattleTentLobby_EventScript_1FFF93:: @ 81FFF93 message FallarborTown_BattleTentLobby_Text_2C4FD7 waitmessage frontier_set FRONTIER_DATA_LVL_MODE, FRONTIER_LVL_50 - setvar VAR_0x8004, 3 - setvar VAR_0x8005, 0 - special CallFallarborTentFunction + fallarbortent_save 0 playse SE_SAVE waitse msgbox FallarborTown_BattleTentLobby_Text_2C501F, MSGBOX_DEFAULT @@ -99,9 +93,7 @@ FallarborTown_BattleTentLobby_EventScript_1FFFCD:: @ 81FFFCD lockall message FallarborTown_BattleTentLobby_Text_2C504C waitmessage - setvar VAR_0x8004, 3 - setvar VAR_0x8005, 1 - special CallFallarborTentFunction + fallarbortent_save CHALLENGE_STATUS_SAVING playse SE_SAVE waitse frontier_set FRONTIER_DATA_PAUSED, FALSE @@ -111,8 +103,7 @@ FallarborTown_BattleTentLobby_EventScript_1FFFCD:: @ 81FFFCD FallarborTown_BattleTentLobby_EventScript_200001:: @ 8200001 lock faceplayer - setvar VAR_0x8004, 1 - special CallFallarborTentFunction + fallarbortent_getprize compare VAR_RESULT, 0 goto_if_ne FallarborTown_BattleTentLobby_EventScript_1FFF84 special SavePlayerParty @@ -153,8 +144,7 @@ FallarborTown_BattleTentLobby_EventScript_20005D:: @ 820005D FallarborTown_BattleTentLobby_EventScript_2000E2:: @ 82000E2 setvar VAR_TEMP_0, 0 frontier_set FRONTIER_DATA_SELECTED_MON_ORDER - setvar VAR_0x8004, 0 - special CallFallarborTentFunction + fallarbortent_init frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_SAVING frontier_set FRONTIER_DATA_PAUSED, FALSE special LoadPlayerParty diff --git a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc index f89cca8f3..541dc3aae 100644 --- a/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc +++ b/data/maps/SlateportCity_BattleTentBattleRoom/scripts.inc @@ -47,8 +47,7 @@ SlateportCity_BattleTentBattleRoom_EventScript_2099BE:: @ 82099BE addobject 2 applymovement 2, SlateportCity_BattleTentBattleRoom_Movement_209A9E waitmovement 0 - setvar VAR_0x8004, 4 - special CallVerdanturfTentFunction + battletent_getopponentintro lockall msgbox gStringVar4, MSGBOX_DEFAULT waitmessage diff --git a/data/maps/SlateportCity_BattleTentCorridor/scripts.inc b/data/maps/SlateportCity_BattleTentCorridor/scripts.inc index b40a6f48e..493fd3f69 100644 --- a/data/maps/SlateportCity_BattleTentCorridor/scripts.inc +++ b/data/maps/SlateportCity_BattleTentCorridor/scripts.inc @@ -31,14 +31,11 @@ SlateportCity_BattleTentCorridor_EventScript_208E65:: @ 8208E65 waitmovement 0 compare VAR_0x8006, 2 goto_if_eq SlateportCity_BattleTentCorridor_EventScript_209044 - setvar VAR_0x8004, 9 - special CallSlateportTentFunction - setvar VAR_0x8004, 8 - special CallSlateportTentFunction + slateporttent_generaterentalmons + slateporttent_generateopponentmons msgbox SlateportCity_BattleTentCorridor_Text_25A1C8, MSGBOX_DEFAULT fadescreen 1 - setvar VAR_0x8004, 6 - special CallSlateportTentFunction + slateporttent_rentmons waitstate SlateportCity_BattleTentCorridor_EventScript_208EB4:: @ 8208EB4 msgbox SlateportCity_BattleTentCorridor_Text_25AB96, MSGBOX_DEFAULT @@ -92,8 +89,7 @@ SlateportCity_BattleTentCorridor_EventScript_208F89:: @ 8208F89 case MULTI_B_PRESSED, SlateportCity_BattleTentCorridor_EventScript_208F0D SlateportCity_BattleTentCorridor_EventScript_208FBB:: @ 8208FBB - setvar VAR_0x8004, 8 - special CallSlateportTentFunction + slateporttent_generateopponentmons msgbox SlateportCity_BattleTentCorridor_Text_25AB2E, MSGBOX_YESNO switch VAR_RESULT case NO, SlateportCity_BattleTentCorridor_EventScript_208EB4 @@ -102,8 +98,7 @@ SlateportCity_BattleTentCorridor_EventScript_208FBB:: @ 8208FBB SlateportCity_BattleTentCorridor_EventScript_208FF1:: @ 8208FF1 fadescreen 1 - setvar VAR_0x8004, 7 - special CallSlateportTentFunction + slateporttent_swapmons waitstate compare VAR_RESULT, 1 goto_if_eq SlateportCity_BattleTentCorridor_EventScript_208EB4 @@ -123,9 +118,7 @@ SlateportCity_BattleTentCorridor_EventScript_20901B:: @ 820901B SlateportCity_BattleTentCorridor_EventScript_209022:: @ 8209022 message SlateportCity_BattleTentCorridor_Text_25ABAE waitmessage - setvar VAR_0x8004, 3 - setvar VAR_0x8005, 2 - special CallSlateportTentFunction + slateporttent_save CHALLENGE_STATUS_PAUSED playse SE_SAVE waitse fadescreen 1 diff --git a/data/maps/SlateportCity_BattleTentLobby/scripts.inc b/data/maps/SlateportCity_BattleTentLobby/scripts.inc index bf64adca9..1a9801dd1 100644 --- a/data/maps/SlateportCity_BattleTentLobby/scripts.inc +++ b/data/maps/SlateportCity_BattleTentLobby/scripts.inc @@ -38,18 +38,14 @@ SlateportCity_BattleTentLobby_EventScript_2087B7:: @ 82087B7 lockall message SlateportCity_BattleTentLobby_Text_2C5C6F waitmessage - setvar VAR_0x8004, 4 - special CallSlateportTentFunction + slateporttent_setrandomprize frontier_set FRONTIER_DATA_LVL_MODE, FRONTIER_LVL_50 - setvar VAR_0x8004, 3 - setvar VAR_0x8005, 0 - special CallSlateportTentFunction + slateporttent_save 0 playse SE_SAVE waitse SlateportCity_BattleTentLobby_EventScript_2087E9:: @ 82087E9 msgbox SlateportCity_BattleTentLobby_Text_2C5D14, MSGBOX_DEFAULT - setvar VAR_0x8004, 5 - special CallSlateportTentFunction + slateporttent_giveprize switch VAR_RESULT case 0, SlateportCity_BattleTentLobby_EventScript_20882A frontier_set FRONTIER_DATA_CHALLENGE_STATUS, 0 @@ -68,9 +64,7 @@ SlateportCity_BattleTentLobby_EventScript_208837:: @ 8208837 message SlateportCity_BattleTentLobby_Text_2C5BA2 waitmessage frontier_set FRONTIER_DATA_LVL_MODE, FRONTIER_LVL_50 - setvar VAR_0x8004, 3 - setvar VAR_0x8005, 0 - special CallSlateportTentFunction + slateporttent_save 0 playse SE_SAVE waitse @@ -85,9 +79,7 @@ SlateportCity_BattleTentLobby_EventScript_208871:: @ 8208871 lockall message SlateportCity_BattleTentLobby_Text_2C5DA7 waitmessage - setvar VAR_0x8004, 3 - setvar VAR_0x8005, 1 - special CallSlateportTentFunction + slateporttent_save CHALLENGE_STATUS_SAVING playse SE_SAVE waitse frontier_set FRONTIER_DATA_PAUSED, FALSE @@ -98,13 +90,11 @@ SlateportCity_BattleTentLobby_EventScript_208871:: @ 8208871 SlateportCity_BattleTentLobby_EventScript_2088AA:: @ 82088AA lock faceplayer - setvar VAR_0x8004, 1 - special CallSlateportTentFunction + slateporttent_getprize compare VAR_RESULT, 0 goto_if_ne SlateportCity_BattleTentLobby_EventScript_2087E9 special SavePlayerParty msgbox SlateportCity_BattleTentLobby_Text_2C5810, MSGBOX_DEFAULT - SlateportCity_BattleTentLobby_EventScript_2088CA:: @ 82088CA message SlateportCity_BattleTentLobby_Text_2C586A waitmessage @@ -128,8 +118,7 @@ SlateportCity_BattleTentLobby_EventScript_208906:: @ 8208906 SlateportCity_BattleTentLobby_EventScript_208950:: @ 8208950 setvar VAR_TEMP_0, 0 frontier_set FRONTIER_DATA_SELECTED_MON_ORDER - setvar VAR_0x8004, 0 - special CallSlateportTentFunction + slateporttent_init frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_SAVING frontier_set FRONTIER_DATA_PAUSED, FALSE closemessage diff --git a/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc b/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc index 82df3143a..5ef8100cc 100644 --- a/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc +++ b/data/maps/VerdanturfTown_BattleTentBattleRoom/scripts.inc @@ -43,8 +43,7 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_20236F:: @ 820236F addobject 2 applymovement 2, VerdanturfTown_BattleTentBattleRoom_Movement_20257B waitmovement 0 - setvar VAR_0x8004, 4 - special CallVerdanturfTentFunction + battletent_getopponentintro msgbox gStringVar4, MSGBOX_DEFAULT waitmessage call VerdanturfTown_BattleTentBattleRoom_EventScript_24FDF7 @@ -121,9 +120,7 @@ VerdanturfTown_BattleTentBattleRoom_EventScript_202501:: @ 8202501 VerdanturfTown_BattleTentBattleRoom_EventScript_20251F:: @ 820251F message VerdanturfTown_BattleTentBattleRoom_Text_25007E waitmessage - setvar VAR_0x8004, 5 - setvar VAR_0x8005, 2 - special CallVerdanturfTentFunction + verdanturftent_save CHALLENGE_STATUS_PAUSED playse SE_SAVE waitse fadescreen 1 diff --git a/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc b/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc index 0f2ec453e..6add7d182 100644 --- a/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc +++ b/data/maps/VerdanturfTown_BattleTentLobby/scripts.inc @@ -39,19 +39,15 @@ VerdanturfTown_BattleTentLobby_EventScript_201757:: @ 8201757 msgbox VerdanturfTown_BattleTentLobby_Text_2C5731, MSGBOX_DEFAULT message VerdanturfTown_BattleTentLobby_Text_2C5791 waitmessage - setvar VAR_0x8004, 6 - special CallVerdanturfTentFunction + verdanturftent_setrandomprize frontier_set FRONTIER_DATA_LVL_MODE, FRONTIER_LVL_50 - setvar VAR_0x8004, 5 - setvar VAR_0x8005, 0 - special CallVerdanturfTentFunction + verdanturftent_save 0 playse SE_SAVE waitse VerdanturfTown_BattleTentLobby_EventScript_201791:: @ 8201791 msgbox VerdanturfTown_BattleTentLobby_Text_2C57CD, MSGBOX_DEFAULT - setvar VAR_0x8004, 7 - special CallVerdanturfTentFunction + verdanturftent_giveprize switch VAR_RESULT case 0, VerdanturfTown_BattleTentLobby_EventScript_2017DD frontier_set FRONTIER_DATA_CHALLENGE_STATUS, 0 @@ -84,9 +80,7 @@ VerdanturfTown_BattleTentLobby_EventScript_2017FD:: @ 82017FD message VerdanturfTown_BattleTentLobby_Text_2C56B8 waitmessage frontier_set FRONTIER_DATA_LVL_MODE, FRONTIER_LVL_50 - setvar VAR_0x8004, 5 - setvar VAR_0x8005, 0 - special CallVerdanturfTentFunction + verdanturftent_save 0 playse SE_SAVE waitse msgbox VerdanturfTown_BattleTentLobby_Text_2C539A, MSGBOX_DEFAULT @@ -100,9 +94,7 @@ VerdanturfTown_BattleTentLobby_EventScript_201837:: @ 8201837 msgbox VerdanturfTown_BattleTentLobby_Text_24E5D8, MSGBOX_DEFAULT message VerdanturfTown_BattleTentLobby_Text_24E5F6 waitmessage - setvar VAR_0x8004, 5 - setvar VAR_0x8005, 1 - special CallVerdanturfTentFunction + verdanturftent_save CHALLENGE_STATUS_SAVING playse SE_SAVE waitse frontier_set FRONTIER_DATA_PAUSED, FALSE @@ -112,8 +104,7 @@ VerdanturfTown_BattleTentLobby_EventScript_201837:: @ 8201837 VerdanturfTown_BattleTentLobby_EventScript_201873:: @ 8201873 lock faceplayer - setvar VAR_0x8004, 1 - special CallVerdanturfTentFunction + verdanturftent_getprize compare VAR_RESULT, 0 goto_if_ne VerdanturfTown_BattleTentLobby_EventScript_2017EE special SavePlayerParty @@ -154,8 +145,7 @@ VerdanturfTown_BattleTentLobby_EventScript_2018CF:: @ 82018CF VerdanturfTown_BattleTentLobby_EventScript_201954:: @ 8201954 setvar VAR_TEMP_0, 0 frontier_set FRONTIER_DATA_SELECTED_MON_ORDER - setvar VAR_0x8004, 0 - special CallVerdanturfTentFunction + verdanturftent_init frontier_set FRONTIER_DATA_CHALLENGE_STATUS, CHALLENGE_STATUS_SAVING frontier_set FRONTIER_DATA_PAUSED, FALSE special LoadPlayerParty diff --git a/include/constants/battle_tent.h b/include/constants/battle_tent.h new file mode 100644 index 000000000..666ada6bd --- /dev/null +++ b/include/constants/battle_tent.h @@ -0,0 +1,32 @@ +#ifndef GUARD_CONSTANTS_BATTLE_TENT_H +#define GUARD_CONSTANTS_BATTLE_TENT_H + +#define VERDANTURF_TENT_FUNC_INIT 0 +#define VERDANTURF_TENT_FUNC_GET_PRIZE 1 +#define VERDANTURF_TENT_FUNC_SET_PRIZE 2 +#define VERDANTURF_TENT_FUNC_SET_OPPONENT_GFX 3 +#define VERDANTURF_TENT_FUNC_GET_OPPONENT_INTRO 4 +#define VERDANTURF_TENT_FUNC_SAVE 5 +#define VERDANTURF_TENT_FUNC_SET_RANDOM_PRIZE 6 +#define VERDANTURF_TENT_FUNC_GIVE_PRIZE 7 + +#define FALLARBOR_TENT_FUNC_INIT 0 +#define FALLARBOR_TENT_FUNC_GET_PRIZE 1 +#define FALLARBOR_TENT_FUNC_SET_PRIZE 2 +#define FALLARBOR_TENT_FUNC_SAVE 3 +#define FALLARBOR_TENT_FUNC_SET_RANDOM_PRIZE 4 +#define FALLARBOR_TENT_FUNC_GIVE_PRIZE 5 +#define FALLARBOR_TENT_FUNC_GET_OPPONENT_NAME 6 + +#define SLATEPORT_TENT_FUNC_INIT 0 +#define SLATEPORT_TENT_FUNC_GET_PRIZE 1 +#define SLATEPORT_TENT_FUNC_SET_PRIZE 2 +#define SLATEPORT_TENT_FUNC_SAVE 3 +#define SLATEPORT_TENT_FUNC_SET_RANDOM_PRIZE 4 +#define SLATEPORT_TENT_FUNC_GIVE_PRIZE 5 +#define SLATEPORT_TENT_FUNC_SELECT_RENT_MONS 6 +#define SLATEPORT_TENT_FUNC_SWAP_RENT_MONS 7 +#define SLATEPORT_TENT_FUNC_GENERATE_OPPONENT_MONS 8 +#define SLATEPORT_TENT_FUNC_GENERATE_RENTAL_MONS 9 + +#endif // GUARD_CONSTANTS_BATTLE_TENT_H diff --git a/src/battle_tent.c b/src/battle_tent.c index 89bb332a6..860c07a53 100644 --- a/src/battle_tent.c +++ b/src/battle_tent.c @@ -11,6 +11,7 @@ #include "battle_factory_screen.h" #include "frontier_util.h" #include "string_util.h" +#include "constants/battle_tent.h" #include "constants/items.h" #include "constants/layouts.h" #include "constants/region_map_sections.h" @@ -41,8 +42,18 @@ static void SetRandomSlateportTentPrize(void); static void GiveSlateportTentPrize(void); static void SelectInitialRentalMons(void); static void SwapRentalMons(void); -static void sub_81BA040(void); -static void sub_81B9EC0(void); +static void GenerateOpponentMons(void); +static void GenerateInitialRentalMons(void); + +/* + * Battle Tents are mini versions of particular Battle Frontier facilities + * As such they each share some scripts and functions with their counterpart + * + * Verdanturf Battle Tent: Battle Palace + * Fallarbor Battle Tent: Battle Arena + * Slateport Battle Tent: Battle Factory + * + */ // IWRAM bss static u16 sRandMonSetId; @@ -50,43 +61,43 @@ static u16 sRandMonSetId; // const rom data void static (*const sVerdanturfTentFuncs[])(void) = { - InitVerdanturfTentChallenge, - GetVerdanturfTentPrize, - SetVerdanturfTentPrize, - SetVerdanturfTentTrainerGfx, - BufferVerdanturfTentTrainerIntro, - SaveVerdanturfTentChallenge, - SetRandomVerdanturfTentPrize, - GiveVerdanturfTentPrize + [VERDANTURF_TENT_FUNC_INIT] = InitVerdanturfTentChallenge, + [VERDANTURF_TENT_FUNC_GET_PRIZE] = GetVerdanturfTentPrize, + [VERDANTURF_TENT_FUNC_SET_PRIZE] = SetVerdanturfTentPrize, + [VERDANTURF_TENT_FUNC_SET_OPPONENT_GFX] = SetVerdanturfTentTrainerGfx, + [VERDANTURF_TENT_FUNC_GET_OPPONENT_INTRO] = BufferVerdanturfTentTrainerIntro, + [VERDANTURF_TENT_FUNC_SAVE] = SaveVerdanturfTentChallenge, + [VERDANTURF_TENT_FUNC_SET_RANDOM_PRIZE] = SetRandomVerdanturfTentPrize, + [VERDANTURF_TENT_FUNC_GIVE_PRIZE] = GiveVerdanturfTentPrize }; static const u16 sVerdanturfTentRewards[] = {ITEM_NEST_BALL}; void static (*const sFallarborTentFuncs[])(void) = { - InitFallarborTentChallenge, - GetFallarborTentPrize, - SetFallarborTentPrize, - SaveFallarborTentChallenge, - SetRandomFallarborTentPrize, - GiveFallarborTentPrize, - BufferFallarborTentTrainerName + [FALLARBOR_TENT_FUNC_INIT] = InitFallarborTentChallenge, + [FALLARBOR_TENT_FUNC_GET_PRIZE] = GetFallarborTentPrize, + [FALLARBOR_TENT_FUNC_SET_PRIZE] = SetFallarborTentPrize, + [FALLARBOR_TENT_FUNC_SAVE] = SaveFallarborTentChallenge, + [FALLARBOR_TENT_FUNC_SET_RANDOM_PRIZE] = SetRandomFallarborTentPrize, + [FALLARBOR_TENT_FUNC_GIVE_PRIZE] = GiveFallarborTentPrize, + [FALLARBOR_TENT_FUNC_GET_OPPONENT_NAME] = BufferFallarborTentTrainerName }; static const u16 sFallarborTentRewards[] = {ITEM_HYPER_POTION}; void static (*const sSlateportTentFuncs[])(void) = { - InitSlateportTentChallenge, - GetSlateportTentPrize, - SetSlateportTentPrize, - SaveSlateportTentChallenge, - SetRandomSlateportTentPrize, - GiveSlateportTentPrize, - SelectInitialRentalMons, - SwapRentalMons, - sub_81BA040, - sub_81B9EC0 + [SLATEPORT_TENT_FUNC_INIT] = InitSlateportTentChallenge, + [SLATEPORT_TENT_FUNC_GET_PRIZE] = GetSlateportTentPrize, + [SLATEPORT_TENT_FUNC_SET_PRIZE] = SetSlateportTentPrize, + [SLATEPORT_TENT_FUNC_SAVE] = SaveSlateportTentChallenge, + [SLATEPORT_TENT_FUNC_SET_RANDOM_PRIZE] = SetRandomSlateportTentPrize, + [SLATEPORT_TENT_FUNC_GIVE_PRIZE] = GiveSlateportTentPrize, + [SLATEPORT_TENT_FUNC_SELECT_RENT_MONS] = SelectInitialRentalMons, + [SLATEPORT_TENT_FUNC_SWAP_RENT_MONS] = SwapRentalMons, + [SLATEPORT_TENT_FUNC_GENERATE_OPPONENT_MONS] = GenerateOpponentMons, + [SLATEPORT_TENT_FUNC_GENERATE_RENTAL_MONS] = GenerateInitialRentalMons }; static const u16 sSlateportTentRewards[] = {ITEM_FULL_HEAL}; @@ -276,7 +287,7 @@ bool8 InSlateportBattleTent(void) && (gMapHeader.mapLayoutId == LAYOUT_BATTLE_TENT_CORRIDOR || gMapHeader.mapLayoutId == LAYOUT_BATTLE_TENT_BATTLE_ROOM); } -static void sub_81B9EC0(void) +static void GenerateInitialRentalMons(void) { s32 i, j; u8 firstMonId; @@ -338,13 +349,13 @@ static void sub_81B9EC0(void) } } -static void sub_81BA040(void) +static void GenerateOpponentMons(void) { u16 trainerId; s32 i, j, k; register const u16 *monSets asm("r9"); // Fix me. Compiler insists on moving that variable into stack. - u16 species[3]; - u16 heldItems[3]; + u16 species[FRONTIER_PARTY_SIZE]; + u16 heldItems[FRONTIER_PARTY_SIZE]; s32 setsCount = 0; gFacilityTrainers = gSlateportBattleTentTrainers; @@ -375,7 +386,7 @@ static void sub_81BA040(void) monSets = gFacilityTrainers[gTrainerBattleOpponent_A].monSets; i = 0; - while (i != 3) + while (i != FRONTIER_PARTY_SIZE) { sRandMonSetId = monSets[Random() % setsCount]; for (j = 0; j < 6; j++) |