summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2020-02-16 11:07:47 -0500
committerGitHub <noreply@github.com>2020-02-16 11:07:47 -0500
commit04130a97d9ff799c9f1b439d091c0116adb31bfb (patch)
tree7b610171c3d893d1cace513cf61e0b74014dbad2
parentfee980decd6dfd5dc98c15ba13c9ea8f7b597934 (diff)
parenta4cd331634d1fcc5f7cb217c51c328c5769a9616 (diff)
Merge pull request #239 from GriffinRichards/doc-ttower
Document Trainer Tower scripts
-rw-r--r--asm/field_control_avatar.s4
-rw-r--r--asm/macros.inc1
-rw-r--r--asm/macros/trainer_tower.inc133
-rw-r--r--asm/overworld.s10
-rw-r--r--data/event_scripts.s27
-rw-r--r--data/layouts/TrainerTower_1F/border.bin (renamed from data/layouts/SevenIsland_TrainerTower_1F/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_1F/map.bin (renamed from data/layouts/SevenIsland_TrainerTower_1F/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_1F_Doubles/border.bin (renamed from data/layouts/SevenIsland_TrainerTower_2F/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_1F_Doubles/map.bin (renamed from data/layouts/UnusedLayout_834BC2C/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_1F_Knockout/border.bin (renamed from data/layouts/SevenIsland_TrainerTower_3F/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_1F_Knockout/map.bin (renamed from data/layouts/UnusedLayout_834D06C/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_2F/border.bin (renamed from data/layouts/SevenIsland_TrainerTower_4F/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_2F/map.bin (renamed from data/layouts/SevenIsland_TrainerTower_2F/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_2F_Doubles/border.bin (renamed from data/layouts/SevenIsland_TrainerTower_5F/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_2F_Doubles/map.bin (renamed from data/layouts/UnusedLayout_834BEB4/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_2F_Knockout/border.bin (renamed from data/layouts/SevenIsland_TrainerTower_6F/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_2F_Knockout/map.bin (renamed from data/layouts/UnusedLayout_834D2F4/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_3F/border.bin (renamed from data/layouts/SevenIsland_TrainerTower_7F/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_3F/map.bin (renamed from data/layouts/SevenIsland_TrainerTower_3F/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_3F_Doubles/border.bin (renamed from data/layouts/SevenIsland_TrainerTower_8F/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_3F_Doubles/map.bin (renamed from data/layouts/UnusedLayout_834C13C/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_3F_Knockout/border.bin (renamed from data/layouts/SevenIsland_TrainerTower_Elevator/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_3F_Knockout/map.bin (renamed from data/layouts/UnusedLayout_834D57C/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_4F/border.bin (renamed from data/layouts/SevenIsland_TrainerTower_Lobby/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_4F/map.bin (renamed from data/layouts/SevenIsland_TrainerTower_4F/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_4F_Doubles/border.bin (renamed from data/layouts/UnusedLayout_834BC2C/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_4F_Doubles/map.bin (renamed from data/layouts/UnusedLayout_834C3C4/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_4F_Knockout/border.bin (renamed from data/layouts/UnusedLayout_834BEB4/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_4F_Knockout/map.bin (renamed from data/layouts/UnusedLayout_834D804/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_5F/border.bin (renamed from data/layouts/UnusedLayout_834C13C/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_5F/map.bin (renamed from data/layouts/SevenIsland_TrainerTower_5F/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_5F_Doubles/border.bin (renamed from data/layouts/UnusedLayout_834C3C4/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_5F_Doubles/map.bin (renamed from data/layouts/UnusedLayout_834C64C/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_5F_Knockout/border.bin (renamed from data/layouts/UnusedLayout_834C64C/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_5F_Knockout/map.bin (renamed from data/layouts/UnusedLayout_834DA8C/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_6F/border.bin (renamed from data/layouts/UnusedLayout_834C8D4/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_6F/map.bin (renamed from data/layouts/SevenIsland_TrainerTower_6F/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_6F_Doubles/border.bin (renamed from data/layouts/UnusedLayout_834CB5C/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_6F_Doubles/map.bin (renamed from data/layouts/UnusedLayout_834C8D4/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_6F_Knockout/border.bin (renamed from data/layouts/UnusedLayout_834CDE4/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_6F_Knockout/map.bin (renamed from data/layouts/UnusedLayout_834DD14/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_7F/border.bin (renamed from data/layouts/UnusedLayout_834D06C/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_7F/map.bin (renamed from data/layouts/SevenIsland_TrainerTower_7F/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_7F_Doubles/border.bin (renamed from data/layouts/UnusedLayout_834D2F4/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_7F_Doubles/map.bin (renamed from data/layouts/UnusedLayout_834CB5C/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_7F_Knockout/border.bin (renamed from data/layouts/UnusedLayout_834D57C/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_7F_Knockout/map.bin (renamed from data/layouts/UnusedLayout_834DF9C/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_8F/border.bin (renamed from data/layouts/UnusedLayout_834D804/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_8F/map.bin (renamed from data/layouts/SevenIsland_TrainerTower_8F/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_8F_Doubles/border.bin (renamed from data/layouts/UnusedLayout_834DA8C/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_8F_Doubles/map.bin (renamed from data/layouts/UnusedLayout_834CDE4/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_8F_Knockout/border.bin (renamed from data/layouts/UnusedLayout_834DD14/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_8F_Knockout/map.bin (renamed from data/layouts/UnusedLayout_834E224/map.bin)bin612 -> 612 bytes
-rw-r--r--data/layouts/TrainerTower_Elevator/border.bin (renamed from data/layouts/UnusedLayout_834DF9C/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_Elevator/map.bin (renamed from data/layouts/SevenIsland_TrainerTower_Elevator/map.bin)0
-rw-r--r--data/layouts/TrainerTower_Lobby/border.bin (renamed from data/layouts/UnusedLayout_834E224/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/TrainerTower_Lobby/map.bin (renamed from data/layouts/SevenIsland_TrainerTower_Lobby/map.bin)0
-rw-r--r--data/layouts/TrainerTower_Roof/border.bin (renamed from data/layouts/SevenIsland_TrainerTower_Roof/border.bin)0
-rw-r--r--data/layouts/TrainerTower_Roof/map.bin (renamed from data/layouts/SevenIsland_TrainerTower_Roof/map.bin)0
-rw-r--r--data/layouts/layouts.json216
-rw-r--r--data/maps/CeladonCity_DepartmentStore_Elevator/scripts.inc2
-rw-r--r--data/maps/RocketHideout_Elevator/scripts.inc2
-rw-r--r--data/maps/SevenIsland_TrainerTower/map.json2
-rw-r--r--data/maps/SevenIsland_TrainerTower_1F/scripts.inc60
-rw-r--r--data/maps/SevenIsland_TrainerTower_2F/scripts.inc25
-rw-r--r--data/maps/SevenIsland_TrainerTower_3F/scripts.inc25
-rw-r--r--data/maps/SevenIsland_TrainerTower_4F/scripts.inc25
-rw-r--r--data/maps/SevenIsland_TrainerTower_5F/scripts.inc25
-rw-r--r--data/maps/SevenIsland_TrainerTower_6F/map.json135
-rw-r--r--data/maps/SevenIsland_TrainerTower_6F/scripts.inc25
-rw-r--r--data/maps/SevenIsland_TrainerTower_7F/map.json135
-rw-r--r--data/maps/SevenIsland_TrainerTower_7F/scripts.inc25
-rw-r--r--data/maps/SevenIsland_TrainerTower_8F/map.json135
-rw-r--r--data/maps/SevenIsland_TrainerTower_8F/scripts.inc25
-rw-r--r--data/maps/SevenIsland_TrainerTower_Elevator/scripts.inc80
-rw-r--r--data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc235
-rw-r--r--data/maps/SevenIsland_TrainerTower_Roof/scripts.inc8
-rw-r--r--data/maps/SilphCo_Elevator/scripts.inc2
-rw-r--r--data/maps/TrainerTower_1F/map.json (renamed from data/maps/SevenIsland_TrainerTower_1F/map.json)24
-rw-r--r--data/maps/TrainerTower_1F/scripts.inc27
-rw-r--r--data/maps/TrainerTower_2F/map.json (renamed from data/maps/SevenIsland_TrainerTower_5F/map.json)28
-rw-r--r--data/maps/TrainerTower_2F/scripts.inc27
-rw-r--r--data/maps/TrainerTower_3F/map.json (renamed from data/maps/SevenIsland_TrainerTower_2F/map.json)28
-rw-r--r--data/maps/TrainerTower_3F/scripts.inc27
-rw-r--r--data/maps/TrainerTower_4F/map.json (renamed from data/maps/SevenIsland_TrainerTower_3F/map.json)28
-rw-r--r--data/maps/TrainerTower_4F/scripts.inc27
-rw-r--r--data/maps/TrainerTower_5F/map.json (renamed from data/maps/SevenIsland_TrainerTower_4F/map.json)28
-rw-r--r--data/maps/TrainerTower_5F/scripts.inc27
-rw-r--r--data/maps/TrainerTower_6F/map.json135
-rw-r--r--data/maps/TrainerTower_6F/scripts.inc27
-rw-r--r--data/maps/TrainerTower_7F/map.json135
-rw-r--r--data/maps/TrainerTower_7F/scripts.inc27
-rw-r--r--data/maps/TrainerTower_8F/map.json135
-rw-r--r--data/maps/TrainerTower_8F/scripts.inc27
-rw-r--r--data/maps/TrainerTower_Elevator/map.json (renamed from data/maps/SevenIsland_TrainerTower_Elevator/map.json)8
-rw-r--r--data/maps/TrainerTower_Elevator/scripts.inc80
-rw-r--r--data/maps/TrainerTower_Lobby/map.json (renamed from data/maps/SevenIsland_TrainerTower_Lobby/map.json)24
-rw-r--r--data/maps/TrainerTower_Lobby/scripts.inc226
-rw-r--r--data/maps/TrainerTower_Lobby/text.inc (renamed from data/maps/SevenIsland_TrainerTower_Lobby/text.inc)44
-rw-r--r--data/maps/TrainerTower_Roof/map.json (renamed from data/maps/SevenIsland_TrainerTower_Roof/map.json)12
-rw-r--r--data/maps/TrainerTower_Roof/scripts.inc10
-rw-r--r--data/maps/map_groups.json22
-rw-r--r--data/scripts/trainer_tower.inc588
-rw-r--r--data/specials.inc4
-rw-r--r--include/battle_tower.h2
-rw-r--r--include/cereader_tool.h20
-rw-r--r--include/constants/battle.h2
-rw-r--r--include/constants/flags.h2
-rw-r--r--include/constants/global.h2
-rw-r--r--include/constants/layouts.h54
-rw-r--r--include/constants/map_groups.h22
-rw-r--r--include/constants/metatile_labels.h3
-rw-r--r--include/constants/party_menu.h1
-rw-r--r--include/constants/trainer_tower.h46
-rw-r--r--include/global.h32
-rw-r--r--include/renewable_hidden_items.h1
-rw-r--r--include/script.h2
-rw-r--r--include/trainer_tower.h6
-rw-r--r--src/battle_main.c1
-rw-r--r--src/battle_message.c21
-rw-r--r--src/cereader_tool.c34
-rw-r--r--src/field_specials.c46
-rw-r--r--src/fieldmap.c16
-rw-r--r--src/heal_location.c8
-rw-r--r--src/load_save.c4
-rw-r--r--src/mevent.c4
-rw-r--r--src/quest_log.c26
-rw-r--r--src/region_map.c2
-rw-r--r--src/renewable_hidden_items.c6
-rw-r--r--src/script.c2
-rw-r--r--src/trainer_tower.c649
131 files changed, 2140 insertions, 2011 deletions
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index 83f9a5700..b74e60d1f 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -1330,10 +1330,10 @@ _0806D2F0:
lsrs r0, 24
cmp r0, 0x1
bne _0806D308
- ldr r0, _0806D304 @ =EventScript_1C549C
+ ldr r0, _0806D304 @ =TrainerTower_EventScript_ShowTime
b _0806D53E
.align 2, 0
-_0806D304: .4byte EventScript_1C549C
+_0806D304: .4byte TrainerTower_EventScript_ShowTime
_0806D308:
adds r0, r4, 0
adds r1, r5, 0
diff --git a/asm/macros.inc b/asm/macros.inc
index ffbe3db29..0e53dc2a2 100644
--- a/asm/macros.inc
+++ b/asm/macros.inc
@@ -5,6 +5,7 @@
.include "asm/macros/ec.inc"
.include "asm/macros/map.inc"
.include "asm/macros/m4a.inc"
+ .include "asm/macros/trainer_tower.inc"
.macro region_map_location x, y, width, height, name
.byte \x
diff --git a/asm/macros/trainer_tower.inc b/asm/macros/trainer_tower.inc
new file mode 100644
index 000000000..8e5f606ee
--- /dev/null
+++ b/asm/macros/trainer_tower.inc
@@ -0,0 +1,133 @@
+ @ Sets NPC gfx and the floor layout depending on current challenge and floor
+ .macro ttower_initfloor
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_INIT_FLOOR
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Buffers the opponents battle speech to gStringVar4. speech is any TRAINER_TOWER_TEXT_*.
+ .macro ttower_getspeech speech:req, trainer=0xFF
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_SPEECH
+ setvar VAR_0x8005, \speech
+ .if \trainer >= VARS_START && \trainer != 0xFF
+ copyvar VAR_0x8006, \trainer
+ .elseif \trainer != 0xFF
+ setvar VAR_0x8006, \trainer
+ .endif
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Starts a trainer tower battle. VAR_0x8005 is unused
+ .macro ttower_dobattle
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_DO_BATTLE
+ setvar VAR_0x8005, 0
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Returns the current challenge type (CHALLENGE_TYPE_*). Mixed challenges use different types for each floor. If VAR_0x8005 is != FALSE, does nothing
+ .macro ttower_getchallengetype
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_CHALLENGE_TYPE
+ setvar VAR_0x8005, FALSE
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Adds 1 to the number of floors cleared (all trainers on floor defeated)
+ .macro ttower_clearedfloor
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_CLEARED_FLOOR
+ special CallTrainerTowerFunc
+ .endm
+
+ @ TRUE if the trainers on this floor were already beaten, FALSE otherwise
+ .macro ttower_isfloorcleared
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_FLOOR_CLEARED
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Initializes the Trainer Tower challenge and starts the timer
+ .macro ttower_startchallenge
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_START_CHALLENGE
+ special CallTrainerTowerFunc
+ .endm
+
+ @ 0 if not spoken to yet, 1 if spoken to but not received prize, 2 if received prize
+ .macro ttower_getownerstate
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_OWNER_STATE
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Tries to give prize. 0 if given successfully, 1 if no room for prize, 2 if giving prize should be skipped
+ .macro ttower_giveprize
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GIVE_PRIZE
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Checks the final challenge time. 0 if new record, 1 if not, 2 if time has already been checked
+ .macro ttower_checkfinaltime
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_CHECK_FINAL_TIME
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Resumes the challenge timer (or starts, if the timer is 0)
+ .macro ttower_resumetimer
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_RESUME_TIMER
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Sets that the player lost the challenge
+ .macro ttower_setlost
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_SET_LOST
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Returns the status of the current Trainer Tower challenge (CHALLENGE_STATUS_*)
+ .macro ttower_getchallengestatus
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_CHALLENGE_STATUS
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Buffers the current challenge time (min in gStringVar1, sec in gStringVar2, fraction sec in gStringVar3)
+ .macro ttower_gettime
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_TIME
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Unused. Displays Trainer Tower results. Handled by Special_BattleRecords instead
+ .macro ttower_showresults
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_SHOW_RESULTS
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Unused. See above
+ .macro ttower_closeresults
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_CLOSE_RESULTS
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Returns the eligibility of the players party for a double battle (using GetMonsStateToDoubles)
+ .macro ttower_checkdoubles
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_CHECK_DOUBLES
+ special CallTrainerTowerFunc
+ .endm
+
+ @ For the unused E-Reader challenges, gets the number of floors used. Otherwise returns FALSE (all floors used)
+ .macro ttower_getnumfloors
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_NUM_FLOORS
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Dummied, always returns FALSE
+ .macro ttower_shouldexit
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_SHOULD_WARP_TO_COUNTER
+ special CallTrainerTowerFunc
+ .endm
+
+ @ Plays the encounter music for the trainer number in VAR_TEMP_1
+ .macro ttower_encountermusic
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_ENCOUNTER_MUSIC
+ special CallTrainerTowerFunc
+ .endm
+
+ @ TRUE if the player reached the Battle Tower owner, FALSE otherwise
+ .macro ttower_getbeatchallenge
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_BEAT_CHALLENGE
+ special CallTrainerTowerFunc
+ .endm
diff --git a/asm/overworld.s b/asm/overworld.s
index f68782acf..5b3c01652 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -1718,7 +1718,7 @@ sub_8055864: @ 8055864
bl sav1_reset_battle_music_maybe
bl mapheader_run_script_with_tag_x3
bl TryRegenerateRenewableHiddenItems
- bl not_trainer_hill_battle_pyramid
+ bl InitMap
ldr r4, _0805591C @ =gMapHeader
ldr r0, [r4]
bl copy_map_tileset2_to_vram_2
@@ -1798,7 +1798,7 @@ _08055974:
bl UpdateLocationHistoryForRoamer
bl RoamerMoveToOtherLocationSet
bl sub_8110920
- bl not_trainer_hill_battle_pyramid
+ bl InitMap
pop {r4}
pop {r0}
bx r0
@@ -1823,7 +1823,7 @@ sub_80559A8: @ 80559A8
bl sub_8110920
bl sub_8111708
bl set_current_map_header_from_sav1
- bl not_trainer_hill_battle_pyramid
+ bl InitMap
pop {r0}
bx r0
.align 2, 0
@@ -3843,7 +3843,7 @@ CB2_ContinueSavedGame: @ 8056938
bl sub_80550A8
bl UnfreezeObjectEvents
bl sub_8054E40
- bl sub_80589E8
+ bl InitMapFromSavedGame
bl PlayTimeCounter_Start
bl ScriptContext1_Init
bl ScriptContext2_Disable
@@ -5128,7 +5128,7 @@ sub_8057430: @ 8057430
bl sub_80550A8
bl UnfreezeObjectEvents
bl sub_8054E40
- bl sub_80589E8
+ bl InitMapFromSavedGame
bl PlayTimeCounter_Start
bl ScriptContext1_Init
ldr r1, _08057488 @ =gUnknown_2031DE0
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 2681f52c9..105436342 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -17,6 +17,7 @@
#include "constants/spawn_points.h"
#include "constants/field_effects.h"
#include "constants/trainers.h"
+#include "constants/trainer_tower.h"
#include "constants/object_events.h"
#include "constants/fame_checker.h"
#include "constants/seagallop.h"
@@ -209,17 +210,17 @@ gStdScriptsEnd::
.include "data/maps/SixIsland_PatternBush/scripts.inc"
.include "data/maps/SixIsland_AlteringCave/scripts.inc"
.include "data/maps/NavelRock_Exterior/scripts.inc"
- .include "data/maps/SevenIsland_TrainerTower_1F/scripts.inc"
- .include "data/maps/SevenIsland_TrainerTower_2F/scripts.inc"
- .include "data/maps/SevenIsland_TrainerTower_3F/scripts.inc"
- .include "data/maps/SevenIsland_TrainerTower_4F/scripts.inc"
- .include "data/maps/SevenIsland_TrainerTower_5F/scripts.inc"
- .include "data/maps/SevenIsland_TrainerTower_6F/scripts.inc"
- .include "data/maps/SevenIsland_TrainerTower_7F/scripts.inc"
- .include "data/maps/SevenIsland_TrainerTower_8F/scripts.inc"
- .include "data/maps/SevenIsland_TrainerTower_Roof/scripts.inc"
- .include "data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc"
- .include "data/maps/SevenIsland_TrainerTower_Elevator/scripts.inc"
+ .include "data/maps/TrainerTower_1F/scripts.inc"
+ .include "data/maps/TrainerTower_2F/scripts.inc"
+ .include "data/maps/TrainerTower_3F/scripts.inc"
+ .include "data/maps/TrainerTower_4F/scripts.inc"
+ .include "data/maps/TrainerTower_5F/scripts.inc"
+ .include "data/maps/TrainerTower_6F/scripts.inc"
+ .include "data/maps/TrainerTower_7F/scripts.inc"
+ .include "data/maps/TrainerTower_8F/scripts.inc"
+ .include "data/maps/TrainerTower_Roof/scripts.inc"
+ .include "data/maps/TrainerTower_Lobby/scripts.inc"
+ .include "data/maps/TrainerTower_Elevator/scripts.inc"
.include "data/maps/FiveIsland_LostCave_Entrance/scripts.inc"
.include "data/maps/FiveIsland_LostCave_Room1/scripts.inc"
.include "data/maps/FiveIsland_LostCave_Room2/scripts.inc"
@@ -594,7 +595,7 @@ gStdScriptsEnd::
.include "data/maps/FiveIsland_RocketWarehouse/text.inc"
.include "data/maps/SixIsland_DottedHole_SapphireRoom/text.inc"
.include "data/maps/SixIsland_PatternBush/text.inc"
- .include "data/maps/SevenIsland_TrainerTower_Lobby/text.inc"
+ .include "data/maps/TrainerTower_Lobby/text.inc"
.include "data/maps/FiveIsland_LostCave_Room1/text.inc"
.include "data/maps/FiveIsland_LostCave_Room4/text.inc"
.include "data/maps/FiveIsland_LostCave_Room10/text.inc"
@@ -1407,7 +1408,7 @@ Route18_EastEntrance_1F_EventScript_1A77C1:: @ 81A77C1
.include "data/scripts/route23.inc"
-EventScript_1A7AB9:: @ 81A7AB9
+EventScript_GetElevatorFloor:: @ 81A7AB9
special Special_GetElevatorFloor
return
diff --git a/data/layouts/SevenIsland_TrainerTower_1F/border.bin b/data/layouts/TrainerTower_1F/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/SevenIsland_TrainerTower_1F/border.bin
+++ b/data/layouts/TrainerTower_1F/border.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_1F/map.bin b/data/layouts/TrainerTower_1F/map.bin
index 812cea451..812cea451 100644
--- a/data/layouts/SevenIsland_TrainerTower_1F/map.bin
+++ b/data/layouts/TrainerTower_1F/map.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_2F/border.bin b/data/layouts/TrainerTower_1F_Doubles/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/SevenIsland_TrainerTower_2F/border.bin
+++ b/data/layouts/TrainerTower_1F_Doubles/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834BC2C/map.bin b/data/layouts/TrainerTower_1F_Doubles/map.bin
index 891ae066e..891ae066e 100644
--- a/data/layouts/UnusedLayout_834BC2C/map.bin
+++ b/data/layouts/TrainerTower_1F_Doubles/map.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_3F/border.bin b/data/layouts/TrainerTower_1F_Knockout/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/SevenIsland_TrainerTower_3F/border.bin
+++ b/data/layouts/TrainerTower_1F_Knockout/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834D06C/map.bin b/data/layouts/TrainerTower_1F_Knockout/map.bin
index 3e3ebcc94..3e3ebcc94 100644
--- a/data/layouts/UnusedLayout_834D06C/map.bin
+++ b/data/layouts/TrainerTower_1F_Knockout/map.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_4F/border.bin b/data/layouts/TrainerTower_2F/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/SevenIsland_TrainerTower_4F/border.bin
+++ b/data/layouts/TrainerTower_2F/border.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_2F/map.bin b/data/layouts/TrainerTower_2F/map.bin
index 7ae889af1..7ae889af1 100644
--- a/data/layouts/SevenIsland_TrainerTower_2F/map.bin
+++ b/data/layouts/TrainerTower_2F/map.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_5F/border.bin b/data/layouts/TrainerTower_2F_Doubles/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/SevenIsland_TrainerTower_5F/border.bin
+++ b/data/layouts/TrainerTower_2F_Doubles/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834BEB4/map.bin b/data/layouts/TrainerTower_2F_Doubles/map.bin
index ab44abb18..ab44abb18 100644
--- a/data/layouts/UnusedLayout_834BEB4/map.bin
+++ b/data/layouts/TrainerTower_2F_Doubles/map.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_6F/border.bin b/data/layouts/TrainerTower_2F_Knockout/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/SevenIsland_TrainerTower_6F/border.bin
+++ b/data/layouts/TrainerTower_2F_Knockout/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834D2F4/map.bin b/data/layouts/TrainerTower_2F_Knockout/map.bin
index cfc96995c..cfc96995c 100644
--- a/data/layouts/UnusedLayout_834D2F4/map.bin
+++ b/data/layouts/TrainerTower_2F_Knockout/map.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_7F/border.bin b/data/layouts/TrainerTower_3F/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/SevenIsland_TrainerTower_7F/border.bin
+++ b/data/layouts/TrainerTower_3F/border.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_3F/map.bin b/data/layouts/TrainerTower_3F/map.bin
index c01e70c2f..c01e70c2f 100644
--- a/data/layouts/SevenIsland_TrainerTower_3F/map.bin
+++ b/data/layouts/TrainerTower_3F/map.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_8F/border.bin b/data/layouts/TrainerTower_3F_Doubles/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/SevenIsland_TrainerTower_8F/border.bin
+++ b/data/layouts/TrainerTower_3F_Doubles/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834C13C/map.bin b/data/layouts/TrainerTower_3F_Doubles/map.bin
index 514cb7239..514cb7239 100644
--- a/data/layouts/UnusedLayout_834C13C/map.bin
+++ b/data/layouts/TrainerTower_3F_Doubles/map.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_Elevator/border.bin b/data/layouts/TrainerTower_3F_Knockout/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/SevenIsland_TrainerTower_Elevator/border.bin
+++ b/data/layouts/TrainerTower_3F_Knockout/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834D57C/map.bin b/data/layouts/TrainerTower_3F_Knockout/map.bin
index da9cc3f75..da9cc3f75 100644
--- a/data/layouts/UnusedLayout_834D57C/map.bin
+++ b/data/layouts/TrainerTower_3F_Knockout/map.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_Lobby/border.bin b/data/layouts/TrainerTower_4F/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/SevenIsland_TrainerTower_Lobby/border.bin
+++ b/data/layouts/TrainerTower_4F/border.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_4F/map.bin b/data/layouts/TrainerTower_4F/map.bin
index 057d7f955..057d7f955 100644
--- a/data/layouts/SevenIsland_TrainerTower_4F/map.bin
+++ b/data/layouts/TrainerTower_4F/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834BC2C/border.bin b/data/layouts/TrainerTower_4F_Doubles/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834BC2C/border.bin
+++ b/data/layouts/TrainerTower_4F_Doubles/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834C3C4/map.bin b/data/layouts/TrainerTower_4F_Doubles/map.bin
index d9a50b7a1..d9a50b7a1 100644
--- a/data/layouts/UnusedLayout_834C3C4/map.bin
+++ b/data/layouts/TrainerTower_4F_Doubles/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834BEB4/border.bin b/data/layouts/TrainerTower_4F_Knockout/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834BEB4/border.bin
+++ b/data/layouts/TrainerTower_4F_Knockout/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834D804/map.bin b/data/layouts/TrainerTower_4F_Knockout/map.bin
index cf5e1e94e..cf5e1e94e 100644
--- a/data/layouts/UnusedLayout_834D804/map.bin
+++ b/data/layouts/TrainerTower_4F_Knockout/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834C13C/border.bin b/data/layouts/TrainerTower_5F/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834C13C/border.bin
+++ b/data/layouts/TrainerTower_5F/border.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_5F/map.bin b/data/layouts/TrainerTower_5F/map.bin
index d580e7d2d..d580e7d2d 100644
--- a/data/layouts/SevenIsland_TrainerTower_5F/map.bin
+++ b/data/layouts/TrainerTower_5F/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834C3C4/border.bin b/data/layouts/TrainerTower_5F_Doubles/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834C3C4/border.bin
+++ b/data/layouts/TrainerTower_5F_Doubles/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834C64C/map.bin b/data/layouts/TrainerTower_5F_Doubles/map.bin
index 37b4aba85..37b4aba85 100644
--- a/data/layouts/UnusedLayout_834C64C/map.bin
+++ b/data/layouts/TrainerTower_5F_Doubles/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834C64C/border.bin b/data/layouts/TrainerTower_5F_Knockout/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834C64C/border.bin
+++ b/data/layouts/TrainerTower_5F_Knockout/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834DA8C/map.bin b/data/layouts/TrainerTower_5F_Knockout/map.bin
index 1f10bfff1..1f10bfff1 100644
--- a/data/layouts/UnusedLayout_834DA8C/map.bin
+++ b/data/layouts/TrainerTower_5F_Knockout/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834C8D4/border.bin b/data/layouts/TrainerTower_6F/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834C8D4/border.bin
+++ b/data/layouts/TrainerTower_6F/border.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_6F/map.bin b/data/layouts/TrainerTower_6F/map.bin
index 3c2c3165c..3c2c3165c 100644
--- a/data/layouts/SevenIsland_TrainerTower_6F/map.bin
+++ b/data/layouts/TrainerTower_6F/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834CB5C/border.bin b/data/layouts/TrainerTower_6F_Doubles/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834CB5C/border.bin
+++ b/data/layouts/TrainerTower_6F_Doubles/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834C8D4/map.bin b/data/layouts/TrainerTower_6F_Doubles/map.bin
index 2df5cd891..2df5cd891 100644
--- a/data/layouts/UnusedLayout_834C8D4/map.bin
+++ b/data/layouts/TrainerTower_6F_Doubles/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834CDE4/border.bin b/data/layouts/TrainerTower_6F_Knockout/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834CDE4/border.bin
+++ b/data/layouts/TrainerTower_6F_Knockout/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834DD14/map.bin b/data/layouts/TrainerTower_6F_Knockout/map.bin
index fe3d6f908..fe3d6f908 100644
--- a/data/layouts/UnusedLayout_834DD14/map.bin
+++ b/data/layouts/TrainerTower_6F_Knockout/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834D06C/border.bin b/data/layouts/TrainerTower_7F/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834D06C/border.bin
+++ b/data/layouts/TrainerTower_7F/border.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_7F/map.bin b/data/layouts/TrainerTower_7F/map.bin
index d9bb110cf..d9bb110cf 100644
--- a/data/layouts/SevenIsland_TrainerTower_7F/map.bin
+++ b/data/layouts/TrainerTower_7F/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834D2F4/border.bin b/data/layouts/TrainerTower_7F_Doubles/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834D2F4/border.bin
+++ b/data/layouts/TrainerTower_7F_Doubles/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834CB5C/map.bin b/data/layouts/TrainerTower_7F_Doubles/map.bin
index e977b7e26..e977b7e26 100644
--- a/data/layouts/UnusedLayout_834CB5C/map.bin
+++ b/data/layouts/TrainerTower_7F_Doubles/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834D57C/border.bin b/data/layouts/TrainerTower_7F_Knockout/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834D57C/border.bin
+++ b/data/layouts/TrainerTower_7F_Knockout/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834DF9C/map.bin b/data/layouts/TrainerTower_7F_Knockout/map.bin
index 241077797..241077797 100644
--- a/data/layouts/UnusedLayout_834DF9C/map.bin
+++ b/data/layouts/TrainerTower_7F_Knockout/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834D804/border.bin b/data/layouts/TrainerTower_8F/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834D804/border.bin
+++ b/data/layouts/TrainerTower_8F/border.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_8F/map.bin b/data/layouts/TrainerTower_8F/map.bin
index 6ba6588be..6ba6588be 100644
--- a/data/layouts/SevenIsland_TrainerTower_8F/map.bin
+++ b/data/layouts/TrainerTower_8F/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834DA8C/border.bin b/data/layouts/TrainerTower_8F_Doubles/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834DA8C/border.bin
+++ b/data/layouts/TrainerTower_8F_Doubles/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834CDE4/map.bin b/data/layouts/TrainerTower_8F_Doubles/map.bin
index e358d2f3d..e358d2f3d 100644
--- a/data/layouts/UnusedLayout_834CDE4/map.bin
+++ b/data/layouts/TrainerTower_8F_Doubles/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834DD14/border.bin b/data/layouts/TrainerTower_8F_Knockout/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834DD14/border.bin
+++ b/data/layouts/TrainerTower_8F_Knockout/border.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834E224/map.bin b/data/layouts/TrainerTower_8F_Knockout/map.bin
index bb5ccf05c..bb5ccf05c 100644
--- a/data/layouts/UnusedLayout_834E224/map.bin
+++ b/data/layouts/TrainerTower_8F_Knockout/map.bin
Binary files differ
diff --git a/data/layouts/UnusedLayout_834DF9C/border.bin b/data/layouts/TrainerTower_Elevator/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834DF9C/border.bin
+++ b/data/layouts/TrainerTower_Elevator/border.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_Elevator/map.bin b/data/layouts/TrainerTower_Elevator/map.bin
index 42e08c38d..42e08c38d 100644
--- a/data/layouts/SevenIsland_TrainerTower_Elevator/map.bin
+++ b/data/layouts/TrainerTower_Elevator/map.bin
diff --git a/data/layouts/UnusedLayout_834E224/border.bin b/data/layouts/TrainerTower_Lobby/border.bin
index a886cd764..a886cd764 100644
--- a/data/layouts/UnusedLayout_834E224/border.bin
+++ b/data/layouts/TrainerTower_Lobby/border.bin
Binary files differ
diff --git a/data/layouts/SevenIsland_TrainerTower_Lobby/map.bin b/data/layouts/TrainerTower_Lobby/map.bin
index b98077279..b98077279 100644
--- a/data/layouts/SevenIsland_TrainerTower_Lobby/map.bin
+++ b/data/layouts/TrainerTower_Lobby/map.bin
diff --git a/data/layouts/SevenIsland_TrainerTower_Roof/border.bin b/data/layouts/TrainerTower_Roof/border.bin
index f94adee61..f94adee61 100644
--- a/data/layouts/SevenIsland_TrainerTower_Roof/border.bin
+++ b/data/layouts/TrainerTower_Roof/border.bin
diff --git a/data/layouts/SevenIsland_TrainerTower_Roof/map.bin b/data/layouts/TrainerTower_Roof/map.bin
index 37d57f3fe..37d57f3fe 100644
--- a/data/layouts/SevenIsland_TrainerTower_Roof/map.bin
+++ b/data/layouts/TrainerTower_Roof/map.bin
diff --git a/data/layouts/layouts.json b/data/layouts/layouts.json
index 63fc06562..8f09ae939 100644
--- a/data/layouts/layouts.json
+++ b/data/layouts/layouts.json
@@ -3356,136 +3356,136 @@
"blockdata_filepath": "data/layouts/FourIsland_IcefallCave_Back/map.bin"
},
{
- "id": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_LOBBY",
- "name": "SevenIsland_TrainerTower_Lobby_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_LOBBY",
+ "name": "TrainerTower_Lobby_Layout",
"width": 19,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/SevenIsland_TrainerTower_Lobby/border.bin",
- "blockdata_filepath": "data/layouts/SevenIsland_TrainerTower_Lobby/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_Lobby/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_Lobby/map.bin"
},
{
- "id": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_1F",
- "name": "SevenIsland_TrainerTower_1F_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_1F",
+ "name": "TrainerTower_1F_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/SevenIsland_TrainerTower_1F/border.bin",
- "blockdata_filepath": "data/layouts/SevenIsland_TrainerTower_1F/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_1F/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_1F/map.bin"
},
{
- "id": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_2F",
- "name": "SevenIsland_TrainerTower_2F_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_2F",
+ "name": "TrainerTower_2F_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/SevenIsland_TrainerTower_2F/border.bin",
- "blockdata_filepath": "data/layouts/SevenIsland_TrainerTower_2F/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_2F/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_2F/map.bin"
},
{
- "id": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_3F",
- "name": "SevenIsland_TrainerTower_3F_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_3F",
+ "name": "TrainerTower_3F_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/SevenIsland_TrainerTower_3F/border.bin",
- "blockdata_filepath": "data/layouts/SevenIsland_TrainerTower_3F/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_3F/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_3F/map.bin"
},
{
- "id": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_4F",
- "name": "SevenIsland_TrainerTower_4F_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_4F",
+ "name": "TrainerTower_4F_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/SevenIsland_TrainerTower_4F/border.bin",
- "blockdata_filepath": "data/layouts/SevenIsland_TrainerTower_4F/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_4F/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_4F/map.bin"
},
{
- "id": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_5F",
- "name": "SevenIsland_TrainerTower_5F_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_5F",
+ "name": "TrainerTower_5F_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/SevenIsland_TrainerTower_5F/border.bin",
- "blockdata_filepath": "data/layouts/SevenIsland_TrainerTower_5F/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_5F/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_5F/map.bin"
},
{
- "id": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_6F",
- "name": "SevenIsland_TrainerTower_6F_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_6F",
+ "name": "TrainerTower_6F_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/SevenIsland_TrainerTower_6F/border.bin",
- "blockdata_filepath": "data/layouts/SevenIsland_TrainerTower_6F/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_6F/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_6F/map.bin"
},
{
- "id": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_7F",
- "name": "SevenIsland_TrainerTower_7F_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_7F",
+ "name": "TrainerTower_7F_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/SevenIsland_TrainerTower_7F/border.bin",
- "blockdata_filepath": "data/layouts/SevenIsland_TrainerTower_7F/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_7F/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_7F/map.bin"
},
{
- "id": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_8F",
- "name": "SevenIsland_TrainerTower_8F_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_8F",
+ "name": "TrainerTower_8F_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/SevenIsland_TrainerTower_8F/border.bin",
- "blockdata_filepath": "data/layouts/SevenIsland_TrainerTower_8F/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_8F/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_8F/map.bin"
},
{
- "id": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_ROOF",
- "name": "SevenIsland_TrainerTower_Roof_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_ROOF",
+ "name": "TrainerTower_Roof_Layout",
"width": 18,
"height": 16,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/SevenIsland_TrainerTower_Roof/border.bin",
- "blockdata_filepath": "data/layouts/SevenIsland_TrainerTower_Roof/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_Roof/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_Roof/map.bin"
},
{
- "id": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR",
- "name": "SevenIsland_TrainerTower_Elevator_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_ELEVATOR",
+ "name": "TrainerTower_Elevator_Layout",
"width": 5,
"height": 7,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D4ECC",
- "border_filepath": "data/layouts/SevenIsland_TrainerTower_Elevator/border.bin",
- "blockdata_filepath": "data/layouts/SevenIsland_TrainerTower_Elevator/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_Elevator/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_Elevator/map.bin"
},
{
"id": "LAYOUT_CERULEAN_CITY_HOUSE5",
@@ -4184,196 +4184,196 @@
"blockdata_filepath": "data/layouts/NavelRock_Fork/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834BC2C",
- "name": "UnusedLayout_834BC2C_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_1F_DOUBLES",
+ "name": "TrainerTower_1F_Doubles_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834BC2C/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834BC2C/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_1F_Doubles/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_1F_Doubles/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834BEB4",
- "name": "UnusedLayout_834BEB4_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_2F_DOUBLES",
+ "name": "TrainerTower_2F_Doubles_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834BEB4/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834BEB4/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_2F_Doubles/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_2F_Doubles/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834C13C",
- "name": "UnusedLayout_834C13C_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_3F_DOUBLES",
+ "name": "TrainerTower_3F_Doubles_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834C13C/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834C13C/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_3F_Doubles/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_3F_Doubles/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834C3C4",
- "name": "UnusedLayout_834C3C4_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_4F_DOUBLES",
+ "name": "TrainerTower_4F_Doubles_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834C3C4/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834C3C4/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_4F_Doubles/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_4F_Doubles/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834C64C",
- "name": "UnusedLayout_834C64C_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_5F_DOUBLES",
+ "name": "TrainerTower_5F_Doubles_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834C64C/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834C64C/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_5F_Doubles/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_5F_Doubles/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834C8D4",
- "name": "UnusedLayout_834C8D4_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_6F_DOUBLES",
+ "name": "TrainerTower_6F_Doubles_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834C8D4/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834C8D4/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_6F_Doubles/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_6F_Doubles/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834CB5C",
- "name": "UnusedLayout_834CB5C_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_7F_DOUBLES",
+ "name": "TrainerTower_7F_Doubles_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834CB5C/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834CB5C/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_7F_Doubles/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_7F_Doubles/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834CDE4",
- "name": "UnusedLayout_834CDE4_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_8F_DOUBLES",
+ "name": "TrainerTower_8F_Doubles_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834CDE4/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834CDE4/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_8F_Doubles/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_8F_Doubles/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834D06C",
- "name": "UnusedLayout_834D06C_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_1F_KNOCKOUT",
+ "name": "TrainerTower_1F_Knockout_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834D06C/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834D06C/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_1F_Knockout/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_1F_Knockout/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834D2F4",
- "name": "UnusedLayout_834D2F4_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_2F_KNOCKOUT",
+ "name": "TrainerTower_2F_Knockout_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834D2F4/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834D2F4/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_2F_Knockout/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_2F_Knockout/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834D57C",
- "name": "UnusedLayout_834D57C_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_3F_KNOCKOUT",
+ "name": "TrainerTower_3F_Knockout_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834D57C/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834D57C/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_3F_Knockout/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_3F_Knockout/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834D804",
- "name": "UnusedLayout_834D804_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_4F_KNOCKOUT",
+ "name": "TrainerTower_4F_Knockout_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834D804/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834D804/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_4F_Knockout/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_4F_Knockout/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834DA8C",
- "name": "UnusedLayout_834DA8C_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_5F_KNOCKOUT",
+ "name": "TrainerTower_5F_Knockout_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834DA8C/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834DA8C/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_5F_Knockout/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_5F_Knockout/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834DD14",
- "name": "UnusedLayout_834DD14_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_6F_KNOCKOUT",
+ "name": "TrainerTower_6F_Knockout_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834DD14/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834DD14/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_6F_Knockout/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_6F_Knockout/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834DF9C",
- "name": "UnusedLayout_834DF9C_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_7F_KNOCKOUT",
+ "name": "TrainerTower_7F_Knockout_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834DF9C/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834DF9C/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_7F_Knockout/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_7F_Knockout/map.bin"
},
{
- "id": "LAYOUT_UNUSED_LAYOUT_834E224",
- "name": "UnusedLayout_834E224_Layout",
+ "id": "LAYOUT_TRAINER_TOWER_8F_KNOCKOUT",
+ "name": "TrainerTower_8F_Knockout_Layout",
"width": 18,
"height": 17,
"border_width": 2,
"border_height": 2,
"primary_tileset": "gTileset_82D4BB4",
"secondary_tileset": "gTileset_82D5094",
- "border_filepath": "data/layouts/UnusedLayout_834E224/border.bin",
- "blockdata_filepath": "data/layouts/UnusedLayout_834E224/map.bin"
+ "border_filepath": "data/layouts/TrainerTower_8F_Knockout/border.bin",
+ "blockdata_filepath": "data/layouts/TrainerTower_8F_Knockout/map.bin"
},
{
"id": "LAYOUT_SEVEN_ISLAND_HOUSE_ROOM1",
diff --git a/data/maps/CeladonCity_DepartmentStore_Elevator/scripts.inc b/data/maps/CeladonCity_DepartmentStore_Elevator/scripts.inc
index 14198db2f..5992525c9 100644
--- a/data/maps/CeladonCity_DepartmentStore_Elevator/scripts.inc
+++ b/data/maps/CeladonCity_DepartmentStore_Elevator/scripts.inc
@@ -4,7 +4,7 @@ CeladonCity_DepartmentStore_Elevator_MapScripts:: @ 816C152
CeladonCity_DepartmentStore_Elevator_EventScript_16C153:: @ 816C153
lockall
setvar VAR_0x8004, 3
- call_if_unset FLAG_TEMP_2, EventScript_1A7AB9
+ call_if_unset FLAG_TEMP_2, EventScript_GetElevatorFloor
copyvar VAR_0x8005, VAR_ELEVATOR_FLOOR
special Special_DrawElevatorCurrentFloorWindow
message Text_WantWhichFloor
diff --git a/data/maps/RocketHideout_Elevator/scripts.inc b/data/maps/RocketHideout_Elevator/scripts.inc
index f649e5c40..e797e98a9 100644
--- a/data/maps/RocketHideout_Elevator/scripts.inc
+++ b/data/maps/RocketHideout_Elevator/scripts.inc
@@ -5,7 +5,7 @@ RocketHideout_Elevator_EventScript_1614D9:: @ 81614D9
lockall
goto_if_unset FLAG_CAN_USE_ROCKET_HIDEOUT_LIFT, EventScript_16161B
setvar VAR_0x8004, 2
- call_if_unset FLAG_TEMP_2, EventScript_1A7AB9
+ call_if_unset FLAG_TEMP_2, EventScript_GetElevatorFloor
copyvar VAR_0x8005, VAR_ELEVATOR_FLOOR
special Special_DrawElevatorCurrentFloorWindow
message Text_WantWhichFloor
diff --git a/data/maps/SevenIsland_TrainerTower/map.json b/data/maps/SevenIsland_TrainerTower/map.json
index 47fb5fa98..31a250297 100644
--- a/data/maps/SevenIsland_TrainerTower/map.json
+++ b/data/maps/SevenIsland_TrainerTower/map.json
@@ -51,7 +51,7 @@
"x": 58,
"y": 7,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY",
+ "dest_map": "MAP_TRAINER_TOWER_LOBBY",
"dest_warp_id": 1
}
],
diff --git a/data/maps/SevenIsland_TrainerTower_1F/scripts.inc b/data/maps/SevenIsland_TrainerTower_1F/scripts.inc
deleted file mode 100644
index 4987c1142..000000000
--- a/data/maps/SevenIsland_TrainerTower_1F/scripts.inc
+++ /dev/null
@@ -1,60 +0,0 @@
-SevenIsland_TrainerTower_1F_MapScripts:: @ 81646B8
- map_script MAP_SCRIPT_ON_RESUME, SevenIsland_TrainerTower_1F_MapScript1_1C4F54
- map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TrainerTower_1F_MapScript2_1C4F62
- map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_TrainerTower_1F_MapScript3_1C5046
- .byte 0
-
-SevenIsland_TrainerTower_2F_EventScript_1646C8:: @ 81646C8
-SevenIsland_TrainerTower_4F_EventScript_1646C8:: @ 81646C8
-SevenIsland_TrainerTower_6F_EventScript_1646C8:: @ 81646C8
-SevenIsland_TrainerTower_8F_EventScript_1646C8:: @ 81646C8
-SevenIsland_TrainerTower_5F_EventScript_1646C8:: @ 81646C8
-SevenIsland_TrainerTower_7F_EventScript_1646C8:: @ 81646C8
-SevenIsland_TrainerTower_3F_EventScript_1646C8:: @ 81646C8
-SevenIsland_TrainerTower_1F_EventScript_1646C8:: @ 81646C8
- call EventScript_1C52F4
- end
-
-SevenIsland_TrainerTower_2F_EventScript_1646CE:: @ 81646CE
-SevenIsland_TrainerTower_4F_EventScript_1646CE:: @ 81646CE
-SevenIsland_TrainerTower_6F_EventScript_1646CE:: @ 81646CE
-SevenIsland_TrainerTower_8F_EventScript_1646CE:: @ 81646CE
-SevenIsland_TrainerTower_5F_EventScript_1646CE:: @ 81646CE
-SevenIsland_TrainerTower_7F_EventScript_1646CE:: @ 81646CE
-SevenIsland_TrainerTower_3F_EventScript_1646CE:: @ 81646CE
-SevenIsland_TrainerTower_1F_EventScript_1646CE:: @ 81646CE
- call EventScript_1C533B
- end
-
-SevenIsland_TrainerTower_2F_EventScript_1646D4:: @ 81646D4
-SevenIsland_TrainerTower_4F_EventScript_1646D4:: @ 81646D4
-SevenIsland_TrainerTower_6F_EventScript_1646D4:: @ 81646D4
-SevenIsland_TrainerTower_8F_EventScript_1646D4:: @ 81646D4
-SevenIsland_TrainerTower_5F_EventScript_1646D4:: @ 81646D4
-SevenIsland_TrainerTower_7F_EventScript_1646D4:: @ 81646D4
-SevenIsland_TrainerTower_3F_EventScript_1646D4:: @ 81646D4
-SevenIsland_TrainerTower_1F_EventScript_1646D4:: @ 81646D4
- call EventScript_1C5382
- end
-
-SevenIsland_TrainerTower_2F_EventScript_1646DA:: @ 81646DA
-SevenIsland_TrainerTower_4F_EventScript_1646DA:: @ 81646DA
-SevenIsland_TrainerTower_6F_EventScript_1646DA:: @ 81646DA
-SevenIsland_TrainerTower_8F_EventScript_1646DA:: @ 81646DA
-SevenIsland_TrainerTower_5F_EventScript_1646DA:: @ 81646DA
-SevenIsland_TrainerTower_7F_EventScript_1646DA:: @ 81646DA
-SevenIsland_TrainerTower_3F_EventScript_1646DA:: @ 81646DA
-SevenIsland_TrainerTower_1F_EventScript_1646DA:: @ 81646DA
- call EventScript_1C538C
- end
-
-SevenIsland_TrainerTower_2F_EventScript_1646E0:: @ 81646E0
-SevenIsland_TrainerTower_4F_EventScript_1646E0:: @ 81646E0
-SevenIsland_TrainerTower_6F_EventScript_1646E0:: @ 81646E0
-SevenIsland_TrainerTower_8F_EventScript_1646E0:: @ 81646E0
-SevenIsland_TrainerTower_7F_EventScript_1646E0:: @ 81646E0
-SevenIsland_TrainerTower_Roof_EventScript_1646E0:: @ 81646E0
-SevenIsland_TrainerTower_5F_EventScript_1646E0:: @ 81646E0
-SevenIsland_TrainerTower_3F_EventScript_1646E0:: @ 81646E0
- call EventScript_1C53AA
- end
diff --git a/data/maps/SevenIsland_TrainerTower_2F/scripts.inc b/data/maps/SevenIsland_TrainerTower_2F/scripts.inc
deleted file mode 100644
index 9e61d0dfd..000000000
--- a/data/maps/SevenIsland_TrainerTower_2F/scripts.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-SevenIsland_TrainerTower_2F_MapScripts:: @ 81646E6
- map_script MAP_SCRIPT_ON_RESUME, SevenIsland_TrainerTower_2F_MapScript1_1C4F54
- map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TrainerTower_2F_MapScript2_1C4F62
- map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_TrainerTower_2F_MapScript3_1C5046
- .byte 0
-
-SevenIsland_TrainerTower_2F_EventScript_1646F6:: @ 81646F6
- call EventScript_1C52F4
- end
-
-EventScript_1646FC:: @ 81646FC
- call EventScript_1C533B
- end
-
-EventScript_164702:: @ 8164702
- call EventScript_1C5382
- end
-
-EventScript_164708:: @ 8164708
- call EventScript_1C538C
- end
-
-EventScript_16470E:: @ 816470E
- call EventScript_1C53AA
- end
diff --git a/data/maps/SevenIsland_TrainerTower_3F/scripts.inc b/data/maps/SevenIsland_TrainerTower_3F/scripts.inc
deleted file mode 100644
index e9afcff6c..000000000
--- a/data/maps/SevenIsland_TrainerTower_3F/scripts.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-SevenIsland_TrainerTower_3F_MapScripts:: @ 8164714
- map_script MAP_SCRIPT_ON_RESUME, SevenIsland_TrainerTower_3F_MapScript1_1C4F54
- map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TrainerTower_3F_MapScript2_1C4F62
- map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_TrainerTower_3F_MapScript3_1C5046
- .byte 0
-
-SevenIsland_TrainerTower_3F_EventScript_164724:: @ 8164724
- call EventScript_1C52F4
- end
-
-EventScript_16472A:: @ 816472A
- call EventScript_1C533B
- end
-
-EventScript_164730:: @ 8164730
- call EventScript_1C5382
- end
-
-EventScript_164736:: @ 8164736
- call EventScript_1C538C
- end
-
-EventScript_16473C:: @ 816473C
- call EventScript_1C53AA
- end
diff --git a/data/maps/SevenIsland_TrainerTower_4F/scripts.inc b/data/maps/SevenIsland_TrainerTower_4F/scripts.inc
deleted file mode 100644
index cfa0be11b..000000000
--- a/data/maps/SevenIsland_TrainerTower_4F/scripts.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-SevenIsland_TrainerTower_4F_MapScripts:: @ 8164742
- map_script MAP_SCRIPT_ON_RESUME, SevenIsland_TrainerTower_4F_MapScript1_1C4F54
- map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TrainerTower_4F_MapScript2_1C4F62
- map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_TrainerTower_4F_MapScript3_1C5046
- .byte 0
-
-SevenIsland_TrainerTower_4F_EventScript_164752:: @ 8164752
- call EventScript_1C52F4
- end
-
-EventScript_164758:: @ 8164758
- call EventScript_1C533B
- end
-
-EventScript_16475E:: @ 816475E
- call EventScript_1C5382
- end
-
-EventScript_164764:: @ 8164764
- call EventScript_1C538C
- end
-
-EventScript_16476A:: @ 816476A
- call EventScript_1C53AA
- end
diff --git a/data/maps/SevenIsland_TrainerTower_5F/scripts.inc b/data/maps/SevenIsland_TrainerTower_5F/scripts.inc
deleted file mode 100644
index 35ccdf129..000000000
--- a/data/maps/SevenIsland_TrainerTower_5F/scripts.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-SevenIsland_TrainerTower_5F_MapScripts:: @ 8164770
- map_script MAP_SCRIPT_ON_RESUME, SevenIsland_TrainerTower_5F_MapScript1_1C4F54
- map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TrainerTower_5F_MapScript2_1C4F62
- map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_TrainerTower_5F_MapScript3_1C5046
- .byte 0
-
-SevenIsland_TrainerTower_5F_EventScript_164780:: @ 8164780
- call EventScript_1C52F4
- end
-
-EventScript_164786:: @ 8164786
- call EventScript_1C533B
- end
-
-EventScript_16478C:: @ 816478C
- call EventScript_1C5382
- end
-
-EventScript_164792:: @ 8164792
- call EventScript_1C538C
- end
-
-EventScript_164798:: @ 8164798
- call EventScript_1C53AA
- end
diff --git a/data/maps/SevenIsland_TrainerTower_6F/map.json b/data/maps/SevenIsland_TrainerTower_6F/map.json
deleted file mode 100644
index abaab80d6..000000000
--- a/data/maps/SevenIsland_TrainerTower_6F/map.json
+++ /dev/null
@@ -1,135 +0,0 @@
-{
- "id": "MAP_SEVEN_ISLAND_TRAINER_TOWER_6F",
- "name": "SevenIsland_TrainerTower_6F",
- "layout": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_6F",
- "music": "MUS_T_TOWER",
- "region_map_section": "MAPSEC_TRAINER_TOWER_2",
- "requires_flash": false,
- "weather": "WEATHER_NONE",
- "map_type": "MAP_TYPE_8",
- "unknown_18": 0,
- "unknown_19": 2,
- "elevator_flag": 0,
- "battle_scene": "BATTLE_SCENE_0",
- "connections": null,
- "object_events": [
- {
- "graphics_id": "OBJECT_EVENT_GFX_TRAINER_TOWER_DUDE",
- "x": 9,
- "y": 7,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_6F_EventScript_1646E0",
- "flag": "FLAG_TEMP_6"
- },
- {
- "graphics_id": "OBJECT_EVENT_GFX_VAR_0",
- "x": 10,
- "y": 10,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_6F_EventScript_1646C8",
- "flag": "FLAG_TEMP_2"
- },
- {
- "graphics_id": "OBJECT_EVENT_GFX_VAR_1",
- "x": 15,
- "y": 13,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_6F_EventScript_1646CE",
- "flag": "FLAG_TEMP_3"
- },
- {
- "graphics_id": "OBJECT_EVENT_GFX_VAR_2",
- "x": 10,
- "y": 16,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_UP",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_6F_EventScript_1646D4",
- "flag": "FLAG_TEMP_4"
- },
- {
- "graphics_id": "OBJECT_EVENT_GFX_VAR_3",
- "x": 11,
- "y": 10,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_6F_EventScript_1646DA",
- "flag": "FLAG_TEMP_5"
- }
- ],
- "warp_events": [
- {
- "x": 15,
- "y": 6,
- "elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_7F",
- "dest_warp_id": 1
- },
- {
- "x": 4,
- "y": 6,
- "elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_5F",
- "dest_warp_id": 0
- },
- {
- "x": 13,
- "y": 5,
- "elevation": 0,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR",
- "dest_warp_id": 0
- }
- ],
- "coord_events": [
- {
- "type": "trigger",
- "x": 10,
- "y": 13,
- "elevation": 3,
- "var": "VAR_TEMP_E",
- "var_value": 0,
- "script": "SevenIsland_TrainerTower_6F_EventScript_1C54AF"
- },
- {
- "type": "trigger",
- "x": 9,
- "y": 12,
- "elevation": 3,
- "var": "VAR_TEMP_F",
- "var_value": 0,
- "script": "SevenIsland_TrainerTower_6F_EventScript_1C54B4"
- },
- {
- "type": "trigger",
- "x": 9,
- "y": 13,
- "elevation": 3,
- "var": "VAR_TEMP_F",
- "var_value": 0,
- "script": "SevenIsland_TrainerTower_6F_EventScript_1C54EA"
- }
- ],
- "bg_events": []
-}
diff --git a/data/maps/SevenIsland_TrainerTower_6F/scripts.inc b/data/maps/SevenIsland_TrainerTower_6F/scripts.inc
deleted file mode 100644
index 361c92749..000000000
--- a/data/maps/SevenIsland_TrainerTower_6F/scripts.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-SevenIsland_TrainerTower_6F_MapScripts:: @ 816479E
- map_script MAP_SCRIPT_ON_RESUME, SevenIsland_TrainerTower_6F_MapScript1_1C4F54
- map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TrainerTower_6F_MapScript2_1C4F62
- map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_TrainerTower_6F_MapScript3_1C5046
- .byte 0
-
-SevenIsland_TrainerTower_6F_EventScript_1647AE:: @ 81647AE
- call EventScript_1C52F4
- end
-
-EventScript_1647B4:: @ 81647B4
- call EventScript_1C533B
- end
-
-EventScript_1647BA:: @ 81647BA
- call EventScript_1C5382
- end
-
-EventScript_1647C0:: @ 81647C0
- call EventScript_1C538C
- end
-
-EventScript_1647C6:: @ 81647C6
- call EventScript_1C53AA
- end
diff --git a/data/maps/SevenIsland_TrainerTower_7F/map.json b/data/maps/SevenIsland_TrainerTower_7F/map.json
deleted file mode 100644
index 827c6c9ca..000000000
--- a/data/maps/SevenIsland_TrainerTower_7F/map.json
+++ /dev/null
@@ -1,135 +0,0 @@
-{
- "id": "MAP_SEVEN_ISLAND_TRAINER_TOWER_7F",
- "name": "SevenIsland_TrainerTower_7F",
- "layout": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_7F",
- "music": "MUS_T_TOWER",
- "region_map_section": "MAPSEC_TRAINER_TOWER_2",
- "requires_flash": false,
- "weather": "WEATHER_NONE",
- "map_type": "MAP_TYPE_8",
- "unknown_18": 0,
- "unknown_19": 2,
- "elevator_flag": 0,
- "battle_scene": "BATTLE_SCENE_0",
- "connections": null,
- "object_events": [
- {
- "graphics_id": "OBJECT_EVENT_GFX_TRAINER_TOWER_DUDE",
- "x": 9,
- "y": 7,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_7F_EventScript_1646E0",
- "flag": "FLAG_TEMP_6"
- },
- {
- "graphics_id": "OBJECT_EVENT_GFX_VAR_0",
- "x": 10,
- "y": 10,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_7F_EventScript_1646C8",
- "flag": "FLAG_TEMP_2"
- },
- {
- "graphics_id": "OBJECT_EVENT_GFX_VAR_1",
- "x": 15,
- "y": 13,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_7F_EventScript_1646CE",
- "flag": "FLAG_TEMP_3"
- },
- {
- "graphics_id": "OBJECT_EVENT_GFX_VAR_2",
- "x": 10,
- "y": 16,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_UP",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_7F_EventScript_1646D4",
- "flag": "FLAG_TEMP_4"
- },
- {
- "graphics_id": "OBJECT_EVENT_GFX_VAR_3",
- "x": 11,
- "y": 10,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_7F_EventScript_1646DA",
- "flag": "FLAG_TEMP_5"
- }
- ],
- "warp_events": [
- {
- "x": 15,
- "y": 6,
- "elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_8F",
- "dest_warp_id": 1
- },
- {
- "x": 4,
- "y": 6,
- "elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_6F",
- "dest_warp_id": 0
- },
- {
- "x": 13,
- "y": 5,
- "elevation": 0,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR",
- "dest_warp_id": 0
- }
- ],
- "coord_events": [
- {
- "type": "trigger",
- "x": 10,
- "y": 13,
- "elevation": 3,
- "var": "VAR_TEMP_E",
- "var_value": 0,
- "script": "SevenIsland_TrainerTower_7F_EventScript_1C54AF"
- },
- {
- "type": "trigger",
- "x": 9,
- "y": 12,
- "elevation": 3,
- "var": "VAR_TEMP_F",
- "var_value": 0,
- "script": "SevenIsland_TrainerTower_7F_EventScript_1C54B4"
- },
- {
- "type": "trigger",
- "x": 9,
- "y": 13,
- "elevation": 3,
- "var": "VAR_TEMP_F",
- "var_value": 0,
- "script": "SevenIsland_TrainerTower_7F_EventScript_1C54EA"
- }
- ],
- "bg_events": []
-}
diff --git a/data/maps/SevenIsland_TrainerTower_7F/scripts.inc b/data/maps/SevenIsland_TrainerTower_7F/scripts.inc
deleted file mode 100644
index be0036605..000000000
--- a/data/maps/SevenIsland_TrainerTower_7F/scripts.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-SevenIsland_TrainerTower_7F_MapScripts:: @ 81647CC
- map_script MAP_SCRIPT_ON_RESUME, SevenIsland_TrainerTower_7F_MapScript1_1C4F54
- map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TrainerTower_7F_MapScript2_1C4F62
- map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_TrainerTower_7F_MapScript3_1C5046
- .byte 0
-
-SevenIsland_TrainerTower_7F_EventScript_1647DC:: @ 81647DC
- call EventScript_1C52F4
- end
-
-EventScript_1647E2:: @ 81647E2
- call EventScript_1C533B
- end
-
-EventScript_1647E8:: @ 81647E8
- call EventScript_1C5382
- end
-
-EventScript_1647EE:: @ 81647EE
- call EventScript_1C538C
- end
-
-EventScript_1647F4:: @ 81647F4
- call EventScript_1C53AA
- end
diff --git a/data/maps/SevenIsland_TrainerTower_8F/map.json b/data/maps/SevenIsland_TrainerTower_8F/map.json
deleted file mode 100644
index ed9ba908f..000000000
--- a/data/maps/SevenIsland_TrainerTower_8F/map.json
+++ /dev/null
@@ -1,135 +0,0 @@
-{
- "id": "MAP_SEVEN_ISLAND_TRAINER_TOWER_8F",
- "name": "SevenIsland_TrainerTower_8F",
- "layout": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_8F",
- "music": "MUS_T_TOWER",
- "region_map_section": "MAPSEC_TRAINER_TOWER_2",
- "requires_flash": false,
- "weather": "WEATHER_NONE",
- "map_type": "MAP_TYPE_8",
- "unknown_18": 0,
- "unknown_19": 2,
- "elevator_flag": 0,
- "battle_scene": "BATTLE_SCENE_0",
- "connections": null,
- "object_events": [
- {
- "graphics_id": "OBJECT_EVENT_GFX_TRAINER_TOWER_DUDE",
- "x": 9,
- "y": 7,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_8F_EventScript_1646E0",
- "flag": "FLAG_TEMP_6"
- },
- {
- "graphics_id": "OBJECT_EVENT_GFX_VAR_0",
- "x": 10,
- "y": 10,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_8F_EventScript_1646C8",
- "flag": "FLAG_TEMP_2"
- },
- {
- "graphics_id": "OBJECT_EVENT_GFX_VAR_1",
- "x": 15,
- "y": 13,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_8F_EventScript_1646CE",
- "flag": "FLAG_TEMP_3"
- },
- {
- "graphics_id": "OBJECT_EVENT_GFX_VAR_2",
- "x": 10,
- "y": 16,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_UP",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_8F_EventScript_1646D4",
- "flag": "FLAG_TEMP_4"
- },
- {
- "graphics_id": "OBJECT_EVENT_GFX_VAR_3",
- "x": 11,
- "y": 10,
- "elevation": 3,
- "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
- "movement_range_x": 1,
- "movement_range_y": 1,
- "trainer_type": 0,
- "trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_8F_EventScript_1646DA",
- "flag": "FLAG_TEMP_5"
- }
- ],
- "warp_events": [
- {
- "x": 15,
- "y": 6,
- "elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_ROOF",
- "dest_warp_id": 1
- },
- {
- "x": 4,
- "y": 6,
- "elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_7F",
- "dest_warp_id": 0
- },
- {
- "x": 13,
- "y": 5,
- "elevation": 0,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR",
- "dest_warp_id": 0
- }
- ],
- "coord_events": [
- {
- "type": "trigger",
- "x": 10,
- "y": 13,
- "elevation": 3,
- "var": "VAR_TEMP_E",
- "var_value": 0,
- "script": "SevenIsland_TrainerTower_8F_EventScript_1C54AF"
- },
- {
- "type": "trigger",
- "x": 9,
- "y": 12,
- "elevation": 3,
- "var": "VAR_TEMP_F",
- "var_value": 0,
- "script": "SevenIsland_TrainerTower_8F_EventScript_1C54B4"
- },
- {
- "type": "trigger",
- "x": 9,
- "y": 13,
- "elevation": 3,
- "var": "VAR_TEMP_F",
- "var_value": 0,
- "script": "SevenIsland_TrainerTower_8F_EventScript_1C54EA"
- }
- ],
- "bg_events": []
-}
diff --git a/data/maps/SevenIsland_TrainerTower_8F/scripts.inc b/data/maps/SevenIsland_TrainerTower_8F/scripts.inc
deleted file mode 100644
index b51982f48..000000000
--- a/data/maps/SevenIsland_TrainerTower_8F/scripts.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-SevenIsland_TrainerTower_8F_MapScripts:: @ 81647FA
- map_script MAP_SCRIPT_ON_RESUME, SevenIsland_TrainerTower_8F_MapScript1_1C4F54
- map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TrainerTower_8F_MapScript2_1C4F62
- map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_TrainerTower_8F_MapScript3_1C5046
- .byte 0
-
-SevenIsland_TrainerTower_8F_EventScript_16480A:: @ 816480A
- call EventScript_1C52F4
- end
-
-EventScript_164810:: @ 8164810
- call EventScript_1C533B
- end
-
-EventScript_164816:: @ 8164816
- call EventScript_1C5382
- end
-
-EventScript_16481C:: @ 816481C
- call EventScript_1C538C
- end
-
-EventScript_164822:: @ 8164822
- call EventScript_1C53AA
- end
diff --git a/data/maps/SevenIsland_TrainerTower_Elevator/scripts.inc b/data/maps/SevenIsland_TrainerTower_Elevator/scripts.inc
deleted file mode 100644
index f84c67295..000000000
--- a/data/maps/SevenIsland_TrainerTower_Elevator/scripts.inc
+++ /dev/null
@@ -1,80 +0,0 @@
-SevenIsland_TrainerTower_Elevator_MapScripts:: @ 8164AF8
- map_script MAP_SCRIPT_ON_RESUME, SevenIsland_TrainerTower_Elevator_MapScript1_1C4F54
- map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_TrainerTower_Elevator_MapScript2_1C5046
- .byte 0
-
-SevenIsland_TrainerTower_Elevator_EventScript_164B03:: @ 8164B03
- lockall
- setvar VAR_0x8004, 6
- call_if_unset FLAG_TEMP_2, EventScript_1A7AB9
- copyvar VAR_0x8005, VAR_ELEVATOR_FLOOR
- special Special_DrawElevatorCurrentFloorWindow
- message Text_WantWhichFloor
- waitmessage
- setvar VAR_0x8004, 6
- specialvar VAR_RESULT, Special_InitElevatorFloorSelectMenuPos
- switch VAR_RESULT
- case 0, EventScript_164B46
- case 1, EventScript_164B52
- end
-
-EventScript_164B46:: @ 8164B46
- multichoicedefault 0, 0, MULTICHOICE_ROOFTOP_B1F, 0, FALSE
- goto EventScript_164B5E
- end
-
-EventScript_164B52:: @ 8164B52
- multichoicedefault 0, 0, MULTICHOICE_ROOFTOP_B1F, 1, FALSE
- goto EventScript_164B5E
- end
-
-EventScript_164B5E:: @ 8164B5E
- switch VAR_RESULT
- case 0, EventScript_164BCD
- case 1, EventScript_164B90
- case 2, EventScript_164BD3
- case 127, EventScript_164BD3
- end
-
-EventScript_164B90:: @ 8164B90
- setvar VAR_0x8006, 3
- setdynamicwarp MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY, 255, 17, 8
- compare VAR_ELEVATOR_FLOOR, 3
- goto_if_eq EventScript_164BD3
- call EventScript_164BD8
- setvar VAR_ELEVATOR_FLOOR, 3
- special Special_CloseElevatorCurrentFloorWindow
- delay 25
- applymovement OBJ_EVENT_ID_PLAYER, Movement_164BE5
- waitmovement 0
- warp MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY, 255, 17, 8
- waitstate
- releaseall
- end
-
-EventScript_164BCD:: @ 8164BCD
- goto EventScript_164BD3
- end
-
-EventScript_164BD3:: @ 8164BD3
- special Special_CloseElevatorCurrentFloorWindow
- releaseall
- end
-
-EventScript_164BD8:: @ 8164BD8
- special Special_CloseElevatorCurrentFloorWindow
- closemessage
- waitse
- special Special_AnimateElevator
- waitstate
- setflag FLAG_TEMP_2
- return
-
-Movement_164BE5:: @ 8164BE5
- walk_in_place_fastest_down
- delay_16
- walk_down
- walk_right
- walk_right
- walk_down
- step_end
diff --git a/data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc b/data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc
deleted file mode 100644
index 0558b5a8b..000000000
--- a/data/maps/SevenIsland_TrainerTower_Lobby/scripts.inc
+++ /dev/null
@@ -1,235 +0,0 @@
-SevenIsland_TrainerTower_Lobby_MapScripts:: @ 8164839
- map_script MAP_SCRIPT_ON_RESUME, SevenIsland_TrainerTower_Lobby_OnResume
- map_script MAP_SCRIPT_ON_RETURN_TO_FIELD, SevenIsland_TrainerTower_Lobby_OnReturnToField
- map_script MAP_SCRIPT_ON_TRANSITION, SevenIsland_TrainerTower_Lobby_OnTransition
- map_script MAP_SCRIPT_ON_LOAD, SevenIsland_TrainerTower_Lobby_OnLoad
- map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_TrainerTower_Lobby_OnFrame
- .byte 0
-
-SevenIsland_TrainerTower_Lobby_OnResume:: @ 8164853
- setvar VAR_TEMP_2, 0
- setvar VAR_0x8004, 10
- special sub_815D9E8
- setvar VAR_0x8004, 18
- special sub_815D9E8
- compare VAR_RESULT, 0
- goto_if_eq EventScript_164886
- setvar VAR_TEMP_0, 0
- setobjectxy OBJ_EVENT_ID_PLAYER, 9, 7
- applymovement OBJ_EVENT_ID_PLAYER, Movement_164AD4
-
-EventScript_164886:: @ 8164886
- end
-
-SevenIsland_TrainerTower_Lobby_OnReturnToField:: @ 8164887
- addobject 1
- addobject 2
- addobject 3
- addobject 4
- addobject 5
- end
-
-SevenIsland_TrainerTower_Lobby_OnLoad:: @ 8164897
- compare VAR_TEMP_D, 17
- call_if_eq EventScript_1648A3
- end
-
-EventScript_1648A3:: @ 81648A3
- setmetatile 17, 10, 647, 0
- return
-
-SevenIsland_TrainerTower_Lobby_OnTransition:: @ 81648AD
- setworldmapflag FLAG_WORLD_MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY
- getplayerxy VAR_TEMP_D, VAR_RESULT
- end
-
-SevenIsland_TrainerTower_Lobby_OnFrame:: @ 81648B6
- map_script_2 VAR_TEMP_0, 0, EventScript_1648ED
- map_script_2 VAR_TEMP_D, 0x11, EventScript_1648C8
- .2byte 0
-
-EventScript_1648C8:: @ 81648C8
- lockall
- applymovement OBJ_EVENT_ID_PLAYER, Movement_1648EA
- waitmovement 0
- setmetatile 17, 10, 692, 1
- special DrawWholeMapView
- playse SE_TK_KASYA
- waitse
- setvar VAR_TEMP_D, 0
- releaseall
- end
-
-Movement_1648EA:: @ 81648EA
- walk_down
- walk_down
- step_end
-
-EventScript_1648ED:: @ 81648ED
- setvar VAR_TEMP_0, 1
- setvar VAR_0x8004, 12
- special sub_815D9E8
- switch VAR_RESULT
- case 0, EventScript_164920
- case 1, EventScript_164938
- case 2, EventScript_16495C
-
-EventScript_164920:: @ 8164920
- lock
- faceplayer
- applymovement OBJ_EVENT_ID_PLAYER, Movement_164AD4
- textcolor 1
- msgbox gUnknown_817C937
- goto EventScript_16494B
-
-EventScript_164938:: @ 8164938
- lock
- faceplayer
- applymovement OBJ_EVENT_ID_PLAYER, Movement_164AD4
- textcolor 1
- msgbox gUnknown_817C9C0
-
-EventScript_16494B:: @ 816494B
- closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Movement_164AD6
- waitmovement 0
- setvar VAR_MAP_SCENE_TRAINER_TOWER, 0
- release
-
-EventScript_16495C:: @ 816495C
- end
-
-SevenIsland_TrainerTower_Lobby_EventScript_16495D:: @ 816495D
- lock
- faceplayer
- call EventScript_PkmnCenterNurse
- release
- end
-
-SevenIsland_TrainerTower_Lobby_EventScript_164966:: @ 8164966
- lock
- faceplayer
- setvar VAR_0x8004, 20
- special sub_815D9E8
- compare VAR_RESULT, 1
- goto_if_eq EventScript_164988
- msgbox gUnknown_817C9A2
- goto EventScript_164990
-
-EventScript_164988:: @ 8164988
- msgbox gUnknown_817CE1F
-
-EventScript_164990:: @ 8164990
- release
- end
-
-SevenIsland_TrainerTower_Lobby_EventScript_164992:: @ 8164992
- goto_if_questlog EventScript_ReleaseEnd
- lock
- faceplayer
- message Text_MayIHelpYou
- waitmessage
- pokemart Items_1649B8
- msgbox Text_PleaseComeAgain
- release
- end
-
- .align 2
-Items_1649B8:: @ 81649B8
- .2byte ITEM_ULTRA_BALL
- .2byte ITEM_GREAT_BALL
- .2byte ITEM_FULL_RESTORE
- .2byte ITEM_MAX_POTION
- .2byte ITEM_HYPER_POTION
- .2byte ITEM_REVIVE
- .2byte ITEM_FULL_HEAL
- .2byte ITEM_ESCAPE_ROPE
- .2byte ITEM_MAX_REPEL
- .2byte ITEM_NONE
- release
- end
-
-SevenIsland_TrainerTower_Lobby_EventScript_1649CE:: @ 81649CE
- lockall
- applymovement OBJ_EVENT_ID_PLAYER, Movement_164AD4
- textcolor 1
- msgbox gUnknown_817C794
- setvar VAR_0x8004, 17
- special sub_815D9E8
- compare VAR_RESULT, 0
- goto_if_eq EventScript_164A00
- msgbox gUnknown_817C7D9
- goto EventScript_164A08
-
-EventScript_164A00:: @ 8164A00
- msgbox gUnknown_817C850
-
-EventScript_164A08:: @ 8164A08
- message Text_17C88D
- waitmessage
- multichoice 18, 6, MULTICHOICE_YES_NO_INFO, FALSE
- switch VAR_RESULT
- case 0, EventScript_164A53
- case 1, EventScript_164ABF
- case 2, EventScript_164A45
- case 127, EventScript_164ABF
- end
-
-EventScript_164A45:: @ 8164A45
- msgbox gUnknown_817CCC9
- goto EventScript_164A08
- end
-
-EventScript_164A53:: @ 8164A53
- multichoice 13, 3, MULTICHOICE_TRAINER_TOWER_MODE, FALSE
- switch VAR_RESULT
- case 0, EventScript_164AA0
- case 1, EventScript_164AA0
- case 2, EventScript_164AA0
- case 3, EventScript_164AA0
- case 4, EventScript_164ABF
- case 127, EventScript_164ABF
- end
-
-EventScript_164AA0:: @ 8164AA0
- copyvar VAR_0x8005, VAR_RESULT
- setvar VAR_MAP_SCENE_TRAINER_TOWER, 1
- special HealPlayerParty
- msgbox gUnknown_817C8BF
- setvar VAR_0x8004, 6
- special sub_815D9E8
- releaseall
- end
-
-EventScript_164ABF:: @ 8164ABF
- msgbox gUnknown_817C91D
- closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Movement_164AD6
- waitmovement 0
- releaseall
- end
-
-Movement_164AD4:: @ 8164AD4
- face_right
- step_end
-
-Movement_164AD6:: @ 8164AD6
- walk_down
- step_end
-
-SevenIsland_TrainerTower_Lobby_EventScript_164AD8:: @ 8164AD8
- lockall
- fadescreen FADE_TO_BLACK
- setvar VAR_0x8004, 1
- special Special_BattleRecords
- waitstate
- releaseall
- end
-
-SevenIsland_TrainerTower_Lobby_EventScript_164AE6:: @ 8164AE6
- msgbox gUnknown_817CE38, MSGBOX_NPC
- end
-
-SevenIsland_TrainerTower_Lobby_EventScript_164AEF:: @ 8164AEF
- msgbox gUnknown_817CE9F, MSGBOX_NPC
- end
diff --git a/data/maps/SevenIsland_TrainerTower_Roof/scripts.inc b/data/maps/SevenIsland_TrainerTower_Roof/scripts.inc
deleted file mode 100644
index 6ae4ed2be..000000000
--- a/data/maps/SevenIsland_TrainerTower_Roof/scripts.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-SevenIsland_TrainerTower_Roof_MapScripts:: @ 8164828
- map_script MAP_SCRIPT_ON_RESUME, SevenIsland_TrainerTower_Roof_MapScript1_1C4F54
- map_script MAP_SCRIPT_ON_FRAME_TABLE, SevenIsland_TrainerTower_Roof_MapScript2_1C5046
- .byte 0
-
-SevenIsland_TrainerTower_Roof_EventScript_164833:: @ 8164833
- call EventScript_1C53AA
- end
diff --git a/data/maps/SilphCo_Elevator/scripts.inc b/data/maps/SilphCo_Elevator/scripts.inc
index 87ed62c9b..abc60756a 100644
--- a/data/maps/SilphCo_Elevator/scripts.inc
+++ b/data/maps/SilphCo_Elevator/scripts.inc
@@ -4,7 +4,7 @@ SilphCo_Elevator_MapScripts:: @ 8161F6E
SilphCo_Elevator_EventScript_161F6F:: @ 8161F6F
lockall
setvar VAR_0x8004, 1
- call_if_unset FLAG_TEMP_2, EventScript_1A7AB9
+ call_if_unset FLAG_TEMP_2, EventScript_GetElevatorFloor
copyvar VAR_0x8005, VAR_ELEVATOR_FLOOR
special Special_DrawElevatorCurrentFloorWindow
message Text_WantWhichFloor
diff --git a/data/maps/SevenIsland_TrainerTower_1F/map.json b/data/maps/TrainerTower_1F/map.json
index 924dbbcba..925dbdd69 100644
--- a/data/maps/SevenIsland_TrainerTower_1F/map.json
+++ b/data/maps/TrainerTower_1F/map.json
@@ -1,7 +1,7 @@
{
- "id": "MAP_SEVEN_ISLAND_TRAINER_TOWER_1F",
- "name": "SevenIsland_TrainerTower_1F",
- "layout": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_1F",
+ "id": "MAP_TRAINER_TOWER_1F",
+ "name": "TrainerTower_1F",
+ "layout": "LAYOUT_TRAINER_TOWER_1F",
"music": "MUS_T_TOWER",
"region_map_section": "MAPSEC_TRAINER_TOWER_2",
"requires_flash": false,
@@ -36,7 +36,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_1F_EventScript_1646C8",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
"flag": "FLAG_TEMP_2"
},
{
@@ -49,7 +49,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_1F_EventScript_1646CE",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
"flag": "FLAG_TEMP_3"
},
{
@@ -62,7 +62,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_1F_EventScript_1646D4",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
"flag": "FLAG_TEMP_4"
},
{
@@ -75,7 +75,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_1F_EventScript_1646DA",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
"flag": "FLAG_TEMP_5"
}
],
@@ -84,14 +84,14 @@
"x": 15,
"y": 6,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_2F",
+ "dest_map": "MAP_TRAINER_TOWER_2F",
"dest_warp_id": 1
},
{
"x": 4,
"y": 6,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY",
+ "dest_map": "MAP_TRAINER_TOWER_LOBBY",
"dest_warp_id": 0
}
],
@@ -103,7 +103,7 @@
"elevation": 3,
"var": "VAR_TEMP_E",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_1F_EventScript_1C54AF"
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
},
{
"type": "trigger",
@@ -112,7 +112,7 @@
"elevation": 0,
"var": "VAR_TEMP_F",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_1F_EventScript_1C54B4"
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
},
{
"type": "trigger",
@@ -121,7 +121,7 @@
"elevation": 3,
"var": "VAR_TEMP_F",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_1F_EventScript_1C54EA"
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
}
],
"bg_events": []
diff --git a/data/maps/TrainerTower_1F/scripts.inc b/data/maps/TrainerTower_1F/scripts.inc
new file mode 100644
index 000000000..77917c4a4
--- /dev/null
+++ b/data/maps/TrainerTower_1F/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_1F_MapScripts:: @ 81646B8
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ All Trainer Tower floors/roof share these scripts for their object events
+
+TrainerTower_EventScript_DoublesTrainer1:: @ 81646C8
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_EventScript_SinglesTrainer:: @ 81646CE
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_EventScript_KnockoutTrainer:: @ 81646D4
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_EventScript_DoublesTrainer2:: @ 81646DA
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_EventScript_Owner:: @ 81646E0
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/SevenIsland_TrainerTower_5F/map.json b/data/maps/TrainerTower_2F/map.json
index 1ee41e1b4..e2e2f4c97 100644
--- a/data/maps/SevenIsland_TrainerTower_5F/map.json
+++ b/data/maps/TrainerTower_2F/map.json
@@ -1,7 +1,7 @@
{
- "id": "MAP_SEVEN_ISLAND_TRAINER_TOWER_5F",
- "name": "SevenIsland_TrainerTower_5F",
- "layout": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_5F",
+ "id": "MAP_TRAINER_TOWER_2F",
+ "name": "TrainerTower_2F",
+ "layout": "LAYOUT_TRAINER_TOWER_2F",
"music": "MUS_T_TOWER",
"region_map_section": "MAPSEC_TRAINER_TOWER_2",
"requires_flash": false,
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_5F_EventScript_1646E0",
+ "script": "TrainerTower_EventScript_Owner",
"flag": "FLAG_TEMP_6"
},
{
@@ -36,7 +36,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_5F_EventScript_1646C8",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
"flag": "FLAG_TEMP_2"
},
{
@@ -49,7 +49,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_5F_EventScript_1646CE",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
"flag": "FLAG_TEMP_3"
},
{
@@ -62,7 +62,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_5F_EventScript_1646D4",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
"flag": "FLAG_TEMP_4"
},
{
@@ -75,7 +75,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_5F_EventScript_1646DA",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
"flag": "FLAG_TEMP_5"
}
],
@@ -84,21 +84,21 @@
"x": 15,
"y": 6,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_6F",
+ "dest_map": "MAP_TRAINER_TOWER_3F",
"dest_warp_id": 1
},
{
"x": 4,
"y": 6,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_4F",
+ "dest_map": "MAP_TRAINER_TOWER_1F",
"dest_warp_id": 0
},
{
"x": 13,
"y": 5,
"elevation": 0,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR",
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
"dest_warp_id": 0
}
],
@@ -110,7 +110,7 @@
"elevation": 3,
"var": "VAR_TEMP_E",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_5F_EventScript_1C54AF"
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
},
{
"type": "trigger",
@@ -119,7 +119,7 @@
"elevation": 3,
"var": "VAR_TEMP_F",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_5F_EventScript_1C54B4"
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
},
{
"type": "trigger",
@@ -128,7 +128,7 @@
"elevation": 3,
"var": "VAR_TEMP_F",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_5F_EventScript_1C54EA"
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
}
],
"bg_events": []
diff --git a/data/maps/TrainerTower_2F/scripts.inc b/data/maps/TrainerTower_2F/scripts.inc
new file mode 100644
index 000000000..c34f36a34
--- /dev/null
+++ b/data/maps/TrainerTower_2F/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_2F_MapScripts:: @ 81646E6
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_2F_EventScript_DoublesTrainer1:: @ 81646F6
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_2F_EventScript_SinglesTrainer:: @ 81646FC
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_2F_EventScript_KnockoutTrainer:: @ 8164702
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_2F_EventScript_DoublesTrainer2:: @ 8164708
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_2F_EventScript_Owner:: @ 816470E
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/SevenIsland_TrainerTower_2F/map.json b/data/maps/TrainerTower_3F/map.json
index 6d0fbaa4c..8db22b61d 100644
--- a/data/maps/SevenIsland_TrainerTower_2F/map.json
+++ b/data/maps/TrainerTower_3F/map.json
@@ -1,7 +1,7 @@
{
- "id": "MAP_SEVEN_ISLAND_TRAINER_TOWER_2F",
- "name": "SevenIsland_TrainerTower_2F",
- "layout": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_2F",
+ "id": "MAP_TRAINER_TOWER_3F",
+ "name": "TrainerTower_3F",
+ "layout": "LAYOUT_TRAINER_TOWER_3F",
"music": "MUS_T_TOWER",
"region_map_section": "MAPSEC_TRAINER_TOWER_2",
"requires_flash": false,
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_2F_EventScript_1646E0",
+ "script": "TrainerTower_EventScript_Owner",
"flag": "FLAG_TEMP_6"
},
{
@@ -36,7 +36,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_2F_EventScript_1646C8",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
"flag": "FLAG_TEMP_2"
},
{
@@ -49,7 +49,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_2F_EventScript_1646CE",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
"flag": "FLAG_TEMP_3"
},
{
@@ -62,7 +62,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_2F_EventScript_1646D4",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
"flag": "FLAG_TEMP_4"
},
{
@@ -75,7 +75,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_2F_EventScript_1646DA",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
"flag": "FLAG_TEMP_5"
}
],
@@ -84,21 +84,21 @@
"x": 15,
"y": 6,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_3F",
+ "dest_map": "MAP_TRAINER_TOWER_4F",
"dest_warp_id": 1
},
{
"x": 4,
"y": 6,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_1F",
+ "dest_map": "MAP_TRAINER_TOWER_2F",
"dest_warp_id": 0
},
{
"x": 13,
"y": 5,
"elevation": 0,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR",
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
"dest_warp_id": 0
}
],
@@ -110,7 +110,7 @@
"elevation": 3,
"var": "VAR_TEMP_E",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_2F_EventScript_1C54AF"
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
},
{
"type": "trigger",
@@ -119,7 +119,7 @@
"elevation": 3,
"var": "VAR_TEMP_F",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_2F_EventScript_1C54B4"
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
},
{
"type": "trigger",
@@ -128,7 +128,7 @@
"elevation": 3,
"var": "VAR_TEMP_F",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_2F_EventScript_1C54EA"
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
}
],
"bg_events": []
diff --git a/data/maps/TrainerTower_3F/scripts.inc b/data/maps/TrainerTower_3F/scripts.inc
new file mode 100644
index 000000000..0c8d434eb
--- /dev/null
+++ b/data/maps/TrainerTower_3F/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_3F_MapScripts:: @ 8164714
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_3F_EventScript_DoublesTrainer1:: @ 8164724
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_3F_EventScript_SinglesTrainer:: @ 816472A
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_3F_EventScript_KnockoutTrainer:: @ 8164730
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_3F_EventScript_DoublesTrainer2:: @ 8164736
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_3F_EventScript_Owner:: @ 816473C
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/SevenIsland_TrainerTower_3F/map.json b/data/maps/TrainerTower_4F/map.json
index 780878898..32c868e91 100644
--- a/data/maps/SevenIsland_TrainerTower_3F/map.json
+++ b/data/maps/TrainerTower_4F/map.json
@@ -1,7 +1,7 @@
{
- "id": "MAP_SEVEN_ISLAND_TRAINER_TOWER_3F",
- "name": "SevenIsland_TrainerTower_3F",
- "layout": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_3F",
+ "id": "MAP_TRAINER_TOWER_4F",
+ "name": "TrainerTower_4F",
+ "layout": "LAYOUT_TRAINER_TOWER_4F",
"music": "MUS_T_TOWER",
"region_map_section": "MAPSEC_TRAINER_TOWER_2",
"requires_flash": false,
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_3F_EventScript_1646E0",
+ "script": "TrainerTower_EventScript_Owner",
"flag": "FLAG_TEMP_6"
},
{
@@ -36,7 +36,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_3F_EventScript_1646C8",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
"flag": "FLAG_TEMP_2"
},
{
@@ -49,7 +49,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_3F_EventScript_1646CE",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
"flag": "FLAG_TEMP_3"
},
{
@@ -62,7 +62,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_3F_EventScript_1646D4",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
"flag": "FLAG_TEMP_4"
},
{
@@ -75,7 +75,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_3F_EventScript_1646DA",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
"flag": "FLAG_TEMP_5"
}
],
@@ -84,21 +84,21 @@
"x": 15,
"y": 6,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_4F",
+ "dest_map": "MAP_TRAINER_TOWER_5F",
"dest_warp_id": 1
},
{
"x": 4,
"y": 6,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_2F",
+ "dest_map": "MAP_TRAINER_TOWER_3F",
"dest_warp_id": 0
},
{
"x": 13,
"y": 5,
"elevation": 0,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR",
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
"dest_warp_id": 0
}
],
@@ -110,7 +110,7 @@
"elevation": 3,
"var": "VAR_TEMP_E",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_3F_EventScript_1C54AF"
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
},
{
"type": "trigger",
@@ -119,7 +119,7 @@
"elevation": 3,
"var": "VAR_TEMP_F",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_3F_EventScript_1C54B4"
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
},
{
"type": "trigger",
@@ -128,7 +128,7 @@
"elevation": 3,
"var": "VAR_TEMP_F",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_3F_EventScript_1C54EA"
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
}
],
"bg_events": []
diff --git a/data/maps/TrainerTower_4F/scripts.inc b/data/maps/TrainerTower_4F/scripts.inc
new file mode 100644
index 000000000..6e0e7e09f
--- /dev/null
+++ b/data/maps/TrainerTower_4F/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_4F_MapScripts:: @ 8164742
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_4F_EventScript_DoublesTrainer1:: @ 8164752
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_4F_EventScript_SinglesTrainer:: @ 8164758
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_4F_EventScript_KnockoutTrainer:: @ 816475E
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_4F_EventScript_DoublesTrainer2:: @ 8164764
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_4F_EventScript_Owner:: @ 816476A
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/SevenIsland_TrainerTower_4F/map.json b/data/maps/TrainerTower_5F/map.json
index d4a021ff3..7a32b597c 100644
--- a/data/maps/SevenIsland_TrainerTower_4F/map.json
+++ b/data/maps/TrainerTower_5F/map.json
@@ -1,7 +1,7 @@
{
- "id": "MAP_SEVEN_ISLAND_TRAINER_TOWER_4F",
- "name": "SevenIsland_TrainerTower_4F",
- "layout": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_4F",
+ "id": "MAP_TRAINER_TOWER_5F",
+ "name": "TrainerTower_5F",
+ "layout": "LAYOUT_TRAINER_TOWER_5F",
"music": "MUS_T_TOWER",
"region_map_section": "MAPSEC_TRAINER_TOWER_2",
"requires_flash": false,
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_4F_EventScript_1646E0",
+ "script": "TrainerTower_EventScript_Owner",
"flag": "FLAG_TEMP_6"
},
{
@@ -36,7 +36,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_4F_EventScript_1646C8",
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
"flag": "FLAG_TEMP_2"
},
{
@@ -49,7 +49,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_4F_EventScript_1646CE",
+ "script": "TrainerTower_EventScript_SinglesTrainer",
"flag": "FLAG_TEMP_3"
},
{
@@ -62,7 +62,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_4F_EventScript_1646D4",
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
"flag": "FLAG_TEMP_4"
},
{
@@ -75,7 +75,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_4F_EventScript_1646DA",
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
"flag": "FLAG_TEMP_5"
}
],
@@ -84,21 +84,21 @@
"x": 15,
"y": 6,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_5F",
+ "dest_map": "MAP_TRAINER_TOWER_6F",
"dest_warp_id": 1
},
{
"x": 4,
"y": 6,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_3F",
+ "dest_map": "MAP_TRAINER_TOWER_4F",
"dest_warp_id": 0
},
{
"x": 13,
"y": 5,
"elevation": 0,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR",
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
"dest_warp_id": 0
}
],
@@ -110,7 +110,7 @@
"elevation": 3,
"var": "VAR_TEMP_E",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_4F_EventScript_1C54AF"
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
},
{
"type": "trigger",
@@ -119,7 +119,7 @@
"elevation": 3,
"var": "VAR_TEMP_F",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_4F_EventScript_1C54B4"
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
},
{
"type": "trigger",
@@ -128,7 +128,7 @@
"elevation": 3,
"var": "VAR_TEMP_F",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_4F_EventScript_1C54EA"
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
}
],
"bg_events": []
diff --git a/data/maps/TrainerTower_5F/scripts.inc b/data/maps/TrainerTower_5F/scripts.inc
new file mode 100644
index 000000000..71af237be
--- /dev/null
+++ b/data/maps/TrainerTower_5F/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_5F_MapScripts:: @ 8164770
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_5F_EventScript_DoublesTrainer1:: @ 8164780
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_5F_EventScript_SinglesTrainer:: @ 8164786
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_5F_EventScript_KnockoutTrainer:: @ 816478C
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_5F_EventScript_DoublesTrainer2:: @ 8164792
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_5F_EventScript_Owner:: @ 8164798
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/TrainerTower_6F/map.json b/data/maps/TrainerTower_6F/map.json
new file mode 100644
index 000000000..05491cf05
--- /dev/null
+++ b/data/maps/TrainerTower_6F/map.json
@@ -0,0 +1,135 @@
+{
+ "id": "MAP_TRAINER_TOWER_6F",
+ "name": "TrainerTower_6F",
+ "layout": "LAYOUT_TRAINER_TOWER_6F",
+ "music": "MUS_T_TOWER",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_8",
+ "unknown_18": 0,
+ "unknown_19": 2,
+ "elevator_flag": 0,
+ "battle_scene": "BATTLE_SCENE_0",
+ "connections": null,
+ "object_events": [
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_TRAINER_TOWER_DUDE",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_Owner",
+ "flag": "FLAG_TEMP_6"
+ },
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_VAR_0",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
+ "flag": "FLAG_TEMP_2"
+ },
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_VAR_1",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_SinglesTrainer",
+ "flag": "FLAG_TEMP_3"
+ },
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_VAR_2",
+ "x": 10,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
+ "flag": "FLAG_TEMP_4"
+ },
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_VAR_3",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
+ "flag": "FLAG_TEMP_5"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_7F",
+ "dest_warp_id": 1
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_5F",
+ "dest_warp_id": 0
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
+ "dest_warp_id": 0
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_E",
+ "var_value": 0,
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": 0,
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": 0,
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/TrainerTower_6F/scripts.inc b/data/maps/TrainerTower_6F/scripts.inc
new file mode 100644
index 000000000..8b9e1dd38
--- /dev/null
+++ b/data/maps/TrainerTower_6F/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_6F_MapScripts:: @ 816479E
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_6F_EventScript_DoublesTrainer1:: @ 81647AE
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_6F_EventScript_SinglesTrainer:: @ 81647B4
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_6F_EventScript_KnockoutTrainer:: @ 81647BA
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_6F_EventScript_DoublesTrainer2:: @ 81647C0
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_6F_EventScript_Owner:: @ 81647C6
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/TrainerTower_7F/map.json b/data/maps/TrainerTower_7F/map.json
new file mode 100644
index 000000000..76f2a53f4
--- /dev/null
+++ b/data/maps/TrainerTower_7F/map.json
@@ -0,0 +1,135 @@
+{
+ "id": "MAP_TRAINER_TOWER_7F",
+ "name": "TrainerTower_7F",
+ "layout": "LAYOUT_TRAINER_TOWER_7F",
+ "music": "MUS_T_TOWER",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_8",
+ "unknown_18": 0,
+ "unknown_19": 2,
+ "elevator_flag": 0,
+ "battle_scene": "BATTLE_SCENE_0",
+ "connections": null,
+ "object_events": [
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_TRAINER_TOWER_DUDE",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_Owner",
+ "flag": "FLAG_TEMP_6"
+ },
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_VAR_0",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
+ "flag": "FLAG_TEMP_2"
+ },
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_VAR_1",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_SinglesTrainer",
+ "flag": "FLAG_TEMP_3"
+ },
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_VAR_2",
+ "x": 10,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
+ "flag": "FLAG_TEMP_4"
+ },
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_VAR_3",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
+ "flag": "FLAG_TEMP_5"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_8F",
+ "dest_warp_id": 1
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_6F",
+ "dest_warp_id": 0
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
+ "dest_warp_id": 0
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_E",
+ "var_value": 0,
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": 0,
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": 0,
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/TrainerTower_7F/scripts.inc b/data/maps/TrainerTower_7F/scripts.inc
new file mode 100644
index 000000000..de47276ca
--- /dev/null
+++ b/data/maps/TrainerTower_7F/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_7F_MapScripts:: @ 81647CC
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_7F_EventScript_DoublesTrainer1:: @ 81647DC
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_7F_EventScript_SinglesTrainer:: @ 81647E2
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_7F_EventScript_KnockoutTrainer:: @ 81647E8
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_7F_EventScript_DoublesTrainer2:: @ 81647EE
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_7F_EventScript_Owner:: @ 81647F4
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/TrainerTower_8F/map.json b/data/maps/TrainerTower_8F/map.json
new file mode 100644
index 000000000..26cabfb06
--- /dev/null
+++ b/data/maps/TrainerTower_8F/map.json
@@ -0,0 +1,135 @@
+{
+ "id": "MAP_TRAINER_TOWER_8F",
+ "name": "TrainerTower_8F",
+ "layout": "LAYOUT_TRAINER_TOWER_8F",
+ "music": "MUS_T_TOWER",
+ "region_map_section": "MAPSEC_TRAINER_TOWER_2",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_8",
+ "unknown_18": 0,
+ "unknown_19": 2,
+ "elevator_flag": 0,
+ "battle_scene": "BATTLE_SCENE_0",
+ "connections": null,
+ "object_events": [
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_TRAINER_TOWER_DUDE",
+ "x": 9,
+ "y": 7,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_Owner",
+ "flag": "FLAG_TEMP_6"
+ },
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_VAR_0",
+ "x": 10,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_DoublesTrainer1",
+ "flag": "FLAG_TEMP_2"
+ },
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_VAR_1",
+ "x": 15,
+ "y": 13,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_LEFT",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_SinglesTrainer",
+ "flag": "FLAG_TEMP_3"
+ },
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_VAR_2",
+ "x": 10,
+ "y": 16,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_UP",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_KnockoutTrainer",
+ "flag": "FLAG_TEMP_4"
+ },
+ {
+ "graphics_id": "OBJECT_EVENT_GFX_VAR_3",
+ "x": 11,
+ "y": 10,
+ "elevation": 3,
+ "movement_type": "MOVEMENT_TYPE_FACE_DOWN",
+ "movement_range_x": 1,
+ "movement_range_y": 1,
+ "trainer_type": 0,
+ "trainer_sight_or_berry_tree_id": 0,
+ "script": "TrainerTower_EventScript_DoublesTrainer2",
+ "flag": "FLAG_TEMP_5"
+ }
+ ],
+ "warp_events": [
+ {
+ "x": 15,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_ROOF",
+ "dest_warp_id": 1
+ },
+ {
+ "x": 4,
+ "y": 6,
+ "elevation": 3,
+ "dest_map": "MAP_TRAINER_TOWER_7F",
+ "dest_warp_id": 0
+ },
+ {
+ "x": 13,
+ "y": 5,
+ "elevation": 0,
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
+ "dest_warp_id": 0
+ }
+ ],
+ "coord_events": [
+ {
+ "type": "trigger",
+ "x": 10,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_E",
+ "var_value": 0,
+ "script": "TrainerTower_EventScript_SingleBattleTrigger"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 12,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": 0,
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerTop"
+ },
+ {
+ "type": "trigger",
+ "x": 9,
+ "y": 13,
+ "elevation": 3,
+ "var": "VAR_TEMP_F",
+ "var_value": 0,
+ "script": "TrainerTower_EventScript_DoubleBattleTriggerBottom"
+ }
+ ],
+ "bg_events": []
+}
diff --git a/data/maps/TrainerTower_8F/scripts.inc b/data/maps/TrainerTower_8F/scripts.inc
new file mode 100644
index 000000000..fc168780b
--- /dev/null
+++ b/data/maps/TrainerTower_8F/scripts.inc
@@ -0,0 +1,27 @@
+TrainerTower_8F_MapScripts:: @ 81647FA
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_OnTransition
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below scripts are unused, the identical versions in the 1F script are used instead
+
+TrainerTower_8F_EventScript_DoublesTrainer1:: @ 816480A
+ call TrainerTower_EventScript_SpeakToDoublesTrainer1
+ end
+
+TrainerTower_8F_EventScript_SinglesTrainer:: @ 8164810
+ call TrainerTower_EventScript_SpeakToSinglesTrainer
+ end
+
+TrainerTower_8F_EventScript_KnockoutTrainer:: @ 8164816
+ call TrainerTower_EventScript_SpeakToKnockoutTrainer
+ end
+
+TrainerTower_8F_EventScript_DoublesTrainer2:: @ 816481C
+ call TrainerTower_EventScript_SpeakToDoublesTrainer2
+ end
+
+TrainerTower_8F_EventScript_Owner:: @ 8164822
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/SevenIsland_TrainerTower_Elevator/map.json b/data/maps/TrainerTower_Elevator/map.json
index fef686312..7d004c2df 100644
--- a/data/maps/SevenIsland_TrainerTower_Elevator/map.json
+++ b/data/maps/TrainerTower_Elevator/map.json
@@ -1,7 +1,7 @@
{
- "id": "MAP_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR",
- "name": "SevenIsland_TrainerTower_Elevator",
- "layout": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR",
+ "id": "MAP_TRAINER_TOWER_ELEVATOR",
+ "name": "TrainerTower_Elevator",
+ "layout": "LAYOUT_TRAINER_TOWER_ELEVATOR",
"music": "MUS_T_TOWER",
"region_map_section": "MAPSEC_TRAINER_TOWER_2",
"requires_flash": false,
@@ -29,7 +29,7 @@
"x": 0,
"y": 2,
"elevation": 0,
- "script": "SevenIsland_TrainerTower_Elevator_EventScript_164B03"
+ "script": "TrainerTower_Elevator_EventScript_FloorSelect"
}
]
}
diff --git a/data/maps/TrainerTower_Elevator/scripts.inc b/data/maps/TrainerTower_Elevator/scripts.inc
new file mode 100644
index 000000000..349667102
--- /dev/null
+++ b/data/maps/TrainerTower_Elevator/scripts.inc
@@ -0,0 +1,80 @@
+TrainerTower_Elevator_MapScripts:: @ 8164AF8
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+TrainerTower_Elevator_EventScript_FloorSelect:: @ 8164B03
+ lockall
+ setvar VAR_0x8004, 6
+ call_if_unset FLAG_TEMP_2, EventScript_GetElevatorFloor
+ copyvar VAR_0x8005, VAR_ELEVATOR_FLOOR
+ special Special_DrawElevatorCurrentFloorWindow
+ message Text_WantWhichFloor
+ waitmessage
+ setvar VAR_0x8004, 6
+ specialvar VAR_RESULT, Special_InitElevatorFloorSelectMenuPos
+ switch VAR_RESULT
+ case 0, TrainerTower_Elevator_EventScript_FloorSelectFromRoof
+ case 1, TrainerTower_Elevator_EventScript_FloorSelectFromLobby
+ end
+
+TrainerTower_Elevator_EventScript_FloorSelectFromRoof:: @ 8164B46
+ multichoicedefault 0, 0, MULTICHOICE_ROOFTOP_B1F, 0, FALSE
+ goto TrainerTower_Elevator_EventScript_ChooseFloor
+ end
+
+TrainerTower_Elevator_EventScript_FloorSelectFromLobby:: @ 8164B52
+ multichoicedefault 0, 0, MULTICHOICE_ROOFTOP_B1F, 1, FALSE
+ goto TrainerTower_Elevator_EventScript_ChooseFloor
+ end
+
+TrainerTower_Elevator_EventScript_ChooseFloor:: @ 8164B5E
+ switch VAR_RESULT
+ case 0, TrainerTower_Elevator_EventScript_SelectRoof
+ case 1, TrainerTower_Elevator_EventScript_SelectLobby
+ case 2, TrainerTower_Elevator_EventScript_CloseFloorSelect
+ case SCR_MENU_CANCEL, TrainerTower_Elevator_EventScript_CloseFloorSelect
+ end
+
+TrainerTower_Elevator_EventScript_SelectLobby:: @ 8164B90
+ setvar VAR_0x8006, 3
+ setdynamicwarp MAP_TRAINER_TOWER_LOBBY, 255, 17, 8
+ compare VAR_ELEVATOR_FLOOR, 3
+ goto_if_eq TrainerTower_Elevator_EventScript_CloseFloorSelect
+ call TrainerTower_Elevator_EventScript_MoveElevator
+ setvar VAR_ELEVATOR_FLOOR, 3
+ special Special_CloseElevatorCurrentFloorWindow
+ delay 25
+ applymovement OBJ_EVENT_ID_PLAYER, TrainerTower_Elevator_Movement_ExitElevator
+ waitmovement 0
+ warp MAP_TRAINER_TOWER_LOBBY, 255, 17, 8
+ waitstate
+ releaseall
+ end
+
+TrainerTower_Elevator_EventScript_SelectRoof:: @ 8164BCD
+ goto TrainerTower_Elevator_EventScript_CloseFloorSelect
+ end
+
+TrainerTower_Elevator_EventScript_CloseFloorSelect:: @ 8164BD3
+ special Special_CloseElevatorCurrentFloorWindow
+ releaseall
+ end
+
+TrainerTower_Elevator_EventScript_MoveElevator:: @ 8164BD8
+ special Special_CloseElevatorCurrentFloorWindow
+ closemessage
+ waitse
+ special Special_AnimateElevator
+ waitstate
+ setflag FLAG_TEMP_2
+ return
+
+TrainerTower_Elevator_Movement_ExitElevator:: @ 8164BE5
+ walk_in_place_fastest_down
+ delay_16
+ walk_down
+ walk_right
+ walk_right
+ walk_down
+ step_end
diff --git a/data/maps/SevenIsland_TrainerTower_Lobby/map.json b/data/maps/TrainerTower_Lobby/map.json
index 3f553ce47..23e8456c0 100644
--- a/data/maps/SevenIsland_TrainerTower_Lobby/map.json
+++ b/data/maps/TrainerTower_Lobby/map.json
@@ -1,7 +1,7 @@
{
- "id": "MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY",
- "name": "SevenIsland_TrainerTower_Lobby",
- "layout": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_LOBBY",
+ "id": "MAP_TRAINER_TOWER_LOBBY",
+ "name": "TrainerTower_Lobby",
+ "layout": "LAYOUT_TRAINER_TOWER_LOBBY",
"music": "MUS_T_TOWER",
"region_map_section": "MAPSEC_TRAINER_TOWER_2",
"requires_flash": false,
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_Lobby_EventScript_16495D",
+ "script": "TrainerTower_Lobby_EventScript_Nurse",
"flag": "0"
},
{
@@ -36,7 +36,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_Lobby_EventScript_164992",
+ "script": "TrainerTower_Lobby_EventScript_MartClerk",
"flag": "0"
},
{
@@ -49,7 +49,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_Lobby_EventScript_164966",
+ "script": "TrainerTower_Lobby_EventScript_Receptionist",
"flag": "0"
},
{
@@ -62,7 +62,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_Lobby_EventScript_164AE6",
+ "script": "TrainerTower_Lobby_EventScript_CooltrainerF",
"flag": "0"
},
{
@@ -75,7 +75,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_Lobby_EventScript_164AEF",
+ "script": "TrainerTower_Lobby_EventScript_BaldingMan",
"flag": "0"
}
],
@@ -84,7 +84,7 @@
"x": 9,
"y": 2,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_1F",
+ "dest_map": "MAP_TRAINER_TOWER_1F",
"dest_warp_id": 1
},
{
@@ -98,7 +98,7 @@
"x": 17,
"y": 8,
"elevation": 0,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR",
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
"dest_warp_id": 0
}
],
@@ -110,7 +110,7 @@
"elevation": 3,
"var": "VAR_MAP_SCENE_TRAINER_TOWER",
"var_value": 0,
- "script": "SevenIsland_TrainerTower_Lobby_EventScript_1649CE"
+ "script": "TrainerTower_Lobby_EventScript_EntryTrigger"
}
],
"bg_events": [
@@ -119,7 +119,7 @@
"x": 8,
"y": 10,
"elevation": 0,
- "script": "SevenIsland_TrainerTower_Lobby_EventScript_164AD8"
+ "script": "TrainerTower_Lobby_EventScript_ShowRecords"
}
]
}
diff --git a/data/maps/TrainerTower_Lobby/scripts.inc b/data/maps/TrainerTower_Lobby/scripts.inc
new file mode 100644
index 000000000..0fc2422b6
--- /dev/null
+++ b/data/maps/TrainerTower_Lobby/scripts.inc
@@ -0,0 +1,226 @@
+TrainerTower_Lobby_MapScripts:: @ 8164839
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_Lobby_OnResume
+ map_script MAP_SCRIPT_ON_RETURN_TO_FIELD, TrainerTower_Lobby_OnReturnToField
+ map_script MAP_SCRIPT_ON_TRANSITION, TrainerTower_Lobby_OnTransition
+ map_script MAP_SCRIPT_ON_LOAD, TrainerTower_Lobby_OnLoad
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_Lobby_OnFrame
+ .byte 0
+
+TrainerTower_Lobby_OnResume:: @ 8164853
+ setvar VAR_TEMP_2, 0
+ ttower_resumetimer
+ ttower_shouldexit
+ compare VAR_RESULT, FALSE
+ goto_if_eq TrainerTower_Lobby_OnResumeEnd
+ @ Never reached, above always FALSE
+ setvar VAR_TEMP_0, 0
+ setobjectxy OBJ_EVENT_ID_PLAYER, 9, 7
+ applymovement OBJ_EVENT_ID_PLAYER, TrainerTower_Lobby_Movement_FaceReceptionist
+TrainerTower_Lobby_OnResumeEnd:: @ 8164886
+ end
+
+TrainerTower_Lobby_OnReturnToField:: @ 8164887
+ addobject 1
+ addobject 2
+ addobject 3
+ addobject 4
+ addobject 5
+ end
+
+TrainerTower_Lobby_OnLoad:: @ 8164897
+ compare VAR_TEMP_D, 17
+ call_if_eq TrainerTower_Lobby_OpenCounterBarrier
+ end
+
+TrainerTower_Lobby_OpenCounterBarrier:: @ 81648A3
+ setmetatile 17, 10, METATILE_TrainerTower_Floor_ShadeBottomLeft, 0
+ return
+
+TrainerTower_Lobby_OnTransition:: @ 81648AD
+ setworldmapflag FLAG_WORLD_MAP_TRAINER_TOWER_LOBBY
+ getplayerxy VAR_TEMP_D, VAR_RESULT
+ end
+
+TrainerTower_Lobby_OnFrame:: @ 81648B6
+ map_script_2 VAR_TEMP_0, 0, TrainerTower_Lobby_EventScript_Enter
+ map_script_2 VAR_TEMP_D, 17, TrainerTower_Lobby_EventScript_ExitElevator
+ .2byte 0
+
+TrainerTower_Lobby_EventScript_ExitElevator:: @ 81648C8
+ lockall
+ applymovement OBJ_EVENT_ID_PLAYER, TrainerTower_Lobby_Movement_ExitElevator
+ waitmovement 0
+ setmetatile 17, 10, METATILE_TrainerTower_CounterBarrier, 1
+ special DrawWholeMapView
+ playse SE_TK_KASYA
+ waitse
+ setvar VAR_TEMP_D, 0
+ releaseall
+ end
+
+TrainerTower_Lobby_Movement_ExitElevator:: @ 81648EA
+ walk_down
+ walk_down
+ step_end
+
+TrainerTower_Lobby_EventScript_Enter:: @ 81648ED
+ setvar VAR_TEMP_0, 1
+ ttower_getchallengestatus
+ switch VAR_RESULT
+ case CHALLENGE_STATUS_LOST, TrainerTower_Lobby_EventScript_LostChallenge
+ case CHALLENGE_STATUS_UNK, TrainerTower_Lobby_EventScript_164938
+ case CHALLENGE_STATUS_NORMAL, TrainerTower_Lobby_EventScript_EnterEnd
+
+TrainerTower_Lobby_EventScript_LostChallenge:: @ 8164920
+ lock
+ faceplayer
+ applymovement OBJ_EVENT_ID_PLAYER, TrainerTower_Lobby_Movement_FaceReceptionist
+ textcolor 1
+ msgbox TrainerTower_Lobby_Text_TooBadComeBackTryAgain
+ goto TrainerTower_Lobby_EventScript_ExitChallenge
+
+@ Presumably E-Reader related
+TrainerTower_Lobby_EventScript_164938:: @ 8164938
+ lock
+ faceplayer
+ applymovement OBJ_EVENT_ID_PLAYER, TrainerTower_Lobby_Movement_FaceReceptionist
+ textcolor 1
+ msgbox TrainerTower_Lobby_Text_MoveCounterHereWhenTrainersSwitch
+TrainerTower_Lobby_EventScript_ExitChallenge:: @ 816494B
+ closemessage
+ applymovement OBJ_EVENT_ID_PLAYER, TrainerTower_Lobby_Movement_WalkDown
+ waitmovement 0
+ setvar VAR_MAP_SCENE_TRAINER_TOWER, 0
+ release
+TrainerTower_Lobby_EventScript_EnterEnd:: @ 816495C
+ end
+
+TrainerTower_Lobby_EventScript_Nurse:: @ 816495D
+ lock
+ faceplayer
+ call EventScript_PkmnCenterNurse
+ release
+ end
+
+TrainerTower_Lobby_EventScript_Receptionist:: @ 8164966
+ lock
+ faceplayer
+ ttower_getbeatchallenge
+ compare VAR_RESULT, TRUE
+ goto_if_eq TrainerTower_Lobby_EventScript_ThanksForCompeting
+ msgbox TrainerTower_Lobby_Text_GiveItYourBest
+ goto TrainerTower_Lobby_EventScript_ReceptionistEnd
+
+TrainerTower_Lobby_EventScript_ThanksForCompeting:: @ 8164988
+ msgbox TrainerTower_Lobby_Text_ThanksForCompeting
+TrainerTower_Lobby_EventScript_ReceptionistEnd:: @ 8164990
+ release
+ end
+
+TrainerTower_Lobby_EventScript_MartClerk:: @ 8164992
+ goto_if_questlog EventScript_ReleaseEnd
+ lock
+ faceplayer
+ message Text_MayIHelpYou
+ waitmessage
+ pokemart TrainerTower_Lobby_Mart_Items
+ msgbox Text_PleaseComeAgain
+ release
+ end
+
+ .align 2
+TrainerTower_Lobby_Mart_Items:: @ 81649B8
+ .2byte ITEM_ULTRA_BALL
+ .2byte ITEM_GREAT_BALL
+ .2byte ITEM_FULL_RESTORE
+ .2byte ITEM_MAX_POTION
+ .2byte ITEM_HYPER_POTION
+ .2byte ITEM_REVIVE
+ .2byte ITEM_FULL_HEAL
+ .2byte ITEM_ESCAPE_ROPE
+ .2byte ITEM_MAX_REPEL
+ .2byte ITEM_NONE
+ release
+ end
+
+TrainerTower_Lobby_EventScript_EntryTrigger:: @ 81649CE
+ lockall
+ applymovement OBJ_EVENT_ID_PLAYER, TrainerTower_Lobby_Movement_FaceReceptionist
+ textcolor 1
+ msgbox TrainerTower_Lobby_Text_WelcomeToTrainerTower
+ ttower_getnumfloors
+ compare VAR_RESULT, FALSE
+ goto_if_eq TrainerTower_Lobby_EventScript_AllFloorsUsed
+ msgbox TrainerTower_Lobby_Text_TrainersUpToFloorNum
+ goto TrainerTower_Lobby_EventScript_AskEnterChallenge
+
+TrainerTower_Lobby_EventScript_AllFloorsUsed:: @ 8164A00
+ msgbox TrainerTower_Lobby_Text_TrainersUpEighthFloor
+TrainerTower_Lobby_EventScript_AskEnterChallenge:: @ 8164A08
+ message TrainerTower_Lobby_Text_LikeToChallengeTrainers
+ waitmessage
+ multichoice 18, 6, MULTICHOICE_YES_NO_INFO, FALSE
+ switch VAR_RESULT
+ case 0, TrainerTower_Lobby_EventScript_ChooseChallenge
+ case 1, TrainerTower_Lobby_EventScript_DeclineChallenge
+ case 2, TrainerTower_Lobby_EventScript_ChallengeInfo
+ case SCR_MENU_CANCEL, TrainerTower_Lobby_EventScript_DeclineChallenge
+ end
+
+TrainerTower_Lobby_EventScript_ChallengeInfo:: @ 8164A45
+ msgbox TrainerTower_Lobby_Text_ExplainTrainerTower
+ goto TrainerTower_Lobby_EventScript_AskEnterChallenge
+ end
+
+TrainerTower_Lobby_EventScript_ChooseChallenge:: @ 8164A53
+ multichoice 13, 3, MULTICHOICE_TRAINER_TOWER_MODE, FALSE
+ switch VAR_RESULT
+ case 0, TrainerTower_Lobby_EventScript_BeginChallenge
+ case 1, TrainerTower_Lobby_EventScript_BeginChallenge
+ case 2, TrainerTower_Lobby_EventScript_BeginChallenge
+ case 3, TrainerTower_Lobby_EventScript_BeginChallenge
+ case 4, TrainerTower_Lobby_EventScript_DeclineChallenge
+ case SCR_MENU_CANCEL, TrainerTower_Lobby_EventScript_DeclineChallenge
+ end
+
+TrainerTower_Lobby_EventScript_BeginChallenge:: @ 8164AA0
+ copyvar VAR_0x8005, VAR_RESULT
+ setvar VAR_MAP_SCENE_TRAINER_TOWER, 1
+ special HealPlayerParty
+ msgbox TrainerTower_Lobby_Text_StartClockGetSetGo
+ ttower_startchallenge
+ releaseall
+ end
+
+TrainerTower_Lobby_EventScript_DeclineChallenge:: @ 8164ABF
+ msgbox TrainerTower_Lobby_Text_PleaseVisitUsAgain
+ closemessage
+ applymovement OBJ_EVENT_ID_PLAYER, TrainerTower_Lobby_Movement_WalkDown
+ waitmovement 0
+ releaseall
+ end
+
+TrainerTower_Lobby_Movement_FaceReceptionist:: @ 8164AD4
+ face_right
+ step_end
+
+TrainerTower_Lobby_Movement_WalkDown:: @ 8164AD6
+ walk_down
+ step_end
+
+TrainerTower_Lobby_EventScript_ShowRecords:: @ 8164AD8
+ lockall
+ fadescreen FADE_TO_BLACK
+ setvar VAR_0x8004, 1
+ special Special_BattleRecords
+ waitstate
+ releaseall
+ end
+
+TrainerTower_Lobby_EventScript_CooltrainerF:: @ 8164AE6
+ msgbox TrainerTower_Lobby_Text_WonderWhatKindsOfTrainers, MSGBOX_NPC
+ end
+
+TrainerTower_Lobby_EventScript_BaldingMan:: @ 8164AEF
+ msgbox TrainerTower_Lobby_Text_StairsTougherThanAnyBattle, MSGBOX_NPC
+ end
diff --git a/data/maps/SevenIsland_TrainerTower_Lobby/text.inc b/data/maps/TrainerTower_Lobby/text.inc
index bf1e73b91..4e6bb8b07 100644
--- a/data/maps/SevenIsland_TrainerTower_Lobby/text.inc
+++ b/data/maps/TrainerTower_Lobby/text.inc
@@ -1,50 +1,52 @@
-gUnknown_817C794:: @ 817C794
+@ All Trainer Tower text (Lobby and Roof) is interleaved here
+
+TrainerTower_Lobby_Text_WelcomeToTrainerTower:: @ 817C794
.string "Hello!\p"
.string "Welcome to TRAINER TOWER where\n"
.string "TRAINERS gather from all over!$"
-gUnknown_817C7D9:: @ 817C7D9
+TrainerTower_Lobby_Text_TrainersUpToFloorNum:: @ 817C7D9
.string "TRAINERS from all over the world\n"
.string "gather here to battle.\p"
.string "Let me see…\p"
.string "Right now, there are TRAINERS only\n"
.string "up to Floor {STR_VAR_1}.$"
-gUnknown_817C850:: @ 817C850
+TrainerTower_Lobby_Text_TrainersUpEighthFloor:: @ 817C850
.string "TRAINERS are awaiting your\n"
.string "challenge up to the eighth floor.$"
-Text_17C88D:: @ 817C88D
+TrainerTower_Lobby_Text_LikeToChallengeTrainers:: @ 817C88D
.string "Would you like to challenge the\n"
.string "waiting TRAINERS?$"
-gUnknown_817C8BF:: @ 817C8BF
+TrainerTower_Lobby_Text_StartClockGetSetGo:: @ 817C8BF
.string "Okay, I'll get the clock started,\n"
.string "so give it everything you have.\p"
.string "On your marks…\p"
.string "Get set…\p"
.string "Go!$"
-gUnknown_817C91D:: @ 817C91D
+TrainerTower_Lobby_Text_PleaseVisitUsAgain:: @ 817C91D
.string "Please do visit us again!$"
-gUnknown_817C937:: @ 817C937
+TrainerTower_Lobby_Text_TooBadComeBackTryAgain:: @ 817C937
.string "That was too bad.\p"
.string "I think you put in a tremendous\n"
.string "effort in your battling.\p"
.string "Please come back and try again!$"
-gUnknown_817C9A2:: @ 817C9A2
+TrainerTower_Lobby_Text_GiveItYourBest:: @ 817C9A2
.string "I hope you give it your best.$"
-gUnknown_817C9C0:: @ 817C9C0
+TrainerTower_Lobby_Text_MoveCounterHereWhenTrainersSwitch:: @ 817C9C0
.string "When the TRAINERS switch places,\n"
.string "the movement can be hectic.\p"
.string "To avoid the stampede, we moved\n"
.string "the reception counter here.\p"
.string "I'm sorry for the inconvenience.$"
-Text_17CA5A:: @ 817CA5A
+TrainerTower_Roof_Text_ImOwnerBattledPerfectly:: @ 817CA5A
.string "Hello…\p"
.string "I am the owner of this TOWER…\p"
.string "How the sky soars above this\n"
@@ -54,10 +56,10 @@ Text_17CA5A:: @ 817CA5A
.string "The way you battled…\n"
.string "It, too, was perfection…$"
-Text_17CB09:: @ 817CB09
+TrainerTower_Roof_Text_ThisIsForYou:: @ 817CB09
.string "This is for you…$"
-Text_17CB1A:: @ 817CB1A
+TrainerTower_Roof_Text_DoneItInRecordTime:: @ 817CB1A
.string "Oh!\n"
.string "Stupendous!\p"
.string "It's marvelous how you've come up\n"
@@ -67,28 +69,28 @@ Text_17CB1A:: @ 817CB1A
.string "I'll have your record posted at\n"
.string "the reception counter.$"
-Text_17CBC0:: @ 817CBC0
+TrainerTower_Roof_Text_TookSweetTimeGettingHere:: @ 817CBC0
.string "You seem to have taken your sweet\n"
.string "time getting here…$"
-Text_17CBF5:: @ 817CBF5
+TrainerTower_Roof_Text_IdLikeToSeeBetterTime:: @ 817CBF5
.string "What I would like to see is a\n"
.string "better time out of you…\p"
.string "I'm counting on you.\p"
.string "Until then, farewell…$"
-Text_17CC56:: @ 817CC56
+TrainerTower_Text_XMinYZSec:: @ 817CC56
.string "{STR_VAR_1} min. {STR_VAR_2}.{STR_VAR_3} sec.$"
-Text_17CC69:: @ 817CC69
+TrainerTower_Lobby_Text_HereAreTheResults:: @ 817CC69
.string "せいせきひょうです$"
-Text_17CC73:: @ 817CC73
+TrainerTower_Lobby_Text_NeedTwoMonsForDouble:: @ 817CC73
.string "This is a two-on-two battle.\p"
.string "You may not battle unless you have\n"
.string "at least two POKéMON.$"
-gUnknown_817CCC9:: @ 817CCC9
+TrainerTower_Lobby_Text_ExplainTrainerTower:: @ 817CCC9
.string "Here at TRAINER TOWER, there is an\n"
.string "event called TIME ATTACK.\p"
.string "You will be timed on how quickly\n"
@@ -101,16 +103,16 @@ gUnknown_817CCC9:: @ 817CCC9
.string "You will not earn any EXP. Points\n"
.string "or money by beating TRAINERS here.$"
-gUnknown_817CE1F:: @ 817CE1F
+TrainerTower_Lobby_Text_ThanksForCompeting:: @ 817CE1F
.string "Thank you for competing!$"
-gUnknown_817CE38:: @ 817CE38
+TrainerTower_Lobby_Text_WonderWhatKindsOfTrainers:: @ 817CE38
.string "I'm here to see how good I am.\p"
.string "I wonder what kinds of TRAINERS\n"
.string "are waiting for me?\p"
.string "It's nerve-racking!$"
-gUnknown_817CE9F:: @ 817CE9F
+TrainerTower_Lobby_Text_StairsTougherThanAnyBattle:: @ 817CE9F
.string "Gasp, gasp…\n"
.string "Gasp…\p"
.string "Never mind battling! These stairs…\n"
diff --git a/data/maps/SevenIsland_TrainerTower_Roof/map.json b/data/maps/TrainerTower_Roof/map.json
index ee3dbe4c0..c9a98a144 100644
--- a/data/maps/SevenIsland_TrainerTower_Roof/map.json
+++ b/data/maps/TrainerTower_Roof/map.json
@@ -1,7 +1,7 @@
{
- "id": "MAP_SEVEN_ISLAND_TRAINER_TOWER_ROOF",
- "name": "SevenIsland_TrainerTower_Roof",
- "layout": "LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_ROOF",
+ "id": "MAP_TRAINER_TOWER_ROOF",
+ "name": "TrainerTower_Roof",
+ "layout": "LAYOUT_TRAINER_TOWER_ROOF",
"music": "MUS_T_TOWER",
"region_map_section": "MAPSEC_TRAINER_TOWER_2",
"requires_flash": false,
@@ -23,7 +23,7 @@
"movement_range_y": 1,
"trainer_type": 0,
"trainer_sight_or_berry_tree_id": 0,
- "script": "SevenIsland_TrainerTower_Roof_EventScript_1646E0",
+ "script": "TrainerTower_EventScript_Owner",
"flag": "FLAG_TEMP_6"
}
],
@@ -32,14 +32,14 @@
"x": 13,
"y": 5,
"elevation": 0,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR",
+ "dest_map": "MAP_TRAINER_TOWER_ELEVATOR",
"dest_warp_id": 0
},
{
"x": 4,
"y": 6,
"elevation": 3,
- "dest_map": "MAP_SEVEN_ISLAND_TRAINER_TOWER_8F",
+ "dest_map": "MAP_TRAINER_TOWER_8F",
"dest_warp_id": 0
}
],
diff --git a/data/maps/TrainerTower_Roof/scripts.inc b/data/maps/TrainerTower_Roof/scripts.inc
new file mode 100644
index 000000000..b338e3a62
--- /dev/null
+++ b/data/maps/TrainerTower_Roof/scripts.inc
@@ -0,0 +1,10 @@
+TrainerTower_Roof_MapScripts:: @ 8164828
+ map_script MAP_SCRIPT_ON_RESUME, TrainerTower_OnResume
+ map_script MAP_SCRIPT_ON_FRAME_TABLE, TrainerTower_OnFrame
+ .byte 0
+
+@ Below script is unused, the identical version in the 1F script is used instead
+
+TrainerTower_Roof_EventScript_Owner:: @ 8164833
+ call TrainerTower_EventScript_SpeakToOwner
+ end
diff --git a/data/maps/map_groups.json b/data/maps/map_groups.json
index 05f1cd544..3793fd9fc 100644
--- a/data/maps/map_groups.json
+++ b/data/maps/map_groups.json
@@ -178,17 +178,17 @@
],
"gMapGroup2": [
"NavelRock_Exterior",
- "SevenIsland_TrainerTower_1F",
- "SevenIsland_TrainerTower_2F",
- "SevenIsland_TrainerTower_3F",
- "SevenIsland_TrainerTower_4F",
- "SevenIsland_TrainerTower_5F",
- "SevenIsland_TrainerTower_6F",
- "SevenIsland_TrainerTower_7F",
- "SevenIsland_TrainerTower_8F",
- "SevenIsland_TrainerTower_Roof",
- "SevenIsland_TrainerTower_Lobby",
- "SevenIsland_TrainerTower_Elevator",
+ "TrainerTower_1F",
+ "TrainerTower_2F",
+ "TrainerTower_3F",
+ "TrainerTower_4F",
+ "TrainerTower_5F",
+ "TrainerTower_6F",
+ "TrainerTower_7F",
+ "TrainerTower_8F",
+ "TrainerTower_Roof",
+ "TrainerTower_Lobby",
+ "TrainerTower_Elevator",
"FiveIsland_LostCave_Entrance",
"FiveIsland_LostCave_Room1",
"FiveIsland_LostCave_Room2",
diff --git a/data/scripts/trainer_tower.inc b/data/scripts/trainer_tower.inc
index 2a5a84f72..45ffc285d 100644
--- a/data/scripts/trainer_tower.inc
+++ b/data/scripts/trainer_tower.inc
@@ -1,320 +1,297 @@
-SevenIsland_TrainerTower_1F_MapScript1_1C4F54:: @ 81C4F54
-SevenIsland_TrainerTower_2F_MapScript1_1C4F54:: @ 81C4F54
-SevenIsland_TrainerTower_3F_MapScript1_1C4F54:: @ 81C4F54
-SevenIsland_TrainerTower_4F_MapScript1_1C4F54:: @ 81C4F54
-SevenIsland_TrainerTower_5F_MapScript1_1C4F54:: @ 81C4F54
-SevenIsland_TrainerTower_6F_MapScript1_1C4F54:: @ 81C4F54
-SevenIsland_TrainerTower_7F_MapScript1_1C4F54:: @ 81C4F54
-SevenIsland_TrainerTower_8F_MapScript1_1C4F54:: @ 81C4F54
-SevenIsland_TrainerTower_Elevator_MapScript1_1C4F54:: @ 81C4F54
-SevenIsland_TrainerTower_Roof_MapScript1_1C4F54:: @ 81C4F54
+@ Local IDs apply to all floors (not lobby or roof)
+.equ LOCALID_TRAINER_DOUBLES1, 2
+.equ LOCALID_TRAINER_SINGLES, 3
+.equ LOCALID_TRAINER_KNOCKOUT, 4
+.equ LOCALID_TRAINER_DOUBLES2, 5
+
+.equ HIDE_TRAINER_DOUBLES1, FLAG_TEMP_2
+.equ HIDE_TRAINER_SINGLES, FLAG_TEMP_3
+.equ HIDE_TRAINER_KNOCKOUT, FLAG_TEMP_4
+.equ HIDE_TRAINER_DOUBLES2, FLAG_TEMP_5
+.equ HIDE_OWNER, FLAG_TEMP_6
+
+.equ DISABLE_SINGLES_TRIGGER, VAR_TEMP_E
+.equ DISABLE_DOUBLES_TRIGGER, VAR_TEMP_F
+
+
+@@ Map scripts
+
+TrainerTower_OnResume:: @ 81C4F54
setvar VAR_TEMP_2, 0
- setvar VAR_0x8004, 10
- special sub_815D9E8
+ ttower_resumetimer
end
-SevenIsland_TrainerTower_1F_MapScript2_1C4F62:: @ 81C4F62
-SevenIsland_TrainerTower_2F_MapScript2_1C4F62:: @ 81C4F62
-SevenIsland_TrainerTower_3F_MapScript2_1C4F62:: @ 81C4F62
-SevenIsland_TrainerTower_4F_MapScript2_1C4F62:: @ 81C4F62
-SevenIsland_TrainerTower_5F_MapScript2_1C4F62:: @ 81C4F62
-SevenIsland_TrainerTower_6F_MapScript2_1C4F62:: @ 81C4F62
-SevenIsland_TrainerTower_7F_MapScript2_1C4F62:: @ 81C4F62
-SevenIsland_TrainerTower_8F_MapScript2_1C4F62:: @ 81C4F62
- setvar VAR_0x8004, 0
- special sub_815D9E8
+TrainerTower_OnTransition:: @ 81C4F62
+ ttower_initfloor
switch VAR_RESULT
- case 0, EventScript_1C4FA7
- case 1, EventScript_1C4FC5
- case 2, EventScript_1C5019
- setflag FLAG_TEMP_2
- setflag FLAG_TEMP_3
- setflag FLAG_TEMP_4
- setflag FLAG_TEMP_5
- setvar VAR_TEMP_E, 1
- setvar VAR_TEMP_F, 1
+ case CHALLENGE_TYPE_SINGLE, TrainerTower_EventScript_SetObjectsSingles
+ case CHALLENGE_TYPE_DOUBLE, TrainerTower_EventScript_SetObjectsDoubles
+ case CHALLENGE_TYPE_KNOCKOUT, TrainerTower_EventScript_SetObjectsKnockout
+ setflag HIDE_TRAINER_DOUBLES1
+ setflag HIDE_TRAINER_SINGLES
+ setflag HIDE_TRAINER_KNOCKOUT
+ setflag HIDE_TRAINER_DOUBLES2
+ setvar DISABLE_SINGLES_TRIGGER, TRUE
+ setvar DISABLE_DOUBLES_TRIGGER, TRUE
end
-EventScript_1C4FA7:: @ 81C4FA7
- setflag FLAG_TEMP_2
- setflag FLAG_TEMP_4
- setflag FLAG_TEMP_5
- setvar VAR_TEMP_F, 1
- setobjectxyperm 3, 15, 13
- setobjectmovementtype 3, 9
- goto EventScript_1C5042
-
-EventScript_1C4FC5:: @ 81C4FC5
- setflag FLAG_TEMP_3
- setflag FLAG_TEMP_4
- setvar VAR_TEMP_E, 1
- setvar VAR_0x8004, 5
- special sub_815D9E8
- compare VAR_RESULT, 1
- goto_if_eq EventScript_1C4FFE
- setobjectxyperm 2, 10, 12
- setobjectmovementtype 2, 9
- setobjectxyperm 5, 10, 13
- setobjectmovementtype 5, 9
- goto EventScript_1C5042
-
-EventScript_1C4FFE:: @ 81C4FFE
- setobjectxyperm 2, 10, 12
- setobjectmovementtype 2, 8
- setobjectxyperm 5, 11, 12
- setobjectmovementtype 5, 8
- goto EventScript_1C5042
-
-EventScript_1C5019:: @ 81C5019
- setflag FLAG_TEMP_5
- setvar VAR_TEMP_F, 1
- setobjectxyperm 2, 10, 10
- setobjectmovementtype 2, 8
- setobjectxyperm 3, 14, 13
- setobjectmovementtype 3, 9
- setobjectxyperm 4, 10, 16
- setobjectmovementtype 4, 7
-EventScript_1C5042:
- setflag FLAG_TEMP_6
+TrainerTower_EventScript_SetObjectsSingles:: @ 81C4FA7
+ setflag HIDE_TRAINER_DOUBLES1
+ setflag HIDE_TRAINER_KNOCKOUT
+ setflag HIDE_TRAINER_DOUBLES2
+ setvar DISABLE_DOUBLES_TRIGGER, TRUE
+ setobjectxyperm LOCALID_TRAINER_SINGLES, 15, 13
+ setobjectmovementtype LOCALID_TRAINER_SINGLES, MOVEMENT_TYPE_FACE_LEFT
+ goto TrainerTower_EventScript_HideOwner
+
+TrainerTower_EventScript_SetObjectsDoubles:: @ 81C4FC5
+ setflag HIDE_TRAINER_SINGLES
+ setflag HIDE_TRAINER_KNOCKOUT
+ setvar DISABLE_SINGLES_TRIGGER, TRUE
+ ttower_isfloorcleared
+ compare VAR_RESULT, TRUE
+ goto_if_eq TrainerTower_EventScript_SetObjectsDoublesAlreadyBeaten
+ setobjectxyperm LOCALID_TRAINER_DOUBLES1, 10, 12
+ setobjectmovementtype LOCALID_TRAINER_DOUBLES1, MOVEMENT_TYPE_FACE_LEFT
+ setobjectxyperm LOCALID_TRAINER_DOUBLES2, 10, 13
+ setobjectmovementtype LOCALID_TRAINER_DOUBLES2, MOVEMENT_TYPE_FACE_LEFT
+ goto TrainerTower_EventScript_HideOwner
+
+TrainerTower_EventScript_SetObjectsDoublesAlreadyBeaten:: @ 81C4FFE
+ setobjectxyperm LOCALID_TRAINER_DOUBLES1, 10, 12
+ setobjectmovementtype LOCALID_TRAINER_DOUBLES1, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_TRAINER_DOUBLES2, 11, 12
+ setobjectmovementtype LOCALID_TRAINER_DOUBLES2, MOVEMENT_TYPE_FACE_DOWN
+ goto TrainerTower_EventScript_HideOwner
+
+@ Knockout challenge re-uses trainer objects
+TrainerTower_EventScript_SetObjectsKnockout:: @ 81C5019
+ setflag HIDE_TRAINER_DOUBLES2
+ setvar DISABLE_DOUBLES_TRIGGER, TRUE
+ setobjectxyperm LOCALID_TRAINER_DOUBLES1, 10, 10
+ setobjectmovementtype LOCALID_TRAINER_DOUBLES1, MOVEMENT_TYPE_FACE_DOWN
+ setobjectxyperm LOCALID_TRAINER_SINGLES, 14, 13
+ setobjectmovementtype LOCALID_TRAINER_SINGLES, MOVEMENT_TYPE_FACE_LEFT
+ setobjectxyperm LOCALID_TRAINER_KNOCKOUT, 10, 16
+ setobjectmovementtype LOCALID_TRAINER_KNOCKOUT, MOVEMENT_TYPE_FACE_UP
+TrainerTower_EventScript_HideOwner:
+ setflag HIDE_OWNER
end
-SevenIsland_TrainerTower_1F_MapScript3_1C5046:: @ 81C5046
-SevenIsland_TrainerTower_2F_MapScript3_1C5046:: @ 81C5046
-SevenIsland_TrainerTower_3F_MapScript3_1C5046:: @ 81C5046
-SevenIsland_TrainerTower_4F_MapScript3_1C5046:: @ 81C5046
-SevenIsland_TrainerTower_5F_MapScript3_1C5046:: @ 81C5046
-SevenIsland_TrainerTower_6F_MapScript3_1C5046:: @ 81C5046
-SevenIsland_TrainerTower_7F_MapScript3_1C5046:: @ 81C5046
-SevenIsland_TrainerTower_8F_MapScript3_1C5046:: @ 81C5046
-SevenIsland_TrainerTower_Elevator_MapScript2_1C5046:: @ 81C5046
-SevenIsland_TrainerTower_Roof_MapScript2_1C5046:: @ 81C5046
- map_script_2 VAR_TEMP_2, 0, EventScript_1C5050
+TrainerTower_OnFrame:: @ 81C5046
+ map_script_2 VAR_TEMP_2, 0, TrainerTower_EventScript_EnterFloor
.2byte 0
-EventScript_1C5050:: @ 81C5050
+TrainerTower_EventScript_EnterFloor:: @ 81C5050
setvar VAR_TEMP_2, 1
- setvar VAR_0x8004, 5
- special sub_815D9E8
- compare VAR_RESULT, 0
- goto_if_eq EventScript_1C5072
- setvar VAR_TEMP_E, 1
- setvar VAR_TEMP_F, 1
-EventScript_1C5072:
- setvar VAR_0x8004, 18
- special sub_815D9E8
- compare VAR_RESULT, 1
- goto_if_eq EventScript_1C5086
+ ttower_isfloorcleared
+ compare VAR_RESULT, FALSE
+ goto_if_eq TrainerTower_EventScript_EndEnterFloor
+ setvar DISABLE_SINGLES_TRIGGER, TRUE
+ setvar DISABLE_DOUBLES_TRIGGER, TRUE
+TrainerTower_EventScript_EndEnterFloor:
+ ttower_shouldexit
+ compare VAR_RESULT, TRUE
+ goto_if_eq TrainerTower_EventScript_WarpToLobby
end
-EventScript_1C5086:: @ 81C5086
- warp MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY, 255, 9, 7
+@ Never reached
+TrainerTower_EventScript_WarpToLobby:: @ 81C5086
+ warp MAP_TRAINER_TOWER_LOBBY, 255, 9, 7
waitstate
-EventScript_1C508F::
- setvar VAR_0x8004, 3
- setvar VAR_0x8005, 0
- special sub_815D9E8
+
+
+@@ Battle scripts
+
+TrainerTower_EventScript_TriggerBattle::
+ ttower_getchallengetype
switch VAR_RESULT
- case 0, EventScript_1C50C2
- case 1, EventScript_1C510D
- case 2, EventScript_1C515C
-EventScript_1C50C2:
- setvar VAR_0x8004, 19
- special sub_815D9E8
- applymovement 3, Movement_ExclamationMark
+ case CHALLENGE_TYPE_SINGLE, TrainerTower_EventScript_DoSingleBattle
+ case CHALLENGE_TYPE_DOUBLE, TrainerTower_EventScript_DoDoubleBattle
+ case CHALLENGE_TYPE_KNOCKOUT, TrainerTower_EventScript_DoKnockoutBattle
+
+TrainerTower_EventScript_DoSingleBattle:
+ ttower_encountermusic
+ applymovement LOCALID_TRAINER_SINGLES, Movement_ExclamationMark
waitmovement 0
- applymovement 3, Movement_Delay48
+ applymovement LOCALID_TRAINER_SINGLES, Movement_Delay48
waitmovement 0
- setvar VAR_TEMP_E, 1
- applymovement 3, Movement_1C5541
+ setvar DISABLE_SINGLES_TRIGGER, TRUE
+ applymovement LOCALID_TRAINER_SINGLES, TrainerTower_Movement_SingleTrainerApproach
waitmovement 0
- setvar VAR_0x8004, 1
- setvar VAR_0x8005, 2
- setvar VAR_0x8006, 0
- special sub_815D9E8
+ ttower_getspeech TRAINER_TOWER_TEXT_INTRO, 0
msgbox gStringVar4
closemessage
- goto EventScript_1C5219
+ goto TrainerTower_EventScript_DoBattle
-EventScript_1C510D:: @ 81C510D
- setvar VAR_0x8004, 1
- setvar VAR_0x8005, 2
- copyvar VAR_0x8006, VAR_TEMP_3
- special sub_815D9E8
+TrainerTower_EventScript_DoDoubleBattle:: @ 81C510D
+ ttower_getspeech TRAINER_TOWER_TEXT_INTRO, VAR_TEMP_3
msgbox gStringVar4
- setvar VAR_0x8004, 1
- setvar VAR_0x8005, 2
+ setvar VAR_0x8004, TRAINER_TOWER_FUNC_GET_SPEECH
+ setvar VAR_0x8005, TRAINER_TOWER_TEXT_INTRO
addvar VAR_TEMP_3, 1
compare VAR_TEMP_3, 1
- goto_if_eq EventScript_1C5146
+ goto_if_eq TrainerTower_EventScript_DoSecondTrainerIntro
setvar VAR_TEMP_3, 0
-EventScript_1C5146:
+TrainerTower_EventScript_DoSecondTrainerIntro:
copyvar VAR_0x8006, VAR_TEMP_3
- special sub_815D9E8
+ special CallTrainerTowerFunc
msgbox gStringVar4
closemessage
- goto EventScript_1C5219
+ goto TrainerTower_EventScript_DoBattle
-EventScript_1C515C:: @ 81C515C
+TrainerTower_EventScript_DoKnockoutBattle:: @ 81C515C
switch VAR_TEMP_1
- case 0, EventScript_1C5182
- case 1, EventScript_1C51AD
- case 2, EventScript_1C51D8
-EventScript_1C5182:
- setvar VAR_0x8004, 19
- special sub_815D9E8
- applymovement 4, Movement_ExclamationMark
+ case 0, TrainerTower_EventScript_DoKnockoutBattle1
+ case 1, TrainerTower_EventScript_DoKnockoutBattle2
+ case 2, TrainerTower_EventScript_DoKnockoutBattle3
+
+TrainerTower_EventScript_DoKnockoutBattle1:
+ ttower_encountermusic
+ applymovement LOCALID_TRAINER_KNOCKOUT, Movement_ExclamationMark
waitmovement 0
- applymovement 4, Movement_Delay48
+ applymovement LOCALID_TRAINER_KNOCKOUT, Movement_Delay48
waitmovement 0
- applymovement 4, Movement_1C5546
+ applymovement LOCALID_TRAINER_KNOCKOUT, TrainerTower_Movement_BottomKnockoutTrainerApproach
waitmovement 0
- goto EventScript_1C51FE
+ goto TrainerTower_EventScript_DoKnockoutBattleIntro
-EventScript_1C51AD:: @ 81C51AD
- setvar VAR_0x8004, 19
- special sub_815D9E8
- applymovement 2, Movement_ExclamationMark
+TrainerTower_EventScript_DoKnockoutBattle2:: @ 81C51AD
+ ttower_encountermusic
+ applymovement LOCALID_TRAINER_DOUBLES1, Movement_ExclamationMark
waitmovement 0
- applymovement 2, Movement_Delay48
+ applymovement LOCALID_TRAINER_DOUBLES1, Movement_Delay48
waitmovement 0
- applymovement 2, Movement_1C5549
+ applymovement LOCALID_TRAINER_DOUBLES1, TrainerTower_Movement_TopKnockoutTrainerApproach
waitmovement 0
- goto EventScript_1C51FE
+ goto TrainerTower_EventScript_DoKnockoutBattleIntro
-EventScript_1C51D8:: @ 81C51D8
- setvar VAR_0x8004, 19
- special sub_815D9E8
- applymovement 3, Movement_ExclamationMark
+TrainerTower_EventScript_DoKnockoutBattle3:: @ 81C51D8
+ ttower_encountermusic
+ applymovement LOCALID_TRAINER_SINGLES, Movement_ExclamationMark
waitmovement 0
- applymovement 3, Movement_Delay48
+ applymovement LOCALID_TRAINER_SINGLES, Movement_Delay48
waitmovement 0
- applymovement 3, Movement_1C5542
+ applymovement LOCALID_TRAINER_SINGLES, TrainerTower_Movement_RightKnockoutTrainerApproach
waitmovement 0
-EventScript_1C51FE:
- setvar VAR_0x8004, 1
- setvar VAR_0x8005, 2
- copyvar VAR_0x8006, VAR_TEMP_1
- special sub_815D9E8
+TrainerTower_EventScript_DoKnockoutBattleIntro:
+ ttower_getspeech TRAINER_TOWER_TEXT_INTRO, VAR_TEMP_1
msgbox gStringVar4
closemessage
-EventScript_1C5219:
- setvar VAR_0x8004, 2
- setvar VAR_0x8005, 0
- special sub_815D9E8
+TrainerTower_EventScript_DoBattle:
+ ttower_dobattle
waitstate
switch VAR_RESULT
- case 1, EventScript_1C524D
- case 2, EventScript_1C52E0
- case 3, EventScript_1C52E0
-EventScript_1C524D:
- setvar VAR_0x8004, 3
- setvar VAR_0x8005, 0
- special sub_815D9E8
+ case B_OUTCOME_WON, TrainerTower_EventScript_WonBattle
+ case B_OUTCOME_LOST, TrainerTower_EventScript_WarpToLobbyLost
+ case B_OUTCOME_DREW, TrainerTower_EventScript_WarpToLobbyLost
+TrainerTower_EventScript_WonBattle:
+ ttower_getchallengetype
switch VAR_RESULT
- case 0, EventScript_1C52D7
- case 1, EventScript_1C52BA
- case 2, EventScript_1C5280
-EventScript_1C5280:
+ case CHALLENGE_TYPE_SINGLE, TrainerTower_EventScript_SetFloorCleared
+ case CHALLENGE_TYPE_DOUBLE, TrainerTower_EventScript_MoveDoublesTrainers
+ case CHALLENGE_TYPE_KNOCKOUT, TrainerTower_EventScript_CheckNextKnockoutBattle
+
+TrainerTower_EventScript_CheckNextKnockoutBattle:
switch VAR_TEMP_1
- case 0, EventScript_1C52A6
- case 1, EventScript_1C52B0
- case 2, EventScript_1C52D0
-EventScript_1C52A6:
+ case 0, TrainerTower_EventScript_DoSecondKnockoutBattle
+ case 1, TrainerTower_EventScript_DoThirdKnockoutBattle
+ case 2, TrainerTower_EventScript_MoveLastKnockoutTrainer
+
+TrainerTower_EventScript_DoSecondKnockoutBattle:
addvar VAR_TEMP_1, 1
- goto EventScript_1C515C
+ goto TrainerTower_EventScript_DoKnockoutBattle
-EventScript_1C52B0:: @ 81C52B0
+TrainerTower_EventScript_DoThirdKnockoutBattle:: @ 81C52B0
addvar VAR_TEMP_1, 1
- goto EventScript_1C515C
+ goto TrainerTower_EventScript_DoKnockoutBattle
-EventScript_1C52BA:: @ 81C52BA
- applymovement 5, Movement_1C554C
+TrainerTower_EventScript_MoveDoublesTrainers:: @ 81C52BA
+ applymovement LOCALID_TRAINER_DOUBLES2, TrainerTower_Movement_DoublesTrainer2OutOfWay
waitmovement 0
- applymovement 2, Movement_1C5550
- goto EventScript_1C52D7
-
-EventScript_1C52D0:: @ 81C52D0
- applymovement 3, Movement_1C554D
-EventScript_1C52D7:
- setvar VAR_0x8004, 4
- special sub_815D9E8
+ applymovement LOCALID_TRAINER_DOUBLES1, TrainerTower_Movement_DoublesTrainer1FaceDown
+ goto TrainerTower_EventScript_SetFloorCleared
+
+TrainerTower_EventScript_MoveLastKnockoutTrainer:: @ 81C52D0
+ applymovement LOCALID_TRAINER_SINGLES, TrainerTower_Movement_LastKnockoutTrainerOutOfWay
+TrainerTower_EventScript_SetFloorCleared:
+ ttower_clearedfloor
end
-EventScript_1C52E0:: @ 81C52E0
+TrainerTower_EventScript_WarpToLobbyLost:: @ 81C52E0
special HealPlayerParty
- setvar VAR_0x8004, 11
- special sub_815D9E8
- warp MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY, 255, 9, 7
+ ttower_setlost
+ warp MAP_TRAINER_TOWER_LOBBY, 255, 9, 7
waitstate
-EventScript_1C52F4:: @ 81C52F4
- setvar VAR_0x8004, 3
- setvar VAR_0x8005, 0
- special sub_815D9E8
+
+@@ Speaking to trainers after battle
+
+TrainerTower_EventScript_SpeakToDoublesTrainer1:: @ 81C52F4
+ ttower_getchallengetype
switch VAR_RESULT
- case 0, EventScript_1C5327
- case 1, EventScript_1C5327
- case 2, EventScript_1C5331
-EventScript_1C5327:
+ case CHALLENGE_TYPE_SINGLE, TrainerTower_EventScript_DoublesTrainer1PostBattle
+ case CHALLENGE_TYPE_DOUBLE, TrainerTower_EventScript_DoublesTrainer1PostBattle
+ case CHALLENGE_TYPE_KNOCKOUT, TrainerTower_EventScript_KnockoutTrainer2PostBattle
+TrainerTower_EventScript_DoublesTrainer1PostBattle:
setvar VAR_0x8006, 0
- goto EventScript_1C5391
+ goto TrainerTower_EventScript_DoPostBattleText
-EventScript_1C5331:: @ 81C5331
+TrainerTower_EventScript_KnockoutTrainer2PostBattle:: @ 81C5331
setvar VAR_0x8006, 1
- goto EventScript_1C5391
+ goto TrainerTower_EventScript_DoPostBattleText
-EventScript_1C533B:: @ 81C533B
- setvar VAR_0x8004, 3
- setvar VAR_0x8005, 0
- special sub_815D9E8
+TrainerTower_EventScript_SpeakToSinglesTrainer:: @ 81C533B
+ ttower_getchallengetype
switch VAR_RESULT
- case 0, EventScript_1C536E
- case 1, EventScript_1C536E
- case 2, EventScript_1C5378
-EventScript_1C536E:
+ case CHALLENGE_TYPE_SINGLE, TrainerTower_EventScript_SinglesTrainerPostBattle
+ case CHALLENGE_TYPE_DOUBLE, TrainerTower_EventScript_SinglesTrainerPostBattle
+ case CHALLENGE_TYPE_KNOCKOUT, TrainerTower_EventScript_KnockoutTrainer3PostBattle
+TrainerTower_EventScript_SinglesTrainerPostBattle:
setvar VAR_0x8006, 0
- goto EventScript_1C5391
+ goto TrainerTower_EventScript_DoPostBattleText
-EventScript_1C5378:: @ 81C5378
+TrainerTower_EventScript_KnockoutTrainer3PostBattle:: @ 81C5378
setvar VAR_0x8006, 2
- goto EventScript_1C5391
+ goto TrainerTower_EventScript_DoPostBattleText
-EventScript_1C5382:: @ 81C5382
+TrainerTower_EventScript_SpeakToKnockoutTrainer:: @ 81C5382
setvar VAR_0x8006, 0
- goto EventScript_1C5391
+ goto TrainerTower_EventScript_DoPostBattleText
-EventScript_1C538C:: @ 81C538C
+TrainerTower_EventScript_SpeakToDoublesTrainer2:: @ 81C538C
setvar VAR_0x8006, 1
-EventScript_1C5391:
- setvar VAR_0x8004, 1
- setvar VAR_0x8005, 5
- special sub_815D9E8
+TrainerTower_EventScript_DoPostBattleText:
+ ttower_getspeech TRAINER_TOWER_TEXT_AFTER
lock
faceplayer
msgbox gStringVar4
release
return
-EventScript_1C53AA:: @ 81C53AA
+
+@@ Speaking to owner
+
+TrainerTower_EventScript_SpeakToOwner:: @ 81C53AA
lock
faceplayer
- setvar VAR_0x8004, 7
- special sub_815D9E8
+ ttower_getownerstate
switch VAR_RESULT
- case 0, EventScript_1C53DA
- case 1, EventScript_1C53E2
- case 2, EventScript_1C5492
-EventScript_1C53DA:
- msgbox Text_17CA5A
-EventScript_1C53E2:
- setvar VAR_0x8004, 8
- special sub_815D9E8
+ case 0, TrainerTower_Roof_EventScript_Arrived
+ case 1, TrainerTower_Roof_EventScript_GivePrize
+ case 2, TrainerTower_Roof_EventScript_OwnerEnd
+
+TrainerTower_Roof_EventScript_Arrived:
+ msgbox TrainerTower_Roof_Text_ImOwnerBattledPerfectly
+TrainerTower_Roof_EventScript_GivePrize:
+ ttower_giveprize
switch VAR_RESULT
- case 0, EventScript_1C5410
- case 1, EventScript_1C543A
- case 2, EventScript_1C544F
-EventScript_1C5410:
- msgbox Text_17CB09
+ case 0, TrainerTower_Roof_EventScript_ReceivePrize
+ case 1, TrainerTower_Roof_EventScript_NoRoomForPrize
+ case 2, TrainerTower_Roof_EventScript_CheckFinalTime
+
+TrainerTower_Roof_EventScript_ReceivePrize:
+ msgbox TrainerTower_Roof_Text_ThisIsForYou
textcolor 3
playfanfare MUS_FANFA1
message Text_ObtainedTheX
@@ -323,128 +300,105 @@ EventScript_1C5410:
getstdstring 2, STDSTRING_ITEMS_POCKET
msgbox Text_PutItemAway
call EventScript_1A6675
- goto EventScript_1C544F
+ goto TrainerTower_Roof_EventScript_CheckFinalTime
-EventScript_1C543A:: @ 81C543A
- msgbox Text_17CB09
+TrainerTower_Roof_EventScript_NoRoomForPrize:: @ 81C543A
+ msgbox TrainerTower_Roof_Text_ThisIsForYou
msgbox Text_BagIsFull
- goto EventScript_1C544F
+ goto TrainerTower_Roof_EventScript_CheckFinalTime
-EventScript_1C544F:: @ 81C544F
- setvar VAR_0x8004, 9
- special sub_815D9E8
+TrainerTower_Roof_EventScript_CheckFinalTime:: @ 81C544F
+ ttower_checkfinaltime
switch VAR_RESULT
- case 0, EventScript_1C547D
- case 1, EventScript_1C548A
- case 2, EventScript_1C5492
-EventScript_1C547D:
- msgbox Text_17CB1A
- goto EventScript_1C5492
-
-EventScript_1C548A:: @ 81C548A
- msgbox Text_17CBC0
-EventScript_1C5492:
- msgbox Text_17CBF5
+ case 0, TrainerTower_Roof_EventScript_NewRecord
+ case 1, TrainerTower_Roof_EventScript_NoNewRecord
+ case 2, TrainerTower_Roof_EventScript_OwnerEnd
+
+TrainerTower_Roof_EventScript_NewRecord:
+ msgbox TrainerTower_Roof_Text_DoneItInRecordTime
+ goto TrainerTower_Roof_EventScript_OwnerEnd
+
+TrainerTower_Roof_EventScript_NoNewRecord:: @ 81C548A
+ msgbox TrainerTower_Roof_Text_TookSweetTimeGettingHere
+TrainerTower_Roof_EventScript_OwnerEnd:
+ msgbox TrainerTower_Roof_Text_IdLikeToSeeBetterTime
release
return
-EventScript_1C549C:: @ 81C549C
+TrainerTower_EventScript_ShowTime:: @ 81C549C
lockall
- setvar VAR_0x8004, 13
- special sub_815D9E8
- msgbox Text_17CC56
+ ttower_gettime
+ msgbox TrainerTower_Text_XMinYZSec
releaseall
end
-SevenIsland_TrainerTower_2F_EventScript_1C54AF:: @ 81C54AF
-SevenIsland_TrainerTower_4F_EventScript_1C54AF:: @ 81C54AF
-SevenIsland_TrainerTower_6F_EventScript_1C54AF:: @ 81C54AF
-SevenIsland_TrainerTower_8F_EventScript_1C54AF:: @ 81C54AF
-SevenIsland_TrainerTower_5F_EventScript_1C54AF:: @ 81C54AF
-SevenIsland_TrainerTower_7F_EventScript_1C54AF:: @ 81C54AF
-SevenIsland_TrainerTower_3F_EventScript_1C54AF:: @ 81C54AF
-SevenIsland_TrainerTower_1F_EventScript_1C54AF:: @ 81C54AF
- goto EventScript_1C508F
-
-SevenIsland_TrainerTower_2F_EventScript_1C54B4:: @ 81C54B4
-SevenIsland_TrainerTower_4F_EventScript_1C54B4:: @ 81C54B4
-SevenIsland_TrainerTower_6F_EventScript_1C54B4:: @ 81C54B4
-SevenIsland_TrainerTower_8F_EventScript_1C54B4:: @ 81C54B4
-SevenIsland_TrainerTower_5F_EventScript_1C54B4:: @ 81C54B4
-SevenIsland_TrainerTower_7F_EventScript_1C54B4:: @ 81C54B4
-SevenIsland_TrainerTower_3F_EventScript_1C54B4:: @ 81C54B4
-SevenIsland_TrainerTower_1F_EventScript_1C54B4:: @ 81C54B4
+
+@@ Battle triggers
+
+TrainerTower_EventScript_SingleBattleTrigger:: @ 81C54AF
+ goto TrainerTower_EventScript_TriggerBattle
+
+TrainerTower_EventScript_DoubleBattleTriggerTop:: @ 81C54B4
setvar VAR_TEMP_3, 0
- setvar VAR_0x8004, 16
- special sub_815D9E8
- compare VAR_RESULT, 0
- goto_if_ne EventScript_1C5528
- setvar VAR_0x8004, 19
- special sub_815D9E8
- applymovement 2, Movement_ExclamationMark
+ ttower_checkdoubles
+ compare VAR_RESULT, PLAYER_HAS_TWO_USABLE_MONS
+ goto_if_ne TrainerTower_EventScript_IneligibleForDoubleBattle
+ ttower_encountermusic
+ applymovement LOCALID_TRAINER_DOUBLES1, Movement_ExclamationMark
waitmovement 0
- applymovement 2, Movement_Delay48
- goto EventScript_1C551B
-
-SevenIsland_TrainerTower_2F_EventScript_1C54EA:: @ 81C54EA
-SevenIsland_TrainerTower_4F_EventScript_1C54EA:: @ 81C54EA
-SevenIsland_TrainerTower_6F_EventScript_1C54EA:: @ 81C54EA
-SevenIsland_TrainerTower_8F_EventScript_1C54EA:: @ 81C54EA
-SevenIsland_TrainerTower_5F_EventScript_1C54EA:: @ 81C54EA
-SevenIsland_TrainerTower_7F_EventScript_1C54EA:: @ 81C54EA
-SevenIsland_TrainerTower_3F_EventScript_1C54EA:: @ 81C54EA
-SevenIsland_TrainerTower_1F_EventScript_1C54EA:: @ 81C54EA
+ applymovement LOCALID_TRAINER_DOUBLES1, Movement_Delay48
+ goto TrainerTower_EventScript_TriggerDoubleBattle
+
+TrainerTower_EventScript_DoubleBattleTriggerBottom:: @ 81C54EA
setvar VAR_TEMP_3, 1
- setvar VAR_0x8004, 16
- special sub_815D9E8
- compare VAR_RESULT, 0
- goto_if_ne EventScript_1C5528
- setvar VAR_0x8004, 19
- special sub_815D9E8
- applymovement 5, Movement_ExclamationMark
+ ttower_checkdoubles
+ compare VAR_RESULT, PLAYER_HAS_TWO_USABLE_MONS
+ goto_if_ne TrainerTower_EventScript_IneligibleForDoubleBattle
+ ttower_encountermusic
+ applymovement LOCALID_TRAINER_DOUBLES2, Movement_ExclamationMark
waitmovement 0
- applymovement 5, Movement_Delay48
-EventScript_1C551B:
+ applymovement LOCALID_TRAINER_DOUBLES2, Movement_Delay48
+TrainerTower_EventScript_TriggerDoubleBattle:
waitmovement 0
- setvar VAR_TEMP_F, 1
- goto EventScript_1C508F
+ setvar DISABLE_DOUBLES_TRIGGER, TRUE
+ goto TrainerTower_EventScript_TriggerBattle
-EventScript_1C5528:: @ 81C5528
+TrainerTower_EventScript_IneligibleForDoubleBattle:: @ 81C5528
lockall
playse SE_PINPON
- msgbox Text_17CC73
+ msgbox TrainerTower_Lobby_Text_NeedTwoMonsForDouble
closemessage
- applymovement OBJ_EVENT_ID_PLAYER, Movement_1C5544
+ applymovement OBJ_EVENT_ID_PLAYER, TrainerTower_Movement_PushPlayerBack
waitmovement 0
releaseall
end
-Movement_1C5541:
+TrainerTower_Movement_SingleTrainerApproach:
walk_left
-Movement_1C5542:: @ 81C5542
+TrainerTower_Movement_RightKnockoutTrainerApproach:: @ 81C5542
walk_left
walk_left
-Movement_1C5544:
+TrainerTower_Movement_PushPlayerBack:
walk_left
step_end
-Movement_1C5546:: @ 81C5546
+TrainerTower_Movement_BottomKnockoutTrainerApproach:: @ 81C5546
walk_up
walk_up
step_end
-Movement_1C5549:: @ 81C5549
+TrainerTower_Movement_TopKnockoutTrainerApproach:: @ 81C5549
walk_down
walk_down
step_end
-Movement_1C554C:: @ 81C554C
+TrainerTower_Movement_DoublesTrainer2OutOfWay:: @ 81C554C
walk_right
-Movement_1C554D:
+TrainerTower_Movement_LastKnockoutTrainerOutOfWay:
walk_up
face_down
step_end
-Movement_1C5550:: @ 81C5550
+TrainerTower_Movement_DoublesTrainer1FaceDown:: @ 81C5550
face_down
step_end
diff --git a/data/specials.inc b/data/specials.inc
index 96064fec3..4ed38160d 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -412,7 +412,7 @@ gSpecials:: @ 815FD60
def_special Special_SSAnneDepartureCutscene
def_special IsPokemonJumpSpeciesInParty
def_special IsNationalPokedexEnabled
- def_special sub_815D9E8
+ def_special CallTrainerTowerFunc
def_special ShowPokemonJumpRecords
def_special Special_ItemIsTM_GetMoveName
def_special Special_DaisyMassageServices
@@ -439,7 +439,7 @@ gSpecials:: @ 815FD60
def_special Special_SetDeoxysTriangleObjectPal
def_special IsPlayerLeftOfVermilionSailor
def_special Special_BadEggInParty
- def_special sub_815D834
+ def_special ReadTrainerTowerAndValidate
def_special HasAllMons
def_special Special_PlayerIsNotInTrainerTowerLobby
def_special Special_BrailleCursorToggle
diff --git a/include/battle_tower.h b/include/battle_tower.h
index 87f847aa4..be07320c9 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -33,8 +33,6 @@ void ValidateEReaderTrainer(void);
u8 GetBattleTowerTrainerFrontSpriteId(void);
u8 GetEreaderTrainerFrontSpriteId(void);
void CopyEReaderTrainerName5(u8 *dest);
-void sub_815DC40(u8 *dest, u8 opponentIdx);
-void sub_815DBF4(u8 *dest, u8 opponentIdx);
void GetBattleTowerTrainerName(u8 *text);
u8 GetEreaderTrainerClassId(void);
u8 GetBattleTowerTrainerClassNameId(void);
diff --git a/include/cereader_tool.h b/include/cereader_tool.h
index 6275eaabf..dd1866fb3 100644
--- a/include/cereader_tool.h
+++ b/include/cereader_tool.h
@@ -2,6 +2,7 @@
#define GUARD_CEREADER_TOOL_H
#include "global.h"
+#include "constants/trainer_tower.h"
struct TrainerTowerTrainer
{
@@ -21,30 +22,31 @@ struct TrainerTowerFloor
/* 0x001 */ u8 floorIdx;
/* 0x002 */ u8 challengeType;
/* 0x003 */ u8 prize;
- /* 0x004 */ struct TrainerTowerTrainer trainers[3];
+ /* 0x004 */ struct TrainerTowerTrainer trainers[MAX_TRAINERS_PER_FLOOR];
/* 0x3DC */ u32 checksum;
};
-struct EReaderTrainerHillSetSubstruct
+struct EReaderTrainerTowerSetSubstruct
{
- u8 count;
+ u8 numFloors;
u8 id;
u16 dummy;
u32 checksum;
};
-struct EReaderTrainerHillSet
+struct EReaderTrainerTowerSet
{
- u8 count;
+ u8 numFloors;
u8 id;
u16 dummy;
u32 checksum;
- struct TrainerTowerFloor floors[8];
+ struct TrainerTowerFloor floors[MAX_TRAINER_TOWER_FLOORS];
};
-bool32 ValidateTrainerTowerData(struct EReaderTrainerHillSet * ttdata);
-bool32 CEReaderTool_SaveTrainerTower(struct EReaderTrainerHillSet * ttdata);
-bool32 CEReaderTool_LoadTrainerTower(struct EReaderTrainerHillSet * ttdata);
+bool32 ValidateTrainerTowerData(struct EReaderTrainerTowerSet * ttdata);
+bool32 CEReaderTool_SaveTrainerTower(struct EReaderTrainerTowerSet * ttdata);
+bool32 CEReaderTool_LoadTrainerTower(struct EReaderTrainerTowerSet * ttdata);
u8 sub_815D654(void);
+bool32 ReadTrainerTowerAndValidate(void);
#endif //GUARD_CEREADER_TOOL_H
diff --git a/include/constants/battle.h b/include/constants/battle.h
index 63be37936..a80038f2c 100644
--- a/include/constants/battle.h
+++ b/include/constants/battle.h
@@ -71,7 +71,7 @@
#define BATTLE_TYPE_x800000 0x800000
#define BATTLE_TYPE_RECORDED 0x1000000
#define BATTLE_TYPE_x2000000 0x2000000
-#define BATTLE_TYPE_TRAINER_HILL 0x4000000
+#define BATTLE_TYPE_x4000000 0x4000000
#define BATTLE_TYPE_SECRET_BASE 0x8000000
#define BATTLE_TYPE_GROUDON 0x10000000
#define BATTLE_TYPE_KYOGRE 0x20000000
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 26ffa8a7c..85cd4d850 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1415,7 +1415,7 @@
#define FLAG_WORLD_MAP_THREE_ISLAND_BERRY_FOREST (SYS_FLAGS + 0xB7)
#define FLAG_WORLD_MAP_FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE (SYS_FLAGS + 0xB8)
#define FLAG_WORLD_MAP_FIVE_ISLAND_ROCKET_WAREHOUSE (SYS_FLAGS + 0xB9)
-#define FLAG_WORLD_MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY (SYS_FLAGS + 0xBA)
+#define FLAG_WORLD_MAP_TRAINER_TOWER_LOBBY (SYS_FLAGS + 0xBA)
#define FLAG_WORLD_MAP_SIX_ISLAND_DOTTED_HOLE_1F (SYS_FLAGS + 0xBB)
#define FLAG_WORLD_MAP_FIVE_ISLAND_LOST_CAVE_ENTRANCE (SYS_FLAGS + 0xBC)
#define FLAG_WORLD_MAP_SIX_ISLAND_PATTERN_BUSH (SYS_FLAGS + 0xBD)
diff --git a/include/constants/global.h b/include/constants/global.h
index 7f3c80bb4..ae9a0da3b 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -34,6 +34,8 @@
#define QUEST_LOG_SCENE_COUNT 4
+#define NUM_TOWER_CHALLENGE_TYPES 4
+
#define MALE 0
#define FEMALE 1
#define GENDER_COUNT 2
diff --git a/include/constants/layouts.h b/include/constants/layouts.h
index 657d531e8..967a4619c 100644
--- a/include/constants/layouts.h
+++ b/include/constants/layouts.h
@@ -279,17 +279,17 @@
#define LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_1F 294
#define LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_B1F 295
#define LAYOUT_FOUR_ISLAND_ICEFALL_CAVE_BACK 296
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_LOBBY 297
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_1F 298
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_2F 299
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_3F 300
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_4F 301
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_5F 302
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_6F 303
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_7F 304
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_8F 305
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_ROOF 306
-#define LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR 307
+#define LAYOUT_TRAINER_TOWER_LOBBY 297
+#define LAYOUT_TRAINER_TOWER_1F 298
+#define LAYOUT_TRAINER_TOWER_2F 299
+#define LAYOUT_TRAINER_TOWER_3F 300
+#define LAYOUT_TRAINER_TOWER_4F 301
+#define LAYOUT_TRAINER_TOWER_5F 302
+#define LAYOUT_TRAINER_TOWER_6F 303
+#define LAYOUT_TRAINER_TOWER_7F 304
+#define LAYOUT_TRAINER_TOWER_8F 305
+#define LAYOUT_TRAINER_TOWER_ROOF 306
+#define LAYOUT_TRAINER_TOWER_ELEVATOR 307
#define LAYOUT_CERULEAN_CITY_HOUSE5 308
#define LAYOUT_SIX_ISLAND_DOTTED_HOLE_1F 309
#define LAYOUT_SIX_ISLAND_DOTTED_HOLE_B1F 310
@@ -348,22 +348,22 @@
#define LAYOUT_SEVEN_ISLAND_TANOBY_RUINS_VIAPOIS_CHAMBER 363
#define LAYOUT_NAVEL_ROCK_B1F 364
#define LAYOUT_NAVEL_ROCK_FORK 365
-#define LAYOUT_UNUSED_LAYOUT_834BC2C 366
-#define LAYOUT_UNUSED_LAYOUT_834BEB4 367
-#define LAYOUT_UNUSED_LAYOUT_834C13C 368
-#define LAYOUT_UNUSED_LAYOUT_834C3C4 369
-#define LAYOUT_UNUSED_LAYOUT_834C64C 370
-#define LAYOUT_UNUSED_LAYOUT_834C8D4 371
-#define LAYOUT_UNUSED_LAYOUT_834CB5C 372
-#define LAYOUT_UNUSED_LAYOUT_834CDE4 373
-#define LAYOUT_UNUSED_LAYOUT_834D06C 374
-#define LAYOUT_UNUSED_LAYOUT_834D2F4 375
-#define LAYOUT_UNUSED_LAYOUT_834D57C 376
-#define LAYOUT_UNUSED_LAYOUT_834D804 377
-#define LAYOUT_UNUSED_LAYOUT_834DA8C 378
-#define LAYOUT_UNUSED_LAYOUT_834DD14 379
-#define LAYOUT_UNUSED_LAYOUT_834DF9C 380
-#define LAYOUT_UNUSED_LAYOUT_834E224 381
+#define LAYOUT_TRAINER_TOWER_1F_DOUBLES 366
+#define LAYOUT_TRAINER_TOWER_2F_DOUBLES 367
+#define LAYOUT_TRAINER_TOWER_3F_DOUBLES 368
+#define LAYOUT_TRAINER_TOWER_4F_DOUBLES 369
+#define LAYOUT_TRAINER_TOWER_5F_DOUBLES 370
+#define LAYOUT_TRAINER_TOWER_6F_DOUBLES 371
+#define LAYOUT_TRAINER_TOWER_7F_DOUBLES 372
+#define LAYOUT_TRAINER_TOWER_8F_DOUBLES 373
+#define LAYOUT_TRAINER_TOWER_1F_KNOCKOUT 374
+#define LAYOUT_TRAINER_TOWER_2F_KNOCKOUT 375
+#define LAYOUT_TRAINER_TOWER_3F_KNOCKOUT 376
+#define LAYOUT_TRAINER_TOWER_4F_KNOCKOUT 377
+#define LAYOUT_TRAINER_TOWER_5F_KNOCKOUT 378
+#define LAYOUT_TRAINER_TOWER_6F_KNOCKOUT 379
+#define LAYOUT_TRAINER_TOWER_7F_KNOCKOUT 380
+#define LAYOUT_TRAINER_TOWER_8F_KNOCKOUT 381
#define LAYOUT_SEVEN_ISLAND_HOUSE_ROOM1 382
#define LAYOUT_ONE_ISLAND_KINDLE_ROAD_EMBER_SPA 383
diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h
index 0cc1c27fb..1b1b74d37 100644
--- a/include/constants/map_groups.h
+++ b/include/constants/map_groups.h
@@ -135,17 +135,17 @@
// Map Group 2
#define MAP_NAVEL_ROCK_EXTERIOR (0 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_1F (1 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_2F (2 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_3F (3 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_4F (4 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_5F (5 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_6F (6 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_7F (7 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_8F (8 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_ROOF (9 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY (10 | (2 << 8))
-#define MAP_SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR (11 | (2 << 8))
+#define MAP_TRAINER_TOWER_1F (1 | (2 << 8))
+#define MAP_TRAINER_TOWER_2F (2 | (2 << 8))
+#define MAP_TRAINER_TOWER_3F (3 | (2 << 8))
+#define MAP_TRAINER_TOWER_4F (4 | (2 << 8))
+#define MAP_TRAINER_TOWER_5F (5 | (2 << 8))
+#define MAP_TRAINER_TOWER_6F (6 | (2 << 8))
+#define MAP_TRAINER_TOWER_7F (7 | (2 << 8))
+#define MAP_TRAINER_TOWER_8F (8 | (2 << 8))
+#define MAP_TRAINER_TOWER_ROOF (9 | (2 << 8))
+#define MAP_TRAINER_TOWER_LOBBY (10 | (2 << 8))
+#define MAP_TRAINER_TOWER_ELEVATOR (11 | (2 << 8))
#define MAP_FIVE_ISLAND_LOST_CAVE_ENTRANCE (12 | (2 << 8))
#define MAP_FIVE_ISLAND_LOST_CAVE_ROOM1 (13 | (2 << 8))
#define MAP_FIVE_ISLAND_LOST_CAVE_ROOM2 (14 | (2 << 8))
diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h
index 8726113f4..207ed2a88 100644
--- a/include/constants/metatile_labels.h
+++ b/include/constants/metatile_labels.h
@@ -85,5 +85,8 @@
// gTileset_82D504C. Below metatile probably needs generic name
#define METATILE_MtEmber_CaveEntrance 0x346
+// Trainer Tower
+#define METATILE_TrainerTower_Floor_ShadeBottomLeft 0x287
+#define METATILE_TrainerTower_CounterBarrier 0x2B4
#endif // GUARD_METATILE_LABELS_H
diff --git a/include/constants/party_menu.h b/include/constants/party_menu.h
index 28ce39cd3..0c958ccc5 100644
--- a/include/constants/party_menu.h
+++ b/include/constants/party_menu.h
@@ -64,7 +64,6 @@
#define PARTY_MENU_TYPE_UNION_ROOM_TRADE 9 // trading board
#define PARTY_MENU_TYPE_SPIN_TRADE 10 // Unused beta for Gen IV's Spin Trade
#define PARTY_MENU_TYPE_MINIGAME 11
-#define PARTY_MENU_TYPE_STORE_PYRAMID_HELD_ITEMS 12
#define PARTY_ACTION_CHOOSE_MON 0
#define PARTY_ACTION_SEND_OUT 1
diff --git a/include/constants/trainer_tower.h b/include/constants/trainer_tower.h
new file mode 100644
index 000000000..6372a30e8
--- /dev/null
+++ b/include/constants/trainer_tower.h
@@ -0,0 +1,46 @@
+#ifndef GUARD_CONSTANTS_TRAINER_TOWER_H
+#define GUARD_CONSTANTS_TRAINER_TOWER_H
+
+#define CHALLENGE_TYPE_SINGLE 0
+#define CHALLENGE_TYPE_DOUBLE 1
+#define CHALLENGE_TYPE_KNOCKOUT 2
+// Mixed challenges use one of the above 3 for each floor
+
+#define CHALLENGE_STATUS_LOST 0
+#define CHALLENGE_STATUS_UNK 1 // Never set, possibly e-Card related
+#define CHALLENGE_STATUS_NORMAL 2 // Not started or ongoing
+
+#define MAX_TRAINER_TOWER_FLOORS 8
+
+#define MAX_TRAINERS_PER_FLOOR 3
+
+#define TRAINER_TOWER_FUNC_INIT_FLOOR 0
+#define TRAINER_TOWER_FUNC_GET_SPEECH 1
+#define TRAINER_TOWER_FUNC_DO_BATTLE 2
+#define TRAINER_TOWER_FUNC_GET_CHALLENGE_TYPE 3
+#define TRAINER_TOWER_FUNC_CLEARED_FLOOR 4
+#define TRAINER_TOWER_FUNC_GET_FLOOR_CLEARED 5
+#define TRAINER_TOWER_FUNC_START_CHALLENGE 6
+#define TRAINER_TOWER_FUNC_GET_OWNER_STATE 7
+#define TRAINER_TOWER_FUNC_GIVE_PRIZE 8
+#define TRAINER_TOWER_FUNC_CHECK_FINAL_TIME 9
+#define TRAINER_TOWER_FUNC_RESUME_TIMER 10
+#define TRAINER_TOWER_FUNC_SET_LOST 11
+#define TRAINER_TOWER_FUNC_GET_CHALLENGE_STATUS 12
+#define TRAINER_TOWER_FUNC_GET_TIME 13
+#define TRAINER_TOWER_FUNC_SHOW_RESULTS 14
+#define TRAINER_TOWER_FUNC_CLOSE_RESULTS 15
+#define TRAINER_TOWER_FUNC_CHECK_DOUBLES 16
+#define TRAINER_TOWER_FUNC_GET_NUM_FLOORS 17
+#define TRAINER_TOWER_FUNC_SHOULD_WARP_TO_COUNTER 18
+#define TRAINER_TOWER_FUNC_ENCOUNTER_MUSIC 19
+#define TRAINER_TOWER_FUNC_GET_BEAT_CHALLENGE 20
+
+#define TRAINER_TOWER_TEXT_INTRO 2
+#define TRAINER_TOWER_TEXT_PLAYER_LOST 3
+#define TRAINER_TOWER_TEXT_PLAYER_WON 4
+#define TRAINER_TOWER_TEXT_AFTER 5
+
+#define TRAINER_TOWER_MAX_TIME 215999 // 60 * 60 * 60 - 1
+
+#endif //GUARD_CONSTANTS_TRAINER_TOWER_H
diff --git a/include/global.h b/include/global.h
index 8644fe364..54d8fdec3 100644
--- a/include/global.h
+++ b/include/global.h
@@ -168,13 +168,6 @@ struct BerryPickingResults // possibly used in the game itself? Size may be wron
u8 field_F;
};
-struct PyramidBag
-{
- u16 items_Lvl50[10];
- u16 items_OpenLvl[10];
- u8 quantity[10];
-};
-
struct BerryCrush
{
u16 berryCrushResults[4];
@@ -719,19 +712,18 @@ struct MEventBuffers
/*0x344 0x3464*/ u32 unk_344[2][5];
}; // 0x36C 0x348C
-struct TrainerTowerLog
+struct TrainerTower
{
- u32 unk0;
- u32 unk4;
- u8 unk8;
+ u32 timer;
+ u32 bestTime;
+ u8 floorsCleared;
u8 unk9;
- u8 unkA_0:1;
- u8 unkA_1:1;
- u8 unkA_2:1;
- u8 unkA_3:1;
- u8 unkA_4:1;
- u8 unkA_5:1;
- u8 unkA_6:2;
+ bool8 receivedPrize:1;
+ bool8 checkedFinalTime:1;
+ bool8 spokeToOwner:1;
+ bool8 hasLost:1;
+ bool8 unkA_4:1;
+ bool8 validated:1;
};
struct TrainerRematchState
@@ -807,8 +799,8 @@ struct SaveBlock1
/*0x3BA8*/ struct TrainerNameRecord trainerNameRecords[20];
/*0x3C98*/ struct DaycareMon route5DayCareMon;
/*0x3D24*/ u8 filler3D24[0x10];
- /*0x3D34*/ u32 unkArrayIdx;
- /*0x3D38*/ struct TrainerTowerLog unkArray[4];
+ /*0x3D34*/ u32 towerChallengeId;
+ /*0x3D38*/ struct TrainerTower trainerTower[NUM_TOWER_CHALLENGE_TYPES];
};
struct MapPosition
diff --git a/include/renewable_hidden_items.h b/include/renewable_hidden_items.h
index 0de109528..3a0385c00 100644
--- a/include/renewable_hidden_items.h
+++ b/include/renewable_hidden_items.h
@@ -1,7 +1,6 @@
#ifndef GUARD_RENEWABLE_HIDDEN_ITEMS_H
#define GUARD_RENEWABLE_HIDDEN_ITEMS_H
-bool32 sub_815D834(void);
void IncrementRenewableHiddenItemStepCounter(void);
void TryRegenerateRenewableHiddenItems(void);
void SetAllRenewableItemFlags(void);
diff --git a/include/script.h b/include/script.h
index ad7094a9b..2fb732396 100644
--- a/include/script.h
+++ b/include/script.h
@@ -48,7 +48,7 @@ void ScriptContext2_RunNewScript(const u8 *ptr);
u8 *mapheader_get_tagged_pointer(u8 tag);
void mapheader_run_script_by_tag(u8 tag);
u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag);
-void mapheader_run_script_with_tag_x1(void);
+void RunOnLoadMapScript(void);
void mapheader_run_script_with_tag_x3(void);
void mapheader_run_script_with_tag_x5(void);
void mapheader_run_script_with_tag_x7(void);
diff --git a/include/trainer_tower.h b/include/trainer_tower.h
index 9c1ac0631..72c0f236c 100644
--- a/include/trainer_tower.h
+++ b/include/trainer_tower.h
@@ -6,7 +6,9 @@ void InitTrainerTowerBattleStruct(void);
void FreeTrainerTowerBattleStruct(void);
u8 GetTrainerTowerTrainerFrontSpriteId(void);
void ResetTrainerTowerResults(void);
-void sub_815DA28(u8 *text);
-u8 sub_815DA10(void);
+void GetTrainerTowerOpponentWinText(u8 *dest, u8 opponentIdx);
+void GetTrainerTowerOpponentLoseText(u8 *dest, u8 opponentIdx);
+void GetTrainerTowerOpponentName(u8 *text);
+u8 GetTrainerTowerOpponentClass(void);
#endif //GUARD_TRAINER_TOWER_H
diff --git a/src/battle_main.c b/src/battle_main.c
index 3f20399f6..faad8bafb 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -4164,7 +4164,6 @@ bool8 TryRunFromBattle(u8 battler)
{
bool8 effect = FALSE;
u8 holdEffect;
- u8 pyramidMultiplier;
u8 speedVar;
if (gBattleMons[battler].item == ITEM_ENIGMA_BERRY)
diff --git a/src/battle_message.c b/src/battle_message.c
index 4f95ae364..d8367c75e 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -22,6 +22,7 @@
#include "constants/moves.h"
#include "constants/items.h"
#include "constants/trainer_classes.h"
+#include "constants/trainer_tower.h"
struct BattleWindowText
{
@@ -1294,9 +1295,9 @@ const u8 gUnknown_83FE94D[] = _("a PSYCHIC move");
const u8 gUnknown_83FE95C[] = _("an ICE move");
const u8 gUnknown_83FE968[] = _("a DRAGON move");
const u8 gUnknown_83FE976[] = _("a DARK move");
-const u8 gUnknown_83FE982[] = _("TIME BOARD");
-const u8 gUnknown_83FE98D[] = _("CLEAR TIME");
-const u8 gUnknown_83FE998[] = _("{STR_VAR_1}MIN. {STR_VAR_2}.{STR_VAR_3}SEC.");
+const u8 gText_TimeBoard[] = _("TIME BOARD");
+const u8 gText_ClearTime[] = _("CLEAR TIME"); // Unused
+const u8 gText_XMinYZSec[] = _("{STR_VAR_1}MIN. {STR_VAR_2}.{STR_VAR_3}SEC.");
const u8 gUnknown_83FE9A9[] = _("1F");
const u8 gUnknown_83FE9AC[] = _("2F");
const u8 gUnknown_83FE9AF[] = _("3F");
@@ -1306,7 +1307,7 @@ const u8 gUnknown_83FE9B8[] = _("6F");
const u8 gUnknown_83FE9BB[] = _("7F");
const u8 gUnknown_83FE9BE[] = _("8F");
-const u8 *const gUnknown_83FE9C4[] = {
+const u8 *const gTrainerTowerChallengeTypeTexts[NUM_TOWER_CHALLENGE_TYPES] = {
gOtherText_Single,
gOtherText_Double,
gOtherText_Knockout,
@@ -1990,7 +1991,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
toCpy = gTrainerClassNames[GetBattleTowerTrainerClassNameId()];
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER)
- toCpy = gTrainerClassNames[sub_815DA10()];
+ toCpy = gTrainerClassNames[GetTrainerTowerOpponentClass()];
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
toCpy = gTrainerClassNames[GetEreaderTrainerClassId()];
else
@@ -2014,7 +2015,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
}
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER)
{
- sub_815DA28(text);
+ GetTrainerTowerOpponentName(text);
toCpy = text;
}
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
@@ -2054,7 +2055,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
case B_TXT_TRAINER1_LOSE_TEXT: // trainerA lose text
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER)
{
- sub_815DC40(gStringVar4, 0);
+ GetTrainerTowerOpponentLoseText(gStringVar4, 0);
toCpy = gStringVar4;
}
else
@@ -2065,7 +2066,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER)
{
- sub_815DBF4(gStringVar4, 0);
+ GetTrainerTowerOpponentWinText(gStringVar4, 0);
toCpy = gStringVar4;
}
else
@@ -2074,11 +2075,11 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
}
break;
case B_TXT_TRAINER2_LOSE_TEXT:
- sub_815DC40(gStringVar4, 1);
+ GetTrainerTowerOpponentLoseText(gStringVar4, 1);
toCpy = gStringVar4;
break;
case B_TXT_TRAINER2_WIN_TEXT:
- sub_815DBF4(gStringVar4, 1);
+ GetTrainerTowerOpponentWinText(gStringVar4, 1);
toCpy = gStringVar4;
break;
case B_TXT_26: // ?
diff --git a/src/cereader_tool.c b/src/cereader_tool.c
index 2c5d05018..c6e0c9a99 100644
--- a/src/cereader_tool.c
+++ b/src/cereader_tool.c
@@ -6,40 +6,40 @@
u8 sub_815D654(void)
{
- return (gSaveBlock1Ptr->unkArray[0].unk9 + 1) % 256;
+ return (gSaveBlock1Ptr->trainerTower[0].unk9 + 1) % 256;
}
static bool32 ValidateTrainerTowerTrainer(struct TrainerTowerFloor * floor)
{
- if (floor->floorIdx < 1 || floor->floorIdx > 8)
+ if (floor->floorIdx < 1 || floor->floorIdx > MAX_TRAINER_TOWER_FLOORS)
return FALSE;
- if (floor->challengeType > 2)
+ if (floor->challengeType > CHALLENGE_TYPE_KNOCKOUT)
return FALSE;
if (CalcByteArraySum((const u8 *)floor, offsetof(typeof(*floor), checksum)) != floor->checksum)
return FALSE;
return TRUE;
}
-bool32 ValidateTrainerTowerData(struct EReaderTrainerHillSet * ttdata)
+bool32 ValidateTrainerTowerData(struct EReaderTrainerTowerSet * ttdata)
{
- u32 count = ttdata->count;
+ u32 numFloors = ttdata->numFloors;
s32 i;
- if (count < 1 || count > 8)
+ if (numFloors < 1 || numFloors > MAX_TRAINER_TOWER_FLOORS)
return FALSE;
- for (i = 0; i < count; i++)
+ for (i = 0; i < numFloors; i++)
{
if (!ValidateTrainerTowerTrainer(&ttdata->floors[i]))
return FALSE;
}
- if (CalcByteArraySum((const u8 *)ttdata->floors, count * sizeof(ttdata->floors[0])) != ttdata->checksum)
+ if (CalcByteArraySum((const u8 *)ttdata->floors, numFloors * sizeof(ttdata->floors[0])) != ttdata->checksum)
return FALSE;
return TRUE;
}
-#define SEC30_SIZE (offsetof(struct EReaderTrainerHillSet, floors[4]))
-#define SEC31_SIZE (sizeof(struct EReaderTrainerHillSet) - SEC30_SIZE)
+#define SEC30_SIZE (offsetof(struct EReaderTrainerTowerSet, floors[4]))
+#define SEC31_SIZE (sizeof(struct EReaderTrainerTowerSet) - SEC30_SIZE)
-static bool32 CEReaderTool_SaveTrainerTower_r(struct EReaderTrainerHillSet * ttdata, u8 * buffer)
+static bool32 CEReaderTool_SaveTrainerTower_r(struct EReaderTrainerTowerSet * ttdata, u8 * buffer)
{
AGB_ASSERT_EX(ttdata->dummy == 0, ABSPATH("cereader_tool.c"), 198);
AGB_ASSERT_EX(ttdata->id == 0, ABSPATH("cereader_tool.c"), 199)
@@ -56,7 +56,7 @@ static bool32 CEReaderTool_SaveTrainerTower_r(struct EReaderTrainerHillSet * ttd
return TRUE;
}
-bool32 CEReaderTool_SaveTrainerTower(struct EReaderTrainerHillSet * ttdata)
+bool32 CEReaderTool_SaveTrainerTower(struct EReaderTrainerTowerSet * ttdata)
{
u8 * buffer = AllocZeroed(0x1000);
bool32 result = CEReaderTool_SaveTrainerTower_r(ttdata, buffer);
@@ -64,7 +64,7 @@ bool32 CEReaderTool_SaveTrainerTower(struct EReaderTrainerHillSet * ttdata)
return result;
}
-static bool32 CEReaderTool_LoadTrainerTower_r(struct EReaderTrainerHillSet * ttdata, void * buffer)
+static bool32 CEReaderTool_LoadTrainerTower_r(struct EReaderTrainerTowerSet * ttdata, void * buffer)
{
if (TryCopySpecialSaveSection(SECTOR_TTOWER(0), buffer) != 1)
return FALSE;
@@ -79,10 +79,16 @@ static bool32 CEReaderTool_LoadTrainerTower_r(struct EReaderTrainerHillSet * ttd
return TRUE;
}
-bool32 CEReaderTool_LoadTrainerTower(struct EReaderTrainerHillSet * ttdata)
+bool32 CEReaderTool_LoadTrainerTower(struct EReaderTrainerTowerSet * ttdata)
{
void * buffer = AllocZeroed(0x1000);
bool32 success = CEReaderTool_LoadTrainerTower_r(ttdata, buffer);
Free(buffer);
return success;
}
+
+bool32 ReadTrainerTowerAndValidate(void)
+{
+ // Stubbed out. Populated in Emerald
+ return FALSE;
+}
diff --git a/src/field_specials.c b/src/field_specials.c
index bd19a0477..a1de82c0f 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -876,22 +876,22 @@ void Special_GetElevatorFloor(void)
break;
}
}
- if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_1F))
+ if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(TRAINER_TOWER_1F))
{
switch (gSaveBlock1Ptr->warp2.mapNum)
{
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_1F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_2F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_3F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_4F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_5F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_6F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_7F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_8F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_ROOF):
+ case MAP_NUM(TRAINER_TOWER_1F):
+ case MAP_NUM(TRAINER_TOWER_2F):
+ case MAP_NUM(TRAINER_TOWER_3F):
+ case MAP_NUM(TRAINER_TOWER_4F):
+ case MAP_NUM(TRAINER_TOWER_5F):
+ case MAP_NUM(TRAINER_TOWER_6F):
+ case MAP_NUM(TRAINER_TOWER_7F):
+ case MAP_NUM(TRAINER_TOWER_8F):
+ case MAP_NUM(TRAINER_TOWER_ROOF):
floor = 15;
break;
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_LOBBY):
+ case MAP_NUM(TRAINER_TOWER_LOBBY):
floor = 3;
break;
}
@@ -992,23 +992,23 @@ u16 Special_InitElevatorFloorSelectMenuPos(void)
break;
}
}
- if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_1F))
+ if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(TRAINER_TOWER_1F))
{
switch (gSaveBlock1Ptr->warp2.mapNum)
{
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_1F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_2F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_3F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_4F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_5F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_6F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_7F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_8F):
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_ROOF):
+ case MAP_NUM(TRAINER_TOWER_1F):
+ case MAP_NUM(TRAINER_TOWER_2F):
+ case MAP_NUM(TRAINER_TOWER_3F):
+ case MAP_NUM(TRAINER_TOWER_4F):
+ case MAP_NUM(TRAINER_TOWER_5F):
+ case MAP_NUM(TRAINER_TOWER_6F):
+ case MAP_NUM(TRAINER_TOWER_7F):
+ case MAP_NUM(TRAINER_TOWER_8F):
+ case MAP_NUM(TRAINER_TOWER_ROOF):
sElevatorScroll = 0;
sElevatorCursorPos = 0;
break;
- case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_LOBBY):
+ case MAP_NUM(TRAINER_TOWER_LOBBY):
sElevatorScroll = 0;
sElevatorCursorPos = 1;
break;
@@ -2436,7 +2436,7 @@ bool8 Special_BadEggInParty(void)
bool8 Special_PlayerIsNotInTrainerTowerLobby(void)
{
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_LOBBY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_LOBBY))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRAINER_TOWER_LOBBY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_LOBBY))
return FALSE;
else
return TRUE;
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 0844087e0..90682da10 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -16,7 +16,7 @@ struct ConnectionFlags
u8 east:1;
};
-void sub_8058A00(struct MapHeader *mapHeader);
+static void InitMapLayoutData(struct MapHeader *mapHeader);
void map_copy_with_padding(u16 *map, u16 width, u16 height);
void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader);
void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
@@ -63,20 +63,20 @@ const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * conn
return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum);
}
-void not_trainer_hill_battle_pyramid(void)
+void InitMap(void)
{
- sub_8058A00(&gMapHeader);
- mapheader_run_script_with_tag_x1();
+ InitMapLayoutData(&gMapHeader);
+ RunOnLoadMapScript();
}
-void sub_80589E8(void)
+void InitMapFromSavedGame(void)
{
- sub_8058A00(&gMapHeader);
+ InitMapLayoutData(&gMapHeader);
LoadSavedMapView();
- mapheader_run_script_with_tag_x1();
+ RunOnLoadMapScript();
}
-void sub_8058A00(struct MapHeader * mapHeader)
+static void InitMapLayoutData(struct MapHeader * mapHeader)
{
const struct MapLayout * mapLayout = mapHeader->mapLayout;
CpuFastFill(0x03FF03FF, gBackupMapLayout, sizeof(gBackupMapLayout));
diff --git a/src/heal_location.c b/src/heal_location.c
index 89d9478c0..5c31e2df3 100644
--- a/src/heal_location.c
+++ b/src/heal_location.c
@@ -124,13 +124,13 @@ void SetBlackoutRespawnWarpAndHealerNpc(struct WarpData * warp)
if (VarGet(VAR_MAP_SCENE_TRAINER_TOWER) == 1)
{
- if (!gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2)
+ if (!gSaveBlock1Ptr->trainerTower[gSaveBlock1Ptr->towerChallengeId].spokeToOwner)
VarSet(VAR_MAP_SCENE_TRAINER_TOWER, 0);
gSpecialVar_LastTalked = 1;
warp->x = 4;
warp->y = 11;
- warp->mapGroup = MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_LOBBY);
- warp->mapNum = MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_LOBBY);
+ warp->mapGroup = MAP_GROUP(TRAINER_TOWER_LOBBY);
+ warp->mapNum = MAP_NUM(TRAINER_TOWER_LOBBY);
warp->warpId = 0xFF;
}
else
@@ -155,7 +155,7 @@ void SetBlackoutRespawnWarpAndHealerNpc(struct WarpData * warp)
warp->x = 5;
warp->y = 4;
}
- else if (sBlackoutRespawnHealCenterMapIdxs[healLocationIdx - 1][0] == MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_LOBBY) && sBlackoutRespawnHealCenterMapIdxs[healLocationIdx - 1][1] == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_LOBBY))
+ else if (sBlackoutRespawnHealCenterMapIdxs[healLocationIdx - 1][0] == MAP_GROUP(TRAINER_TOWER_LOBBY) && sBlackoutRespawnHealCenterMapIdxs[healLocationIdx - 1][1] == MAP_NUM(TRAINER_TOWER_LOBBY))
{
warp->x = 4;
warp->y = 11;
diff --git a/src/load_save.c b/src/load_save.c
index 9c30494f8..7f16f74a5 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -284,8 +284,8 @@ void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey)
{
int i;
- for(i = 0; i < 4; i++)
- ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->unkArray[i].unk4, encryptionKey);
+ for(i = 0; i < NUM_TOWER_CHALLENGE_TYPES; i++)
+ ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->trainerTower[i].bestTime, encryptionKey);
sub_8054F38(encryptionKey);
ApplyNewEncryptionKeyToBagItems_(encryptionKey);
diff --git a/src/mevent.c b/src/mevent.c
index a246e3e44..9eabcad61 100644
--- a/src/mevent.c
+++ b/src/mevent.c
@@ -419,7 +419,7 @@ static void Task_EReaderComm(u8 taskId)
}
break;
case 15:
- data->initialSendResult = ValidateTrainerTowerData((struct EReaderTrainerHillSet *)gDecompressionBuffer);
+ data->initialSendResult = ValidateTrainerTowerData((struct EReaderTrainerTowerSet *)gDecompressionBuffer);
Link_StartSend5FFFwithParam(data->initialSendResult);
data->state = 16;
break;
@@ -433,7 +433,7 @@ static void Task_EReaderComm(u8 taskId)
}
break;
case 17:
- if (CEReaderTool_SaveTrainerTower((struct EReaderTrainerHillSet *)gDecompressionBuffer))
+ if (CEReaderTool_SaveTrainerTower((struct EReaderTrainerTowerSet *)gDecompressionBuffer))
{
AddTextPrinterToWindow1(gJPText_ConnectionComplete);
ResetDelayTimer(&data->stateAdvanceDelay);
diff --git a/src/quest_log.c b/src/quest_log.c
index a02aea302..2ae5e9cfe 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -2602,18 +2602,18 @@ void SetQuestLogEvent(u16 eventId, const u16 *eventData)
static bool8 InQuestLogDisabledLocation(void)
{
// In Trainer Tower
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_1F)
- && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_1F)
- || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_2F)
- || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_3F)
- || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_4F)
- || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_5F)
- || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_6F)
- || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_7F)
- || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_8F)
- || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_ROOF)
- || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_LOBBY)
- || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR)))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRAINER_TOWER_1F)
+ && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_1F)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_2F)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_3F)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_4F)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_5F)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_6F)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_7F)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_8F)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_ROOF)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_LOBBY)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_ELEVATOR)))
return TRUE;
// In pokemon trainer fan club
@@ -2629,7 +2629,7 @@ static bool8 InQuestLogDisabledLocation(void)
// In elevator
if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROCKET_HIDEOUT_ELEVATOR) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROCKET_HIDEOUT_ELEVATOR))
|| (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SILPH_CO_ELEVATOR) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SILPH_CO_ELEVATOR))
- || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_ELEVATOR))
+ || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRAINER_TOWER_ELEVATOR) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_ELEVATOR))
|| (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(CELADON_CITY_DEPARTMENT_STORE_ELEVATOR) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(CELADON_CITY_DEPARTMENT_STORE_ELEVATOR)))
return TRUE;
diff --git a/src/region_map.c b/src/region_map.c
index d526f9aaa..b2f08e39a 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -3420,7 +3420,7 @@ static u8 sub_80C3878(u8 mapsec)
case MAPSEC_ROCKET_WAREHOUSE:
return FlagGet(FLAG_WORLD_MAP_FIVE_ISLAND_ROCKET_WAREHOUSE) ? 2 : 3;
case MAPSEC_TRAINER_TOWER_2:
- return FlagGet(FLAG_WORLD_MAP_SEVEN_ISLAND_TRAINER_TOWER_LOBBY) ? 2 : 3;
+ return FlagGet(FLAG_WORLD_MAP_TRAINER_TOWER_LOBBY) ? 2 : 3;
case MAPSEC_DOTTED_HOLE:
return FlagGet(FLAG_WORLD_MAP_SIX_ISLAND_DOTTED_HOLE_1F) ? 2 : 3;
case MAPSEC_LOST_CAVE:
diff --git a/src/renewable_hidden_items.c b/src/renewable_hidden_items.c
index cbaa780e6..c0406fe94 100644
--- a/src/renewable_hidden_items.c
+++ b/src/renewable_hidden_items.c
@@ -529,12 +529,6 @@ static const struct RenewableHiddenItemData sRenewableHiddenItems[] = {
},
};
-bool32 sub_815D834(void)
-{
- // Stubbed out?
- return FALSE;
-}
-
void SetAllRenewableItemFlags(void)
{
u8 i, j;
diff --git a/src/script.c b/src/script.c
index ee4ffb7cf..4b8565589 100644
--- a/src/script.c
+++ b/src/script.c
@@ -406,7 +406,7 @@ u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag)
}
}
-void mapheader_run_script_with_tag_x1(void)
+void RunOnLoadMapScript(void)
{
mapheader_run_script_by_tag(1);
}
diff --git a/src/trainer_tower.c b/src/trainer_tower.c
index 60c6fd93d..0f9907e2d 100644
--- a/src/trainer_tower.c
+++ b/src/trainer_tower.c
@@ -20,7 +20,6 @@
#include "menu.h"
#include "new_menu_helpers.h"
#include "sound.h"
-#include "renewable_hidden_items.h"
#include "constants/flags.h"
#include "constants/vars.h"
#include "constants/items.h"
@@ -31,14 +30,18 @@
#include "constants/trainers.h"
#include "constants/facility_trainer_classes.h"
#include "constants/object_events.h"
+#include "constants/trainer_tower.h"
+
+#define CURR_FLOOR sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx]
+#define TRAINER_TOWER gSaveBlock1Ptr->trainerTower[gSaveBlock1Ptr->towerChallengeId]
struct UnkStruct_203F458
{
/* 0x0000 */ u8 floorIdx;
- /* 0x0004 */ struct EReaderTrainerHillSet unk_0004;
+ /* 0x0004 */ struct EReaderTrainerTowerSet unk_0004;
};
-struct UnkStruct_203F45C
+struct TrainerTowerOpponent
{
/* 0x00 */ u8 name[11];
/* 0x0C */ u16 speechWin[6];
@@ -52,15 +55,15 @@ struct UnkStruct_203F45C
struct SinglesTrainerInfo
{
- u8 mapObjGfx;
+ u8 objGfx;
u8 facilityClass;
bool8 gender;
};
struct DoublesTrainerInfo
{
- u8 mapObjGfx1;
- u8 mapObjGfx2;
+ u8 objGfx1;
+ u8 objGfx2;
u8 facilityClass;
bool8 gender1;
bool8 gender2;
@@ -68,49 +71,49 @@ struct DoublesTrainerInfo
struct TrainerEncounterMusicPairs
{
- u8 unk0;
- u8 unk1;
+ u8 facilityClass;
+ u8 musicId;
};
static EWRAM_DATA struct UnkStruct_203F458 * sTrainerTowerState = NULL;
-static EWRAM_DATA struct UnkStruct_203F45C * sTrainerTowerOpponent = NULL;
+static EWRAM_DATA struct TrainerTowerOpponent * sTrainerTowerOpponent = NULL;
static EWRAM_DATA u8 sUnused_203F460 = 0;
-static void sub_815DC8C(void); // setup
-static void sub_815DD2C(void); // teardown
-static void sub_815DD44(void);
+static void SetUpTrainerTowerDataStruct(void);
+static void FreeTrainerTowerDataStruct(void);
+static void InitTrainerTowerFloor(void);
static void SetTrainerTowerNPCGraphics(void);
static void TT_ConvertEasyChatMessageToString(u16 *ecWords, u8 *dest);
-static void sub_815DF54(void);
+static void BufferTowerOpponentSpeech(void);
static void TrainerTowerGetOpponentTextColor(u8 battleType, u8 facilityClass);
-static void sub_815E160(void);
-static void sub_815E1C0(void);
-static void sub_815E1F0(void);
-static void TTSpecial_HasReachedTheRoof(void);
-static void sub_815E28C(void);
-static void sub_815E394(void);
-static void sub_815E408(void);
-static void sub_815E4B0(void);
-static void TTSpecial_StartTimer(void);
-static void sub_815E5C4(void);
-static void sub_815E5F0(void);
-static void sub_815E658(void);
-static void sub_815E720(void);
-static void sub_815E88C(void);
-static void sub_815E8B4(void);
-static void sub_815E8CC(void);
-static void sub_815E908(void);
-static void sub_815E948(void);
-static void sub_815E9C8(void);
+static void DoTrainerTowerBattle(void);
+static void TrainerTowerGetChallengeType(void);
+static void TrainerTowerAddFloorCleared(void);
+static void GetFloorAlreadyCleared(void);
+static void StartTrainerTowerChallenge(void);
+static void GetOwnerState(void);
+static void GiveChallengePrize(void);
+static void CheckFinalTime(void);
+static void TrainerTowerResumeTimer(void);
+static void TrainerTowerSetPlayerLost(void);
+static void GetTrainerTowerChallengeStatus(void);
+static void GetCurrentTime(void);
+static void ShowResultsBoard(void);
+static void CloseResultsBoard(void);
+static void TrainerTowerGetDoublesEligiblity(void);
+static void TrainerTowerGetNumFloors(void);
+static void ShouldWarpToCounter(void);
+static void PlayTrainerTowerEncounterMusic(void);
+static void HasSpokenToOwner(void);
static void BuildEnemyParty(void);
static s32 GetPartyMaxLevel(void);
static void ValidateOrResetCurTrainerTowerRecord(void);
static u32 GetTrainerTowerRecordTime(u32 *);
static void SetTrainerTowerRecordTime(u32 *, u32);
-extern const u8 gUnknown_83FE982[];
-extern const u8 gUnknown_83FE998[];
-extern const u8 *const gUnknown_83FE9C4[];
+extern const u8 gText_TimeBoard[];
+extern const u8 gText_XMinYZSec[];
+extern const u8 *const gTrainerTowerChallengeTypeTexts[];
static const struct SinglesTrainerInfo sSingleBattleTrainerInfo[] = {
{OBJECT_EVENT_GFX_WOMAN_2, FACILITY_CLASS_AROMA_LADY, FEMALE},
@@ -319,51 +322,52 @@ static const struct TrainerEncounterMusicPairs sTrainerEncounterMusicLUT[105] =
{FACILITY_CLASS_ELITE_FOUR_2, TRAINER_ENCOUNTER_MUSIC_MALE}
};
-static const struct WindowTemplate gUnknown_847A218[] = {
+static const struct WindowTemplate sTimeBoardWindowTemplate[] = {
{0, 3, 1, 27, 18, 15, 0x001},
DUMMY_WIN_TEMPLATE
};
-static const u32 gUnknown_847A228 = 0x70; // unused
-
-static const u8 gUnknown_847A22C[3] = {0, 2, 3};
-
-static void (*const gUnknown_847A230[])(void) = {
- sub_815DD44,
- sub_815DF54,
- sub_815E160,
- sub_815E1C0,
- sub_815E1F0,
- TTSpecial_HasReachedTheRoof,
- sub_815E28C,
- sub_815E394,
- sub_815E408,
- sub_815E4B0,
- TTSpecial_StartTimer,
- sub_815E5C4,
- sub_815E5F0,
- sub_815E658,
- sub_815E720,
- sub_815E88C,
- sub_815E8B4,
- sub_815E8CC,
- sub_815E908,
- sub_815E948,
- sub_815E9C8
+static const u32 sUnused_847A228 = 0x70;
+
+static const u8 sTextColors[3] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
+
+static void (*const sTrainerTowerFunctions[])(void) = {
+ [TRAINER_TOWER_FUNC_INIT_FLOOR] = InitTrainerTowerFloor,
+ [TRAINER_TOWER_FUNC_GET_SPEECH] = BufferTowerOpponentSpeech,
+ [TRAINER_TOWER_FUNC_DO_BATTLE] = DoTrainerTowerBattle,
+ [TRAINER_TOWER_FUNC_GET_CHALLENGE_TYPE] = TrainerTowerGetChallengeType,
+ [TRAINER_TOWER_FUNC_CLEARED_FLOOR] = TrainerTowerAddFloorCleared,
+ [TRAINER_TOWER_FUNC_GET_FLOOR_CLEARED] = GetFloorAlreadyCleared,
+ [TRAINER_TOWER_FUNC_START_CHALLENGE] = StartTrainerTowerChallenge,
+ [TRAINER_TOWER_FUNC_GET_OWNER_STATE] = GetOwnerState,
+ [TRAINER_TOWER_FUNC_GIVE_PRIZE] = GiveChallengePrize,
+ [TRAINER_TOWER_FUNC_CHECK_FINAL_TIME] = CheckFinalTime,
+ [TRAINER_TOWER_FUNC_RESUME_TIMER] = TrainerTowerResumeTimer,
+ [TRAINER_TOWER_FUNC_SET_LOST] = TrainerTowerSetPlayerLost,
+ [TRAINER_TOWER_FUNC_GET_CHALLENGE_STATUS] = GetTrainerTowerChallengeStatus,
+ [TRAINER_TOWER_FUNC_GET_TIME] = GetCurrentTime,
+ [TRAINER_TOWER_FUNC_SHOW_RESULTS] = ShowResultsBoard,
+ [TRAINER_TOWER_FUNC_CLOSE_RESULTS] = CloseResultsBoard,
+ [TRAINER_TOWER_FUNC_CHECK_DOUBLES] = TrainerTowerGetDoublesEligiblity,
+ [TRAINER_TOWER_FUNC_GET_NUM_FLOORS] = TrainerTowerGetNumFloors,
+ [TRAINER_TOWER_FUNC_SHOULD_WARP_TO_COUNTER] = ShouldWarpToCounter,
+ [TRAINER_TOWER_FUNC_ENCOUNTER_MUSIC] = PlayTrainerTowerEncounterMusic,
+ [TRAINER_TOWER_FUNC_GET_BEAT_CHALLENGE] = HasSpokenToOwner
};
-static const u16 sFloorLayouts[8][3] = {
- {LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_1F, LAYOUT_UNUSED_LAYOUT_834BC2C, LAYOUT_UNUSED_LAYOUT_834D06C},
- {LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_2F, LAYOUT_UNUSED_LAYOUT_834BEB4, LAYOUT_UNUSED_LAYOUT_834D2F4},
- {LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_3F, LAYOUT_UNUSED_LAYOUT_834C13C, LAYOUT_UNUSED_LAYOUT_834D57C},
- {LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_4F, LAYOUT_UNUSED_LAYOUT_834C3C4, LAYOUT_UNUSED_LAYOUT_834D804},
- {LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_5F, LAYOUT_UNUSED_LAYOUT_834C64C, LAYOUT_UNUSED_LAYOUT_834DA8C},
- {LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_6F, LAYOUT_UNUSED_LAYOUT_834C8D4, LAYOUT_UNUSED_LAYOUT_834DD14},
- {LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_7F, LAYOUT_UNUSED_LAYOUT_834CB5C, LAYOUT_UNUSED_LAYOUT_834DF9C},
- {LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_8F, LAYOUT_UNUSED_LAYOUT_834CDE4, LAYOUT_UNUSED_LAYOUT_834E224}
+// - 1 excludes Mixed challenge, which just uses one of the 3 other types
+static const u16 sFloorLayouts[MAX_TRAINER_TOWER_FLOORS][NUM_TOWER_CHALLENGE_TYPES - 1] = {
+ {LAYOUT_TRAINER_TOWER_1F, LAYOUT_TRAINER_TOWER_1F_DOUBLES, LAYOUT_TRAINER_TOWER_1F_KNOCKOUT},
+ {LAYOUT_TRAINER_TOWER_2F, LAYOUT_TRAINER_TOWER_2F_DOUBLES, LAYOUT_TRAINER_TOWER_2F_KNOCKOUT},
+ {LAYOUT_TRAINER_TOWER_3F, LAYOUT_TRAINER_TOWER_3F_DOUBLES, LAYOUT_TRAINER_TOWER_3F_KNOCKOUT},
+ {LAYOUT_TRAINER_TOWER_4F, LAYOUT_TRAINER_TOWER_4F_DOUBLES, LAYOUT_TRAINER_TOWER_4F_KNOCKOUT},
+ {LAYOUT_TRAINER_TOWER_5F, LAYOUT_TRAINER_TOWER_5F_DOUBLES, LAYOUT_TRAINER_TOWER_5F_KNOCKOUT},
+ {LAYOUT_TRAINER_TOWER_6F, LAYOUT_TRAINER_TOWER_6F_DOUBLES, LAYOUT_TRAINER_TOWER_6F_KNOCKOUT},
+ {LAYOUT_TRAINER_TOWER_7F, LAYOUT_TRAINER_TOWER_7F_DOUBLES, LAYOUT_TRAINER_TOWER_7F_KNOCKOUT},
+ {LAYOUT_TRAINER_TOWER_8F, LAYOUT_TRAINER_TOWER_8F_DOUBLES, LAYOUT_TRAINER_TOWER_8F_KNOCKOUT}
};
-static const u16 gUnknown_847A2B4[] = {
+static const u16 sPrizeList[] = {
ITEM_HP_UP,
ITEM_PROTEIN,
ITEM_IRON,
@@ -381,21 +385,21 @@ static const u16 gUnknown_847A2B4[] = {
ITEM_UP_GRADE
};
-static const u16 gUnknown_847A2D2[] = {
- MUS_SHOUNEN,
- MUS_SHOUJO,
- MUS_SHOUJO,
- MUS_ROCKET,
- MUS_SHOUNEN,
- MUS_SHOUNEN,
- MUS_ROCKET,
- MUS_ROCKET,
- MUS_SHOUNEN,
- MUS_SHOUJO,
- MUS_SHOUNEN,
- MUS_SHOUNEN,
- MUS_SHOUNEN,
- MUS_SHOUNEN
+static const u16 sTrainerTowerEncounterMusic[] = {
+ [TRAINER_ENCOUNTER_MUSIC_MALE] = MUS_SHOUNEN,
+ [TRAINER_ENCOUNTER_MUSIC_FEMALE] = MUS_SHOUJO,
+ [TRAINER_ENCOUNTER_MUSIC_GIRL] = MUS_SHOUJO,
+ [TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS] = MUS_ROCKET,
+ [TRAINER_ENCOUNTER_MUSIC_INTENSE] = MUS_SHOUNEN,
+ [TRAINER_ENCOUNTER_MUSIC_COOL] = MUS_SHOUNEN,
+ [TRAINER_ENCOUNTER_MUSIC_AQUA] = MUS_ROCKET,
+ [TRAINER_ENCOUNTER_MUSIC_MAGMA] = MUS_ROCKET,
+ [TRAINER_ENCOUNTER_MUSIC_SWIMMER] = MUS_SHOUNEN,
+ [TRAINER_ENCOUNTER_MUSIC_TWINS] = MUS_SHOUJO,
+ [TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR] = MUS_SHOUNEN,
+ [TRAINER_ENCOUNTER_MUSIC_HIKER] = MUS_SHOUNEN,
+ [TRAINER_ENCOUNTER_MUSIC_INTERVIEWER] = MUS_SHOUNEN,
+ [TRAINER_ENCOUNTER_MUSIC_RICH] = MUS_SHOUNEN
};
static const u8 sSingleBattleChallengeMonIdxs[][2] = {
@@ -431,22 +435,22 @@ static const u8 sKnockoutChallengeMonIdxs[][3] = {
{0x01, 0x04, 0x05}
};
-extern const struct EReaderTrainerHillSetSubstruct gUnknown_84827AC;
-extern const struct TrainerTowerFloor *const gUnknown_84827B4[][8];
+extern const struct EReaderTrainerTowerSetSubstruct gUnknown_84827AC;
+extern const struct TrainerTowerFloor *const gUnknown_84827B4[][MAX_TRAINER_TOWER_FLOORS];
-void sub_815D9E8(void)
+void CallTrainerTowerFunc(void)
{
- sub_815DC8C();
- gUnknown_847A230[gSpecialVar_0x8004]();
- sub_815DD2C();
+ SetUpTrainerTowerDataStruct();
+ sTrainerTowerFunctions[gSpecialVar_0x8004]();
+ FreeTrainerTowerDataStruct();
}
-u8 sub_815DA10(void)
+u8 GetTrainerTowerOpponentClass(void)
{
return gFacilityClassToTrainerClass[sTrainerTowerOpponent->facilityClass];
}
-void sub_815DA28(u8 *dest)
+void GetTrainerTowerOpponentName(u8 *dest)
{
StringCopyN(dest, sTrainerTowerOpponent->name, 11);
}
@@ -458,41 +462,39 @@ u8 GetTrainerTowerTrainerFrontSpriteId(void)
void InitTrainerTowerBattleStruct(void)
{
- u16 r10;
- s32 r9;
+ u16 trainerId;
+ int i;
- sub_815DC8C();
+ SetUpTrainerTowerDataStruct();
sTrainerTowerOpponent = AllocZeroed(sizeof(*sTrainerTowerOpponent));
- r10 = VarGet(VAR_TEMP_1);
- StringCopyN(sTrainerTowerOpponent->name, sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r10].name, 11);
+ trainerId = VarGet(VAR_TEMP_1);
+ StringCopyN(sTrainerTowerOpponent->name, CURR_FLOOR.trainers[trainerId].name, 11);
- for (r9 = 0; r9 < 6; r9++)
+ for (i = 0; i < 6; i++)
{
- sTrainerTowerOpponent->speechWin[r9] = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r10].speechWin[r9];
- sTrainerTowerOpponent->speechLose[r9] = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r10].speechLose[r9];
+ sTrainerTowerOpponent->speechWin[i] = CURR_FLOOR.trainers[trainerId].speechWin[i];
+ sTrainerTowerOpponent->speechLose[i] = CURR_FLOOR.trainers[trainerId].speechLose[i];
- if (sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].challengeType == 1)
+ if (CURR_FLOOR.challengeType == CHALLENGE_TYPE_DOUBLE)
{
- sTrainerTowerOpponent->speechWin2[r9] = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r10 + 1].speechWin[r9];
- sTrainerTowerOpponent->speechLose2[r9] = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r10 + 1].speechLose[r9];
+ sTrainerTowerOpponent->speechWin2[i] = CURR_FLOOR.trainers[trainerId + 1].speechWin[i];
+ sTrainerTowerOpponent->speechLose2[i] = CURR_FLOOR.trainers[trainerId + 1].speechLose[i];
}
}
- sTrainerTowerOpponent->battleType = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].challengeType;
- sTrainerTowerOpponent->facilityClass = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r10].facilityClass;
- sTrainerTowerOpponent->gender = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r10].gender;
- SetVBlankCounter1Ptr(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0);
- sub_815DD2C();
+ sTrainerTowerOpponent->battleType = CURR_FLOOR.challengeType;
+ sTrainerTowerOpponent->facilityClass = CURR_FLOOR.trainers[trainerId].facilityClass;
+ sTrainerTowerOpponent->gender = CURR_FLOOR.trainers[trainerId].gender;
+ SetVBlankCounter1Ptr(&TRAINER_TOWER.timer);
+ FreeTrainerTowerDataStruct();
}
void FreeTrainerTowerBattleStruct(void)
{
- Free(sTrainerTowerOpponent);
- sTrainerTowerOpponent = NULL;
+ FREE_AND_SET_NULL(sTrainerTowerOpponent);
}
-void sub_815DBF4(u8 *dest, u8 opponentIdx)
-// TTower_GetBeforeBattleMessage?
+void GetTrainerTowerOpponentWinText(u8 *dest, u8 opponentIdx)
{
VarSet(VAR_TEMP_3, opponentIdx);
TrainerTowerGetOpponentTextColor(sTrainerTowerOpponent->battleType, sTrainerTowerOpponent->facilityClass);
@@ -502,8 +504,7 @@ void sub_815DBF4(u8 *dest, u8 opponentIdx)
TT_ConvertEasyChatMessageToString(sTrainerTowerOpponent->speechWin2, dest);
}
-void sub_815DC40(u8 *dest, u8 opponentIdx)
-// TTower_GetAfterBattleMessage?
+void GetTrainerTowerOpponentLoseText(u8 *dest, u8 opponentIdx)
{
VarSet(VAR_TEMP_3, opponentIdx);
TrainerTowerGetOpponentTextColor(sTrainerTowerOpponent->battleType, sTrainerTowerOpponent->facilityClass);
@@ -513,23 +514,23 @@ void sub_815DC40(u8 *dest, u8 opponentIdx)
TT_ConvertEasyChatMessageToString(sTrainerTowerOpponent->speechLose2, dest);
}
-static void sub_815DC8C(void) // fakematching
+static void SetUpTrainerTowerDataStruct(void) // fakematching
{
- u32 whichTimer = gSaveBlock1Ptr->unkArrayIdx;
+ u32 challengeType = gSaveBlock1Ptr->towerChallengeId;
s32 r4;
const struct TrainerTowerFloor *const * r7;
sTrainerTowerState = AllocZeroed(sizeof(*sTrainerTowerState));
sTrainerTowerState->floorIdx = gMapHeader.mapLayoutId - 42;
- if (sub_815D834() == TRUE)
+ if (ReadTrainerTowerAndValidate() == TRUE)
CEReaderTool_LoadTrainerTower(&sTrainerTowerState->unk_0004);
else
{
struct UnkStruct_203F458 * r0_ = sTrainerTowerState;
- const struct EReaderTrainerHillSetSubstruct * r1 = &gUnknown_84827AC;
- memcpy(&r0_->unk_0004, r1, sizeof(struct EReaderTrainerHillSetSubstruct));
- r7 = gUnknown_84827B4[whichTimer];
- for (r4 = 0; r4 < 8; r4++)
+ const struct EReaderTrainerTowerSetSubstruct * r1 = &gUnknown_84827AC;
+ memcpy(&r0_->unk_0004, r1, sizeof(struct EReaderTrainerTowerSetSubstruct));
+ r7 = gUnknown_84827B4[challengeType];
+ for (r4 = 0; r4 < MAX_TRAINER_TOWER_FLOORS; r4++)
{
#ifndef NONMATCHING
void * r5;
@@ -547,22 +548,21 @@ static void sub_815DC8C(void) // fakematching
}
}
-static void sub_815DD2C(void)
+static void FreeTrainerTowerDataStruct(void)
{
- Free(sTrainerTowerState);
- sTrainerTowerState = NULL;
+ FREE_AND_SET_NULL(sTrainerTowerState);
}
-static void sub_815DD44(void)
+static void InitTrainerTowerFloor(void)
{
- if (gMapHeader.mapLayoutId - LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_LOBBY > sTrainerTowerState->unk_0004.count)
+ if (gMapHeader.mapLayoutId - LAYOUT_TRAINER_TOWER_LOBBY > sTrainerTowerState->unk_0004.numFloors)
{
- gSpecialVar_Result = 3;
- SetCurrentMapLayout(LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_ROOF);
+ gSpecialVar_Result = 3; // Skip past usable challenge types
+ SetCurrentMapLayout(LAYOUT_TRAINER_TOWER_ROOF);
}
else
{
- gSpecialVar_Result = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].challengeType;
+ gSpecialVar_Result = CURR_FLOOR.challengeType;
SetCurrentMapLayout(sFloorLayouts[sTrainerTowerState->floorIdx][gSpecialVar_Result]);
SetTrainerTowerNPCGraphics();
}
@@ -570,66 +570,70 @@ static void sub_815DD44(void)
static void SetTrainerTowerNPCGraphics(void)
{
- s32 r3, r4;
- u8 r1, r2, r4_;
- switch (sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].challengeType)
+ s32 i, j;
+ u8 trainerGfx1, trainerGfx2, facilityClass;
+ switch (CURR_FLOOR.challengeType)
{
- case 0:
- r2 = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[0].facilityClass;
- for (r3 = 0; r3 < NELEMS(sSingleBattleTrainerInfo); r3++)
+ case CHALLENGE_TYPE_SINGLE:
+ facilityClass = CURR_FLOOR.trainers[0].facilityClass;
+ for (i = 0; i < NELEMS(sSingleBattleTrainerInfo); i++)
{
- if (sSingleBattleTrainerInfo[r3].facilityClass == r2)
+ if (sSingleBattleTrainerInfo[i].facilityClass == facilityClass)
break;
}
- if (r3 != NELEMS(sSingleBattleTrainerInfo))
- r1 = sSingleBattleTrainerInfo[r3].mapObjGfx;
+
+ if (i != NELEMS(sSingleBattleTrainerInfo))
+ trainerGfx1 = sSingleBattleTrainerInfo[i].objGfx;
else
- r1 = 18;
- VarSet(VAR_OBJ_GFX_ID_1, r1);
+ trainerGfx1 = OBJECT_EVENT_GFX_YOUNGSTER;
+
+ VarSet(VAR_OBJ_GFX_ID_1, trainerGfx1);
break;
- case 1:
- r2 = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[0].facilityClass;
- for (r3 = 0; r3 < NELEMS(sDoubleBattleTrainerInfo); r3++)
+ case CHALLENGE_TYPE_DOUBLE:
+ facilityClass = CURR_FLOOR.trainers[0].facilityClass;
+ for (i = 0; i < NELEMS(sDoubleBattleTrainerInfo); i++)
{
- if (sDoubleBattleTrainerInfo[r3].facilityClass == r2)
+ if (sDoubleBattleTrainerInfo[i].facilityClass == facilityClass)
break;
}
- if (r3 != NELEMS(sDoubleBattleTrainerInfo))
+ if (i != NELEMS(sDoubleBattleTrainerInfo))
{
- r1 = sDoubleBattleTrainerInfo[r3].mapObjGfx1;
- r4_ = sDoubleBattleTrainerInfo[r3].mapObjGfx2;
+ trainerGfx1 = sDoubleBattleTrainerInfo[i].objGfx1;
+ trainerGfx2 = sDoubleBattleTrainerInfo[i].objGfx2;
}
else
{
- r1 = OBJECT_EVENT_GFX_YOUNGSTER;
- r4_ = OBJECT_EVENT_GFX_YOUNGSTER;
+ trainerGfx1 = OBJECT_EVENT_GFX_YOUNGSTER;
+ trainerGfx2 = OBJECT_EVENT_GFX_YOUNGSTER;
}
- VarSet(VAR_OBJ_GFX_ID_0, r1);
- VarSet(VAR_OBJ_GFX_ID_3, r4_);
+ VarSet(VAR_OBJ_GFX_ID_0, trainerGfx1);
+ VarSet(VAR_OBJ_GFX_ID_3, trainerGfx2);
break;
- case 2:
- for (r4 = 0; r4 < 3; r4++)
+ case CHALLENGE_TYPE_KNOCKOUT:
+ for (j = 0; j < MAX_TRAINERS_PER_FLOOR; j++)
{
- r2 = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r4].facilityClass;
- for (r3 = 0; r3 < NELEMS(sSingleBattleTrainerInfo); r3++)
+ facilityClass = CURR_FLOOR.trainers[j].facilityClass;
+ for (i = 0; i < NELEMS(sSingleBattleTrainerInfo); i++)
{
- if (sSingleBattleTrainerInfo[r3].facilityClass == r2)
+ if (sSingleBattleTrainerInfo[i].facilityClass == facilityClass)
break;
}
- if (r3 != NELEMS(sSingleBattleTrainerInfo))
- r1 = sSingleBattleTrainerInfo[r3].mapObjGfx;
+
+ if (i != NELEMS(sSingleBattleTrainerInfo))
+ trainerGfx1 = sSingleBattleTrainerInfo[i].objGfx;
else
- r1 = OBJECT_EVENT_GFX_YOUNGSTER;
- switch (r4)
+ trainerGfx1 = OBJECT_EVENT_GFX_YOUNGSTER;
+
+ switch (j)
{
case 0:
- VarSet(VAR_OBJ_GFX_ID_2, r1);
+ VarSet(VAR_OBJ_GFX_ID_2, trainerGfx1);
break;
case 1:
- VarSet(VAR_OBJ_GFX_ID_0, r1);
+ VarSet(VAR_OBJ_GFX_ID_0, trainerGfx1);
break;
case 2:
- VarSet(VAR_OBJ_GFX_ID_1, r1);
+ VarSet(VAR_OBJ_GFX_ID_1, trainerGfx1);
break;
}
}
@@ -652,207 +656,224 @@ static void TT_ConvertEasyChatMessageToString(u16 *ecWords, u8 *dest)
}
}
-static void sub_815DF54(void)
+static void BufferTowerOpponentSpeech(void)
{
- u16 r4 = gSpecialVar_0x8006;
- u8 r1;
- u8 r5 = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].challengeType;
+ u16 trainerId = gSpecialVar_0x8006;
+ u8 facilityClass;
+ u8 challengeType = CURR_FLOOR.challengeType;
- if (r5 != 1)
- r1 = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r4].facilityClass;
+ if (challengeType != CHALLENGE_TYPE_DOUBLE)
+ facilityClass = CURR_FLOOR.trainers[trainerId].facilityClass;
else
- r1 = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[0].facilityClass;
+ facilityClass = CURR_FLOOR.trainers[0].facilityClass;
+
switch (gSpecialVar_0x8005)
{
- case 2:
- TrainerTowerGetOpponentTextColor(r5, r1);
- TT_ConvertEasyChatMessageToString(sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r4].speechBefore, gStringVar4);
+ case TRAINER_TOWER_TEXT_INTRO:
+ TrainerTowerGetOpponentTextColor(challengeType, facilityClass);
+ TT_ConvertEasyChatMessageToString(CURR_FLOOR.trainers[trainerId].speechBefore, gStringVar4);
break;
- case 3:
- TrainerTowerGetOpponentTextColor(r5, r1);
- TT_ConvertEasyChatMessageToString(sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r4].speechWin, gStringVar4);
+ case TRAINER_TOWER_TEXT_PLAYER_LOST:
+ TrainerTowerGetOpponentTextColor(challengeType, facilityClass);
+ TT_ConvertEasyChatMessageToString(CURR_FLOOR.trainers[trainerId].speechWin, gStringVar4);
break;
- case 4:
- TrainerTowerGetOpponentTextColor(r5, r1);
- TT_ConvertEasyChatMessageToString(sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r4].speechLose, gStringVar4);
+ case TRAINER_TOWER_TEXT_PLAYER_WON:
+ TrainerTowerGetOpponentTextColor(challengeType, facilityClass);
+ TT_ConvertEasyChatMessageToString(CURR_FLOOR.trainers[trainerId].speechLose, gStringVar4);
break;
- case 5:
- TT_ConvertEasyChatMessageToString(sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[r4].speechAfter, gStringVar4);
+ case TRAINER_TOWER_TEXT_AFTER:
+ TT_ConvertEasyChatMessageToString(CURR_FLOOR.trainers[trainerId].speechAfter, gStringVar4);
break;
}
}
-static void TrainerTowerGetOpponentTextColor(u8 battleType, u8 facilityClass)
+static void TrainerTowerGetOpponentTextColor(u8 challengeType, u8 facilityClass)
{
- u16 r5 = FALSE;
- s32 r4;
- switch (battleType)
+ u16 gender = MALE;
+ int i;
+ switch (challengeType)
{
- case 0:
- case 2:
- for (r4 = 0; r4 < NELEMS(sSingleBattleTrainerInfo); r4++)
+ case CHALLENGE_TYPE_SINGLE:
+ case CHALLENGE_TYPE_KNOCKOUT:
+ for (i = 0; i < NELEMS(sSingleBattleTrainerInfo); i++)
{
- if (sSingleBattleTrainerInfo[r4].facilityClass == facilityClass)
+ if (sSingleBattleTrainerInfo[i].facilityClass == facilityClass)
break;
}
- if (r4 != NELEMS(sSingleBattleTrainerInfo))
- r5 = sSingleBattleTrainerInfo[r4].gender;
+ if (i != NELEMS(sSingleBattleTrainerInfo))
+ gender = sSingleBattleTrainerInfo[i].gender;
break;
- case 1:
- for (r4 = 0; r4 < NELEMS(sDoubleBattleTrainerInfo); r4++)
+ case CHALLENGE_TYPE_DOUBLE:
+ for (i = 0; i < NELEMS(sDoubleBattleTrainerInfo); i++)
{
- if (sDoubleBattleTrainerInfo[r4].facilityClass == facilityClass)
+ if (sDoubleBattleTrainerInfo[i].facilityClass == facilityClass)
break;
}
- if (r4 != NELEMS(sDoubleBattleTrainerInfo))
+ if (i != NELEMS(sDoubleBattleTrainerInfo))
{
if (VarGet(VAR_TEMP_3))
- r5 = sDoubleBattleTrainerInfo[r4].gender2;
+ gender = sDoubleBattleTrainerInfo[i].gender2;
else
- r5 = sDoubleBattleTrainerInfo[r4].gender1;
+ gender = sDoubleBattleTrainerInfo[i].gender1;
}
break;
}
gSpecialVar_PrevTextColor = gSpecialVar_TextColor;
- gSpecialVar_TextColor = r5;
+ gSpecialVar_TextColor = gender;
}
-static void sub_815E114(void)
+static void CB2_EndTrainerTowerBattle(void)
{
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
-static void sub_815E124(u8 taskId)
+static void Task_DoTrainerTowerBattle(u8 taskId)
{
if (BT_IsDone() == TRUE)
{
- gMain.savedCallback = sub_815E114;
+ gMain.savedCallback = CB2_EndTrainerTowerBattle;
CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_InitBattle);
DestroyTask(taskId);
}
}
-static void sub_815E160(void)
+static void DoTrainerTowerBattle(void)
{
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_TRAINER_TOWER;
- if (sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].challengeType == 1)
+
+ if (CURR_FLOOR.challengeType == CHALLENGE_TYPE_DOUBLE)
gBattleTypeFlags |= BATTLE_TYPE_DOUBLE;
+
gTrainerBattleOpponent_A = 0;
BuildEnemyParty();
- CreateTask(sub_815E124, 1);
+ CreateTask(Task_DoTrainerTowerBattle, 1);
PlayMapChosenOrBattleBGM(0);
BT_StartOnField(BattleSetup_GetBattleTowerBattleTransition());
}
-static void sub_815E1C0(void)
+static void TrainerTowerGetChallengeType(void)
{
if (!gSpecialVar_0x8005)
- gSpecialVar_Result = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].challengeType;
+ gSpecialVar_Result = CURR_FLOOR.challengeType;
}
-static void sub_815E1F0(void)
+static void TrainerTowerAddFloorCleared(void)
{
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8++;
+ TRAINER_TOWER.floorsCleared++;
}
-static void TTSpecial_HasReachedTheRoof(void)
+// So the player can safely go back through defeated floors to use the Poke Center (or exit challenge)
+static void GetFloorAlreadyCleared(void)
{
u16 mapLayoutId = gMapHeader.mapLayoutId;
- if (mapLayoutId - LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_1F == gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8 && mapLayoutId - LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_LOBBY <= sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].floorIdx)
+ if (mapLayoutId - LAYOUT_TRAINER_TOWER_1F == TRAINER_TOWER.floorsCleared
+ && mapLayoutId - LAYOUT_TRAINER_TOWER_LOBBY <= CURR_FLOOR.floorIdx)
gSpecialVar_Result = FALSE;
else
gSpecialVar_Result = TRUE;
}
-static void sub_815E28C(void)
+static void StartTrainerTowerChallenge(void)
{
- gSaveBlock1Ptr->unkArrayIdx = gSpecialVar_0x8005;
- if (gSaveBlock1Ptr->unkArrayIdx >= NELEMS(gSaveBlock1Ptr->unkArray))
- gSaveBlock1Ptr->unkArrayIdx = 0;
+ gSaveBlock1Ptr->towerChallengeId = gSpecialVar_0x8005;
+ if (gSaveBlock1Ptr->towerChallengeId >= NUM_TOWER_CHALLENGE_TYPES)
+ gSaveBlock1Ptr->towerChallengeId = 0;
ValidateOrResetCurTrainerTowerRecord();
- if (!sub_815D834())
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_5 = TRUE;
+ if (!ReadTrainerTowerAndValidate())
+ TRAINER_TOWER.validated = TRUE;
else
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_5 = FALSE;
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8 = 0;
- SetVBlankCounter1Ptr(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0);
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 = 0;
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2 = FALSE;
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_1 = FALSE;
+ TRAINER_TOWER.validated = FALSE;
+ TRAINER_TOWER.floorsCleared = 0;
+ SetVBlankCounter1Ptr(&TRAINER_TOWER.timer);
+ TRAINER_TOWER.timer = 0;
+ TRAINER_TOWER.spokeToOwner = FALSE;
+ TRAINER_TOWER.checkedFinalTime = FALSE;
}
-static void sub_815E394(void)
+static void GetOwnerState(void)
{
DisableVBlankCounter1();
gSpecialVar_Result = 0;
- if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2)
+
+ if (TRAINER_TOWER.spokeToOwner)
gSpecialVar_Result++;
- if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0 && gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_1)
+ if (TRAINER_TOWER.receivedPrize && TRAINER_TOWER.checkedFinalTime)
gSpecialVar_Result++;
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2 = TRUE;
+
+ TRAINER_TOWER.spokeToOwner = TRUE;
}
-static void sub_815E408(void)
+static void GiveChallengePrize(void)
{
- u16 itemId = gUnknown_847A2B4[sTrainerTowerState->unk_0004.floors->prize];
- if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0)
+ u16 itemId = sPrizeList[sTrainerTowerState->unk_0004.floors->prize];
+
+ if (TRAINER_TOWER.receivedPrize)
+ {
gSpecialVar_Result = 2;
- else if (AddBagItem(itemId, 1) == 1)
+ }
+ else if (AddBagItem(itemId, 1) == TRUE)
{
CopyItemName(itemId, gStringVar2);
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0 = TRUE;
+ TRAINER_TOWER.receivedPrize = TRUE;
gSpecialVar_Result = 0;
}
else
+ {
gSpecialVar_Result = 1;
+ }
}
-static void sub_815E4B0(void)
+static void CheckFinalTime(void)
{
- if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_1)
+ if (TRAINER_TOWER.checkedFinalTime)
+ {
gSpecialVar_Result = 2;
- else if (GetTrainerTowerRecordTime(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk4) > gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0)
+ }
+ else if (GetTrainerTowerRecordTime(&TRAINER_TOWER.bestTime) > TRAINER_TOWER.timer)
{
- SetTrainerTowerRecordTime(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk4, gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0);
+ SetTrainerTowerRecordTime(&TRAINER_TOWER.bestTime, TRAINER_TOWER.timer);
gSpecialVar_Result = 0;
}
else
+ {
gSpecialVar_Result = 1;
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_1 = TRUE;
+ }
+
+ TRAINER_TOWER.checkedFinalTime = TRUE;
}
-static void TTSpecial_StartTimer(void)
+static void TrainerTowerResumeTimer(void)
{
- if (!gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2)
+ if (!TRAINER_TOWER.spokeToOwner)
{
- if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 >= 215999)
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 = 215999;
+ if (TRAINER_TOWER.timer >= TRAINER_TOWER_MAX_TIME)
+ TRAINER_TOWER.timer = TRAINER_TOWER_MAX_TIME;
else
- SetVBlankCounter1Ptr(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0);
+ SetVBlankCounter1Ptr(&TRAINER_TOWER.timer);
}
}
-static void sub_815E5C4(void)
+static void TrainerTowerSetPlayerLost(void)
{
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_3 = 1;
+ TRAINER_TOWER.hasLost = TRUE;
}
-static void sub_815E5F0(void)
+static void GetTrainerTowerChallengeStatus(void)
{
- if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_3)
+ if (TRAINER_TOWER.hasLost)
{
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_3 = FALSE;
- gSpecialVar_Result = 0;
+ TRAINER_TOWER.hasLost = FALSE;
+ gSpecialVar_Result = CHALLENGE_STATUS_LOST;
}
- else if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_4)
+ else if (TRAINER_TOWER.unkA_4)
{
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_4 = FALSE;
- gSpecialVar_Result = 1;
+ TRAINER_TOWER.unkA_4 = FALSE;
+ gSpecialVar_Result = CHALLENGE_STATUS_UNK;
}
else
{
- gSpecialVar_Result = 2;
+ gSpecialVar_Result = CHALLENGE_STATUS_NORMAL;
}
}
@@ -861,8 +882,8 @@ static void sub_815E5F0(void)
\
frames = (src); \
\
- minutes = frames / 3600; \
- frames %= 3600; \
+ minutes = frames / (60 * 60); \
+ frames %= (60 * 60); \
seconds = frames / 60; \
frames %= 60; \
centiseconds = frames * 168 / 100; \
@@ -872,34 +893,34 @@ static void sub_815E5F0(void)
ConvertIntToDecimalStringN(gStringVar3, centiseconds, STR_CONV_MODE_LEADING_ZEROS, 2); \
})
-static void sub_815E658(void)
+static void GetCurrentTime(void)
{
- if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 >= 215999)
+ if (TRAINER_TOWER.timer >= TRAINER_TOWER_MAX_TIME)
{
DisableVBlankCounter1();
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0 = 215999;
+ TRAINER_TOWER.timer = TRAINER_TOWER_MAX_TIME;
}
- PRINT_TOWER_TIME(gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk0);
+ PRINT_TOWER_TIME(TRAINER_TOWER.timer);
}
-static void sub_815E720(void)
+static void ShowResultsBoard(void)
{
u8 windowId;
s32 i;
ValidateOrResetCurTrainerTowerRecord();
- windowId = AddWindow(gUnknown_847A218);
+ windowId = AddWindow(sTimeBoardWindowTemplate);
LoadStdWindowFrameGfx();
DrawStdWindowFrame(windowId, FALSE);
- AddTextPrinterParameterized(windowId, 2, gUnknown_83FE982, 0x4A, 0, 0xFF, NULL);
+ AddTextPrinterParameterized(windowId, 2, gText_TimeBoard, 0x4A, 0, 0xFF, NULL);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < NUM_TOWER_CHALLENGE_TYPES; i++)
{
- PRINT_TOWER_TIME(GetTrainerTowerRecordTime(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk4));
+ PRINT_TOWER_TIME(GetTrainerTowerRecordTime(&TRAINER_TOWER.bestTime));
- StringExpandPlaceholders(gStringVar4, gUnknown_83FE998);
- AddTextPrinterParameterized(windowId, 2, gUnknown_83FE9C4[i - 1], 0x18, 0x24 + 0x14 * i, 0xFF, NULL);
+ StringExpandPlaceholders(gStringVar4, gText_XMinYZSec);
+ AddTextPrinterParameterized(windowId, 2, gTrainerTowerChallengeTypeTexts[i - 1], 0x18, 0x24 + 0x14 * i, 0xFF, NULL);
AddTextPrinterParameterized(windowId, 2, gStringVar4, 0x60, 0x2E + 0x14 * i, 0xFF, NULL);
}
@@ -908,23 +929,24 @@ static void sub_815E720(void)
VarSet(VAR_TEMP_1, windowId);
}
-static void sub_815E88C(void)
+static void CloseResultsBoard(void)
{
u8 windowId = VarGet(VAR_TEMP_1);
ClearStdWindowAndFrameToTransparent(windowId, TRUE);
RemoveWindow(windowId);
}
-static void sub_815E8B4(void)
+static void TrainerTowerGetDoublesEligiblity(void)
{
gSpecialVar_Result = GetMonsStateToDoubles();
}
-static void sub_815E8CC(void)
+
+static void TrainerTowerGetNumFloors(void)
{
- if (sTrainerTowerState->unk_0004.count != sTrainerTowerState->unk_0004.floors[0].floorIdx)
+ if (sTrainerTowerState->unk_0004.numFloors != sTrainerTowerState->unk_0004.floors[0].floorIdx)
{
- ConvertIntToDecimalStringN(gStringVar1, sTrainerTowerState->unk_0004.count, STR_CONV_MODE_LEFT_ALIGN, 1);
+ ConvertIntToDecimalStringN(gStringVar1, sTrainerTowerState->unk_0004.numFloors, STR_CONV_MODE_LEFT_ALIGN, 1);
gSpecialVar_Result = TRUE;
}
else
@@ -933,79 +955,78 @@ static void sub_815E8CC(void)
}
}
-static void sub_815E908(void)
+// Dummied? equivalent to gSpecialVar_Result = FALSE
+// If it were to return TRUE the player would be warped back to the lobby
+static void ShouldWarpToCounter(void)
{
- if (gMapHeader.mapLayoutId == LAYOUT_SEVEN_ISLAND_TRAINER_TOWER_LOBBY && VarGet(VAR_MAP_SCENE_TRAINER_TOWER) == 0)
- {
+ if (gMapHeader.mapLayoutId == LAYOUT_TRAINER_TOWER_LOBBY && VarGet(VAR_MAP_SCENE_TRAINER_TOWER) == 0)
gSpecialVar_Result = FALSE;
- }
else
- {
gSpecialVar_Result = FALSE;
- }
}
-static void sub_815E948(void)
+static void PlayTrainerTowerEncounterMusic(void)
{
s32 i;
- u16 var_4001 = VarGet(VAR_TEMP_1);
- u8 r1 = sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[var_4001].facilityClass;
+ u16 idx = VarGet(VAR_TEMP_1);
+ u8 facilityClass = CURR_FLOOR.trainers[idx].facilityClass;
for (i = 0; i < NELEMS(sTrainerEncounterMusicLUT); i++)
{
- if (sTrainerEncounterMusicLUT[i].unk0 == gFacilityClassToTrainerClass[r1])
+ if (sTrainerEncounterMusicLUT[i].facilityClass == gFacilityClassToTrainerClass[facilityClass])
break;
}
+
if (i != NELEMS(sTrainerEncounterMusicLUT))
{
- var_4001 = sTrainerEncounterMusicLUT[i].unk1;
+ idx = sTrainerEncounterMusicLUT[i].musicId;
}
else
{
- var_4001 = 0;
+ idx = 0;
}
- PlayNewMapMusic(gUnknown_847A2D2[var_4001]);
+ PlayNewMapMusic(sTrainerTowerEncounterMusic[idx]);
}
-static void sub_815E9C8(void)
+static void HasSpokenToOwner(void)
{
- gSpecialVar_Result = gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2;
+ gSpecialVar_Result = TRAINER_TOWER.spokeToOwner;
}
static void BuildEnemyParty(void)
{
u16 trainerIdx = VarGet(VAR_TEMP_1);
s32 level = GetPartyMaxLevel();
- u8 floorIdx = gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk8;
+ u8 floorIdx = TRAINER_TOWER.floorsCleared;
s32 i;
u8 monIdx;
ZeroEnemyPartyMons();
- switch (sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].challengeType)
+ switch (CURR_FLOOR.challengeType)
{
- case 0:
+ case CHALLENGE_TYPE_SINGLE:
default:
for (i = 0; i < 2; i++)
{
monIdx = sSingleBattleChallengeMonIdxs[floorIdx][i];
- sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[trainerIdx].mons[monIdx].level = level;
- CreateBattleTowerMon(&gEnemyParty[i], &sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[trainerIdx].mons[monIdx]);
+ CURR_FLOOR.trainers[trainerIdx].mons[monIdx].level = level;
+ CreateBattleTowerMon(&gEnemyParty[i], &CURR_FLOOR.trainers[trainerIdx].mons[monIdx]);
}
break;
- case 1:
+ case CHALLENGE_TYPE_DOUBLE:
monIdx = sDoubleBattleChallengeMonIdxs[floorIdx][0];
- sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[0].mons[monIdx].level = level;
- CreateBattleTowerMon(&gEnemyParty[0], &sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[0].mons[monIdx]);
+ CURR_FLOOR.trainers[0].mons[monIdx].level = level;
+ CreateBattleTowerMon(&gEnemyParty[0], &CURR_FLOOR.trainers[0].mons[monIdx]);
monIdx = sDoubleBattleChallengeMonIdxs[floorIdx][1];
- sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[1].mons[monIdx].level = level;
- CreateBattleTowerMon(&gEnemyParty[1], &sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[1].mons[monIdx]);
+ CURR_FLOOR.trainers[1].mons[monIdx].level = level;
+ CreateBattleTowerMon(&gEnemyParty[1], &CURR_FLOOR.trainers[1].mons[monIdx]);
break;
- case 2:
+ case CHALLENGE_TYPE_KNOCKOUT:
monIdx = sKnockoutChallengeMonIdxs[floorIdx][trainerIdx];
- sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[trainerIdx].mons[monIdx].level = level;
- CreateBattleTowerMon(&gEnemyParty[0], &sTrainerTowerState->unk_0004.floors[sTrainerTowerState->floorIdx].trainers[trainerIdx].mons[monIdx]);
+ CURR_FLOOR.trainers[trainerIdx].mons[monIdx].level = level;
+ CreateBattleTowerMon(&gEnemyParty[0], &CURR_FLOOR.trainers[trainerIdx].mons[monIdx]);
break;
}
}
@@ -1030,11 +1051,11 @@ static s32 GetPartyMaxLevel(void)
static void ValidateOrResetCurTrainerTowerRecord(void)
{
- if (gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk9 != sTrainerTowerState->unk_0004.id)
+ if (TRAINER_TOWER.unk9 != sTrainerTowerState->unk_0004.id)
{
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk9 = sTrainerTowerState->unk_0004.id;
- SetTrainerTowerRecordTime(&gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unk4, 215999);
- gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_0 = FALSE;
+ TRAINER_TOWER.unk9 = sTrainerTowerState->unk_0004.id;
+ SetTrainerTowerRecordTime(&TRAINER_TOWER.bestTime, TRAINER_TOWER_MAX_TIME);
+ TRAINER_TOWER.receivedPrize = FALSE;
}
}
@@ -1043,22 +1064,22 @@ void PrintTrainerTowerRecords(void)
s32 i;
u8 windowId = 0;
- sub_815DC8C();
+ SetUpTrainerTowerDataStruct();
FillWindowPixelRect(0, 0, 0, 0, 0xd8, 0x90);
ValidateOrResetCurTrainerTowerRecord();
- AddTextPrinterParameterized3(0, 2, 0x4a, 0, gUnknown_847A22C, 0, gUnknown_83FE982);
+ AddTextPrinterParameterized3(0, 2, 0x4a, 0, sTextColors, 0, gText_TimeBoard);
- for (i = 0; i < 4; i++)
+ for (i = 0; i < NUM_TOWER_CHALLENGE_TYPES; i++)
{
- PRINT_TOWER_TIME(GetTrainerTowerRecordTime(&gSaveBlock1Ptr->unkArray[i].unk4));
- StringExpandPlaceholders(gStringVar4, gUnknown_83FE998);
- AddTextPrinterParameterized3(windowId, 2, 0x18, 0x24 + 0x14 * i, gUnknown_847A22C, 0, gUnknown_83FE9C4[i]);
- AddTextPrinterParameterized3(windowId, 2, 0x60, 0x24 + 0x14 * i, gUnknown_847A22C, 0, gStringVar4);
+ PRINT_TOWER_TIME(GetTrainerTowerRecordTime(&gSaveBlock1Ptr->trainerTower[i].bestTime));
+ StringExpandPlaceholders(gStringVar4, gText_XMinYZSec);
+ AddTextPrinterParameterized3(windowId, 2, 0x18, 0x24 + 0x14 * i, sTextColors, 0, gTrainerTowerChallengeTypeTexts[i]);
+ AddTextPrinterParameterized3(windowId, 2, 0x60, 0x24 + 0x14 * i, sTextColors, 0, gStringVar4);
}
PutWindowTilemap(windowId);
CopyWindowToVram(windowId, 3);
- sub_815DD2C();
+ FreeTrainerTowerDataStruct();
}
static u32 GetTrainerTowerRecordTime(u32 *counter)
@@ -1075,8 +1096,8 @@ void ResetTrainerTowerResults(void)
{
s32 i;
- for (i = 0; i < 4; i++)
+ for (i = 0; i < NUM_TOWER_CHALLENGE_TYPES; i++)
{
- SetTrainerTowerRecordTime(&gSaveBlock1Ptr->unkArray[i].unk4, 215999);
+ SetTrainerTowerRecordTime(&gSaveBlock1Ptr->trainerTower[i].bestTime, TRAINER_TOWER_MAX_TIME);
}
}