summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--asm/macros/event.inc10
-rw-r--r--data/layouts/BattleFrontier_BattlePikeRoomUnused/border.bin (renamed from data/layouts/Unknown_084693AC/border.bin)bin8 -> 8 bytes
-rw-r--r--data/layouts/BattleFrontier_BattlePikeRoomUnused/map.bin (renamed from data/layouts/Unknown_084693AC/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave1/border.bin (renamed from data/layouts/Unknown_0843E6C0/border.bin)0
-rw-r--r--data/layouts/UnusedCave1/map.bin (renamed from data/layouts/Unknown_0843E6C0/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave10/border.bin (renamed from data/layouts/Unknown_0843E6E4/border.bin)0
-rw-r--r--data/layouts/UnusedCave10/map.bin (renamed from data/layouts/Unknown_0843E6E4/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave11/border.bin (renamed from data/layouts/Unknown_0843E708/border.bin)0
-rw-r--r--data/layouts/UnusedCave11/map.bin (renamed from data/layouts/Unknown_0843E708/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave12/border.bin (renamed from data/layouts/Unknown_0843E72C/border.bin)0
-rw-r--r--data/layouts/UnusedCave12/map.bin (renamed from data/layouts/Unknown_0843E72C/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave13/border.bin (renamed from data/layouts/Unknown_0843E750/border.bin)0
-rw-r--r--data/layouts/UnusedCave13/map.bin (renamed from data/layouts/Unknown_0843E750/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave14/border.bin (renamed from data/layouts/Unknown_0843E774/border.bin)0
-rw-r--r--data/layouts/UnusedCave14/map.bin (renamed from data/layouts/Unknown_0843E774/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave2/border.bin (renamed from data/layouts/Unknown_0843E798/border.bin)0
-rw-r--r--data/layouts/UnusedCave2/map.bin (renamed from data/layouts/Unknown_0843E798/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave3/border.bin (renamed from data/layouts/Unknown_0843E7BC/border.bin)0
-rw-r--r--data/layouts/UnusedCave3/map.bin (renamed from data/layouts/Unknown_0843E7BC/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave4/border.bin (renamed from data/layouts/Unknown_0843E7E0/border.bin)0
-rw-r--r--data/layouts/UnusedCave4/map.bin (renamed from data/layouts/Unknown_0843E7E0/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave5/border.bin (renamed from data/layouts/Unknown_0843E804/border.bin)0
-rw-r--r--data/layouts/UnusedCave5/map.bin (renamed from data/layouts/Unknown_0843E804/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave6/border.bin (renamed from data/layouts/Unknown_0843E828/border.bin)0
-rw-r--r--data/layouts/UnusedCave6/map.bin (renamed from data/layouts/Unknown_0843E828/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave7/border.bin (renamed from data/layouts/Unknown_0843E84C/border.bin)0
-rw-r--r--data/layouts/UnusedCave7/map.bin (renamed from data/layouts/Unknown_0843E84C/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave8/border.bin (renamed from data/layouts/Unknown_0843E870/border.bin)0
-rw-r--r--data/layouts/UnusedCave8/map.bin (renamed from data/layouts/Unknown_0843E870/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedCave9/border.bin (renamed from data/layouts/Unknown_0843E894/border.bin)0
-rw-r--r--data/layouts/UnusedCave9/map.bin (renamed from data/layouts/Unknown_0843E894/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedContestHall1/border.bin (renamed from data/layouts/UnknownLinkContestRoom_25_29/border.bin)0
-rw-r--r--data/layouts/UnusedContestHall1/map.bin (renamed from data/layouts/UnknownLinkContestRoom_25_29/map.bin)0
-rw-r--r--data/layouts/UnusedContestHall2/border.bin (renamed from data/layouts/UnknownLinkContestRoom_25_30/border.bin)0
-rw-r--r--data/layouts/UnusedContestHall2/map.bin (renamed from data/layouts/UnknownLinkContestRoom_25_30/map.bin)0
-rw-r--r--data/layouts/UnusedContestHall3/border.bin (renamed from data/layouts/UnknownLinkContestRoom_25_31/border.bin)0
-rw-r--r--data/layouts/UnusedContestHall3/map.bin (renamed from data/layouts/UnknownLinkContestRoom_25_31/map.bin)0
-rw-r--r--data/layouts/UnusedContestHall4/border.bin (renamed from data/layouts/UnknownLinkContestRoom_25_32/border.bin)0
-rw-r--r--data/layouts/UnusedContestHall4/map.bin (renamed from data/layouts/UnknownLinkContestRoom_25_32/map.bin)0
-rw-r--r--data/layouts/UnusedContestHall5/border.bin (renamed from data/layouts/UnknownLinkContestRoom_25_33/border.bin)0
-rw-r--r--data/layouts/UnusedContestHall5/map.bin (renamed from data/layouts/UnknownLinkContestRoom_25_33/map.bin)0
-rw-r--r--data/layouts/UnusedContestHall6/border.bin (renamed from data/layouts/UnknownLinkContestRoom_25_34/border.bin)0
-rw-r--r--data/layouts/UnusedContestHall6/map.bin (renamed from data/layouts/UnknownLinkContestRoom_25_34/map.bin)0
-rw-r--r--data/layouts/UnusedContestRoom1/border.bin (renamed from data/layouts/Unknown_08428450/border.bin)0
-rw-r--r--data/layouts/UnusedContestRoom1/map.bin (renamed from data/layouts/Unknown_08428450/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedContestRoom2/border.bin (renamed from data/layouts/Unknown_084294C4/border.bin)0
-rw-r--r--data/layouts/UnusedContestRoom2/map.bin (renamed from data/layouts/Unknown_084294C4/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedContestRoom3/border.bin (renamed from data/layouts/Unknown_084294E8/border.bin)0
-rw-r--r--data/layouts/UnusedContestRoom3/map.bin (renamed from data/layouts/Unknown_084294E8/map.bin)bin4 -> 4 bytes
-rw-r--r--data/layouts/UnusedOutdoorArea/border.bin (renamed from data/layouts/Unknown_08447028/border.bin)0
-rw-r--r--data/layouts/UnusedOutdoorArea/map.bin (renamed from data/layouts/Unknown_08447028/map.bin)0
-rw-r--r--data/layouts/layouts.json200
-rw-r--r--data/map_events.s1
-rw-r--r--data/maps/BirthIsland_Exterior/scripts.inc2
-rw-r--r--data/maps/FarawayIsland_Interior/scripts.inc2
-rw-r--r--data/maps/LavaridgeTown_Gym_1F/scripts.inc28
-rw-r--r--data/maps/LavaridgeTown_Gym_B1F/scripts.inc28
-rw-r--r--data/maps/LilycoveCity_CoveLilyMotel_2F/map.json14
-rw-r--r--data/maps/NavelRock_Bottom/scripts.inc2
-rw-r--r--data/maps/NavelRock_Top/scripts.inc2
-rw-r--r--data/maps/Route102/map.json4
-rw-r--r--data/maps/Route103/map.json6
-rw-r--r--data/maps/Route104/map.json20
-rw-r--r--data/maps/Route110/map.json6
-rw-r--r--data/maps/Route111/map.json8
-rw-r--r--data/maps/Route112/map.json8
-rw-r--r--data/maps/Route113/map.json4
-rw-r--r--data/maps/Route114/map.json6
-rw-r--r--data/maps/Route115/map.json10
-rw-r--r--data/maps/Route116/map.json8
-rw-r--r--data/maps/Route117/map.json6
-rw-r--r--data/maps/Route118/map.json6
-rw-r--r--data/maps/Route119/map.json14
-rw-r--r--data/maps/Route120/map.json20
-rw-r--r--data/maps/Route121/map.json16
-rw-r--r--data/maps/Route123/map.json36
-rw-r--r--data/maps/Route130/map.json2
-rw-r--r--data/maps/SlateportCity_Harbor/scripts.inc2
-rw-r--r--data/maps/SouthernIsland_Interior/scripts.inc4
-rw-r--r--data/maps/UnknownLinkContestRoom_25_33/map.json18
-rw-r--r--data/maps/UnknownLinkContestRoom_25_34/map.json18
-rw-r--r--data/maps/UnusedContestHall1/map.json (renamed from data/maps/UnknownLinkContestRoom_25_29/map.json)6
-rw-r--r--data/maps/UnusedContestHall2/map.json (renamed from data/maps/UnknownLinkContestRoom_25_30/map.json)6
-rw-r--r--data/maps/UnusedContestHall3/map.json (renamed from data/maps/UnknownLinkContestRoom_25_31/map.json)6
-rw-r--r--data/maps/UnusedContestHall4/map.json (renamed from data/maps/UnknownLinkContestRoom_25_32/map.json)6
-rw-r--r--data/maps/UnusedContestHall5/map.json18
-rw-r--r--data/maps/UnusedContestHall6/map.json18
-rw-r--r--data/maps/map_groups.json12
-rw-r--r--data/script_cmd_table.inc4
-rw-r--r--data/scripts/hall_of_fame.inc2
-rw-r--r--data/scripts/mevent_pichu.inc2
-rw-r--r--data/scripts/new_game.inc162
-rw-r--r--data/specials.inc2
-rw-r--r--graphics/evolution_scene/bg_anim.pal (renamed from graphics/evolution_scene/transition.pal)0
-rw-r--r--graphics/evolution_scene/bg_anim_intro.pal (renamed from graphics/evolution_scene/gray_transition_intro.pal)0
-rw-r--r--graphics/evolution_scene/bg_inner.bin (renamed from graphics/evolution_scene/bg.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/evolution_scene/bg_outer.bin (renamed from graphics/evolution_scene/bg2.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/evolution_scene/unused_1.pal (renamed from graphics/evolution_scene/unknown_5B4114.pal)0
-rw-r--r--graphics/evolution_scene/unused_2.pal (renamed from graphics/evolution_scene/gray_transition_lighten.pal)0
-rw-r--r--graphics/evolution_scene/unused_3.pal (renamed from graphics/evolution_scene/gray_transition_darken.pal)0
-rw-r--r--graphics/evolution_scene/unused_4.pal (renamed from graphics/evolution_scene/gray_transition_outro.pal)0
-rw-r--r--include/berry.h2
-rw-r--r--include/constants/berry.h97
-rw-r--r--include/constants/daycare.h6
-rwxr-xr-xinclude/constants/event_object_movement.h2
-rw-r--r--include/constants/flags.h4
-rw-r--r--include/constants/global.h1
-rw-r--r--include/constants/item_effects.h4
-rwxr-xr-xinclude/constants/layouts.h50
-rwxr-xr-xinclude/constants/map_groups.h122
-rw-r--r--include/constants/pokemon.h18
-rw-r--r--include/event_object_movement.h4
-rw-r--r--include/evolution_graphics.h14
-rw-r--r--include/global.h40
-rw-r--r--include/pokemon.h22
-rw-r--r--include/trainer_see.h2
-rw-r--r--src/battle_message.c1
-rw-r--r--src/battle_pike.c2
-rw-r--r--src/battle_util.c7
-rw-r--r--src/berry.c1
-rw-r--r--src/berry_blender.c1
-rw-r--r--src/berry_tag_screen.c1
-rw-r--r--src/crt0.s48
-rwxr-xr-xsrc/data/object_events/movement_type_func_tables.h4
-rw-r--r--src/data/pokemon/item_effects.h24
-rw-r--r--src/daycare.c16
-rw-r--r--src/egg_hatch.c6
-rw-r--r--src/event_object_movement.c22
-rw-r--r--src/evolution_graphics.c443
-rw-r--r--src/evolution_scene.c1039
-rw-r--r--src/field_effect.c4
-rw-r--r--src/field_weather.c8
-rwxr-xr-xsrc/item_menu.c10
-rw-r--r--src/menu_specialized.c1
-rwxr-xr-xsrc/party_menu.c8
-rw-r--r--src/pokeblock.c1
-rw-r--r--src/pokemon.c114
-rw-r--r--src/pokemon_size_record.c6
-rw-r--r--src/pokemon_storage_system.c24
-rw-r--r--src/scrcmd.c12
-rw-r--r--src/trade.c16
-rw-r--r--src/trainer_see.c60
-rw-r--r--src/tv.c28
-rw-r--r--src/util.c7
145 files changed, 1699 insertions, 1359 deletions
diff --git a/Makefile b/Makefile
index 78a2c2a4f..d97634399 100644
--- a/Makefile
+++ b/Makefile
@@ -303,6 +303,7 @@ $1: $2 $$(shell $(SCANINC) -I include -I "" $2)
$$(PREPROC) $$< charmap.txt | $$(CPP) -I include | $$(AS) $$(ASFLAGS) -o $$@
endef
$(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call DATA_ASM_DEP,$(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o, $(src)),$(src))))
+$(foreach src, $(C_ASM_SRCS), $(eval $(call DATA_ASM_DEP,$(patsubst $(C_SUBDIR)/%.s,$(C_BUILDDIR)/%.o, $(src)),$(src))))
endif
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
diff --git a/asm/macros/event.inc b/asm/macros/event.inc
index e9d55c4bc..4625f8df6 100644
--- a/asm/macros/event.inc
+++ b/asm/macros/event.inc
@@ -1486,15 +1486,15 @@
.4byte \value
.endm
- @ Makes the Pokemon in the specified slot of the player's party obedient. It will not randomly disobey orders in battle.
- .macro setmonobedient slot:req
+ @ Sets the Pokemon in the specified slot of the player party's eventLegal bit.
+ .macro setmoneventlegal slot:req
.byte 0xcd
.2byte \slot
.endm
- @ Checks if the Pokemon in the specified slot of the player's party is obedient. If the Pokemon is disobedient,
- @ VAR_RESULT is TRUE. If the Pokemon is obedient (or if the specified slot is empty or invalid), VAR_RESULT is FALSE.
- .macro checkmonobedience slot:req
+ @ Checks if the Pokemon in the specified slot of the player's party has its eventLegal bit set. If it isn't set,
+ @ VAR_RESULT is TRUE. If the bit is set (or if the specified slot is empty or invalid), VAR_RESULT is FALSE.
+ .macro checkmoneventlegal slot:req
.byte 0xce
.2byte \slot
.endm
diff --git a/data/layouts/Unknown_084693AC/border.bin b/data/layouts/BattleFrontier_BattlePikeRoomUnused/border.bin
index f496f458e..f496f458e 100644
--- a/data/layouts/Unknown_084693AC/border.bin
+++ b/data/layouts/BattleFrontier_BattlePikeRoomUnused/border.bin
Binary files differ
diff --git a/data/layouts/Unknown_084693AC/map.bin b/data/layouts/BattleFrontier_BattlePikeRoomUnused/map.bin
index a179d8997..a179d8997 100644
--- a/data/layouts/Unknown_084693AC/map.bin
+++ b/data/layouts/BattleFrontier_BattlePikeRoomUnused/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E6C0/border.bin b/data/layouts/UnusedCave1/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E6C0/border.bin
+++ b/data/layouts/UnusedCave1/border.bin
diff --git a/data/layouts/Unknown_0843E6C0/map.bin b/data/layouts/UnusedCave1/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E6C0/map.bin
+++ b/data/layouts/UnusedCave1/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E6E4/border.bin b/data/layouts/UnusedCave10/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E6E4/border.bin
+++ b/data/layouts/UnusedCave10/border.bin
diff --git a/data/layouts/Unknown_0843E6E4/map.bin b/data/layouts/UnusedCave10/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E6E4/map.bin
+++ b/data/layouts/UnusedCave10/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E708/border.bin b/data/layouts/UnusedCave11/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E708/border.bin
+++ b/data/layouts/UnusedCave11/border.bin
diff --git a/data/layouts/Unknown_0843E708/map.bin b/data/layouts/UnusedCave11/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E708/map.bin
+++ b/data/layouts/UnusedCave11/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E72C/border.bin b/data/layouts/UnusedCave12/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E72C/border.bin
+++ b/data/layouts/UnusedCave12/border.bin
diff --git a/data/layouts/Unknown_0843E72C/map.bin b/data/layouts/UnusedCave12/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E72C/map.bin
+++ b/data/layouts/UnusedCave12/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E750/border.bin b/data/layouts/UnusedCave13/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E750/border.bin
+++ b/data/layouts/UnusedCave13/border.bin
diff --git a/data/layouts/Unknown_0843E750/map.bin b/data/layouts/UnusedCave13/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E750/map.bin
+++ b/data/layouts/UnusedCave13/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E774/border.bin b/data/layouts/UnusedCave14/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E774/border.bin
+++ b/data/layouts/UnusedCave14/border.bin
diff --git a/data/layouts/Unknown_0843E774/map.bin b/data/layouts/UnusedCave14/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E774/map.bin
+++ b/data/layouts/UnusedCave14/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E798/border.bin b/data/layouts/UnusedCave2/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E798/border.bin
+++ b/data/layouts/UnusedCave2/border.bin
diff --git a/data/layouts/Unknown_0843E798/map.bin b/data/layouts/UnusedCave2/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E798/map.bin
+++ b/data/layouts/UnusedCave2/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E7BC/border.bin b/data/layouts/UnusedCave3/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E7BC/border.bin
+++ b/data/layouts/UnusedCave3/border.bin
diff --git a/data/layouts/Unknown_0843E7BC/map.bin b/data/layouts/UnusedCave3/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E7BC/map.bin
+++ b/data/layouts/UnusedCave3/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E7E0/border.bin b/data/layouts/UnusedCave4/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E7E0/border.bin
+++ b/data/layouts/UnusedCave4/border.bin
diff --git a/data/layouts/Unknown_0843E7E0/map.bin b/data/layouts/UnusedCave4/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E7E0/map.bin
+++ b/data/layouts/UnusedCave4/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E804/border.bin b/data/layouts/UnusedCave5/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E804/border.bin
+++ b/data/layouts/UnusedCave5/border.bin
diff --git a/data/layouts/Unknown_0843E804/map.bin b/data/layouts/UnusedCave5/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E804/map.bin
+++ b/data/layouts/UnusedCave5/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E828/border.bin b/data/layouts/UnusedCave6/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E828/border.bin
+++ b/data/layouts/UnusedCave6/border.bin
diff --git a/data/layouts/Unknown_0843E828/map.bin b/data/layouts/UnusedCave6/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E828/map.bin
+++ b/data/layouts/UnusedCave6/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E84C/border.bin b/data/layouts/UnusedCave7/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E84C/border.bin
+++ b/data/layouts/UnusedCave7/border.bin
diff --git a/data/layouts/Unknown_0843E84C/map.bin b/data/layouts/UnusedCave7/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E84C/map.bin
+++ b/data/layouts/UnusedCave7/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E870/border.bin b/data/layouts/UnusedCave8/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E870/border.bin
+++ b/data/layouts/UnusedCave8/border.bin
diff --git a/data/layouts/Unknown_0843E870/map.bin b/data/layouts/UnusedCave8/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E870/map.bin
+++ b/data/layouts/UnusedCave8/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_0843E894/border.bin b/data/layouts/UnusedCave9/border.bin
index b15c94f96..b15c94f96 100644
--- a/data/layouts/Unknown_0843E894/border.bin
+++ b/data/layouts/UnusedCave9/border.bin
diff --git a/data/layouts/Unknown_0843E894/map.bin b/data/layouts/UnusedCave9/map.bin
index 22a47d94e..22a47d94e 100644
--- a/data/layouts/Unknown_0843E894/map.bin
+++ b/data/layouts/UnusedCave9/map.bin
Binary files differ
diff --git a/data/layouts/UnknownLinkContestRoom_25_29/border.bin b/data/layouts/UnusedContestHall1/border.bin
index 19d906679..19d906679 100644
--- a/data/layouts/UnknownLinkContestRoom_25_29/border.bin
+++ b/data/layouts/UnusedContestHall1/border.bin
diff --git a/data/layouts/UnknownLinkContestRoom_25_29/map.bin b/data/layouts/UnusedContestHall1/map.bin
index 5fc1e81ec..5fc1e81ec 100644
--- a/data/layouts/UnknownLinkContestRoom_25_29/map.bin
+++ b/data/layouts/UnusedContestHall1/map.bin
diff --git a/data/layouts/UnknownLinkContestRoom_25_30/border.bin b/data/layouts/UnusedContestHall2/border.bin
index 19d906679..19d906679 100644
--- a/data/layouts/UnknownLinkContestRoom_25_30/border.bin
+++ b/data/layouts/UnusedContestHall2/border.bin
diff --git a/data/layouts/UnknownLinkContestRoom_25_30/map.bin b/data/layouts/UnusedContestHall2/map.bin
index 5fc1e81ec..5fc1e81ec 100644
--- a/data/layouts/UnknownLinkContestRoom_25_30/map.bin
+++ b/data/layouts/UnusedContestHall2/map.bin
diff --git a/data/layouts/UnknownLinkContestRoom_25_31/border.bin b/data/layouts/UnusedContestHall3/border.bin
index 19d906679..19d906679 100644
--- a/data/layouts/UnknownLinkContestRoom_25_31/border.bin
+++ b/data/layouts/UnusedContestHall3/border.bin
diff --git a/data/layouts/UnknownLinkContestRoom_25_31/map.bin b/data/layouts/UnusedContestHall3/map.bin
index 5fc1e81ec..5fc1e81ec 100644
--- a/data/layouts/UnknownLinkContestRoom_25_31/map.bin
+++ b/data/layouts/UnusedContestHall3/map.bin
diff --git a/data/layouts/UnknownLinkContestRoom_25_32/border.bin b/data/layouts/UnusedContestHall4/border.bin
index 19d906679..19d906679 100644
--- a/data/layouts/UnknownLinkContestRoom_25_32/border.bin
+++ b/data/layouts/UnusedContestHall4/border.bin
diff --git a/data/layouts/UnknownLinkContestRoom_25_32/map.bin b/data/layouts/UnusedContestHall4/map.bin
index 5fc1e81ec..5fc1e81ec 100644
--- a/data/layouts/UnknownLinkContestRoom_25_32/map.bin
+++ b/data/layouts/UnusedContestHall4/map.bin
diff --git a/data/layouts/UnknownLinkContestRoom_25_33/border.bin b/data/layouts/UnusedContestHall5/border.bin
index 19d906679..19d906679 100644
--- a/data/layouts/UnknownLinkContestRoom_25_33/border.bin
+++ b/data/layouts/UnusedContestHall5/border.bin
diff --git a/data/layouts/UnknownLinkContestRoom_25_33/map.bin b/data/layouts/UnusedContestHall5/map.bin
index 5fc1e81ec..5fc1e81ec 100644
--- a/data/layouts/UnknownLinkContestRoom_25_33/map.bin
+++ b/data/layouts/UnusedContestHall5/map.bin
diff --git a/data/layouts/UnknownLinkContestRoom_25_34/border.bin b/data/layouts/UnusedContestHall6/border.bin
index 19d906679..19d906679 100644
--- a/data/layouts/UnknownLinkContestRoom_25_34/border.bin
+++ b/data/layouts/UnusedContestHall6/border.bin
diff --git a/data/layouts/UnknownLinkContestRoom_25_34/map.bin b/data/layouts/UnusedContestHall6/map.bin
index 5fc1e81ec..5fc1e81ec 100644
--- a/data/layouts/UnknownLinkContestRoom_25_34/map.bin
+++ b/data/layouts/UnusedContestHall6/map.bin
diff --git a/data/layouts/Unknown_08428450/border.bin b/data/layouts/UnusedContestRoom1/border.bin
index 19d906679..19d906679 100644
--- a/data/layouts/Unknown_08428450/border.bin
+++ b/data/layouts/UnusedContestRoom1/border.bin
diff --git a/data/layouts/Unknown_08428450/map.bin b/data/layouts/UnusedContestRoom1/map.bin
index ca93fa0e2..ca93fa0e2 100644
--- a/data/layouts/Unknown_08428450/map.bin
+++ b/data/layouts/UnusedContestRoom1/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_084294C4/border.bin b/data/layouts/UnusedContestRoom2/border.bin
index 19d906679..19d906679 100644
--- a/data/layouts/Unknown_084294C4/border.bin
+++ b/data/layouts/UnusedContestRoom2/border.bin
diff --git a/data/layouts/Unknown_084294C4/map.bin b/data/layouts/UnusedContestRoom2/map.bin
index 37f05b971..37f05b971 100644
--- a/data/layouts/Unknown_084294C4/map.bin
+++ b/data/layouts/UnusedContestRoom2/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_084294E8/border.bin b/data/layouts/UnusedContestRoom3/border.bin
index 19d906679..19d906679 100644
--- a/data/layouts/Unknown_084294E8/border.bin
+++ b/data/layouts/UnusedContestRoom3/border.bin
diff --git a/data/layouts/Unknown_084294E8/map.bin b/data/layouts/UnusedContestRoom3/map.bin
index ca93fa0e2..ca93fa0e2 100644
--- a/data/layouts/Unknown_084294E8/map.bin
+++ b/data/layouts/UnusedContestRoom3/map.bin
Binary files differ
diff --git a/data/layouts/Unknown_08447028/border.bin b/data/layouts/UnusedOutdoorArea/border.bin
index 9e4b3fb7a..9e4b3fb7a 100644
--- a/data/layouts/Unknown_08447028/border.bin
+++ b/data/layouts/UnusedOutdoorArea/border.bin
diff --git a/data/layouts/Unknown_08447028/map.bin b/data/layouts/UnusedOutdoorArea/map.bin
index 028da0526..028da0526 100644
--- a/data/layouts/Unknown_08447028/map.bin
+++ b/data/layouts/UnusedOutdoorArea/map.bin
diff --git a/data/layouts/layouts.json b/data/layouts/layouts.json
index 9292e10af..b8d841f72 100644
--- a/data/layouts/layouts.json
+++ b/data/layouts/layouts.json
@@ -742,14 +742,14 @@
"blockdata_filepath": "data/layouts/LilycoveCity_House2/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_08428450",
- "name": "Unknown_08428450_Layout",
+ "id": "LAYOUT_UNUSED_CONTEST_ROOM1",
+ "name": "UnusedContestRoom1_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
- "border_filepath": "data/layouts/Unknown_08428450/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_08428450/map.bin"
+ "border_filepath": "data/layouts/UnusedContestRoom1/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedContestRoom1/map.bin"
},
{
"id": "LAYOUT_VERDANTURF_TOWN_WANDAS_HOUSE",
@@ -822,24 +822,24 @@
"blockdata_filepath": "data/layouts/SlateportCity_SternsShipyard_2F/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_084294C4",
- "name": "Unknown_084294C4_Layout",
+ "id": "LAYOUT_UNUSED_CONTEST_ROOM2",
+ "name": "UnusedContestRoom2_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
- "border_filepath": "data/layouts/Unknown_084294C4/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_084294C4/map.bin"
+ "border_filepath": "data/layouts/UnusedContestRoom2/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedContestRoom2/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_084294E8",
- "name": "Unknown_084294E8_Layout",
+ "id": "LAYOUT_UNUSED_CONTEST_ROOM3",
+ "name": "UnusedContestRoom3_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
- "border_filepath": "data/layouts/Unknown_084294E8/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_084294E8/map.bin"
+ "border_filepath": "data/layouts/UnusedContestRoom3/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedContestRoom3/map.bin"
},
{
"id": "LAYOUT_SLATEPORT_CITY_POKEMON_FAN_CLUB",
@@ -1692,144 +1692,144 @@
"blockdata_filepath": "data/layouts/ShoalCave_HighTideInnerRoom/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E6C0",
- "name": "Unknown_0843E6C0_Layout",
+ "id": "LAYOUT_UNUSED_CAVE1",
+ "name": "UnusedCave1_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E6C0/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E6C0/map.bin"
+ "border_filepath": "data/layouts/UnusedCave1/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave1/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E6E4",
- "name": "Unknown_0843E6E4_Layout",
+ "id": "LAYOUT_UNUSED_CAVE2",
+ "name": "UnusedCave2_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E6E4/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E6E4/map.bin"
+ "border_filepath": "data/layouts/UnusedCave2/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave2/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E708",
- "name": "Unknown_0843E708_Layout",
+ "id": "LAYOUT_UNUSED_CAVE3",
+ "name": "UnusedCave3_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E708/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E708/map.bin"
+ "border_filepath": "data/layouts/UnusedCave3/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave3/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E72C",
- "name": "Unknown_0843E72C_Layout",
+ "id": "LAYOUT_UNUSED_CAVE4",
+ "name": "UnusedCave4_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E72C/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E72C/map.bin"
+ "border_filepath": "data/layouts/UnusedCave4/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave4/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E750",
- "name": "Unknown_0843E750_Layout",
+ "id": "LAYOUT_UNUSED_CAVE5",
+ "name": "UnusedCave5_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E750/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E750/map.bin"
+ "border_filepath": "data/layouts/UnusedCave5/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave5/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E774",
- "name": "Unknown_0843E774_Layout",
+ "id": "LAYOUT_UNUSED_CAVE6",
+ "name": "UnusedCave6_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E774/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E774/map.bin"
+ "border_filepath": "data/layouts/UnusedCave6/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave6/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E798",
- "name": "Unknown_0843E798_Layout",
+ "id": "LAYOUT_UNUSED_CAVE7",
+ "name": "UnusedCave7_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E798/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E798/map.bin"
+ "border_filepath": "data/layouts/UnusedCave7/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave7/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E7BC",
- "name": "Unknown_0843E7BC_Layout",
+ "id": "LAYOUT_UNUSED_CAVE8",
+ "name": "UnusedCave8_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E7BC/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E7BC/map.bin"
+ "border_filepath": "data/layouts/UnusedCave8/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave8/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E7E0",
- "name": "Unknown_0843E7E0_Layout",
+ "id": "LAYOUT_UNUSED_CAVE9",
+ "name": "UnusedCave9_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E7E0/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E7E0/map.bin"
+ "border_filepath": "data/layouts/UnusedCave9/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave9/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E804",
- "name": "Unknown_0843E804_Layout",
+ "id": "LAYOUT_UNUSED_CAVE10",
+ "name": "UnusedCave10_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E804/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E804/map.bin"
+ "border_filepath": "data/layouts/UnusedCave10/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave10/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E828",
- "name": "Unknown_0843E828_Layout",
+ "id": "LAYOUT_UNUSED_CAVE11",
+ "name": "UnusedCave11_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E828/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E828/map.bin"
+ "border_filepath": "data/layouts/UnusedCave11/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave11/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E84C",
- "name": "Unknown_0843E84C_Layout",
+ "id": "LAYOUT_UNUSED_CAVE12",
+ "name": "UnusedCave12_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E84C/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E84C/map.bin"
+ "border_filepath": "data/layouts/UnusedCave12/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave12/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E870",
- "name": "Unknown_0843E870_Layout",
+ "id": "LAYOUT_UNUSED_CAVE13",
+ "name": "UnusedCave13_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E870/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E870/map.bin"
+ "border_filepath": "data/layouts/UnusedCave13/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave13/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_0843E894",
- "name": "Unknown_0843E894_Layout",
+ "id": "LAYOUT_UNUSED_CAVE14",
+ "name": "UnusedCave14_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_General",
"secondary_tileset": "gTileset_Cave",
- "border_filepath": "data/layouts/Unknown_0843E894/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_0843E894/map.bin"
+ "border_filepath": "data/layouts/UnusedCave14/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedCave14/map.bin"
},
{
"id": "LAYOUT_NEW_MAUVILLE_ENTRANCE",
@@ -2252,64 +2252,64 @@
"blockdata_filepath": "data/layouts/ContestHall/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_29",
- "name": "UnknownLinkContestRoom_25_29_Layout",
+ "id": "LAYOUT_UNUSED_CONTEST_HALL1",
+ "name": "UnusedContestHall1_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
- "border_filepath": "data/layouts/UnknownLinkContestRoom_25_29/border.bin",
- "blockdata_filepath": "data/layouts/UnknownLinkContestRoom_25_29/map.bin"
+ "border_filepath": "data/layouts/UnusedContestHall1/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedContestHall1/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_30",
- "name": "UnknownLinkContestRoom_25_30_Layout",
+ "id": "LAYOUT_UNUSED_CONTEST_HALL2",
+ "name": "UnusedContestHall2_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
- "border_filepath": "data/layouts/UnknownLinkContestRoom_25_30/border.bin",
- "blockdata_filepath": "data/layouts/UnknownLinkContestRoom_25_30/map.bin"
+ "border_filepath": "data/layouts/UnusedContestHall2/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedContestHall2/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_31",
- "name": "UnknownLinkContestRoom_25_31_Layout",
+ "id": "LAYOUT_UNUSED_CONTEST_HALL3",
+ "name": "UnusedContestHall3_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
- "border_filepath": "data/layouts/UnknownLinkContestRoom_25_31/border.bin",
- "blockdata_filepath": "data/layouts/UnknownLinkContestRoom_25_31/map.bin"
+ "border_filepath": "data/layouts/UnusedContestHall3/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedContestHall3/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_32",
- "name": "UnknownLinkContestRoom_25_32_Layout",
+ "id": "LAYOUT_UNUSED_CONTEST_HALL4",
+ "name": "UnusedContestHall4_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
- "border_filepath": "data/layouts/UnknownLinkContestRoom_25_32/border.bin",
- "blockdata_filepath": "data/layouts/UnknownLinkContestRoom_25_32/map.bin"
+ "border_filepath": "data/layouts/UnusedContestHall4/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedContestHall4/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_33",
- "name": "UnknownLinkContestRoom_25_33_Layout",
+ "id": "LAYOUT_UNUSED_CONTEST_HALL5",
+ "name": "UnusedContestHall5_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
- "border_filepath": "data/layouts/UnknownLinkContestRoom_25_33/border.bin",
- "blockdata_filepath": "data/layouts/UnknownLinkContestRoom_25_33/map.bin"
+ "border_filepath": "data/layouts/UnusedContestHall5/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedContestHall5/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_34",
- "name": "UnknownLinkContestRoom_25_34_Layout",
+ "id": "LAYOUT_UNUSED_CONTEST_HALL6",
+ "name": "UnusedContestHall6_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_Contest",
- "border_filepath": "data/layouts/UnknownLinkContestRoom_25_34/border.bin",
- "blockdata_filepath": "data/layouts/UnknownLinkContestRoom_25_34/map.bin"
+ "border_filepath": "data/layouts/UnusedContestHall6/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedContestHall6/map.bin"
},
{
"id": "LAYOUT_CONTEST_HALL_BEAUTY",
@@ -2412,14 +2412,14 @@
"blockdata_filepath": "data/layouts/SafariZone_South/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_08447028",
- "name": "Unknown_08447028_Layout",
+ "id": "LAYOUT_UNUSED_OUTDOOR_AREA",
+ "name": "UnusedOutdoorArea_Layout",
"width": 58,
"height": 26,
"primary_tileset": "gTileset_General",
"secondary_tileset": "0",
- "border_filepath": "data/layouts/Unknown_08447028/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_08447028/map.bin"
+ "border_filepath": "data/layouts/UnusedOutdoorArea/border.bin",
+ "blockdata_filepath": "data/layouts/UnusedOutdoorArea/map.bin"
},
{
"id": "LAYOUT_ROUTE109_SEASHORE_HOUSE",
@@ -3582,14 +3582,14 @@
"blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeRoomWildMons/map.bin"
},
{
- "id": "LAYOUT_UNKNOWN_084693AC",
- "name": "Unknown_084693AC_Layout",
+ "id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_UNUSED",
+ "name": "BattleFrontier_BattlePikeRoomUnused_Layout",
"width": 1,
"height": 1,
"primary_tileset": "gTileset_Building",
"secondary_tileset": "gTileset_BattlePike",
- "border_filepath": "data/layouts/Unknown_084693AC/border.bin",
- "blockdata_filepath": "data/layouts/Unknown_084693AC/map.bin"
+ "border_filepath": "data/layouts/BattleFrontier_BattlePikeRoomUnused/border.bin",
+ "blockdata_filepath": "data/layouts/BattleFrontier_BattlePikeRoomUnused/map.bin"
},
{
"id": "LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY",
diff --git a/data/map_events.s b/data/map_events.s
index d285040a0..dcbb9cfb1 100644
--- a/data/map_events.s
+++ b/data/map_events.s
@@ -10,6 +10,7 @@
#include "constants/weather.h"
#include "constants/trainer_hill.h"
#include "constants/trainer_types.h"
+#include "constants/berry.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/maps/BirthIsland_Exterior/scripts.inc b/data/maps/BirthIsland_Exterior/scripts.inc
index 16a1c7488..c20de3798 100644
--- a/data/maps/BirthIsland_Exterior/scripts.inc
+++ b/data/maps/BirthIsland_Exterior/scripts.inc
@@ -85,7 +85,7 @@ BirthIsland_Exterior_EventScript_Deoxys:: @ 8267FC1
setvar VAR_0x8004, SPECIES_DEOXYS
setvar VAR_0x8005, 30 @ level
setvar VAR_0x8006, ITEM_NONE
- special CreateObedientEnemyMon
+ special CreateEventLegalEnemyMon
setflag FLAG_SYS_CTRL_OBJ_DELETE
special BattleSetup_StartLegendaryBattle
waitstate
diff --git a/data/maps/FarawayIsland_Interior/scripts.inc b/data/maps/FarawayIsland_Interior/scripts.inc
index 2a06ffdfa..108bc12e6 100644
--- a/data/maps/FarawayIsland_Interior/scripts.inc
+++ b/data/maps/FarawayIsland_Interior/scripts.inc
@@ -141,7 +141,7 @@ FarawayIsland_Interior_EventScript_Mew:: @ 8267DF2
setvar VAR_0x8004, SPECIES_MEW
setvar VAR_0x8005, 30 @ level
setvar VAR_0x8006, ITEM_NONE
- special CreateObedientEnemyMon
+ special CreateEventLegalEnemyMon
setflag FLAG_SYS_CTRL_OBJ_DELETE
special BattleSetup_StartLegendaryBattle
waitstate
diff --git a/data/maps/LavaridgeTown_Gym_1F/scripts.inc b/data/maps/LavaridgeTown_Gym_1F/scripts.inc
index df95a0b4b..901969416 100644
--- a/data/maps/LavaridgeTown_Gym_1F/scripts.inc
+++ b/data/maps/LavaridgeTown_Gym_1F/scripts.inc
@@ -9,7 +9,7 @@ LavaridgeTown_Gym_1F_MapScripts:: @ 81FE6F4
LavaridgeTown_Gym_1F_OnTransition: @ 81FE6FA
call LavaridgeTown_Gym_1F_EventScript_SetTrainerTempVars
- call LavaridgeTown_Gym_1F_EventScript_CheckHideTrainers
+ call LavaridgeTown_Gym_1F_EventScript_CheckBuryTrainers
end
@ Unclear where/if these temp vars are getting checked
@@ -33,19 +33,19 @@ LavaridgeTown_Gym_1F_EventScript_SetDanielleTempVar:: @ 81FE748
LavaridgeTown_Gym_1F_EventScript_EndSetTrainerTempVars:: @ 81FE756
return
-LavaridgeTown_Gym_1F_EventScript_CheckHideTrainers:: @ 81FE757
- goto_if_defeated TRAINER_COLE, LavaridgeTown_Gym_1F_EventScript_CheckHideGerald
- setobjectmovementtype LOCALID_COLE, MOVEMENT_TYPE_HIDDEN
-LavaridgeTown_Gym_1F_EventScript_CheckHideGerald:: @ 81FE764
- goto_if_defeated TRAINER_GERALD, LavaridgeTown_Gym_1F_EventScript_CheckHideAxle
- setobjectmovementtype LOCALID_GERALD, MOVEMENT_TYPE_HIDDEN
-LavaridgeTown_Gym_1F_EventScript_CheckHideAxle:: @ 81FE771
- goto_if_defeated TRAINER_AXLE, LavaridgeTown_Gym_1F_EventScript_CheckHideDanielle
- setobjectmovementtype LOCALID_AXLE, MOVEMENT_TYPE_HIDDEN
-LavaridgeTown_Gym_1F_EventScript_CheckHideDanielle:: @ 81FE77E
- goto_if_defeated TRAINER_DANIELLE, LavaridgeTown_Gym_1F_EventScript_EndCheckHideTrainers
- setobjectmovementtype LOCALID_DANIELLE, MOVEMENT_TYPE_HIDDEN
-LavaridgeTown_Gym_1F_EventScript_EndCheckHideTrainers:: @ 81FE78B
+LavaridgeTown_Gym_1F_EventScript_CheckBuryTrainers:: @ 81FE757
+ goto_if_defeated TRAINER_COLE, LavaridgeTown_Gym_1F_EventScript_CheckBuryGerald
+ setobjectmovementtype LOCALID_COLE, MOVEMENT_TYPE_BURIED
+LavaridgeTown_Gym_1F_EventScript_CheckBuryGerald:: @ 81FE764
+ goto_if_defeated TRAINER_GERALD, LavaridgeTown_Gym_1F_EventScript_CheckBuryAxle
+ setobjectmovementtype LOCALID_GERALD, MOVEMENT_TYPE_BURIED
+LavaridgeTown_Gym_1F_EventScript_CheckBuryAxle:: @ 81FE771
+ goto_if_defeated TRAINER_AXLE, LavaridgeTown_Gym_1F_EventScript_CheckBuryDanielle
+ setobjectmovementtype LOCALID_AXLE, MOVEMENT_TYPE_BURIED
+LavaridgeTown_Gym_1F_EventScript_CheckBuryDanielle:: @ 81FE77E
+ goto_if_defeated TRAINER_DANIELLE, LavaridgeTown_Gym_1F_EventScript_EndCheckBuryTrainers
+ setobjectmovementtype LOCALID_DANIELLE, MOVEMENT_TYPE_BURIED
+LavaridgeTown_Gym_1F_EventScript_EndCheckBuryTrainers:: @ 81FE78B
return
LavaridgeTown_Gym_1F_EventScript_Flannery:: @ 81FE78C
diff --git a/data/maps/LavaridgeTown_Gym_B1F/scripts.inc b/data/maps/LavaridgeTown_Gym_B1F/scripts.inc
index aad7c4778..f2e41ace4 100644
--- a/data/maps/LavaridgeTown_Gym_B1F/scripts.inc
+++ b/data/maps/LavaridgeTown_Gym_B1F/scripts.inc
@@ -9,7 +9,7 @@ LavaridgeTown_Gym_B1F_MapScripts:: @ 81FF87E
LavaridgeTown_Gym_B1F_OnTransition: @ 81FF884
call LavaridgeTown_Gym_B1F_EventScript_SetTrainerTempVars
- call LavaridgeTown_Gym_B1F_EventScript_CheckHideTrainers
+ call LavaridgeTown_Gym_B1F_EventScript_CheckBuryTrainers
end
@ Unclear where/if these temp vars are getting checked
@@ -32,18 +32,18 @@ LavaridgeTown_Gym_B1F_EventScript_SetEliTempVar:: @ 81FF8CD
LavaridgeTown_Gym_B1F_EventScript_EndSetTrainerTempVars:: @ 81FF8DB
return
-LavaridgeTown_Gym_B1F_EventScript_CheckHideTrainers:: @ 81FF8DC
- goto_if_defeated TRAINER_KEEGAN, LavaridgeTown_Gym_B1F_EventScript_CheckHideJace
- setobjectmovementtype LOCALID_KEEGAN, MOVEMENT_TYPE_HIDDEN
-LavaridgeTown_Gym_B1F_EventScript_CheckHideJace:: @ 81FF8E9
- goto_if_defeated TRAINER_JACE, LavaridgeTown_Gym_B1F_EventScript_CheckHideJeff
- setobjectmovementtype LOCALID_JACE, MOVEMENT_TYPE_HIDDEN
-LavaridgeTown_Gym_B1F_EventScript_CheckHideJeff:: @ 81FF8F6
- goto_if_defeated TRAINER_JEFF, LavaridgeTown_Gym_B1F_EventScript_CheckHideEli
- setobjectmovementtype LOCALID_JEFF, MOVEMENT_TYPE_HIDDEN
-LavaridgeTown_Gym_B1F_EventScript_CheckHideEli:: @ 81FF903
- goto_if_defeated TRAINER_ELI, LavaridgeTown_Gym_B1F_EventScript_EndCheckHideTrainers
- setobjectmovementtype LOCALID_ELI, MOVEMENT_TYPE_HIDDEN
-LavaridgeTown_Gym_B1F_EventScript_EndCheckHideTrainers:: @ 81FF910
+LavaridgeTown_Gym_B1F_EventScript_CheckBuryTrainers:: @ 81FF8DC
+ goto_if_defeated TRAINER_KEEGAN, LavaridgeTown_Gym_B1F_EventScript_CheckBuryJace
+ setobjectmovementtype LOCALID_KEEGAN, MOVEMENT_TYPE_BURIED
+LavaridgeTown_Gym_B1F_EventScript_CheckBuryJace:: @ 81FF8E9
+ goto_if_defeated TRAINER_JACE, LavaridgeTown_Gym_B1F_EventScript_CheckBuryJeff
+ setobjectmovementtype LOCALID_JACE, MOVEMENT_TYPE_BURIED
+LavaridgeTown_Gym_B1F_EventScript_CheckBuryJeff:: @ 81FF8F6
+ goto_if_defeated TRAINER_JEFF, LavaridgeTown_Gym_B1F_EventScript_CheckBuryEli
+ setobjectmovementtype LOCALID_JEFF, MOVEMENT_TYPE_BURIED
+LavaridgeTown_Gym_B1F_EventScript_CheckBuryEli:: @ 81FF903
+ goto_if_defeated TRAINER_ELI, LavaridgeTown_Gym_B1F_EventScript_EndCheckBuryTrainers
+ setobjectmovementtype LOCALID_ELI, MOVEMENT_TYPE_BURIED
+LavaridgeTown_Gym_B1F_EventScript_EndCheckBuryTrainers:: @ 81FF910
return
diff --git a/data/maps/LilycoveCity_CoveLilyMotel_2F/map.json b/data/maps/LilycoveCity_CoveLilyMotel_2F/map.json
index f55770b88..0edd978fd 100644
--- a/data/maps/LilycoveCity_CoveLilyMotel_2F/map.json
+++ b/data/maps/LilycoveCity_CoveLilyMotel_2F/map.json
@@ -25,7 +25,7 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "LilycoveCity_CoveLilyMotel_2F_EventScript_GameDesigner",
- "flag": "FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS"
+ "flag": "FLAG_HIDE_LILYCOVE_MOTEL_GAME_DESIGNERS"
},
{
"graphics_id": "OBJ_EVENT_GFX_SCIENTIST_1",
@@ -38,7 +38,7 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "LilycoveCity_CoveLilyMotel_2F_EventScript_GraphicArtist",
- "flag": "FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS"
+ "flag": "FLAG_HIDE_LILYCOVE_MOTEL_GAME_DESIGNERS"
},
{
"graphics_id": "OBJ_EVENT_GFX_FAT_MAN",
@@ -51,7 +51,7 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "LilycoveCity_CoveLilyMotel_2F_EventScript_FatMan",
- "flag": "FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS"
+ "flag": "FLAG_HIDE_LILYCOVE_MOTEL_GAME_DESIGNERS"
},
{
"graphics_id": "OBJ_EVENT_GFX_MAN_4",
@@ -64,7 +64,7 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "LilycoveCity_CoveLilyMotel_2F_EventScript_Programmer",
- "flag": "FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS"
+ "flag": "FLAG_HIDE_LILYCOVE_MOTEL_GAME_DESIGNERS"
},
{
"graphics_id": "OBJ_EVENT_GFX_GAMEBOY_KID",
@@ -77,7 +77,7 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "LilycoveCity_CoveLilyMotel_2F_EventScript_GameBoyKid",
- "flag": "FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS"
+ "flag": "FLAG_HIDE_LILYCOVE_MOTEL_GAME_DESIGNERS"
},
{
"graphics_id": "OBJ_EVENT_GFX_WOMAN_2",
@@ -90,7 +90,7 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "LilycoveCity_CoveLilyMotel_2F_EventScript_Woman",
- "flag": "FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS"
+ "flag": "FLAG_HIDE_LILYCOVE_MOTEL_GAME_DESIGNERS"
},
{
"graphics_id": "OBJ_EVENT_GFX_SCOTT",
@@ -103,7 +103,7 @@
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "LilycoveCity_CoveLilyMotel_2F_EventScript_Scott",
- "flag": "FLAG_HIDE_LILCOVE_MOTEL_SCOTT"
+ "flag": "FLAG_HIDE_LILYCOVE_MOTEL_SCOTT"
}
],
"warp_events": [
diff --git a/data/maps/NavelRock_Bottom/scripts.inc b/data/maps/NavelRock_Bottom/scripts.inc
index 9c438fc5c..766c818d2 100644
--- a/data/maps/NavelRock_Bottom/scripts.inc
+++ b/data/maps/NavelRock_Bottom/scripts.inc
@@ -57,7 +57,7 @@ NavelRock_Bottom_EventScript_Lugia:: @ 82692A2
setvar VAR_0x8004, SPECIES_LUGIA
setvar VAR_0x8005, 70 @ level
setvar VAR_0x8006, ITEM_NONE
- special CreateObedientEnemyMon
+ special CreateEventLegalEnemyMon
setflag FLAG_SYS_CTRL_OBJ_DELETE
special BattleSetup_StartLegendaryBattle
waitstate
diff --git a/data/maps/NavelRock_Top/scripts.inc b/data/maps/NavelRock_Top/scripts.inc
index c95596ff6..b24aed23b 100644
--- a/data/maps/NavelRock_Top/scripts.inc
+++ b/data/maps/NavelRock_Top/scripts.inc
@@ -61,7 +61,7 @@ NavelRock_Top_EventScript_HoOh:: @ 826916F
setvar VAR_0x8004, SPECIES_HO_OH
setvar VAR_0x8005, 70 @ level
setvar VAR_0x8006, ITEM_NONE
- special CreateObedientEnemyMon
+ special CreateEventLegalEnemyMon
setflag FLAG_SYS_CTRL_OBJ_DELETE
special BattleSetup_StartLegendaryBattle
waitstate
diff --git a/data/maps/Route102/map.json b/data/maps/Route102/map.json
index fc9adee3b..aaa63b11f 100644
--- a/data/maps/Route102/map.json
+++ b/data/maps/Route102/map.json
@@ -112,7 +112,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "2",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_102_ORAN",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -125,7 +125,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "1",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_102_PECHA",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route103/map.json b/data/maps/Route103/map.json
index 4b91f913b..fbf92dd0c 100644
--- a/data/maps/Route103/map.json
+++ b/data/maps/Route103/map.json
@@ -112,7 +112,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "5",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_103_CHERI_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -125,7 +125,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "6",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_103_LEPPA",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -138,7 +138,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "7",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_103_CHERI_2",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route104/map.json b/data/maps/Route104/map.json
index 69e5faf27..6ec8b3752 100644
--- a/data/maps/Route104/map.json
+++ b/data/maps/Route104/map.json
@@ -156,7 +156,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "8",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_104_CHERI_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -169,7 +169,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "9",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_104_SOIL_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -182,7 +182,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "10",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_104_LEPPA",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -195,7 +195,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "11",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_104_ORAN_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -208,7 +208,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "12",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_104_SOIL_3",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -221,7 +221,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "13",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_104_PECHA",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -247,7 +247,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "3",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_104_SOIL_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -260,7 +260,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "4",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_104_ORAN_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -273,7 +273,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "75",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_104_SOIL_4",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -286,7 +286,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "76",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_104_CHERI_2",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route110/map.json b/data/maps/Route110/map.json
index bb5df5eb4..abfc2b767 100644
--- a/data/maps/Route110/map.json
+++ b/data/maps/Route110/map.json
@@ -234,7 +234,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "16",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_110_NANAB_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -247,7 +247,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "17",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_110_NANAB_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -260,7 +260,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "18",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_110_NANAB_3",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route111/map.json b/data/maps/Route111/map.json
index 014ac084c..4621591e4 100644
--- a/data/maps/Route111/map.json
+++ b/data/maps/Route111/map.json
@@ -104,7 +104,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "19",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_111_RAZZ_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -117,7 +117,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "20",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_111_RAZZ_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -273,7 +273,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "80",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_111_ORAN_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -286,7 +286,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "81",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_111_ORAN_2",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route112/map.json b/data/maps/Route112/map.json
index d4d650857..04b2e6d12 100644
--- a/data/maps/Route112/map.json
+++ b/data/maps/Route112/map.json
@@ -117,7 +117,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "24",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_112_RAWST_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -130,7 +130,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "23",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_112_PECHA_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -143,7 +143,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "22",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_112_PECHA_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -156,7 +156,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "21",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_112_RAWST_1",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route113/map.json b/data/maps/Route113/map.json
index 8d9d74028..422b88e6e 100644
--- a/data/maps/Route113/map.json
+++ b/data/maps/Route113/map.json
@@ -126,7 +126,7 @@
"x": 29,
"y": 6,
"elevation": 3,
- "movement_type": "MOVEMENT_TYPE_HIDDEN",
+ "movement_type": "MOVEMENT_TYPE_BURIED",
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_BURIED",
@@ -139,7 +139,7 @@
"x": 71,
"y": 2,
"elevation": 3,
- "movement_type": "MOVEMENT_TYPE_HIDDEN",
+ "movement_type": "MOVEMENT_TYPE_BURIED",
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_BURIED",
diff --git a/data/maps/Route114/map.json b/data/maps/Route114/map.json
index 37edf509d..38891b518 100644
--- a/data/maps/Route114/map.json
+++ b/data/maps/Route114/map.json
@@ -34,7 +34,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "77",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_114_PERSIM_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -47,7 +47,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "78",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_114_PERSIM_3",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -125,7 +125,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "68",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_114_PERSIM_1",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route115/map.json b/data/maps/Route115/map.json
index 2d0dbdbaa..bbac132f5 100644
--- a/data/maps/Route115/map.json
+++ b/data/maps/Route115/map.json
@@ -73,7 +73,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "69",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_115_KELPSY_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -86,7 +86,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "70",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_115_KELPSY_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -99,7 +99,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "71",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_115_KELPSY_3",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -190,7 +190,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "55",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_115_BLUK_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -203,7 +203,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "56",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_115_BLUK_2",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route116/map.json b/data/maps/Route116/map.json
index 247a4b7b1..13b4bac1c 100644
--- a/data/maps/Route116/map.json
+++ b/data/maps/Route116/map.json
@@ -34,7 +34,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "25",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_116_PINAP_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -47,7 +47,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "26",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_116_CHESTO_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -138,7 +138,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "66",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_116_CHESTO_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -151,7 +151,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "67",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_116_PINAP_2",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route117/map.json b/data/maps/Route117/map.json
index dd923a7cd..b72866741 100644
--- a/data/maps/Route117/map.json
+++ b/data/maps/Route117/map.json
@@ -164,7 +164,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "29",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_117_WEPEAR_3",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -177,7 +177,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "28",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_117_WEPEAR_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -190,7 +190,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "27",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_117_WEPEAR_1",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route118/map.json b/data/maps/Route118/map.json
index 7b541e629..67acb1b98 100644
--- a/data/maps/Route118/map.json
+++ b/data/maps/Route118/map.json
@@ -39,7 +39,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "31",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_118_SITRUS_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -52,7 +52,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "32",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_118_SOIL",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -65,7 +65,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "33",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_118_SITRUS_2",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route119/map.json b/data/maps/Route119/map.json
index 8d78d1065..c5715daa2 100644
--- a/data/maps/Route119/map.json
+++ b/data/maps/Route119/map.json
@@ -34,7 +34,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "34",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_119_POMEG_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -47,7 +47,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "35",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_119_POMEG_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -60,7 +60,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "36",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_119_POMEG_3",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -372,7 +372,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "83",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_119_HONDEW_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -385,7 +385,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "84",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_119_HONDEW_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -398,7 +398,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "85",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_119_SITRUS",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -411,7 +411,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "86",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_119_LEPPA",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route120/map.json b/data/maps/Route120/map.json
index 787f51361..6b67310d3 100644
--- a/data/maps/Route120/map.json
+++ b/data/maps/Route120/map.json
@@ -34,7 +34,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "46",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_120_WEPEAR",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -47,7 +47,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "45",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_120_PINAP",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -60,7 +60,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "44",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_120_NANAB",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -73,7 +73,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "43",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_120_RAZZ",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -86,7 +86,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "37",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_120_ASPEAR_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -99,7 +99,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "38",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_120_ASPEAR_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -112,7 +112,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "39",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_120_ASPEAR_3",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -125,7 +125,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "40",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_120_PECHA_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -138,7 +138,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "41",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_120_PECHA_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -151,7 +151,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "42",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_120_PECHA_3",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route121/map.json b/data/maps/Route121/map.json
index e956f6251..aa8f07085 100644
--- a/data/maps/Route121/map.json
+++ b/data/maps/Route121/map.json
@@ -52,7 +52,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "47",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_121_PERSIM",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -65,7 +65,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "48",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_121_ASPEAR",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -78,7 +78,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "49",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_121_RAWST",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -91,7 +91,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "50",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_121_CHESTO",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -104,7 +104,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "51",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_121_SOIL_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -117,7 +117,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "52",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_121_NANAB_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -130,7 +130,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "53",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_121_NANAB_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -143,7 +143,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "54",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_121_SOIL_2",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route123/map.json b/data/maps/Route123/map.json
index 1bd25310a..695b50acd 100644
--- a/data/maps/Route123/map.json
+++ b/data/maps/Route123/map.json
@@ -34,7 +34,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "58",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_POMEG_3",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -47,7 +47,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "59",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_POMEG_4",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -60,7 +60,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "60",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_GREPA_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -73,7 +73,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "61",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_GREPA_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -86,7 +86,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "62",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_LEPPA_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -99,7 +99,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "63",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_SOIL",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -112,7 +112,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "64",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_LEPPA_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -151,7 +151,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "65",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_GREPA_3",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -164,7 +164,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "72",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_GREPA_4",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -177,7 +177,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "73",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_QUALOT_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -190,7 +190,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "74",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_QUALOT_3",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -203,7 +203,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "79",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_QUALOT_4",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -216,7 +216,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "14",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_QUALOT_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -229,7 +229,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "15",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_POMEG_1",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -242,7 +242,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "30",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_POMEG_2",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -320,7 +320,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "87",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_PECHA",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -333,7 +333,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "88",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_SITRUS",
"script": "BerryTreeScript",
"flag": "0"
},
@@ -346,7 +346,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "89",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_123_RAWST",
"script": "BerryTreeScript",
"flag": "0"
},
diff --git a/data/maps/Route130/map.json b/data/maps/Route130/map.json
index 7b4cf047c..c612eccb5 100644
--- a/data/maps/Route130/map.json
+++ b/data/maps/Route130/map.json
@@ -60,7 +60,7 @@
"movement_range_x": 0,
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
- "trainer_sight_or_berry_tree_id": "82",
+ "trainer_sight_or_berry_tree_id": "BERRY_TREE_ROUTE_130_LIECHI",
"script": "BerryTreeScript",
"flag": "FLAG_TEMP_11"
},
diff --git a/data/maps/SlateportCity_Harbor/scripts.inc b/data/maps/SlateportCity_Harbor/scripts.inc
index 644911ea6..41a224f75 100644
--- a/data/maps/SlateportCity_Harbor/scripts.inc
+++ b/data/maps/SlateportCity_Harbor/scripts.inc
@@ -70,7 +70,7 @@ SlateportCity_Harbor_EventScript_AquaEscapeScene:: @ 820C9F5
removeobject LOCALID_SUBMARINE
setvar VAR_SLATEPORT_HARBOR_STATE, 2
setflag FLAG_MET_TEAM_AQUA_HARBOR
- setflag FLAG_HIDE_LILCOVE_MOTEL_SCOTT
+ setflag FLAG_HIDE_LILYCOVE_MOTEL_SCOTT
compare VAR_0x8008, 0
call_if_eq SlateportCity_Harbor_EventScript_SternApproachPlayer0
compare VAR_0x8008, 1
diff --git a/data/maps/SouthernIsland_Interior/scripts.inc b/data/maps/SouthernIsland_Interior/scripts.inc
index 0dd8cc303..2c2e6e00d 100644
--- a/data/maps/SouthernIsland_Interior/scripts.inc
+++ b/data/maps/SouthernIsland_Interior/scripts.inc
@@ -118,14 +118,14 @@ SouthernIsland_Interior_EventScript_SetLatiosBattleVars:: @ 8242BA4
setvar VAR_0x8004, SPECIES_LATIOS
setvar VAR_0x8005, 50 @ level
setvar VAR_0x8006, ITEM_SOUL_DEW
- special CreateObedientEnemyMon
+ special CreateEventLegalEnemyMon
return
SouthernIsland_Interior_EventScript_SetLatiasBattleVars:: @ 8242BB7
setvar VAR_0x8004, SPECIES_LATIAS
setvar VAR_0x8005, 50 @ level
setvar VAR_0x8006, ITEM_SOUL_DEW
- special CreateObedientEnemyMon
+ special CreateEventLegalEnemyMon
return
SouthernIsland_Interior_Movement_CameraPanUp: @ 8242BCA
diff --git a/data/maps/UnknownLinkContestRoom_25_33/map.json b/data/maps/UnknownLinkContestRoom_25_33/map.json
deleted file mode 100644
index f73ffe22e..000000000
--- a/data/maps/UnknownLinkContestRoom_25_33/map.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "id": "MAP_UNKNOWN_LINK_CONTEST_ROOM_25_33",
- "name": "UnknownLinkContestRoom_25_33",
- "layout": "LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_33",
- "music": "MUS_GSC_PEWTER",
- "region_map_section": "MAPSEC_DYNAMIC",
- "requires_flash": false,
- "weather": "WEATHER_NONE",
- "map_type": "MAP_TYPE_INDOOR",
- "allow_cycling": false,
- "allow_escaping": false,
- "allow_running": false,
- "show_map_name": false,
- "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
- "connections": null,
- "shared_events_map": "ContestHall",
- "shared_scripts_map": "ContestHall"
-}
diff --git a/data/maps/UnknownLinkContestRoom_25_34/map.json b/data/maps/UnknownLinkContestRoom_25_34/map.json
deleted file mode 100644
index f5ddbbe5a..000000000
--- a/data/maps/UnknownLinkContestRoom_25_34/map.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "id": "MAP_UNKNOWN_LINK_CONTEST_ROOM_25_34",
- "name": "UnknownLinkContestRoom_25_34",
- "layout": "LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_34",
- "music": "MUS_GSC_PEWTER",
- "region_map_section": "MAPSEC_DYNAMIC",
- "requires_flash": false,
- "weather": "WEATHER_NONE",
- "map_type": "MAP_TYPE_INDOOR",
- "allow_cycling": false,
- "allow_escaping": false,
- "allow_running": false,
- "show_map_name": false,
- "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
- "connections": null,
- "shared_events_map": "ContestHall",
- "shared_scripts_map": "ContestHall"
-}
diff --git a/data/maps/UnknownLinkContestRoom_25_29/map.json b/data/maps/UnusedContestHall1/map.json
index 72ed407ee..f0cc06947 100644
--- a/data/maps/UnknownLinkContestRoom_25_29/map.json
+++ b/data/maps/UnusedContestHall1/map.json
@@ -1,7 +1,7 @@
{
- "id": "MAP_UNKNOWN_LINK_CONTEST_ROOM_25_29",
- "name": "UnknownLinkContestRoom_25_29",
- "layout": "LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_29",
+ "id": "MAP_UNUSED_CONTEST_HALL1",
+ "name": "UnusedContestHall1",
+ "layout": "LAYOUT_UNUSED_CONTEST_HALL1",
"music": "MUS_GSC_PEWTER",
"region_map_section": "MAPSEC_DYNAMIC",
"requires_flash": false,
diff --git a/data/maps/UnknownLinkContestRoom_25_30/map.json b/data/maps/UnusedContestHall2/map.json
index cd4d6fddd..96f47e5df 100644
--- a/data/maps/UnknownLinkContestRoom_25_30/map.json
+++ b/data/maps/UnusedContestHall2/map.json
@@ -1,7 +1,7 @@
{
- "id": "MAP_UNKNOWN_LINK_CONTEST_ROOM_25_30",
- "name": "UnknownLinkContestRoom_25_30",
- "layout": "LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_30",
+ "id": "MAP_UNUSED_CONTEST_HALL2",
+ "name": "UnusedContestHall2",
+ "layout": "LAYOUT_UNUSED_CONTEST_HALL2",
"music": "MUS_GSC_PEWTER",
"region_map_section": "MAPSEC_DYNAMIC",
"requires_flash": false,
diff --git a/data/maps/UnknownLinkContestRoom_25_31/map.json b/data/maps/UnusedContestHall3/map.json
index 975ec382d..95d20e61d 100644
--- a/data/maps/UnknownLinkContestRoom_25_31/map.json
+++ b/data/maps/UnusedContestHall3/map.json
@@ -1,7 +1,7 @@
{
- "id": "MAP_UNKNOWN_LINK_CONTEST_ROOM_25_31",
- "name": "UnknownLinkContestRoom_25_31",
- "layout": "LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_31",
+ "id": "MAP_UNUSED_CONTEST_HALL3",
+ "name": "UnusedContestHall3",
+ "layout": "LAYOUT_UNUSED_CONTEST_HALL3",
"music": "MUS_GSC_PEWTER",
"region_map_section": "MAPSEC_DYNAMIC",
"requires_flash": false,
diff --git a/data/maps/UnknownLinkContestRoom_25_32/map.json b/data/maps/UnusedContestHall4/map.json
index d2d673adc..b4e715842 100644
--- a/data/maps/UnknownLinkContestRoom_25_32/map.json
+++ b/data/maps/UnusedContestHall4/map.json
@@ -1,7 +1,7 @@
{
- "id": "MAP_UNKNOWN_LINK_CONTEST_ROOM_25_32",
- "name": "UnknownLinkContestRoom_25_32",
- "layout": "LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_32",
+ "id": "MAP_UNUSED_CONTEST_HALL4",
+ "name": "UnusedContestHall4",
+ "layout": "LAYOUT_UNUSED_CONTEST_HALL4",
"music": "MUS_GSC_PEWTER",
"region_map_section": "MAPSEC_DYNAMIC",
"requires_flash": false,
diff --git a/data/maps/UnusedContestHall5/map.json b/data/maps/UnusedContestHall5/map.json
new file mode 100644
index 000000000..4c1281bf3
--- /dev/null
+++ b/data/maps/UnusedContestHall5/map.json
@@ -0,0 +1,18 @@
+{
+ "id": "MAP_UNUSED_CONTEST_HALL5",
+ "name": "UnusedContestHall5",
+ "layout": "LAYOUT_UNUSED_CONTEST_HALL5",
+ "music": "MUS_GSC_PEWTER",
+ "region_map_section": "MAPSEC_DYNAMIC",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "shared_events_map": "ContestHall",
+ "shared_scripts_map": "ContestHall"
+}
diff --git a/data/maps/UnusedContestHall6/map.json b/data/maps/UnusedContestHall6/map.json
new file mode 100644
index 000000000..c0a7dbb4d
--- /dev/null
+++ b/data/maps/UnusedContestHall6/map.json
@@ -0,0 +1,18 @@
+{
+ "id": "MAP_UNUSED_CONTEST_HALL6",
+ "name": "UnusedContestHall6",
+ "layout": "LAYOUT_UNUSED_CONTEST_HALL6",
+ "music": "MUS_GSC_PEWTER",
+ "region_map_section": "MAPSEC_DYNAMIC",
+ "requires_flash": false,
+ "weather": "WEATHER_NONE",
+ "map_type": "MAP_TYPE_INDOOR",
+ "allow_cycling": false,
+ "allow_escaping": false,
+ "allow_running": false,
+ "show_map_name": false,
+ "battle_scene": "MAP_BATTLE_SCENE_NORMAL",
+ "connections": null,
+ "shared_events_map": "ContestHall",
+ "shared_scripts_map": "ContestHall"
+}
diff --git a/data/maps/map_groups.json b/data/maps/map_groups.json
index 4201e814f..4268abbef 100644
--- a/data/maps/map_groups.json
+++ b/data/maps/map_groups.json
@@ -461,12 +461,12 @@
"RecordCorner",
"BattleColosseum_4P",
"ContestHall",
- "UnknownLinkContestRoom_25_29",
- "UnknownLinkContestRoom_25_30",
- "UnknownLinkContestRoom_25_31",
- "UnknownLinkContestRoom_25_32",
- "UnknownLinkContestRoom_25_33",
- "UnknownLinkContestRoom_25_34",
+ "UnusedContestHall1",
+ "UnusedContestHall2",
+ "UnusedContestHall3",
+ "UnusedContestHall4",
+ "UnusedContestHall5",
+ "UnusedContestHall6",
"ContestHallBeauty",
"ContestHallTough",
"ContestHallCool",
diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc
index f89e0a72a..a26ce6bf2 100644
--- a/data/script_cmd_table.inc
+++ b/data/script_cmd_table.inc
@@ -205,8 +205,8 @@ gScriptCmdTable:: @ 81DB67C
.4byte ScrCmd_nop1 @ 0xca
.4byte ScrCmd_nop1 @ 0xcb
.4byte ScrCmd_nop1 @ 0xcc
- .4byte ScrCmd_setmonobedient @ 0xcd
- .4byte ScrCmd_checkmonobedience @ 0xce
+ .4byte ScrCmd_setmoneventlegal @ 0xcd
+ .4byte ScrCmd_checkmoneventlegal @ 0xce
.4byte ScrCmd_gotoram @ 0xcf
.4byte ScrCmd_nop1 @ 0xd0
.4byte ScrCmd_warpspinenter @ 0xd1
diff --git a/data/scripts/hall_of_fame.inc b/data/scripts/hall_of_fame.inc
index 91a88f348..021784f81 100644
--- a/data/scripts/hall_of_fame.inc
+++ b/data/scripts/hall_of_fame.inc
@@ -4,7 +4,7 @@ EverGrandeCity_HallOfFame_EventScript_SetGameClearFlags:: @ 82717C1
call EverGrandeCity_HallOfFame_EventScript_ResetDefeatedEventLegendaries
compare VAR_FOSSIL_MANIAC_STATE, 0
call_if_eq EverGrandeCity_HallOfFame_EventScript_SetDesertUnderpassCommentReady
- clearflag FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS
+ clearflag FLAG_HIDE_LILYCOVE_MOTEL_GAME_DESIGNERS
call EverGrandeCity_HallOfFame_EventScript_ResetEliteFour
setflag FLAG_HIDE_SLATEPORT_CITY_STERNS_SHIPYARD_MR_BRINEY
clearflag FLAG_HIDE_SS_TIDAL_CORRIDOR_MR_BRINEY
diff --git a/data/scripts/mevent_pichu.inc b/data/scripts/mevent_pichu.inc
index c51558e9e..2b9e09df9 100644
--- a/data/scripts/mevent_pichu.inc
+++ b/data/scripts/mevent_pichu.inc
@@ -30,7 +30,7 @@ SurfPichu_FullParty: @ 8674D73
SurfPichu_GiveEgg: @ 8674D7E
giveegg SPECIES_PICHU
- setmonobedient VAR_EVENT_PICHU_SLOT
+ setmoneventlegal VAR_EVENT_PICHU_SLOT
setmonmetlocation VAR_EVENT_PICHU_SLOT, METLOC_FATEFUL_ENCOUNTER
compare VAR_EVENT_PICHU_SLOT, 1
vgoto_if_eq SurfPichu_Slot1
diff --git a/data/scripts/new_game.inc b/data/scripts/new_game.inc
index 77102a001..422186695 100644
--- a/data/scripts/new_game.inc
+++ b/data/scripts/new_game.inc
@@ -1,115 +1,115 @@
EventScript_ResetAllBerries:: @ 827149D
@ Route 102
- setberrytree 2, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
- setberrytree 1, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_102_ORAN, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_102_PECHA, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
@ Route 104
- setberrytree 11, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
- setberrytree 13, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 4, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
- setberrytree 76, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
- setberrytree 8, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
- setberrytree 10, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_104_ORAN_2, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_104_PECHA, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_104_ORAN_1, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_104_CHERI_2, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_104_CHERI_1, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_104_LEPPA, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
@ Route 116
- setberrytree 25, ITEM_TO_BERRY(ITEM_PINAP_BERRY), BERRY_STAGE_BERRIES
- setberrytree 26, ITEM_TO_BERRY(ITEM_CHESTO_BERRY), BERRY_STAGE_BERRIES
- setberrytree 66, ITEM_TO_BERRY(ITEM_CHESTO_BERRY), BERRY_STAGE_BERRIES
- setberrytree 67, ITEM_TO_BERRY(ITEM_PINAP_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_116_PINAP_1, ITEM_TO_BERRY(ITEM_PINAP_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_116_CHESTO_1, ITEM_TO_BERRY(ITEM_CHESTO_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_116_CHESTO_2, ITEM_TO_BERRY(ITEM_CHESTO_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_116_PINAP_2, ITEM_TO_BERRY(ITEM_PINAP_BERRY), BERRY_STAGE_BERRIES
@ Route 115
- setberrytree 69, ITEM_TO_BERRY(ITEM_KELPSY_BERRY), BERRY_STAGE_BERRIES
- setberrytree 70, ITEM_TO_BERRY(ITEM_KELPSY_BERRY), BERRY_STAGE_BERRIES
- setberrytree 71, ITEM_TO_BERRY(ITEM_KELPSY_BERRY), BERRY_STAGE_BERRIES
- setberrytree 55, ITEM_TO_BERRY(ITEM_BLUK_BERRY), BERRY_STAGE_BERRIES
- setberrytree 56, ITEM_TO_BERRY(ITEM_BLUK_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_115_KELPSY_1, ITEM_TO_BERRY(ITEM_KELPSY_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_115_KELPSY_2, ITEM_TO_BERRY(ITEM_KELPSY_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_115_KELPSY_3, ITEM_TO_BERRY(ITEM_KELPSY_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_115_BLUK_1, ITEM_TO_BERRY(ITEM_BLUK_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_115_BLUK_2, ITEM_TO_BERRY(ITEM_BLUK_BERRY), BERRY_STAGE_BERRIES
@ Route 103
- setberrytree 5, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
- setberrytree 6, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 7, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_103_CHERI_1, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_103_LEPPA, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_103_CHERI_2, ITEM_TO_BERRY(ITEM_CHERI_BERRY), BERRY_STAGE_BERRIES
@ Route 110
- setberrytree 16, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
- setberrytree 17, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
- setberrytree 18, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_110_NANAB_1, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_110_NANAB_2, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_110_NANAB_3, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
@ Route 117
- setberrytree 29, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
- setberrytree 28, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
- setberrytree 27, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_117_WEPEAR_3, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_117_WEPEAR_2, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_117_WEPEAR_1, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
@ Route 112
- setberrytree 24, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
- setberrytree 23, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 22, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 21, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_112_RAWST_2, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_112_PECHA_2, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_112_PECHA_1, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_112_RAWST_1, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
@ Route 111
- setberrytree 19, ITEM_TO_BERRY(ITEM_RAZZ_BERRY), BERRY_STAGE_BERRIES
- setberrytree 20, ITEM_TO_BERRY(ITEM_RAZZ_BERRY), BERRY_STAGE_BERRIES
- setberrytree 80, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
- setberrytree 81, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_111_RAZZ_1, ITEM_TO_BERRY(ITEM_RAZZ_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_111_RAZZ_2, ITEM_TO_BERRY(ITEM_RAZZ_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_111_ORAN_1, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_111_ORAN_2, ITEM_TO_BERRY(ITEM_ORAN_BERRY), BERRY_STAGE_BERRIES
@ Route 114
- setberrytree 77, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
- setberrytree 78, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
- setberrytree 68, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_114_PERSIM_2, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_114_PERSIM_3, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_114_PERSIM_1, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
@ Route 118
- setberrytree 31, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
- setberrytree 33, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_118_SITRUS_1, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_118_SITRUS_2, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
@ Route 119
- setberrytree 34, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
- setberrytree 35, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
- setberrytree 36, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
- setberrytree 83, ITEM_TO_BERRY(ITEM_HONDEW_BERRY), BERRY_STAGE_BERRIES
- setberrytree 84, ITEM_TO_BERRY(ITEM_HONDEW_BERRY), BERRY_STAGE_BERRIES
- setberrytree 85, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
- setberrytree 86, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_119_POMEG_1, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_119_POMEG_2, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_119_POMEG_3, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_119_HONDEW_1, ITEM_TO_BERRY(ITEM_HONDEW_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_119_HONDEW_2, ITEM_TO_BERRY(ITEM_HONDEW_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_119_SITRUS, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_119_LEPPA, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
@ Route 120
- setberrytree 37, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
- setberrytree 38, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
- setberrytree 39, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
- setberrytree 40, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 41, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 42, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 46, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
- setberrytree 45, ITEM_TO_BERRY(ITEM_PINAP_BERRY), BERRY_STAGE_BERRIES
- setberrytree 44, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
- setberrytree 43, ITEM_TO_BERRY(ITEM_RAZZ_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_120_ASPEAR_1, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_120_ASPEAR_2, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_120_ASPEAR_3, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_120_PECHA_1, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_120_PECHA_2, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_120_PECHA_3, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_120_WEPEAR, ITEM_TO_BERRY(ITEM_WEPEAR_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_120_PINAP, ITEM_TO_BERRY(ITEM_PINAP_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_120_NANAB, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_120_RAZZ, ITEM_TO_BERRY(ITEM_RAZZ_BERRY), BERRY_STAGE_BERRIES
@ Route 121
- setberrytree 47, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
- setberrytree 48, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
- setberrytree 49, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
- setberrytree 50, ITEM_TO_BERRY(ITEM_CHESTO_BERRY), BERRY_STAGE_BERRIES
- setberrytree 52, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
- setberrytree 53, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_121_PERSIM, ITEM_TO_BERRY(ITEM_PERSIM_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_121_ASPEAR, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_121_RAWST, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_121_CHESTO, ITEM_TO_BERRY(ITEM_CHESTO_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_121_NANAB_1, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_121_NANAB_2, ITEM_TO_BERRY(ITEM_NANAB_BERRY), BERRY_STAGE_BERRIES
@ Route 123
- setberrytree 62, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 64, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 58, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
- setberrytree 59, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
- setberrytree 60, ITEM_TO_BERRY(ITEM_GREPA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 61, ITEM_TO_BERRY(ITEM_GREPA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 79, ITEM_TO_BERRY(ITEM_QUALOT_BERRY), BERRY_STAGE_BERRIES
- setberrytree 14, ITEM_TO_BERRY(ITEM_QUALOT_BERRY), BERRY_STAGE_BERRIES
- setberrytree 15, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
- setberrytree 30, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
- setberrytree 65, ITEM_TO_BERRY(ITEM_GREPA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 72, ITEM_TO_BERRY(ITEM_GREPA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 73, ITEM_TO_BERRY(ITEM_QUALOT_BERRY), BERRY_STAGE_BERRIES
- setberrytree 74, ITEM_TO_BERRY(ITEM_QUALOT_BERRY), BERRY_STAGE_BERRIES
- setberrytree 87, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
- setberrytree 88, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
- setberrytree 89, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_LEPPA_1, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_LEPPA_2, ITEM_TO_BERRY(ITEM_LEPPA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_POMEG_3, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_POMEG_4, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_GREPA_1, ITEM_TO_BERRY(ITEM_GREPA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_GREPA_2, ITEM_TO_BERRY(ITEM_GREPA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_QUALOT_4, ITEM_TO_BERRY(ITEM_QUALOT_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_QUALOT_1, ITEM_TO_BERRY(ITEM_QUALOT_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_POMEG_1, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_POMEG_2, ITEM_TO_BERRY(ITEM_POMEG_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_GREPA_3, ITEM_TO_BERRY(ITEM_GREPA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_GREPA_4, ITEM_TO_BERRY(ITEM_GREPA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_QUALOT_2, ITEM_TO_BERRY(ITEM_QUALOT_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_QUALOT_3, ITEM_TO_BERRY(ITEM_QUALOT_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_PECHA, ITEM_TO_BERRY(ITEM_PECHA_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_SITRUS, ITEM_TO_BERRY(ITEM_SITRUS_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_123_RAWST, ITEM_TO_BERRY(ITEM_RAWST_BERRY), BERRY_STAGE_BERRIES
@ Mirage Island
- setberrytree 82, ITEM_TO_BERRY(ITEM_LIECHI_BERRY), BERRY_STAGE_BERRIES
+ setberrytree BERRY_TREE_ROUTE_130_LIECHI, ITEM_TO_BERRY(ITEM_LIECHI_BERRY), BERRY_STAGE_BERRIES
return
EventScript_ResetAllMapFlags:: @ 82715DE
@@ -229,7 +229,7 @@ EventScript_ResetAllMapFlags:: @ 82715DE
setflag FLAG_HIDE_ROUTE_110_RIVAL_ON_BIKE
setflag FLAG_HIDE_ROUTE_119_RIVAL_ON_BIKE
setflag FLAG_HIDE_ROUTE_104_RIVAL
- setflag FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS
+ setflag FLAG_HIDE_LILYCOVE_MOTEL_GAME_DESIGNERS
setflag FLAG_HIDE_LAVARIDGE_TOWN_RIVAL
setflag FLAG_HIDE_LAVARIDGE_TOWN_RIVAL_ON_BIKE
setflag FLAG_HIDE_MOSSDEEP_CITY_HOUSE_2_WINGULL
diff --git a/data/specials.inc b/data/specials.inc
index 3e1d1862d..97f698379 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -490,7 +490,7 @@ gSpecials:: @ 81DBA64
def_special sub_813AF48
def_special DoDeoxysRockInteraction
def_special SetDeoxysRockPalette
- def_special CreateObedientEnemyMon
+ def_special CreateEventLegalEnemyMon
def_special StartMirageTowerDisintegration
def_special StartMirageTowerShake
def_special StartMirageTowerFossilFallAndSink
diff --git a/graphics/evolution_scene/transition.pal b/graphics/evolution_scene/bg_anim.pal
index b0f4d3815..b0f4d3815 100644
--- a/graphics/evolution_scene/transition.pal
+++ b/graphics/evolution_scene/bg_anim.pal
diff --git a/graphics/evolution_scene/gray_transition_intro.pal b/graphics/evolution_scene/bg_anim_intro.pal
index 323623a15..323623a15 100644
--- a/graphics/evolution_scene/gray_transition_intro.pal
+++ b/graphics/evolution_scene/bg_anim_intro.pal
diff --git a/graphics/evolution_scene/bg.bin b/graphics/evolution_scene/bg_inner.bin
index 583ebac2b..583ebac2b 100644
--- a/graphics/evolution_scene/bg.bin
+++ b/graphics/evolution_scene/bg_inner.bin
Binary files differ
diff --git a/graphics/evolution_scene/bg2.bin b/graphics/evolution_scene/bg_outer.bin
index 7afab112a..7afab112a 100644
--- a/graphics/evolution_scene/bg2.bin
+++ b/graphics/evolution_scene/bg_outer.bin
Binary files differ
diff --git a/graphics/evolution_scene/unknown_5B4114.pal b/graphics/evolution_scene/unused_1.pal
index 2cd4981fd..2cd4981fd 100644
--- a/graphics/evolution_scene/unknown_5B4114.pal
+++ b/graphics/evolution_scene/unused_1.pal
diff --git a/graphics/evolution_scene/gray_transition_lighten.pal b/graphics/evolution_scene/unused_2.pal
index 813db93dc..813db93dc 100644
--- a/graphics/evolution_scene/gray_transition_lighten.pal
+++ b/graphics/evolution_scene/unused_2.pal
diff --git a/graphics/evolution_scene/gray_transition_darken.pal b/graphics/evolution_scene/unused_3.pal
index 97d117330..97d117330 100644
--- a/graphics/evolution_scene/gray_transition_darken.pal
+++ b/graphics/evolution_scene/unused_3.pal
diff --git a/graphics/evolution_scene/gray_transition_outro.pal b/graphics/evolution_scene/unused_4.pal
index f122f40fe..f122f40fe 100644
--- a/graphics/evolution_scene/gray_transition_outro.pal
+++ b/graphics/evolution_scene/unused_4.pal
diff --git a/include/berry.h b/include/berry.h
index 3412caae5..4a5a46615 100644
--- a/include/berry.h
+++ b/include/berry.h
@@ -1,8 +1,6 @@
#ifndef GUARD_BERRY_H
#define GUARD_BERRY_H
-#include "constants/berry.h"
-
void ClearEnigmaBerries(void);
void SetEnigmaBerry(u8 *src);
bool32 IsEnigmaBerryValid(void);
diff --git a/include/constants/berry.h b/include/constants/berry.h
index 8f1e7cd82..3ba59c0f5 100644
--- a/include/constants/berry.h
+++ b/include/constants/berry.h
@@ -32,4 +32,101 @@
// - BERRY_STAGE_FLOWERING
#define NUM_WATER_STAGES 4
+// IDs for berry tree objects, indexes into berryTrees in SaveBlock1
+// Named for whatever berry is initially planted there on a new game
+// Those with no initial berry are named "soil"
+#define BERRY_TREE_ROUTE_102_PECHA 1
+#define BERRY_TREE_ROUTE_102_ORAN 2
+#define BERRY_TREE_ROUTE_104_SOIL_1 3
+#define BERRY_TREE_ROUTE_104_ORAN_1 4
+#define BERRY_TREE_ROUTE_103_CHERI_1 5
+#define BERRY_TREE_ROUTE_103_LEPPA 6
+#define BERRY_TREE_ROUTE_103_CHERI_2 7
+#define BERRY_TREE_ROUTE_104_CHERI_1 8
+#define BERRY_TREE_ROUTE_104_SOIL_2 9
+#define BERRY_TREE_ROUTE_104_LEPPA 10
+#define BERRY_TREE_ROUTE_104_ORAN_2 11
+#define BERRY_TREE_ROUTE_104_SOIL_3 12
+#define BERRY_TREE_ROUTE_104_PECHA 13
+#define BERRY_TREE_ROUTE_123_QUALOT_1 14
+#define BERRY_TREE_ROUTE_123_POMEG_1 15
+#define BERRY_TREE_ROUTE_110_NANAB_1 16
+#define BERRY_TREE_ROUTE_110_NANAB_2 17
+#define BERRY_TREE_ROUTE_110_NANAB_3 18
+#define BERRY_TREE_ROUTE_111_RAZZ_1 19
+#define BERRY_TREE_ROUTE_111_RAZZ_2 20
+#define BERRY_TREE_ROUTE_112_RAWST_1 21
+#define BERRY_TREE_ROUTE_112_PECHA_1 22
+#define BERRY_TREE_ROUTE_112_PECHA_2 23
+#define BERRY_TREE_ROUTE_112_RAWST_2 24
+#define BERRY_TREE_ROUTE_116_PINAP_1 25
+#define BERRY_TREE_ROUTE_116_CHESTO_1 26
+#define BERRY_TREE_ROUTE_117_WEPEAR_1 27
+#define BERRY_TREE_ROUTE_117_WEPEAR_2 28
+#define BERRY_TREE_ROUTE_117_WEPEAR_3 29
+#define BERRY_TREE_ROUTE_123_POMEG_2 30
+#define BERRY_TREE_ROUTE_118_SITRUS_1 31
+#define BERRY_TREE_ROUTE_118_SOIL 32
+#define BERRY_TREE_ROUTE_118_SITRUS_2 33
+#define BERRY_TREE_ROUTE_119_POMEG_1 34
+#define BERRY_TREE_ROUTE_119_POMEG_2 35
+#define BERRY_TREE_ROUTE_119_POMEG_3 36
+#define BERRY_TREE_ROUTE_120_ASPEAR_1 37
+#define BERRY_TREE_ROUTE_120_ASPEAR_2 38
+#define BERRY_TREE_ROUTE_120_ASPEAR_3 39
+#define BERRY_TREE_ROUTE_120_PECHA_1 40
+#define BERRY_TREE_ROUTE_120_PECHA_2 41
+#define BERRY_TREE_ROUTE_120_PECHA_3 42
+#define BERRY_TREE_ROUTE_120_RAZZ 43
+#define BERRY_TREE_ROUTE_120_NANAB 44
+#define BERRY_TREE_ROUTE_120_PINAP 45
+#define BERRY_TREE_ROUTE_120_WEPEAR 46
+#define BERRY_TREE_ROUTE_121_PERSIM 47
+#define BERRY_TREE_ROUTE_121_ASPEAR 48
+#define BERRY_TREE_ROUTE_121_RAWST 49
+#define BERRY_TREE_ROUTE_121_CHESTO 50
+#define BERRY_TREE_ROUTE_121_SOIL_1 51
+#define BERRY_TREE_ROUTE_121_NANAB_1 52
+#define BERRY_TREE_ROUTE_121_NANAB_2 53
+#define BERRY_TREE_ROUTE_121_SOIL_2 54
+#define BERRY_TREE_ROUTE_115_BLUK_1 55
+#define BERRY_TREE_ROUTE_115_BLUK_2 56
+#define BERRY_TREE_UNUSED 57
+#define BERRY_TREE_ROUTE_123_POMEG_3 58
+#define BERRY_TREE_ROUTE_123_POMEG_4 59
+#define BERRY_TREE_ROUTE_123_GREPA_1 60
+#define BERRY_TREE_ROUTE_123_GREPA_2 61
+#define BERRY_TREE_ROUTE_123_LEPPA_1 62
+#define BERRY_TREE_ROUTE_123_SOIL 63
+#define BERRY_TREE_ROUTE_123_LEPPA_2 64
+#define BERRY_TREE_ROUTE_123_GREPA_3 65
+#define BERRY_TREE_ROUTE_116_CHESTO_2 66
+#define BERRY_TREE_ROUTE_116_PINAP_2 67
+#define BERRY_TREE_ROUTE_114_PERSIM_1 68
+#define BERRY_TREE_ROUTE_115_KELPSY_1 69
+#define BERRY_TREE_ROUTE_115_KELPSY_2 70
+#define BERRY_TREE_ROUTE_115_KELPSY_3 71
+#define BERRY_TREE_ROUTE_123_GREPA_4 72
+#define BERRY_TREE_ROUTE_123_QUALOT_2 73
+#define BERRY_TREE_ROUTE_123_QUALOT_3 74
+#define BERRY_TREE_ROUTE_104_SOIL_4 75
+#define BERRY_TREE_ROUTE_104_CHERI_2 76
+#define BERRY_TREE_ROUTE_114_PERSIM_2 77
+#define BERRY_TREE_ROUTE_114_PERSIM_3 78
+#define BERRY_TREE_ROUTE_123_QUALOT_4 79
+#define BERRY_TREE_ROUTE_111_ORAN_1 80
+#define BERRY_TREE_ROUTE_111_ORAN_2 81
+#define BERRY_TREE_ROUTE_130_LIECHI 82
+#define BERRY_TREE_ROUTE_119_HONDEW_1 83
+#define BERRY_TREE_ROUTE_119_HONDEW_2 84
+#define BERRY_TREE_ROUTE_119_SITRUS 85
+#define BERRY_TREE_ROUTE_119_LEPPA 86
+#define BERRY_TREE_ROUTE_123_PECHA 87
+#define BERRY_TREE_ROUTE_123_SITRUS 88
+#define BERRY_TREE_ROUTE_123_RAWST 89
+
+// Remainder are unused
+
+#define BERRY_TREES_COUNT 128
+
#endif // GUARD_CONSTANTS_BERRY_H
diff --git a/include/constants/daycare.h b/include/constants/daycare.h
index adb62fab5..e412d2ab7 100644
--- a/include/constants/daycare.h
+++ b/include/constants/daycare.h
@@ -1,11 +1,11 @@
#ifndef GUARD_DAYCARE_CONSTANTS_H
#define GUARD_DAYCARE_CONSTANTS_H
-// Parent compatability scores
+// Parent compatibility scores
#define PARENTS_INCOMPATIBLE 0
#define PARENTS_LOW_COMPATIBILITY 20
-#define PARENTS_MED_COMPATABILITY 50
-#define PARENTS_MAX_COMPATABILITY 70
+#define PARENTS_MED_COMPATIBILITY 50
+#define PARENTS_MAX_COMPATIBILITY 70
// Daycare state
#define DAYCARE_NO_MONS 0
diff --git a/include/constants/event_object_movement.h b/include/constants/event_object_movement.h
index 6a4405b65..223650081 100755
--- a/include/constants/event_object_movement.h
+++ b/include/constants/event_object_movement.h
@@ -64,7 +64,7 @@
#define MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS 0x3C
#define MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS 0x3D
#define MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS 0x3E
-#define MOVEMENT_TYPE_HIDDEN 0x3F
+#define MOVEMENT_TYPE_BURIED 0x3F
#define MOVEMENT_TYPE_WALK_IN_PLACE_DOWN 0x40
#define MOVEMENT_TYPE_WALK_IN_PLACE_UP 0x41
#define MOVEMENT_TYPE_WALK_IN_PLACE_LEFT 0x42
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 9be269105..21b730de3 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -829,7 +829,7 @@
#define FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_RIVAL_MOM 0x310
#define FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_RIVAL_MOM 0x311
#define FLAG_HIDE_ROUTE_119_SCOTT 0x312
-#define FLAG_HIDE_LILCOVE_MOTEL_SCOTT 0x313
+#define FLAG_HIDE_LILYCOVE_MOTEL_SCOTT 0x313
#define FLAG_HIDE_MOSSDEEP_CITY_SCOTT 0x314
#define FLAG_HIDE_FANCLUB_OLD_LADY 0x315
#define FLAG_HIDE_FANCLUB_BOY 0x316
@@ -967,7 +967,7 @@
#define FLAG_HIDE_ROUTE_110_RIVAL_ON_BIKE 0x39A
#define FLAG_HIDE_ROUTE_119_RIVAL_ON_BIKE 0x39B
#define FLAG_HIDE_AQUA_HIDEOUT_GRUNTS 0x39C
-#define FLAG_HIDE_LILCOVE_MOTEL_GAME_DESIGNERS 0x39D
+#define FLAG_HIDE_LILYCOVE_MOTEL_GAME_DESIGNERS 0x39D
#define FLAG_HIDE_MT_CHIMNEY_TEAM_AQUA 0x39E
#define FLAG_HIDE_MT_CHIMNEY_TEAM_MAGMA 0x39F
#define FLAG_HIDE_FALLARBOR_HOUSE_PROF_COZMO 0x3A0
diff --git a/include/constants/global.h b/include/constants/global.h
index bc611879e..ee2fd3abc 100644
--- a/include/constants/global.h
+++ b/include/constants/global.h
@@ -33,7 +33,6 @@
#define DAYCARE_MON_COUNT 2
#define POKEBLOCKS_COUNT 40
#define OBJECT_EVENTS_COUNT 16
-#define BERRY_TREES_COUNT 128
#define MAIL_COUNT 16
#define SECRET_BASES_COUNT 20
#define TV_SHOWS_COUNT 25
diff --git a/include/constants/item_effects.h b/include/constants/item_effects.h
index 6e61c4d7f..f9f329f0f 100644
--- a/include/constants/item_effects.h
+++ b/include/constants/item_effects.h
@@ -56,6 +56,10 @@
#define ITEM6_HEAL_HALF ((u8) -2)
#define ITEM6_HEAL_LVL_UP ((u8) -3)
+// Amount of EV modified by ITEM4_EV_HP, ITEM4_EV_ATK, ITEM5_EV_DEF, ITEM5_EV_SPEED, ITEM5_EV_SPDEF and ITEM5_EV_SPATK
+#define ITEM6_ADD_EV 10
+#define ITEM6_SUBTRACT_EV -10
+
// Used for GetItemEffectType.
#define ITEM_EFFECT_X_ITEM 0
#define ITEM_EFFECT_RAISE_LEVEL 1
diff --git a/include/constants/layouts.h b/include/constants/layouts.h
index 9d5e877b0..db92c9594 100755
--- a/include/constants/layouts.h
+++ b/include/constants/layouts.h
@@ -79,7 +79,7 @@
#define LAYOUT_FALLARBOR_TOWN_LEFTOVER_RSCONTEST_LOBBY 72
#define LAYOUT_FALLARBOR_TOWN_LEFTOVER_RSCONTEST_HALL 73
#define LAYOUT_LILYCOVE_CITY_HOUSE2 74
-#define LAYOUT_UNKNOWN_08428450 75
+#define LAYOUT_UNUSED_CONTEST_ROOM1 75
#define LAYOUT_VERDANTURF_TOWN_WANDAS_HOUSE 76
#define LAYOUT_PACIFIDLOG_TOWN_HOUSE1 77
#define LAYOUT_PACIFIDLOG_TOWN_HOUSE2 78
@@ -87,8 +87,8 @@
#define LAYOUT_HOUSE_WITH_BED 80
#define LAYOUT_SLATEPORT_CITY_STERNS_SHIPYARD_1F 81
#define LAYOUT_SLATEPORT_CITY_STERNS_SHIPYARD_2F 82
-#define LAYOUT_UNKNOWN_084294C4 83
-#define LAYOUT_UNKNOWN_084294E8 84
+#define LAYOUT_UNUSED_CONTEST_ROOM2 83
+#define LAYOUT_UNUSED_CONTEST_ROOM3 84
#define LAYOUT_SLATEPORT_CITY_POKEMON_FAN_CLUB 85
#define LAYOUT_SLATEPORT_CITY_OCEANIC_MUSEUM_1F 86
#define LAYOUT_SLATEPORT_CITY_OCEANIC_MUSEUM_2F 87
@@ -174,20 +174,20 @@
#define LAYOUT_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM 167
#define LAYOUT_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM 168
#define LAYOUT_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM 169
-#define LAYOUT_UNKNOWN_0843E6C0 170
-#define LAYOUT_UNKNOWN_0843E6E4 171
-#define LAYOUT_UNKNOWN_0843E708 172
-#define LAYOUT_UNKNOWN_0843E72C 173
-#define LAYOUT_UNKNOWN_0843E750 174
-#define LAYOUT_UNKNOWN_0843E774 175
-#define LAYOUT_UNKNOWN_0843E798 176
-#define LAYOUT_UNKNOWN_0843E7BC 177
-#define LAYOUT_UNKNOWN_0843E7E0 178
-#define LAYOUT_UNKNOWN_0843E804 179
-#define LAYOUT_UNKNOWN_0843E828 180
-#define LAYOUT_UNKNOWN_0843E84C 181
-#define LAYOUT_UNKNOWN_0843E870 182
-#define LAYOUT_UNKNOWN_0843E894 183
+#define LAYOUT_UNUSED_CAVE1 170
+#define LAYOUT_UNUSED_CAVE2 171
+#define LAYOUT_UNUSED_CAVE3 172
+#define LAYOUT_UNUSED_CAVE4 173
+#define LAYOUT_UNUSED_CAVE5 174
+#define LAYOUT_UNUSED_CAVE6 175
+#define LAYOUT_UNUSED_CAVE7 176
+#define LAYOUT_UNUSED_CAVE8 177
+#define LAYOUT_UNUSED_CAVE9 178
+#define LAYOUT_UNUSED_CAVE10 179
+#define LAYOUT_UNUSED_CAVE11 180
+#define LAYOUT_UNUSED_CAVE12 181
+#define LAYOUT_UNUSED_CAVE13 182
+#define LAYOUT_UNUSED_CAVE14 183
#define LAYOUT_NEW_MAUVILLE_ENTRANCE 184
#define LAYOUT_NEW_MAUVILLE_INSIDE 185
#define LAYOUT_ABANDONED_SHIP_DECK 186
@@ -230,12 +230,12 @@
#define LAYOUT_RECORD_CORNER 223
#define LAYOUT_BATTLE_COLOSSEUM_4P 224
#define LAYOUT_CONTEST_HALL 225
-#define LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_29 226
-#define LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_30 227
-#define LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_31 228
-#define LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_32 229
-#define LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_33 230
-#define LAYOUT_UNKNOWN_LINK_CONTEST_ROOM_25_34 231
+#define LAYOUT_UNUSED_CONTEST_HALL1 226
+#define LAYOUT_UNUSED_CONTEST_HALL2 227
+#define LAYOUT_UNUSED_CONTEST_HALL3 228
+#define LAYOUT_UNUSED_CONTEST_HALL4 229
+#define LAYOUT_UNUSED_CONTEST_HALL5 230
+#define LAYOUT_UNUSED_CONTEST_HALL6 231
#define LAYOUT_CONTEST_HALL_BEAUTY 232
#define LAYOUT_CONTEST_HALL_TOUGH 233
#define LAYOUT_CONTEST_HALL_COOL 234
@@ -246,7 +246,7 @@
#define LAYOUT_SAFARI_ZONE_NORTH 239
#define LAYOUT_SAFARI_ZONE_SOUTHWEST 240
#define LAYOUT_SAFARI_ZONE_SOUTH 241
-#define LAYOUT_UNKNOWN_08447028 242
+#define LAYOUT_UNUSED_OUTDOOR_AREA 242
#define LAYOUT_ROUTE109_SEASHORE_HOUSE 243
#define LAYOUT_ROUTE110_TRICK_HOUSE_ENTRANCE 244
#define LAYOUT_ROUTE110_TRICK_HOUSE_END 245
@@ -363,7 +363,7 @@
#define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM 356
#define LAYOUT_SOOTOPOLIS_CITY_LEGENDS_BATTLE 357
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS 358
-#define LAYOUT_UNKNOWN_084693AC 359
+#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_UNUSED 359
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY 360
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR 361
#define LAYOUT_BATTLE_PYRAMID_SQUARE01 362
diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h
index 69355635b..c650600e8 100755
--- a/include/constants/map_groups.h
+++ b/include/constants/map_groups.h
@@ -402,67 +402,67 @@
#define MAP_METEOR_FALLS_STEVENS_CAVE (107 | (24 << 8))
// Map Group 25
-#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8))
-#define MAP_SECRET_BASE_BROWN_CAVE1 (1 | (25 << 8))
-#define MAP_SECRET_BASE_BLUE_CAVE1 (2 | (25 << 8))
-#define MAP_SECRET_BASE_YELLOW_CAVE1 (3 | (25 << 8))
-#define MAP_SECRET_BASE_TREE1 (4 | (25 << 8))
-#define MAP_SECRET_BASE_SHRUB1 (5 | (25 << 8))
-#define MAP_SECRET_BASE_RED_CAVE2 (6 | (25 << 8))
-#define MAP_SECRET_BASE_BROWN_CAVE2 (7 | (25 << 8))
-#define MAP_SECRET_BASE_BLUE_CAVE2 (8 | (25 << 8))
-#define MAP_SECRET_BASE_YELLOW_CAVE2 (9 | (25 << 8))
-#define MAP_SECRET_BASE_TREE2 (10 | (25 << 8))
-#define MAP_SECRET_BASE_SHRUB2 (11 | (25 << 8))
-#define MAP_SECRET_BASE_RED_CAVE3 (12 | (25 << 8))
-#define MAP_SECRET_BASE_BROWN_CAVE3 (13 | (25 << 8))
-#define MAP_SECRET_BASE_BLUE_CAVE3 (14 | (25 << 8))
-#define MAP_SECRET_BASE_YELLOW_CAVE3 (15 | (25 << 8))
-#define MAP_SECRET_BASE_TREE3 (16 | (25 << 8))
-#define MAP_SECRET_BASE_SHRUB3 (17 | (25 << 8))
-#define MAP_SECRET_BASE_RED_CAVE4 (18 | (25 << 8))
-#define MAP_SECRET_BASE_BROWN_CAVE4 (19 | (25 << 8))
-#define MAP_SECRET_BASE_BLUE_CAVE4 (20 | (25 << 8))
-#define MAP_SECRET_BASE_YELLOW_CAVE4 (21 | (25 << 8))
-#define MAP_SECRET_BASE_TREE4 (22 | (25 << 8))
-#define MAP_SECRET_BASE_SHRUB4 (23 | (25 << 8))
-#define MAP_BATTLE_COLOSSEUM_2P (24 | (25 << 8))
-#define MAP_TRADE_CENTER (25 | (25 << 8))
-#define MAP_RECORD_CORNER (26 | (25 << 8))
-#define MAP_BATTLE_COLOSSEUM_4P (27 | (25 << 8))
-#define MAP_CONTEST_HALL (28 | (25 << 8))
-#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_29 (29 | (25 << 8))
-#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_30 (30 | (25 << 8))
-#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_31 (31 | (25 << 8))
-#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_32 (32 | (25 << 8))
-#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_33 (33 | (25 << 8))
-#define MAP_UNKNOWN_LINK_CONTEST_ROOM_25_34 (34 | (25 << 8))
-#define MAP_CONTEST_HALL_BEAUTY (35 | (25 << 8))
-#define MAP_CONTEST_HALL_TOUGH (36 | (25 << 8))
-#define MAP_CONTEST_HALL_COOL (37 | (25 << 8))
-#define MAP_CONTEST_HALL_SMART (38 | (25 << 8))
-#define MAP_CONTEST_HALL_CUTE (39 | (25 << 8))
-#define MAP_INSIDE_OF_TRUCK (40 | (25 << 8))
-#define MAP_SS_TIDAL_CORRIDOR (41 | (25 << 8))
-#define MAP_SS_TIDAL_LOWER_DECK (42 | (25 << 8))
-#define MAP_SS_TIDAL_ROOMS (43 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE01 (44 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE02 (45 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE03 (46 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE04 (47 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE05 (48 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE06 (49 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE07 (50 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE08 (51 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE09 (52 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE10 (53 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE11 (54 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE12 (55 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE13 (56 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE14 (57 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE15 (58 | (25 << 8))
-#define MAP_BATTLE_PYRAMID_SQUARE16 (59 | (25 << 8))
-#define MAP_UNION_ROOM (60 | (25 << 8))
+#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8))
+#define MAP_SECRET_BASE_BROWN_CAVE1 (1 | (25 << 8))
+#define MAP_SECRET_BASE_BLUE_CAVE1 (2 | (25 << 8))
+#define MAP_SECRET_BASE_YELLOW_CAVE1 (3 | (25 << 8))
+#define MAP_SECRET_BASE_TREE1 (4 | (25 << 8))
+#define MAP_SECRET_BASE_SHRUB1 (5 | (25 << 8))
+#define MAP_SECRET_BASE_RED_CAVE2 (6 | (25 << 8))
+#define MAP_SECRET_BASE_BROWN_CAVE2 (7 | (25 << 8))
+#define MAP_SECRET_BASE_BLUE_CAVE2 (8 | (25 << 8))
+#define MAP_SECRET_BASE_YELLOW_CAVE2 (9 | (25 << 8))
+#define MAP_SECRET_BASE_TREE2 (10 | (25 << 8))
+#define MAP_SECRET_BASE_SHRUB2 (11 | (25 << 8))
+#define MAP_SECRET_BASE_RED_CAVE3 (12 | (25 << 8))
+#define MAP_SECRET_BASE_BROWN_CAVE3 (13 | (25 << 8))
+#define MAP_SECRET_BASE_BLUE_CAVE3 (14 | (25 << 8))
+#define MAP_SECRET_BASE_YELLOW_CAVE3 (15 | (25 << 8))
+#define MAP_SECRET_BASE_TREE3 (16 | (25 << 8))
+#define MAP_SECRET_BASE_SHRUB3 (17 | (25 << 8))
+#define MAP_SECRET_BASE_RED_CAVE4 (18 | (25 << 8))
+#define MAP_SECRET_BASE_BROWN_CAVE4 (19 | (25 << 8))
+#define MAP_SECRET_BASE_BLUE_CAVE4 (20 | (25 << 8))
+#define MAP_SECRET_BASE_YELLOW_CAVE4 (21 | (25 << 8))
+#define MAP_SECRET_BASE_TREE4 (22 | (25 << 8))
+#define MAP_SECRET_BASE_SHRUB4 (23 | (25 << 8))
+#define MAP_BATTLE_COLOSSEUM_2P (24 | (25 << 8))
+#define MAP_TRADE_CENTER (25 | (25 << 8))
+#define MAP_RECORD_CORNER (26 | (25 << 8))
+#define MAP_BATTLE_COLOSSEUM_4P (27 | (25 << 8))
+#define MAP_CONTEST_HALL (28 | (25 << 8))
+#define MAP_UNUSED_CONTEST_HALL1 (29 | (25 << 8))
+#define MAP_UNUSED_CONTEST_HALL2 (30 | (25 << 8))
+#define MAP_UNUSED_CONTEST_HALL3 (31 | (25 << 8))
+#define MAP_UNUSED_CONTEST_HALL4 (32 | (25 << 8))
+#define MAP_UNUSED_CONTEST_HALL5 (33 | (25 << 8))
+#define MAP_UNUSED_CONTEST_HALL6 (34 | (25 << 8))
+#define MAP_CONTEST_HALL_BEAUTY (35 | (25 << 8))
+#define MAP_CONTEST_HALL_TOUGH (36 | (25 << 8))
+#define MAP_CONTEST_HALL_COOL (37 | (25 << 8))
+#define MAP_CONTEST_HALL_SMART (38 | (25 << 8))
+#define MAP_CONTEST_HALL_CUTE (39 | (25 << 8))
+#define MAP_INSIDE_OF_TRUCK (40 | (25 << 8))
+#define MAP_SS_TIDAL_CORRIDOR (41 | (25 << 8))
+#define MAP_SS_TIDAL_LOWER_DECK (42 | (25 << 8))
+#define MAP_SS_TIDAL_ROOMS (43 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE01 (44 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE02 (45 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE03 (46 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE04 (47 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE05 (48 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE06 (49 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE07 (50 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE08 (51 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE09 (52 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE10 (53 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE11 (54 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE12 (55 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE13 (56 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE14 (57 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE15 (58 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE16 (59 | (25 << 8))
+#define MAP_UNION_ROOM (60 | (25 << 8))
// Map Group 26
#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8))
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index d4f6e5684..e32ddf496 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -164,15 +164,15 @@
#define MON_DATA_VICTORY_RIBBON 69
#define MON_DATA_ARTIST_RIBBON 70
#define MON_DATA_EFFORT_RIBBON 71
-#define MON_DATA_GIFT_RIBBON_1 72
-#define MON_DATA_GIFT_RIBBON_2 73
-#define MON_DATA_GIFT_RIBBON_3 74
-#define MON_DATA_GIFT_RIBBON_4 75
-#define MON_DATA_GIFT_RIBBON_5 76
-#define MON_DATA_GIFT_RIBBON_6 77
-#define MON_DATA_GIFT_RIBBON_7 78
-#define MON_DATA_FATEFUL_ENCOUNTER 79
-#define MON_DATA_OBEDIENCE 80
+#define MON_DATA_MARINE_RIBBON 72
+#define MON_DATA_LAND_RIBBON 73
+#define MON_DATA_SKY_RIBBON 74
+#define MON_DATA_COUNTRY_RIBBON 75
+#define MON_DATA_NATIONAL_RIBBON 76
+#define MON_DATA_EARTH_RIBBON 77
+#define MON_DATA_WORLD_RIBBON 78
+#define MON_DATA_FILLER 79
+#define MON_DATA_EVENT_LEGAL 80
#define MON_DATA_KNOWN_MOVES 81
#define MON_DATA_RIBBON_COUNT 82
#define MON_DATA_RIBBONS 83
diff --git a/include/event_object_movement.h b/include/event_object_movement.h
index 247db9efc..1e754dcd9 100644
--- a/include/event_object_movement.h
+++ b/include/event_object_movement.h
@@ -255,7 +255,7 @@ void MovementType_CopyPlayer(struct Sprite *);
void MovementType_TreeDisguise(struct Sprite *);
void MovementType_MountainDisguise(struct Sprite *);
void MovementType_CopyPlayerInGrass(struct Sprite *);
-void MovementType_Hidden(struct Sprite *);
+void MovementType_Buried(struct Sprite *);
void MovementType_WalkInPlace(struct Sprite *);
void MovementType_JogInPlace(struct Sprite *);
void MovementType_RunInPlace(struct Sprite *);
@@ -413,7 +413,7 @@ bool8 cph_IM_DIFFERENT(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
bool8 CopyablePlayerMovement_GoSpeed4(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
bool8 CopyablePlayerMovement_Jump(struct ObjectEvent *, struct Sprite *, u8, bool8(u8));
u8 MovementType_CopyPlayerInGrass_Step1(struct ObjectEvent *, struct Sprite *);
-u8 MovementType_Hidden_Step0(struct ObjectEvent *, struct Sprite *);
+u8 MovementType_Buried_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementType_WalkInPlace_Step0(struct ObjectEvent *, struct Sprite *);
u8 MovementType_MoveInPlace_Step1(struct ObjectEvent *, struct Sprite *);
u8 MovementType_WalkSlowlyInPlace_Step0(struct ObjectEvent *, struct Sprite *);
diff --git a/include/evolution_graphics.h b/include/evolution_graphics.h
index f52105815..61051c69a 100644
--- a/include/evolution_graphics.h
+++ b/include/evolution_graphics.h
@@ -3,13 +3,11 @@
void LoadEvoSparkleSpriteAndPal(void);
-u8 LaunchTask_PreEvoSparklesSet1(u16 arg0);
-u8 LaunchTask_PreEvoSparklesSet2(void);
-u8 LaunchTask_PostEvoSparklesSet1(void);
-u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species);
-u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species);
-u8 sub_817C3A0(u8 preEvoSpriteID, u8 postEvoSpriteID);
-
-#define EvoGraphicsTaskEvoStop data[8]
+u8 EvolutionSparkles_SpiralUpward(u16 arg0);
+u8 EvolutionSparkles_ArcDown(void);
+u8 EvolutionSparkles_CircleInward(void);
+u8 EvolutionSparkles_SprayAndFlash(u16 species);
+u8 EvolutionSparkles_SprayAndFlash_Trade(u16 species);
+u8 CycleEvolutionMonSprite(u8 preEvoSpriteID, u8 postEvoSpriteID);
#endif // GUARD_EVOLUTION_GRAPHICS_H
diff --git a/include/global.h b/include/global.h
index ca3cf4452..5b1a7b44b 100644
--- a/include/global.h
+++ b/include/global.h
@@ -9,6 +9,7 @@
#include "constants/flags.h"
#include "constants/vars.h"
#include "constants/species.h"
+#include "constants/berry.h"
// Prevent cross-jump optimization.
#define BLOCK_CROSS_JUMP asm("");
@@ -897,6 +898,41 @@ struct MysteryEventStruct
/*0x344 0x3570*/ u32 unk_344[2][5];
}; // 0x36C 0x3598
+// For external event data storage. The majority of these may have never been used.
+struct ExternalEventData
+{
+ u8 unknownExternalDataFields1[7]; // if actually used, may be broken up into different fields.
+ u32 currentPokeCoupons; // PokéCoupons stored by Pokémon Colosseum and XD from Mt. Battle runs. Earned PokéCoupons are also added to totalEarnedPokeCoupons.
+ u32 totalEarnedPokeCoupons; // Used by the JP Colosseum bonus disc. Determines PokéCoupon rank to distribute rewards. Unread in International games.
+ u8 unknownExternalDataFields2[5]; // if actually used, may be broken up into different fields.
+} __attribute__((packed)); /*size = 0x14*/
+
+// For external event flags. The majority of these may have never been used.
+struct ExternalEventFlags
+{
+ u8 unknownFlag1;
+ u8 receivedWishmakerJirachi; // may also be used for Ageto Celebi?
+ u8 unknownFlag3;
+ u8 unknownFlag4;
+ u8 unknownFlag5;
+ u8 unknownFlag6;
+ u8 unknownFlag7;
+ u8 unknownFlag8;
+ u8 unknownFlag9;
+ u8 unknownFlag10;
+ u8 unknownFlag11;
+ u8 unknownFlag12;
+ u8 unknownFlag13;
+ u8 unknownFlag14;
+ u8 unknownFlag15;
+ u8 unknownFlag16;
+ u8 unknownFlag17;
+ u8 unknownFlag18;
+ u8 unknownFlag19;
+ u8 unknownFlag20;
+
+};/*size = 0x14*/
+
struct SaveBlock1
{
/*0x00*/ struct Coords16 pos;
@@ -970,7 +1006,9 @@ struct SaveBlock1
/*0x2e90*/ struct ContestWinner contestWinners[NUM_CONTEST_WINNERS]; // see CONTEST_WINNER_*
/*0x3030*/ struct DayCare daycare;
/*0x3150*/ struct LinkBattleRecords linkBattleRecords;
- /*0x31A8*/ u8 giftRibbons[52];
+ /*0x31A8*/ u8 giftRibbons[11];
+ /*0x31B3*/ struct ExternalEventData externalEventData;
+ /*0x31C7*/ struct ExternalEventFlags externalEventFlags;
/*0x31DC*/ struct Roamer roamer;
/*0x31F8*/ struct EnigmaBerry enigmaBerry;
/*0x322C*/ struct MEventBuffers unk_322C;
diff --git a/include/pokemon.h b/include/pokemon.h
index 654af3031..7d6e960d7 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -65,15 +65,15 @@ struct PokemonSubstruct3
/* 0x0A */ u32 victoryRibbon:1;
/* 0x0A */ u32 artistRibbon:1;
/* 0x0A */ u32 effortRibbon:1;
- /* 0x0A */ u32 giftRibbon1:1;
- /* 0x0A */ u32 giftRibbon2:1;
- /* 0x0A */ u32 giftRibbon3:1;
- /* 0x0A */ u32 giftRibbon4:1;
- /* 0x0B */ u32 giftRibbon5:1;
- /* 0x0B */ u32 giftRibbon6:1;
- /* 0x0B */ u32 giftRibbon7:1;
- /* 0x0B */ u32 fatefulEncounter:4;
- /* 0x0B */ u32 obedient:1;
+ /* 0x0A */ u32 marineRibbon:1; // never distributed
+ /* 0x0A */ u32 landRibbon:1; // never distributed
+ /* 0x0A */ u32 skyRibbon:1; // never distributed
+ /* 0x0A */ u32 countryRibbon:1; // distributed during Pokémon Festa '04 and '05 to tournament winners
+ /* 0x0B */ u32 nationalRibbon:1;
+ /* 0x0B */ u32 earthRibbon:1;
+ /* 0x0B */ u32 worldRibbon:1; // distributed during Pokémon Festa '04 and '05 to tournament winners
+ /* 0x0B */ u32 filler:4;
+ /* 0x0B */ u32 eventLegal:1; // controls Mew & Deoxys obedience; if set, Pokémon is a fateful encounter in Gen 4+; set for in-game event island legendaries, some distributed events, and Pokémon from XD: Gale of Darkness.
};
union PokemonSubstruct
@@ -286,12 +286,12 @@ void CreateBattleTowerMon2(struct Pokemon *mon, struct BattleTowerPokemon *src,
void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId);
void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId);
void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerPokemon *dest);
-void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId);
+void CreateEventLegalMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId);
bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId);
void SetDeoxysStats(void);
u16 GetUnionRoomTrainerPic(void);
u16 GetUnionRoomTrainerClass(void);
-void CreateObedientEnemyMon(void);
+void CreateEventLegalEnemyMon(void);
void CalculateMonStats(struct Pokemon *mon);
void BoxMonToMon(const struct BoxPokemon *src, struct Pokemon *dest);
u8 GetLevelFromMonExp(struct Pokemon *mon);
diff --git a/include/trainer_see.h b/include/trainer_see.h
index 7a20671ea..ab808c720 100644
--- a/include/trainer_see.h
+++ b/include/trainer_see.h
@@ -17,7 +17,7 @@ extern bool8 gTrainerApproachedPlayer;
extern u8 gApproachingTrainerId;
bool8 CheckForTrainersWantingBattle(void);
-void SetHiddenTrainerMovement(struct ObjectEvent *var);
+void SetBuriedTrainerMovement(struct ObjectEvent *var);
void DoTrainerApproach(void);
void TryPrepareSecondApproachingTrainer(void);
u8 FldEff_ExclamationMarkIcon(void);
diff --git a/src/battle_message.c b/src/battle_message.c
index 3920f94cf..46444a8fa 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -21,7 +21,6 @@
#include "window.h"
#include "constants/battle_dome.h"
#include "constants/battle_string_ids.h"
-#include "constants/berry.h"
#include "constants/frontier_util.h"
#include "constants/items.h"
#include "constants/moves.h"
diff --git a/src/battle_pike.c b/src/battle_pike.c
index a161b88b8..ed18b2f71 100644
--- a/src/battle_pike.c
+++ b/src/battle_pike.c
@@ -1326,7 +1326,7 @@ bool8 InBattlePike(void)
return gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM
|| gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL
|| gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS
- || gMapHeader.mapLayoutId == LAYOUT_UNKNOWN_084693AC;
+ || gMapHeader.mapLayoutId == LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_UNUSED;
}
static void SetHintedRoom(void)
diff --git a/src/battle_util.c b/src/battle_util.c
index b7919f904..2bf06f331 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -29,7 +29,6 @@
#include "constants/battle_move_effects.h"
#include "constants/battle_script_commands.h"
#include "constants/battle_string_ids.h"
-#include "constants/berry.h"
#include "constants/hold_effects.h"
#include "constants/items.h"
#include "constants/moves.h"
@@ -3950,14 +3949,14 @@ u8 GetMoveTarget(u16 move, u8 setTarget)
return targetBattler;
}
-static bool32 HasObedientBitSet(u8 battlerId)
+static bool32 IsNotEventLegalMewOrDeoxys(u8 battlerId)
{
if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT)
return TRUE;
if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS
&& GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_MEW)
return TRUE;
- return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_OBEDIENCE, NULL);
+ return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_EVENT_LEGAL, NULL);
}
u8 IsMonDisobedient(void)
@@ -3971,7 +3970,7 @@ u8 IsMonDisobedient(void)
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT)
return 0;
- if (HasObedientBitSet(gBattlerAttacker)) // only if species is Mew or Deoxys
+ if (IsNotEventLegalMewOrDeoxys(gBattlerAttacker)) // only if species is Mew or Deoxys
{
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBattlerPosition(gBattlerAttacker) == 2)
return 0;
diff --git a/src/berry.c b/src/berry.c
index 022fdc934..ea62deabf 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -11,7 +11,6 @@
#include "random.h"
#include "string_util.h"
#include "text.h"
-#include "constants/berry.h"
#include "constants/event_object_movement.h"
#include "constants/items.h"
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 08a25c58a..252407562 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -34,7 +34,6 @@
#include "new_game.h"
#include "save.h"
#include "strings.h"
-#include "constants/berry.h"
#include "constants/game_stat.h"
#include "constants/items.h"
#include "constants/rgb.h"
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 089228b17..5be149b0f 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -26,7 +26,6 @@
#include "item_menu_icons.h"
#include "decompress.h"
#include "international_string_util.h"
-#include "constants/berry.h"
#include "constants/items.h"
#include "constants/rgb.h"
#include "constants/songs.h"
diff --git a/src/crt0.s b/src/crt0.s
index 49f214f80..385e340a5 100644
--- a/src/crt0.s
+++ b/src/crt0.s
@@ -1,3 +1,4 @@
+#include "constants/global.h"
.include "constants/gba_constants.inc"
.syntax unified
@@ -34,8 +35,8 @@ GPIOPortReadEnable: @ 80000C8
@ 80000CC
.space 0x34
- .4byte 3
- .4byte 2
+ .4byte GAME_VERSION
+ .4byte GAME_LANGUAGE
.ascii "pokemon emerald version"
.space 9
@@ -51,17 +52,33 @@ GPIOPortReadEnable: @ 80000C8
.4byte gMoveNames
.4byte gDecorations
- .4byte 0x00001270, 0x0000139c, 0x00000018, 0x00000988
- .4byte 0x00003b24, 0x00000046, 0x000008e4, 0x000008ac
- .4byte 0x00000182
+ .4byte 0x00001270 @ offsetof(struct SaveBlock1, flags)
+ .4byte 0x0000139c @ offsetof(struct SaveBlock1, vars)
+ .4byte 0x00000018 @ offsetof(struct SaveBlock2, pokedex)
+ .4byte 0x00000988 @ offsetof(struct SaveBlock1, seen1)
+ .4byte 0x00003b24 @ offsetof(struct SaveBlock1, seen2)
+ .4byte 0x00000046 @ ?
+ .4byte 0x000008e4 @ ?
+ .4byte 0x000008ac @ ?
+ .4byte 0x00000182 @ NATIONAL_DEX_COUNT?
.byte 0x07, 0x0a, 0x0a, 0x0a, 0x0c, 0x0c, 0x06, 0x0c
.byte 0x06, 0x10, 0x12, 0x0c, 0x0f, 0x0b, 0x01, 0x08
- .4byte 0x0000000c, 0x00000f2c, 0x00003d88, 0x00000234
- .4byte 0x00000238, 0x00000009, 0x0000000a, 0x00000000
- .4byte 0x00000008, 0x00000ca8, 0x00000ca8, 0x000031c7
- .4byte 0x000031b3, 0x00000000
+ .4byte 0x0000000c @ ?
+ .4byte 0x00000f2c @ sizeof(struct SaveBlock2)
+ .4byte 0x00003d88 @ sizeof(struct SaveBlock1)
+ .4byte 0x00000234 @ offsetof(struct SaveBlock1, playerPartyCount)
+ .4byte 0x00000238 @ offsetof(struct SaveBlock1, playerParty)
+ .4byte 0x00000009 @ offsetof(struct SaveBlock2, specialSaveWarpFlags)
+ .4byte 0x0000000a @ offsetof(struct SaveBlock2, playerTrainerId)
+ .4byte 0x00000000 @ offsetof(struct SaveBlock2, playerName)
+ .4byte 0x00000008 @ offsetof(struct SaveBlock2, playerGender)
+ .4byte 0x00000ca8 @ offsetof(struct SaveBlock2, frontier.challengeStatus)
+ .4byte 0x00000ca8 @ offsetof(struct SaveBlock2, frontier.challengeStatus)
+ .4byte 0x000031c7 @ offsetof(struct SaveBlock1, externalEventFlags)
+ .4byte 0x000031b3 @ offsetof(struct SaveBlock1, externalEventData)
+ .4byte 0x00000000
.4byte gBaseStats
.4byte gAbilityNames
@@ -71,12 +88,19 @@ GPIOPortReadEnable: @ 80000C8
.4byte gBallSpriteSheets
.4byte gBallSpritePalettes
- .4byte 0x000000a8, 0x00000864, 0x0000089b
+ .4byte 0x000000a8 @ offsetof(struct SaveBlock2, gcnLinkFlags)
+ .4byte 0x00000864 @ ?
+ .4byte 0x0000089b @ ?
.byte 0x1e, 0x1e, 0x10, 0x40
- .4byte 0x0000322e, 0x00000498, 0x000031a8, 0x000031f8
- .4byte 0x00000034, 0x00000000, 0x00000000
+ .4byte 0x0000322e @ offsetof(struct SaveBlock1, ? part-way into unk_322C)
+ .4byte 0x00000498 @ offsetof(struct SaveBlock1, pcItems)
+ .4byte 0x000031a8 @ offsetof(struct SaveBlock1, giftRibbons)
+ .4byte 0x000031f8 @ offsetof(struct SaveBlock1, enigmaBerry)
+ .4byte 0x00000034 @ offsetof(struct SaveBlock1, mapView)
+ .4byte 0x00000000
+ .4byte 0x00000000
.arm
.align 2, 0
diff --git a/src/data/object_events/movement_type_func_tables.h b/src/data/object_events/movement_type_func_tables.h
index 68dfeb730..f4890d684 100755
--- a/src/data/object_events/movement_type_func_tables.h
+++ b/src/data/object_events/movement_type_func_tables.h
@@ -407,8 +407,8 @@ u8 (*const gMovementTypeFuncs_CopyPlayerInGrass[])(struct ObjectEvent *, struct
MovementType_CopyPlayer_Step2,
};
-u8 (*const gMovementTypeFuncs_Hidden[])(struct ObjectEvent *, struct Sprite *) = {
- MovementType_Hidden_Step0,
+u8 (*const gMovementTypeFuncs_Buried[])(struct ObjectEvent *, struct Sprite *) = {
+ MovementType_Buried_Step0,
};
u8 (*const gMovementTypeFuncs_WalkInPlace[])(struct ObjectEvent *, struct Sprite *) = {
diff --git a/src/data/pokemon/item_effects.h b/src/data/pokemon/item_effects.h
index 1ed721e44..1d7f16b90 100644
--- a/src/data/pokemon/item_effects.h
+++ b/src/data/pokemon/item_effects.h
@@ -163,7 +163,7 @@ const u8 gItemEffect_SacredAsh[7] = {
const u8 gItemEffect_HPUp[10] = {
[4] = ITEM4_EV_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
- [6] = 10,
+ [6] = ITEM6_ADD_EV,
[7] = 5,
[8] = 3,
[9] = 2,
@@ -172,7 +172,7 @@ const u8 gItemEffect_HPUp[10] = {
const u8 gItemEffect_Protein[10] = {
[4] = ITEM4_EV_ATK,
[5] = ITEM5_FRIENDSHIP_ALL,
- [6] = 10,
+ [6] = ITEM6_ADD_EV,
[7] = 5,
[8] = 3,
[9] = 2,
@@ -180,7 +180,7 @@ const u8 gItemEffect_Protein[10] = {
const u8 gItemEffect_Iron[10] = {
[5] = ITEM5_EV_DEF | ITEM5_FRIENDSHIP_ALL,
- [6] = 10,
+ [6] = ITEM6_ADD_EV,
[7] = 5,
[8] = 3,
[9] = 2,
@@ -188,7 +188,7 @@ const u8 gItemEffect_Iron[10] = {
const u8 gItemEffect_Carbos[10] = {
[5] = ITEM5_EV_SPEED | ITEM5_FRIENDSHIP_ALL,
- [6] = 10,
+ [6] = ITEM6_ADD_EV,
[7] = 5,
[8] = 3,
[9] = 2,
@@ -196,7 +196,7 @@ const u8 gItemEffect_Carbos[10] = {
const u8 gItemEffect_Calcium[10] = {
[5] = ITEM5_EV_SPATK | ITEM5_FRIENDSHIP_ALL,
- [6] = 10,
+ [6] = ITEM6_ADD_EV,
[7] = 5,
[8] = 3,
[9] = 2,
@@ -222,7 +222,7 @@ const u8 gItemEffect_PPUp[9] = {
const u8 gItemEffect_Zinc[10] = {
[5] = ITEM5_EV_SPDEF | ITEM5_FRIENDSHIP_ALL,
- [6] = 10,
+ [6] = ITEM6_ADD_EV,
[7] = 5,
[8] = 3,
[9] = 2,
@@ -354,7 +354,7 @@ const u8 gItemEffect_SitrusBerry[7] = {
const u8 gItemEffect_PomegBerry[10] = {
[4] = ITEM4_EV_HP,
[5] = ITEM5_FRIENDSHIP_ALL,
- [6] = -10,
+ [6] = ITEM6_SUBTRACT_EV,
[7] = 10,
[8] = 5,
[9] = 2,
@@ -363,7 +363,7 @@ const u8 gItemEffect_PomegBerry[10] = {
const u8 gItemEffect_KelpsyBerry[10] = {
[4] = ITEM4_EV_ATK,
[5] = ITEM5_FRIENDSHIP_ALL,
- [6] = -10,
+ [6] = ITEM6_SUBTRACT_EV,
[7] = 10,
[8] = 5,
[9] = 2,
@@ -371,7 +371,7 @@ const u8 gItemEffect_KelpsyBerry[10] = {
const u8 gItemEffect_QualotBerry[10] = {
[5] = ITEM5_EV_DEF | ITEM5_FRIENDSHIP_ALL,
- [6] = -10,
+ [6] = ITEM6_SUBTRACT_EV,
[7] = 10,
[8] = 5,
[9] = 2,
@@ -379,7 +379,7 @@ const u8 gItemEffect_QualotBerry[10] = {
const u8 gItemEffect_HondewBerry[10] = {
[5] = ITEM5_EV_SPATK | ITEM5_FRIENDSHIP_ALL,
- [6] = -10,
+ [6] = ITEM6_SUBTRACT_EV,
[7] = 10,
[8] = 5,
[9] = 2,
@@ -387,7 +387,7 @@ const u8 gItemEffect_HondewBerry[10] = {
const u8 gItemEffect_GrepaBerry[10] = {
[5] = ITEM5_EV_SPDEF | ITEM5_FRIENDSHIP_ALL,
- [6] = -10,
+ [6] = ITEM6_SUBTRACT_EV,
[7] = 10,
[8] = 5,
[9] = 2,
@@ -395,7 +395,7 @@ const u8 gItemEffect_GrepaBerry[10] = {
const u8 gItemEffect_TamatoBerry[10] = {
[5] = ITEM5_EV_SPEED | ITEM5_FRIENDSHIP_ALL,
- [6] = -10,
+ [6] = ITEM6_SUBTRACT_EV,
[7] = 10,
[8] = 5,
[9] = 2,
diff --git a/src/daycare.c b/src/daycare.c
index e2b5d2deb..14cf57806 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -894,8 +894,8 @@ static bool8 TryProduceOrHatchEgg(struct DayCare *daycare)
// Check if an egg should be produced
if (daycare->offspringPersonality == 0 && validEggs == DAYCARE_MON_COUNT && (daycare->mons[1].steps & 0xFF) == 0xFF)
{
- u8 compatability = GetDaycareCompatibilityScore(daycare);
- if (compatability > (Random() * 100u) / USHRT_MAX)
+ u8 compatibility = GetDaycareCompatibilityScore(daycare);
+ if (compatibility > (Random() * 100u) / USHRT_MAX)
TriggerPendingDaycareEgg();
}
@@ -1050,7 +1050,7 @@ static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
if (trainerIds[0] == trainerIds[1])
return PARENTS_LOW_COMPATIBILITY;
- return PARENTS_MED_COMPATABILITY;
+ return PARENTS_MED_COMPATIBILITY;
}
// neither parent is Ditto
else
@@ -1065,14 +1065,14 @@ static u8 GetDaycareCompatibilityScore(struct DayCare *daycare)
if (species[0] == species[1])
{
if (trainerIds[0] == trainerIds[1])
- return PARENTS_MED_COMPATABILITY; // same species, same trainer
+ return PARENTS_MED_COMPATIBILITY; // same species, same trainer
- return PARENTS_MAX_COMPATABILITY; // same species, different trainers
+ return PARENTS_MAX_COMPATIBILITY; // same species, different trainers
}
else
{
if (trainerIds[0] != trainerIds[1])
- return PARENTS_MED_COMPATABILITY; // different species, different trainers
+ return PARENTS_MED_COMPATIBILITY; // different species, different trainers
return PARENTS_LOW_COMPATIBILITY; // different species, same trainer
}
@@ -1095,9 +1095,9 @@ void SetDaycareCompatibilityString(void)
whichString = 3;
if (relationshipScore == PARENTS_LOW_COMPATIBILITY)
whichString = 2;
- if (relationshipScore == PARENTS_MED_COMPATABILITY)
+ if (relationshipScore == PARENTS_MED_COMPATIBILITY)
whichString = 1;
- if (relationshipScore == PARENTS_MAX_COMPATABILITY)
+ if (relationshipScore == PARENTS_MAX_COMPATIBILITY)
whichString = 0;
StringCopy(gStringVar4, sCompatibilityMessages[whichString]);
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 4e050ce62..5b80bfb6c 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -297,7 +297,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
{
u16 species;
u32 personality, pokerus;
- u8 i, friendship, language, gameMet, markings, obedience;
+ u8 i, friendship, language, gameMet, markings, isEventLegal;
u16 moves[MAX_MON_MOVES];
u32 ivs[NUM_STATS];
@@ -320,7 +320,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
gameMet = GetMonData(egg, MON_DATA_MET_GAME);
markings = GetMonData(egg, MON_DATA_MARKINGS);
pokerus = GetMonData(egg, MON_DATA_POKERUS);
- obedience = GetMonData(egg, MON_DATA_OBEDIENCE);
+ isEventLegal = GetMonData(egg, MON_DATA_EVENT_LEGAL);
CreateMon(temp, species, EGG_HATCH_LEVEL, USE_RANDOM_IVS, TRUE, personality, OT_ID_PLAYER_ID, 0);
@@ -342,7 +342,7 @@ static void CreateHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
friendship = 120;
SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship);
SetMonData(temp, MON_DATA_POKERUS, &pokerus);
- SetMonData(temp, MON_DATA_OBEDIENCE, &obedience);
+ SetMonData(temp, MON_DATA_EVENT_LEGAL, &isEventLegal);
*egg = *temp;
}
diff --git a/src/event_object_movement.c b/src/event_object_movement.c
index f6e638f31..1a7d08db2 100644
--- a/src/event_object_movement.c
+++ b/src/event_object_movement.c
@@ -101,7 +101,7 @@ static void DoGroundEffects_OnFinishStep(struct ObjectEvent*, struct Sprite*);
static void UpdateObjectEventSpritePosition(struct Sprite*);
static void ApplyLevitateMovement(u8);
static bool8 MovementType_Disguise_Callback(struct ObjectEvent *, struct Sprite *);
-static bool8 MovementType_Hidden_Callback(struct ObjectEvent *, struct Sprite *);
+static bool8 MovementType_Buried_Callback(struct ObjectEvent *, struct Sprite *);
static void CreateReflectionEffectSprites(void);
static u8 GetObjectEventIdByLocalId(u8);
static u8 GetObjectEventIdByLocalIdAndMapInternal(u8, u8, u8);
@@ -212,7 +212,7 @@ static void (*const sMovementTypeCallbacks[])(struct Sprite *) =
[MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = MovementType_CopyPlayerInGrass,
[MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = MovementType_CopyPlayerInGrass,
[MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = MovementType_CopyPlayerInGrass,
- [MOVEMENT_TYPE_HIDDEN] = MovementType_Hidden,
+ [MOVEMENT_TYPE_BURIED] = MovementType_Buried,
[MOVEMENT_TYPE_WALK_IN_PLACE_DOWN] = MovementType_WalkInPlace,
[MOVEMENT_TYPE_WALK_IN_PLACE_UP] = MovementType_WalkInPlace,
[MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = MovementType_WalkInPlace,
@@ -296,7 +296,7 @@ const u8 gRangedMovementTypes[] = {
[MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = 1,
[MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = 1,
[MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = 1,
- [MOVEMENT_TYPE_HIDDEN] = 0,
+ [MOVEMENT_TYPE_BURIED] = 0,
[MOVEMENT_TYPE_WALK_IN_PLACE_DOWN] = 0,
[MOVEMENT_TYPE_WALK_IN_PLACE_UP] = 0,
[MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = 0,
@@ -380,7 +380,7 @@ const u8 gInitialMovementTypeFacingDirections[] = {
[MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS] = DIR_SOUTH,
[MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS] = DIR_WEST,
[MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS] = DIR_EAST,
- [MOVEMENT_TYPE_HIDDEN] = DIR_SOUTH,
+ [MOVEMENT_TYPE_BURIED] = DIR_SOUTH,
[MOVEMENT_TYPE_WALK_IN_PLACE_DOWN] = DIR_SOUTH,
[MOVEMENT_TYPE_WALK_IN_PLACE_UP] = DIR_NORTH,
[MOVEMENT_TYPE_WALK_IN_PLACE_LEFT] = DIR_WEST,
@@ -4467,7 +4467,7 @@ void MovementType_MountainDisguise(struct Sprite *sprite)
UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Disguise_Callback);
}
-void MovementType_Hidden(struct Sprite *sprite)
+void MovementType_Buried(struct Sprite *sprite)
{
if (!sprite->data[7])
{
@@ -4476,15 +4476,15 @@ void MovementType_Hidden(struct Sprite *sprite)
sprite->oam.priority = 3;
sprite->data[7]++;
}
- UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Hidden_Callback);
+ UpdateObjectEventCurrentMovement(&gObjectEvents[sprite->data[0]], sprite, MovementType_Buried_Callback);
}
-static bool8 MovementType_Hidden_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+static bool8 MovementType_Buried_Callback(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- return gMovementTypeFuncs_Hidden[sprite->data[1]](objectEvent, sprite);
+ return gMovementTypeFuncs_Buried[sprite->data[1]](objectEvent, sprite);
}
-bool8 MovementType_Hidden_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
+bool8 MovementType_Buried_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
ClearObjectEventMovement(objectEvent, sprite);
return FALSE;
@@ -6600,9 +6600,9 @@ bool8 MovementAction_EmoteHeart_Step0(struct ObjectEvent *objectEvent, struct Sp
bool8 MovementAction_RevealTrainer_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
{
- if (objectEvent->movementType == MOVEMENT_TYPE_HIDDEN)
+ if (objectEvent->movementType == MOVEMENT_TYPE_BURIED)
{
- SetHiddenTrainerMovement(objectEvent);
+ SetBuriedTrainerMovement(objectEvent);
return FALSE;
}
if (objectEvent->movementType != MOVEMENT_TYPE_TREE_DISGUISE && objectEvent->movementType != MOVEMENT_TYPE_MOUNTAIN_DISGUISE)
diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c
index 28bbd4ef7..a66a7a28d 100644
--- a/src/evolution_graphics.c
+++ b/src/evolution_graphics.c
@@ -10,40 +10,46 @@
#include "palette.h"
#include "constants/rgb.h"
-// this file's functions
-static void EvoSparkle_DummySpriteCb(struct Sprite* sprite);
-static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID);
-static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID);
-static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskID);
-static void EvoTask_BeginPreSparklesSet2(u8 taskID);
-static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID);
-static void EvoTask_DestroyPreSet2Task(u8 taskID);
-static void EvoTask_BeginPostSparklesSet1(u8 taskID);
-static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID);
-static void EvoTask_DestroyPostSet1Task(u8 taskID);
-static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID);
-static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID);
-static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID);
-static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID);
-static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID);
-static void sub_817C4EC(u8 taskID);
-static void sub_817C510(u8 taskID);
-static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID);
-static void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskID);
-static void sub_817C560(u8 taskID);
-
-static const u16 sEvoSparklePalette[] = INCBIN_U16("graphics/misc/evo_sparkle.gbapal");
-static const u32 sEvoSparkleTiles[] = INCBIN_U32("graphics/misc/evo_sparkle.4bpp.lz");
+static void SpriteCB_Sparkle_Dummy(struct Sprite* sprite);
+
+static void Task_Sparkles_SpiralUpward_Init(u8 taskId);
+static void Task_Sparkles_SpiralUpward(u8 taskId);
+static void Task_Sparkles_SpiralUpward_End(u8 taskId);
+
+static void Task_Sparkles_ArcDown_Init(u8 taskId);
+static void Task_Sparkles_ArcDown(u8 taskId);
+static void Task_Sparkles_ArcDown_End(u8 taskId);
+
+static void Task_Sparkles_CircleInward_Init(u8 taskId);
+static void Task_Sparkles_CircleInward(u8 taskId);
+static void Task_Sparkles_CircleInward_End(u8 taskId);
+
+static void Task_Sparkles_SprayAndFlash_Init(u8 taskId);
+static void Task_Sparkles_SprayAndFlash(u8 taskId);
+static void Task_Sparkles_SprayAndFlashTrade_Init(u8 taskId);
+static void Task_Sparkles_SprayAndFlashTrade(u8 taskId);
+static void Task_Sparkles_SprayAndFlash_End(u8 taskId);
+
+static void Task_CycleEvolutionMonSprite_Init(u8 taskId);
+static void Task_CycleEvolutionMonSprite_TryEnd(u8 taskId);
+static void Task_CycleEvolutionMonSprite_UpdateSize(u8 taskId);
+static void EndOnPreEvoMon(u8 taskId);
+static void EndOnPostEvoMon(u8 taskId);
+
+#define TAG_SPARKLE 1001
+
+static const u16 sEvoSparkle_Pal[] = INCBIN_U16("graphics/misc/evo_sparkle.gbapal");
+static const u32 sEvoSparkle_Gfx[] = INCBIN_U32("graphics/misc/evo_sparkle.4bpp.lz");
static const struct CompressedSpriteSheet sEvoSparkleSpriteSheets[] =
{
- {sEvoSparkleTiles, 0x20, 1001},
+ {sEvoSparkle_Gfx, 0x20, TAG_SPARKLE},
{NULL, 0, 0}
};
static const struct SpritePalette sEvoSparkleSpritePals[] =
{
- {sEvoSparklePalette, 1001},
+ {sEvoSparkle_Pal, TAG_SPARKLE},
{NULL, 0}
};
@@ -77,13 +83,13 @@ static const union AnimCmd *const sSpriteAnimTable_EvoSparkle[] =
static const struct SpriteTemplate sEvoSparkleSpriteTemplate =
{
- .tileTag = 1001,
- .paletteTag = 1001,
+ .tileTag = TAG_SPARKLE,
+ .paletteTag = TAG_SPARKLE,
.oam = &sOamData_EvoSparkle,
.anims = sSpriteAnimTable_EvoSparkle,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = EvoSparkle_DummySpriteCb
+ .callback = SpriteCB_Sparkle_Dummy
};
static const s16 sEvoSparkleMatrices[] =
@@ -93,7 +99,7 @@ static const s16 sEvoSparkleMatrices[] =
-1, 0x70, 0x1, 0x70, 0x2, 0x50, 0x3, 0x30, 0x4, 0x10
};
-static void EvoSparkle_DummySpriteCb(struct Sprite *sprite)
+static void SpriteCB_Sparkle_Dummy(struct Sprite *sprite)
{
}
@@ -107,7 +113,7 @@ static void SetEvoSparklesMatrices(void)
}
}
-static void SpriteCB_PreEvoSparkleSet1(struct Sprite* sprite)
+static void SpriteCB_Sparkle_SpiralUpward(struct Sprite* sprite)
{
if (sprite->pos1.y > 8)
{
@@ -133,7 +139,7 @@ static void SpriteCB_PreEvoSparkleSet1(struct Sprite* sprite)
DestroySprite(sprite);
}
-static void CreatePreEvoSparkleSet1(u8 arg0)
+static void CreateSparkle_SpiralUpward(u8 arg0)
{
u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 88, 0);
if (spriteID != MAX_SPRITES)
@@ -143,11 +149,11 @@ static void CreatePreEvoSparkleSet1(u8 arg0)
gSprites[spriteID].data[7] = 0;
gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteID].oam.matrixNum = 31;
- gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet1;
+ gSprites[spriteID].callback = SpriteCB_Sparkle_SpiralUpward;
}
}
-static void SpriteCB_PreEvoSparkleSet2(struct Sprite* sprite)
+static void SpriteCB_Sparkle_ArcDown(struct Sprite* sprite)
{
if (sprite->pos1.y < 88)
{
@@ -161,7 +167,7 @@ static void SpriteCB_PreEvoSparkleSet2(struct Sprite* sprite)
DestroySprite(sprite);
}
-static void CreatePreEvoSparkleSet2(u8 arg0)
+static void CreateSparkle_ArcDown(u8 arg0)
{
u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 8, 0);
if (spriteID != MAX_SPRITES)
@@ -172,11 +178,11 @@ static void CreatePreEvoSparkleSet2(u8 arg0)
gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteID].oam.matrixNum = 25;
gSprites[spriteID].subpriority = 1;
- gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet2;
+ gSprites[spriteID].callback = SpriteCB_Sparkle_ArcDown;
}
}
-static void SpriteCB_PostEvoSparkleSet1(struct Sprite* sprite)
+static void SpriteCB_Sparkle_CircleInward(struct Sprite* sprite)
{
if (sprite->data[5] > 8)
{
@@ -189,7 +195,7 @@ static void SpriteCB_PostEvoSparkleSet1(struct Sprite* sprite)
DestroySprite(sprite);
}
-static void CreatePostEvoSparkleSet1(u8 arg0, u8 arg1)
+static void CreateSparkle_CircleInward(u8 arg0, u8 arg1)
{
u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0);
if (spriteID != MAX_SPRITES)
@@ -201,11 +207,11 @@ static void CreatePostEvoSparkleSet1(u8 arg0, u8 arg1)
gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteID].oam.matrixNum = 31;
gSprites[spriteID].subpriority = 1;
- gSprites[spriteID].callback = SpriteCB_PostEvoSparkleSet1;
+ gSprites[spriteID].callback = SpriteCB_Sparkle_CircleInward;
}
}
-static void SpriteCB_PostEvoSparkleSet2(struct Sprite* sprite)
+static void SpriteCB_Sparkle_Spray(struct Sprite* sprite)
{
if (!(sprite->data[7] & 3))
sprite->pos1.y++;
@@ -235,7 +241,7 @@ static void SpriteCB_PostEvoSparkleSet2(struct Sprite* sprite)
DestroySprite(sprite);
}
-static void CreatePostEvoSparkleSet2(u8 arg0)
+static void CreateSparkle_Spray(u8 id)
{
u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0);
if (spriteID != MAX_SPRITES)
@@ -246,7 +252,7 @@ static void CreatePostEvoSparkleSet2(u8 arg0)
gSprites[spriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[spriteID].oam.matrixNum = 31;
gSprites[spriteID].subpriority = 20;
- gSprites[spriteID].callback = SpriteCB_PostEvoSparkleSet2;
+ gSprites[spriteID].callback = SpriteCB_Sparkle_Spray;
}
}
@@ -256,357 +262,386 @@ void LoadEvoSparkleSpriteAndPal(void)
LoadSpritePalettes(sEvoSparkleSpritePals);
}
-#define tFrameCounter data[15]
+#define tPalNum data[1]
+#define tTimer data[15]
-u8 LaunchTask_PreEvoSparklesSet1(u16 arg0)
+u8 EvolutionSparkles_SpiralUpward(u16 palNum)
{
- u8 taskID = CreateTask(EvoTask_BeginPreSet1_FadeAndPlaySE, 0);
- gTasks[taskID].data[1] = arg0;
- return taskID;
+ u8 taskId = CreateTask(Task_Sparkles_SpiralUpward_Init, 0);
+ gTasks[taskId].tPalNum = palNum;
+ return taskId;
}
-static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID)
+static void Task_Sparkles_SpiralUpward_Init(u8 taskId)
{
SetEvoSparklesMatrices();
- gTasks[taskID].tFrameCounter = 0;
- BeginNormalPaletteFade(3 << gTasks[taskID].data[1], 0xA, 0, 0x10, RGB_WHITE);
- gTasks[taskID].func = EvoTask_CreatePreEvoSparkleSet1;
- PlaySE(SE_M_MEGA_KICK);
+ gTasks[taskId].tTimer = 0;
+ BeginNormalPaletteFade(3 << gTasks[taskId].tPalNum, 0xA, 0, 0x10, RGB_WHITE);
+ gTasks[taskId].func = Task_Sparkles_SpiralUpward;
+ PlaySE(SE_M_MEGA_KICK); // 'Charging up' sound for the sparkles as they spiral upwards
}
-static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID)
+static void Task_Sparkles_SpiralUpward(u8 taskId)
{
- if (gTasks[taskID].tFrameCounter < 64)
+ if (gTasks[taskId].tTimer < 64)
{
- if (!(gTasks[taskID].tFrameCounter & 7))
+ if (!(gTasks[taskId].tTimer & 7))
{
u8 i;
for (i = 0; i < 4; i++)
- CreatePreEvoSparkleSet1((0x78 & gTasks[taskID].tFrameCounter) * 2 + i * 64);
+ CreateSparkle_SpiralUpward((0x78 & gTasks[taskId].tTimer) * 2 + i * 64);
}
- gTasks[taskID].tFrameCounter++;
+ gTasks[taskId].tTimer++;
}
else
{
- gTasks[taskID].tFrameCounter = 96;
- gTasks[taskID].func = EvoTask_WaitForPre1SparklesToGoUp;
+ gTasks[taskId].tTimer = 96;
+ gTasks[taskId].func = Task_Sparkles_SpiralUpward_End;
}
}
-static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskID)
+static void Task_Sparkles_SpiralUpward_End(u8 taskId)
{
- if (gTasks[taskID].tFrameCounter != 0)
- gTasks[taskID].tFrameCounter--;
+ if (gTasks[taskId].tTimer != 0)
+ gTasks[taskId].tTimer--;
else
- DestroyTask(taskID);
+ DestroyTask(taskId);
}
-u8 LaunchTask_PreEvoSparklesSet2(void)
+u8 EvolutionSparkles_ArcDown(void)
{
- return CreateTask(EvoTask_BeginPreSparklesSet2, 0);
+ return CreateTask(Task_Sparkles_ArcDown_Init, 0);
}
-static void EvoTask_BeginPreSparklesSet2(u8 taskID)
+static void Task_Sparkles_ArcDown_Init(u8 taskId)
{
SetEvoSparklesMatrices();
- gTasks[taskID].tFrameCounter = 0;
- gTasks[taskID].func = EvoTask_CreatePreEvoSparklesSet2;
+ gTasks[taskId].tTimer = 0;
+ gTasks[taskId].func = Task_Sparkles_ArcDown;
PlaySE(SE_M_BUBBLE_BEAM2);
}
-static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID)
+static void Task_Sparkles_ArcDown(u8 taskId)
{
- if (gTasks[taskID].tFrameCounter < 96)
+ if (gTasks[taskId].tTimer < 96)
{
- if (gTasks[taskID].tFrameCounter < 6)
+ if (gTasks[taskId].tTimer < 6)
{
u8 i;
for (i = 0; i < 9; i++)
- CreatePreEvoSparkleSet2(i * 16);
+ CreateSparkle_ArcDown(i * 16);
}
- gTasks[taskID].tFrameCounter++;
+ gTasks[taskId].tTimer++;
}
else
- gTasks[taskID].func = EvoTask_DestroyPreSet2Task;
+ gTasks[taskId].func = Task_Sparkles_ArcDown_End;
}
-static void EvoTask_DestroyPreSet2Task(u8 taskID)
+static void Task_Sparkles_ArcDown_End(u8 taskId)
{
- DestroyTask(taskID);
+ DestroyTask(taskId);
}
-u8 LaunchTask_PostEvoSparklesSet1(void)
+u8 EvolutionSparkles_CircleInward(void)
{
- return CreateTask(EvoTask_BeginPostSparklesSet1, 0);
+ return CreateTask(Task_Sparkles_CircleInward_Init, 0);
}
-static void EvoTask_BeginPostSparklesSet1(u8 taskID)
+static void Task_Sparkles_CircleInward_Init(u8 taskId)
{
SetEvoSparklesMatrices();
- gTasks[taskID].tFrameCounter = 0;
- gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet1;
+ gTasks[taskId].tTimer = 0;
+ gTasks[taskId].func = Task_Sparkles_CircleInward;
PlaySE(SE_SHINY);
}
-static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID)
+static void Task_Sparkles_CircleInward(u8 taskId)
{
- if (gTasks[taskID].tFrameCounter < 48)
+ if (gTasks[taskId].tTimer < 48)
{
- if (gTasks[taskID].tFrameCounter == 0)
+ if (gTasks[taskId].tTimer == 0)
{
u8 i;
for (i = 0; i < 16; i++)
- CreatePostEvoSparkleSet1(i * 16, 4);
+ CreateSparkle_CircleInward(i * 16, 4);
}
- if (gTasks[taskID].tFrameCounter == 32)
+ if (gTasks[taskId].tTimer == 32)
{
u8 i;
for (i = 0; i < 16; i++)
- CreatePostEvoSparkleSet1(i * 16, 8);
+ CreateSparkle_CircleInward(i * 16, 8);
}
- gTasks[taskID].tFrameCounter++;
+ gTasks[taskId].tTimer++;
}
else
- gTasks[taskID].func = EvoTask_DestroyPostSet1Task;
+ gTasks[taskId].func = Task_Sparkles_CircleInward_End;
}
-static void EvoTask_DestroyPostSet1Task(u8 taskID)
+static void Task_Sparkles_CircleInward_End(u8 taskId)
{
- DestroyTask(taskID);
+ DestroyTask(taskId);
}
-u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species)
+#define tSpecies data[2] // Never read
+
+u8 EvolutionSparkles_SprayAndFlash(u16 species)
{
- u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash, 0);
- gTasks[taskID].data[2] = species;
- return taskID;
+ u8 taskId = CreateTask(Task_Sparkles_SprayAndFlash_Init, 0);
+ gTasks[taskId].tSpecies = species;
+ return taskId;
}
-static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID)
+static void Task_Sparkles_SprayAndFlash_Init(u8 taskId)
{
SetEvoSparklesMatrices();
- gTasks[taskID].tFrameCounter = 0;
+ gTasks[taskId].tTimer = 0;
CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30);
BeginNormalPaletteFade(0xFFF9041C, 0, 0, 0x10, RGB_WHITE); // was 0xFFF9001C in R/S
- gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash;
+ gTasks[taskId].func = Task_Sparkles_SprayAndFlash;
PlaySE(SE_M_PETAL_DANCE);
}
-static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID)
+static void Task_Sparkles_SprayAndFlash(u8 taskId)
{
- if (gTasks[taskID].tFrameCounter < 128)
+ if (gTasks[taskId].tTimer < 128)
{
u8 i;
- switch (gTasks[taskID].tFrameCounter)
+ switch (gTasks[taskId].tTimer)
{
default:
- if (gTasks[taskID].tFrameCounter < 50)
- CreatePostEvoSparkleSet2(Random() & 7);
+ if (gTasks[taskId].tTimer < 50)
+ CreateSparkle_Spray(Random() & 7);
break;
case 0:
for (i = 0; i < 8; i++)
- CreatePostEvoSparkleSet2(i);
+ CreateSparkle_Spray(i);
break;
case 32:
BeginNormalPaletteFade(0xFFFF041C, 0x10, 0x10, 0, RGB_WHITE); // was 0xFFF9001C in R/S
break;
}
- gTasks[taskID].tFrameCounter++;
+ gTasks[taskId].tTimer++;
}
else
- gTasks[taskID].func = EvoTask_DestroyPostSet2AndFlashTask;
+ gTasks[taskId].func = Task_Sparkles_SprayAndFlash_End;
}
-static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID)
+static void Task_Sparkles_SprayAndFlash_End(u8 taskId)
{
if (!gPaletteFade.active)
- DestroyTask(taskID);
+ DestroyTask(taskId);
}
-u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species)
+// Separate from EvolutionSparkles_SprayAndFlash for difference in fade color
+u8 EvolutionSparkles_SprayAndFlash_Trade(u16 species)
{
- u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash_Trade, 0);
- gTasks[taskID].data[2] = species;
- return taskID;
+ u8 taskId = CreateTask(Task_Sparkles_SprayAndFlashTrade_Init, 0);
+ gTasks[taskId].tSpecies = species;
+ return taskId;
}
-static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID)
+static void Task_Sparkles_SprayAndFlashTrade_Init(u8 taskId)
{
SetEvoSparklesMatrices();
- gTasks[taskID].tFrameCounter = 0;
+ gTasks[taskId].tTimer = 0;
CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30);
BeginNormalPaletteFade(0xFFF90400, 0, 0, 0x10, RGB_WHITE); // was 0xFFFF0001 in R/S
- gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade;
+ gTasks[taskId].func = Task_Sparkles_SprayAndFlashTrade;
PlaySE(SE_M_PETAL_DANCE);
}
-static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID)
+static void Task_Sparkles_SprayAndFlashTrade(u8 taskId)
{
- if (gTasks[taskID].tFrameCounter < 128)
+ if (gTasks[taskId].tTimer < 128)
{
u8 i;
- switch (gTasks[taskID].tFrameCounter)
+ switch (gTasks[taskId].tTimer)
{
default:
- if (gTasks[taskID].tFrameCounter < 50)
- CreatePostEvoSparkleSet2(Random() & 7);
+ if (gTasks[taskId].tTimer < 50)
+ CreateSparkle_Spray(Random() & 7);
break;
case 0:
for (i = 0; i < 8; i++)
- CreatePostEvoSparkleSet2(i);
+ CreateSparkle_Spray(i);
break;
case 32:
BeginNormalPaletteFade(0xFFFF0400, 0x10, 0x10, 0, RGB_WHITE); // was 0xFFFF0001 in R/S
break;
}
- gTasks[taskID].tFrameCounter++;
+ gTasks[taskId].tTimer++;
}
else
- gTasks[taskID].func = EvoTask_DestroyPostSet2AndFlashTask;
+ gTasks[taskId].func = Task_Sparkles_SprayAndFlash_End;
}
-#undef tFrameCounter
+#undef tTimer
+#undef tSpecies
-static void PokeEvoSprite_DummySpriteCB(struct Sprite* sprite)
+static void SpriteCB_EvolutionMonSprite(struct Sprite* sprite)
{
}
-#define tPreEvoSpriteID data[1]
-#define tPostEvoSpriteID data[2]
+#define tPreEvoSpriteId data[1]
+#define tPostEvoSpriteId data[2]
+#define tPreEvoScale data[3]
+#define tPostEvoScale data[4]
+#define tShowingPostEvo data[5]
+#define tScaleSpeed data[6]
#define tEvoStopped data[8]
-u8 sub_817C3A0(u8 preEvoSpriteID, u8 postEvoSpriteID)
+#define MATRIX_PRE_EVO 30
+#define MATRIX_POST_EVO 31
+
+#define MON_MAX_SCALE 256
+#define MON_MIN_SCALE 16
+
+// Alternately grow/shrink the pre-evolution and post-evolution mon sprites
+u8 CycleEvolutionMonSprite(u8 preEvoSpriteId, u8 postEvoSpriteId)
{
u16 i;
u16 stack[16];
- u8 taskID;
+ u8 taskId;
s32 toDiv;
- for (i = 0; i < 16; i++)
+ for (i = 0; i < ARRAY_COUNT(stack); i++)
stack[i] = 0x7FFF;
- taskID = CreateTask(sub_817C4EC, 0);
- gTasks[taskID].tPreEvoSpriteID = preEvoSpriteID;
- gTasks[taskID].tPostEvoSpriteID = postEvoSpriteID;
- gTasks[taskID].data[3] = 256;
- gTasks[taskID].data[4] = 16;
+ taskId = CreateTask(Task_CycleEvolutionMonSprite_Init, 0);
+ gTasks[taskId].tPreEvoSpriteId = preEvoSpriteId;
+ gTasks[taskId].tPostEvoSpriteId = postEvoSpriteId;
+ gTasks[taskId].tPreEvoScale = MON_MAX_SCALE;
+ gTasks[taskId].tPostEvoScale = MON_MIN_SCALE;
toDiv = 65536;
- SetOamMatrix(30, 256, 0, 0, 256);
- SetOamMatrix(31, toDiv / gTasks[taskID].data[4], 0, 0, toDiv / gTasks[taskID].data[4]);
+ SetOamMatrix(MATRIX_PRE_EVO, MON_MAX_SCALE, 0, 0, MON_MAX_SCALE);
+ SetOamMatrix(MATRIX_POST_EVO, toDiv / gTasks[taskId].tPostEvoScale, 0, 0, toDiv / gTasks[taskId].tPostEvoScale);
- gSprites[preEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB;
- gSprites[preEvoSpriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL;
- gSprites[preEvoSpriteID].oam.matrixNum = 30;
- gSprites[preEvoSpriteID].invisible = FALSE;
- CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[preEvoSpriteID].oam.paletteNum * 16)], 16);
+ gSprites[preEvoSpriteId].callback = SpriteCB_EvolutionMonSprite;
+ gSprites[preEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[preEvoSpriteId].oam.matrixNum = MATRIX_PRE_EVO;
+ gSprites[preEvoSpriteId].invisible = FALSE;
+ CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[preEvoSpriteId].oam.paletteNum * 16)], 16);
- gSprites[postEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB;
- gSprites[postEvoSpriteID].oam.affineMode = ST_OAM_AFFINE_NORMAL;
- gSprites[postEvoSpriteID].oam.matrixNum = 31;
- gSprites[postEvoSpriteID].invisible = FALSE;
- CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[postEvoSpriteID].oam.paletteNum * 16)], 16);
+ gSprites[postEvoSpriteId].callback = SpriteCB_EvolutionMonSprite;
+ gSprites[postEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[postEvoSpriteId].oam.matrixNum = MATRIX_POST_EVO;
+ gSprites[postEvoSpriteId].invisible = FALSE;
+ CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[postEvoSpriteId].oam.paletteNum * 16)], 16);
- gTasks[taskID].tEvoStopped = FALSE;
- return taskID;
+ gTasks[taskId].tEvoStopped = FALSE;
+ return taskId;
}
-static void sub_817C4EC(u8 taskID)
+static void Task_CycleEvolutionMonSprite_Init(u8 taskId)
{
- gTasks[taskID].data[5] = 0;
- gTasks[taskID].data[6] = 8;
- gTasks[taskID].func = sub_817C510;
+ gTasks[taskId].tShowingPostEvo = FALSE;
+ gTasks[taskId].tScaleSpeed = 8;
+ gTasks[taskId].func = Task_CycleEvolutionMonSprite_TryEnd;
}
-static void sub_817C510(u8 taskID)
+// Try to end sprite cycling
+// If evo hasn't stopped or growth/shrink speed hasn't been maxed out, start another cycle
+static void Task_CycleEvolutionMonSprite_TryEnd(u8 taskId)
{
- if (gTasks[taskID].tEvoStopped)
- PreEvoVisible_PostEvoInvisible_KillTask(taskID);
- else if (gTasks[taskID].data[6] == 128)
- PreEvoInvisible_PostEvoVisible_KillTask(taskID);
+ if (gTasks[taskId].tEvoStopped)
+ EndOnPreEvoMon(taskId);
+ else if (gTasks[taskId].tScaleSpeed == 128)
+ EndOnPostEvoMon(taskId);
else
{
- gTasks[taskID].data[6] += 2;
- gTasks[taskID].data[5] ^= 1;
- gTasks[taskID].func = sub_817C560;
+ gTasks[taskId].tScaleSpeed += 2;
+ gTasks[taskId].tShowingPostEvo ^= 1;
+ gTasks[taskId].func = Task_CycleEvolutionMonSprite_UpdateSize;
}
}
-static void sub_817C560(u8 taskID)
+static void Task_CycleEvolutionMonSprite_UpdateSize(u8 taskId)
{
- if (gTasks[taskID].tEvoStopped)
- gTasks[taskID].func = PreEvoVisible_PostEvoInvisible_KillTask;
+ if (gTasks[taskId].tEvoStopped)
+ gTasks[taskId].func = EndOnPreEvoMon;
else
{
u16 oamMatrixArg;
- u8 r6 = 0;
- if (gTasks[taskID].data[5] == 0)
+ u8 numSpritesFinished = 0;
+ if (!gTasks[taskId].tShowingPostEvo)
{
- if (gTasks[taskID].data[3] < 256 - gTasks[taskID].data[6])
- gTasks[taskID].data[3] += gTasks[taskID].data[6];
+ // Set pre-evo sprite growth
+ if (gTasks[taskId].tPreEvoScale < MON_MAX_SCALE - gTasks[taskId].tScaleSpeed)
+ gTasks[taskId].tPreEvoScale += gTasks[taskId].tScaleSpeed;
else
{
- gTasks[taskID].data[3] = 256;
- r6++;
+ gTasks[taskId].tPreEvoScale = MON_MAX_SCALE;
+ numSpritesFinished++;
}
- if (gTasks[taskID].data[4] > 16 + gTasks[taskID].data[6])
- gTasks[taskID].data[4] -= gTasks[taskID].data[6];
+
+ // Set post-evo sprite shrink
+ if (gTasks[taskId].tPostEvoScale > MON_MIN_SCALE + gTasks[taskId].tScaleSpeed)
+ gTasks[taskId].tPostEvoScale -= gTasks[taskId].tScaleSpeed;
else
{
- gTasks[taskID].data[4] = 16;
- r6++;
+ gTasks[taskId].tPostEvoScale = MON_MIN_SCALE;
+ numSpritesFinished++;
}
}
else
{
- if (gTasks[taskID].data[4] < 256 - gTasks[taskID].data[6])
- gTasks[taskID].data[4] += gTasks[taskID].data[6];
+ // Set post-evo sprite growth
+ if (gTasks[taskId].tPostEvoScale < MON_MAX_SCALE - gTasks[taskId].tScaleSpeed)
+ gTasks[taskId].tPostEvoScale += gTasks[taskId].tScaleSpeed;
else
{
- gTasks[taskID].data[4] = 256;
- r6++;
+ gTasks[taskId].tPostEvoScale = MON_MAX_SCALE;
+ numSpritesFinished++;
}
- if (gTasks[taskID].data[3] > 16 + gTasks[taskID].data[6])
- gTasks[taskID].data[3] -= gTasks[taskID].data[6];
+
+ // Set pre-evo sprite shrink
+ if (gTasks[taskId].tPreEvoScale > MON_MIN_SCALE + gTasks[taskId].tScaleSpeed)
+ gTasks[taskId].tPreEvoScale -= gTasks[taskId].tScaleSpeed;
else
{
- gTasks[taskID].data[3] = 16;
- r6++;
+ gTasks[taskId].tPreEvoScale = MON_MIN_SCALE;
+ numSpritesFinished++;
}
}
- oamMatrixArg = 65536 / gTasks[taskID].data[3];
- SetOamMatrix(30, oamMatrixArg, 0, 0, oamMatrixArg);
- oamMatrixArg = 65536 / gTasks[taskID].data[4];
- SetOamMatrix(31, oamMatrixArg, 0, 0, oamMatrixArg);
- if (r6 == 2)
- gTasks[taskID].func = sub_817C510;
+ // Grow/shrink pre-evo sprite
+ oamMatrixArg = 65536 / gTasks[taskId].tPreEvoScale;
+ SetOamMatrix(MATRIX_PRE_EVO, oamMatrixArg, 0, 0, oamMatrixArg);
+
+ // Grow/shrink post-evo sprite
+ oamMatrixArg = 65536 / gTasks[taskId].tPostEvoScale;
+ SetOamMatrix(MATRIX_POST_EVO, oamMatrixArg, 0, 0, oamMatrixArg);
+
+ // Both sprites have reached their size extreme
+ if (numSpritesFinished == 2)
+ gTasks[taskId].func = Task_CycleEvolutionMonSprite_TryEnd;
}
}
-static void PreEvoInvisible_PostEvoVisible_KillTask(u8 taskID)
+static void EndOnPostEvoMon(u8 taskId)
{
- gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = ST_OAM_AFFINE_OFF;
- gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0;
- gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = TRUE;
+ gSprites[gTasks[taskId].tPreEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF;
+ gSprites[gTasks[taskId].tPreEvoSpriteId].oam.matrixNum = 0;
+ gSprites[gTasks[taskId].tPreEvoSpriteId].invisible = TRUE;
- gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = ST_OAM_AFFINE_OFF;
- gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0;
- gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = FALSE;
+ gSprites[gTasks[taskId].tPostEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF;
+ gSprites[gTasks[taskId].tPostEvoSpriteId].oam.matrixNum = 0;
+ gSprites[gTasks[taskId].tPostEvoSpriteId].invisible = FALSE;
- DestroyTask(taskID);
+ DestroyTask(taskId);
}
-static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID)
+static void EndOnPreEvoMon(u8 taskId)
{
- gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = ST_OAM_AFFINE_OFF;
- gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0;
- gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = FALSE;
+ gSprites[gTasks[taskId].tPreEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF;
+ gSprites[gTasks[taskId].tPreEvoSpriteId].oam.matrixNum = 0;
+ gSprites[gTasks[taskId].tPreEvoSpriteId].invisible = FALSE;
- gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = ST_OAM_AFFINE_OFF;
- gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0;
- gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = TRUE;
+ gSprites[gTasks[taskId].tPostEvoSpriteId].oam.affineMode = ST_OAM_AFFINE_OFF;
+ gSprites[gTasks[taskId].tPostEvoSpriteId].oam.matrixNum = 0;
+ gSprites[gTasks[taskId].tPostEvoSpriteId].invisible = TRUE;
- DestroyTask(taskID);
+ DestroyTask(taskId);
}
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index c8f910261..6f5a4dce7 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -35,110 +35,113 @@
struct EvoInfo
{
- u8 preEvoSpriteID;
- u8 postEvoSpriteID;
- u8 evoTaskID;
- u8 field_3;
+ u8 preEvoSpriteId;
+ u8 postEvoSpriteId;
+ u8 evoTaskId;
+ u8 delayTimer;
u16 savedPalette[48];
};
-// EWRAM vars
static EWRAM_DATA struct EvoInfo *sEvoStructPtr = NULL;
-static EWRAM_DATA u16 *sEvoMovingBgPtr = NULL;
+static EWRAM_DATA u16 *sBgAnimPal = NULL;
-// IWRAM common
void (*gCB2_AfterEvolution)(void);
#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
-#define sEvoGraphicsTaskID gBattleCommunication[2]
+#define sEvoGraphicsTaskId gBattleCommunication[2]
-// this file's functions
-static void Task_EvolutionScene(u8 taskID);
-static void Task_TradeEvolutionScene(u8 taskID);
+static void Task_EvolutionScene(u8 taskId);
+static void Task_TradeEvolutionScene(u8 taskId);
static void CB2_EvolutionSceneUpdate(void);
static void CB2_TradeEvolutionSceneUpdate(void);
static void EvoDummyFunc(void);
static void VBlankCB_EvolutionScene(void);
static void VBlankCB_TradeEvolutionScene(void);
-static void sub_8140134(void);
-static void EvoScene_DoMonAnimation(u8 monSpriteId, u16 speciesId);
+static void EvoScene_DoMonAnimAndCry(u8 monSpriteId, u16 speciesId);
static bool32 EvoScene_IsMonAnimFinished(u8 monSpriteId);
-static void InitMovingBackgroundTask(bool8 isLink);
-static void sub_813FEE8(u8 taskId);
-static void sub_8140174(void);
-
-// const data
-static const u16 sUnknown_085B4114[] = INCBIN_U16("graphics/evolution_scene/unknown_5B4114.gbapal");
-static const u32 sUnknown_085B4134[] = INCBIN_U32("graphics/evolution_scene/bg.4bpp.lz");
-static const u32 sUnknown_085B482C[] = INCBIN_U32("graphics/evolution_scene/bg.bin.lz");
-static const u32 sUnknown_085B4D10[] = INCBIN_U32("graphics/evolution_scene/bg2.bin.lz");
-static const u16 sUnknown_085B51E4[] = INCBIN_U16("graphics/evolution_scene/gray_transition_intro.gbapal");
-static const u16 sUnknown_085B53E4[] = INCBIN_U16("graphics/evolution_scene/gray_transition_lighten.gbapal");
-static const u16 sUnknown_085B5544[] = INCBIN_U16("graphics/evolution_scene/gray_transition_darken.gbapal");
-static const u16 sUnknown_085B56E4[] = INCBIN_U16("graphics/evolution_scene/gray_transition_outro.gbapal");
-static const u16 sUnknown_085B5884[] = INCBIN_U16("graphics/evolution_scene/transition.gbapal");
-
-static const u8 Text_ShedinjaJapaneseName[] = _("ヌケニン");
-
-static const u8 sUnknown_085B58C9[][4] =
+static void StartBgAnimation(bool8 isLink);
+static void StopBgAnimation(void);
+static void Task_AnimateBg(u8 taskId);
+static void RestoreBgAfterAnim(void);
+
+static const u16 sUnusedPal1[] = INCBIN_U16("graphics/evolution_scene/unused_1.gbapal");
+static const u32 sBgAnim_Gfx[] = INCBIN_U32("graphics/evolution_scene/bg.4bpp.lz");
+static const u32 sBgAnim_Inner_Tilemap[] = INCBIN_U32("graphics/evolution_scene/bg_inner.bin.lz");
+static const u32 sBgAnim_Outer_Tilemap[] = INCBIN_U32("graphics/evolution_scene/bg_outer.bin.lz");
+static const u16 sBgAnim_Intro_Pal[] = INCBIN_U16("graphics/evolution_scene/bg_anim_intro.gbapal");
+static const u16 sUnusedPal2[] = INCBIN_U16("graphics/evolution_scene/unused_2.gbapal");
+static const u16 sUnusedPal3[] = INCBIN_U16("graphics/evolution_scene/unused_3.gbapal");
+static const u16 sUnusedPal4[] = INCBIN_U16("graphics/evolution_scene/unused_4.gbapal");
+static const u16 sBgAnim_Pal[] = INCBIN_U16("graphics/evolution_scene/bg_anim.gbapal");
+
+static const u8 sText_ShedinjaJapaneseName[] = _("ヌケニン");
+
+// The below table is used by Task_UpdateBgPalette to control the speed at which the bg color updates.
+// The first two values are indexes into sBgAnim_PalIndexes (indirectly, via sBgAnimPal), and are
+// the start and end of the range of colors in sBgAnim_PalIndexes it will move through incrementally
+// before starting over. It will repeat this cycle x number of times, where x = the 3rd value,
+// delaying each increment by y, where y = the 4th value.
+// Once it has cycled x number of times, it will move to the next array in this table.
+static const u8 sBgAnim_PaletteControl[][4] =
{
- { 0x00, 0x0C, 0x01, 0x06 },
- { 0x0D, 0x24, 0x05, 0x02 },
- { 0x0D, 0x18, 0x01, 0x02 },
- { 0x25, 0x31, 0x01, 0x06 },
+ { 0, 12, 1, 6 },
+ { 13, 36, 5, 2 },
+ { 13, 24, 1, 2 },
+ { 37, 49, 1, 6 },
};
-static const u8 sUnknown_085B58D9[][16] = {
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00 },
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00 },
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x00, 0x00 },
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x00, 0x00 },
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0x00 },
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x00 },
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00 },
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, 0x00 },
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x00 },
- { 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x00, 0x00 },
- { 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x0B, 0x00, 0x00 },
- { 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x00, 0x00 },
- { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x00, 0x00 },
- { 0x00, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0C, 0x00, 0x00 },
- { 0x00, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0C, 0x0B, 0x00, 0x00 },
- { 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0C, 0x0B, 0x0A, 0x00, 0x00 },
- { 0x00, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x00, 0x00 },
- { 0x00, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x00, 0x00 },
- { 0x00, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x00, 0x00 },
- { 0x00, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x00, 0x00 },
- { 0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x00, 0x00 },
- { 0x00, 0x0A, 0x0B, 0x0C, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x00, 0x00 },
- { 0x00, 0x0B, 0x0C, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x00, 0x00 },
- { 0x00, 0x0C, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x00, 0x00 },
- { 0x00, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00 },
- { 0x00, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x02, 0x00, 0x00 },
- { 0x00, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x02, 0x03, 0x00, 0x00 },
- { 0x00, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x02, 0x03, 0x04, 0x00, 0x00 },
- { 0x00, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0x00 },
- { 0x00, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x00 },
- { 0x00, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00 },
- { 0x00, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, 0x00 },
- { 0x00, 0x05, 0x04, 0x03, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x00 },
- { 0x00, 0x04, 0x03, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x00, 0x00 },
- { 0x00, 0x03, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x00, 0x00 },
- { 0x00, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x00, 0x00 },
- { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x00, 0x00 },
- { 0x00, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00 },
- { 0x00, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 },
- { 0x00, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 },
- { 0x00, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- { 0x00, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- { 0x00, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- { 0x00, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- { 0x00, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- { 0x00, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- { 0x00, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- { 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
- { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
+// Indexes into sBgAnim_Pal, 0 is black, transitioning to a bright light blue (172, 213, 255) at 13
+static const u8 sBgAnim_PalIndexes[][16] = {
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0 },
+ { 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0 },
+ { 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0 },
+ { 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 11, 0, 0 },
+ { 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0 },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0 },
+ { 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 12, 0, 0 },
+ { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 12, 11, 0, 0 },
+ { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 12, 11, 10, 0, 0 },
+ { 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 12, 11, 10, 9, 0, 0 },
+ { 0, 6, 7, 8, 9, 10, 11, 12, 13, 12, 11, 10, 9, 8, 0, 0 },
+ { 0, 7, 8, 9, 10, 11, 12, 13, 12, 11, 10, 9, 8, 7, 0, 0 },
+ { 0, 8, 9, 10, 11, 12, 13, 12, 11, 10, 9, 8, 7, 6, 0, 0 },
+ { 0, 9, 10, 11, 12, 13, 12, 11, 10, 9, 8, 7, 6, 5, 0, 0 },
+ { 0, 10, 11, 12, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 0, 0 },
+ { 0, 11, 12, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 0, 0 },
+ { 0, 12, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 0, 0 },
+ { 0, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0 },
+ { 0, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2, 0, 0 },
+ { 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2, 3, 0, 0 },
+ { 0, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 0, 0 },
+ { 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 0, 0 },
+ { 0, 8, 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 0, 0 },
+ { 0, 7, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 0, 0 },
+ { 0, 6, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 0, 0 },
+ { 0, 5, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0 },
+ { 0, 4, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 0 },
+ { 0, 3, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0 },
+ { 0, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0, 0 },
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 0 },
+ { 0, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0 },
+ { 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0 },
+ { 0, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0 },
+ { 0, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0 },
+ { 0, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
static void CB2_BeginEvolutionScene(void)
@@ -154,53 +157,53 @@ static void CB2_BeginEvolutionScene(void)
#define tBits data[3]
#define tLearnsFirstMove data[4]
#define tLearnMoveState data[6]
-#define tData7 data[7]
-#define tData8 data[8]
+#define tLearnMoveYesState data[7]
+#define tLearnMoveNoState data[8]
#define tEvoWasStopped data[9]
-#define tPartyID data[10]
+#define tPartyId data[10]
-#define TASK_BIT_CAN_STOP 0x1
-#define TASK_BIT_LEARN_MOVE 0x80
+#define TASK_BIT_CAN_STOP (1 << 0)
+#define TASK_BIT_LEARN_MOVE (1 << 7)
-static void Task_BeginEvolutionScene(u8 taskID)
+static void Task_BeginEvolutionScene(u8 taskId)
{
struct Pokemon* mon = NULL;
- switch (gTasks[taskID].tState)
+ switch (gTasks[taskId].tState)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
break;
case 1:
if (!gPaletteFade.active)
{
- u16 speciesToEvolve;
+ u16 postEvoSpecies;
bool8 canStopEvo;
- u8 partyID;
+ u8 partyId;
- mon = &gPlayerParty[gTasks[taskID].tPartyID];
- speciesToEvolve = gTasks[taskID].tPostEvoSpecies;
- canStopEvo = gTasks[taskID].tCanStop;
- partyID = gTasks[taskID].tPartyID;
+ mon = &gPlayerParty[gTasks[taskId].tPartyId];
+ postEvoSpecies = gTasks[taskId].tPostEvoSpecies;
+ canStopEvo = gTasks[taskId].tCanStop;
+ partyId = gTasks[taskId].tPartyId;
- DestroyTask(taskID);
- EvolutionScene(mon, speciesToEvolve, canStopEvo, partyID);
+ DestroyTask(taskId);
+ EvolutionScene(mon, postEvoSpecies, canStopEvo, partyId);
}
break;
}
}
-void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID)
+void BeginEvolutionScene(struct Pokemon* mon, u16 postEvoSpecies, bool8 canStopEvo, u8 partyId)
{
- u8 taskID = CreateTask(Task_BeginEvolutionScene, 0);
- gTasks[taskID].tState = 0;
- gTasks[taskID].tPostEvoSpecies = speciesToEvolve;
- gTasks[taskID].tCanStop = canStopEvo;
- gTasks[taskID].tPartyID = partyID;
+ u8 taskId = CreateTask(Task_BeginEvolutionScene, 0);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tPostEvoSpecies = postEvoSpecies;
+ gTasks[taskId].tCanStop = canStopEvo;
+ gTasks[taskId].tPartyId = partyId;
SetMainCallback2(CB2_BeginEvolutionScene);
}
-void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID)
+void EvolutionScene(struct Pokemon* mon, u16 postEvoSpecies, bool8 canStopEvo, u8 partyId)
{
u8 name[20];
u16 currSpecies;
@@ -247,7 +250,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
GetMonData(mon, MON_DATA_NICKNAME, name);
StringCopy10(gStringVar1, name);
- StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]);
+ StringCopy(gStringVar2, gSpeciesNames[postEvoSpecies]);
// preEvo sprite
currSpecies = GetMonData(mon, MON_DATA_SPECIES);
@@ -261,38 +264,38 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
SetMultiuseSpriteTemplateToPokemon(currSpecies, 1);
gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
- sEvoStructPtr->preEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
+ sEvoStructPtr->preEvoSpriteId = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
gSprites[ID].callback = SpriteCallbackDummy_2;
gSprites[ID].oam.paletteNum = 1;
gSprites[ID].invisible = TRUE;
// postEvo sprite
- DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
+ DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
gMonSpritesGfxPtr->sprites.ptr[3],
- speciesToEvolve);
- pokePal = GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, trainerId, personality);
+ postEvoSpecies);
+ pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality);
LoadCompressedPalette(pokePal->data, 0x120, 0x20);
- SetMultiuseSpriteTemplateToPokemon(speciesToEvolve, 3);
+ SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 3);
gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
- sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
+ sEvoStructPtr->postEvoSpriteId = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
gSprites[ID].callback = SpriteCallbackDummy_2;
gSprites[ID].oam.paletteNum = 2;
gSprites[ID].invisible = TRUE;
LoadEvoSparkleSpriteAndPal();
- sEvoStructPtr->evoTaskID = ID = CreateTask(Task_EvolutionScene, 0);
+ sEvoStructPtr->evoTaskId = ID = CreateTask(Task_EvolutionScene, 0);
gTasks[ID].tState = 0;
gTasks[ID].tPreEvoSpecies = currSpecies;
- gTasks[ID].tPostEvoSpecies = speciesToEvolve;
+ gTasks[ID].tPostEvoSpecies = postEvoSpecies;
gTasks[ID].tCanStop = canStopEvo;
gTasks[ID].tLearnsFirstMove = TRUE;
gTasks[ID].tEvoWasStopped = FALSE;
- gTasks[ID].tPartyID = partyID;
+ gTasks[ID].tPartyId = partyId;
- memcpy(&sEvoStructPtr->savedPalette, &gPlttBufferUnfaded[0x20], 0x60);
+ memcpy(&sEvoStructPtr->savedPalette, &gPlttBufferUnfaded[0x20], sizeof(sEvoStructPtr->savedPalette));
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP);
@@ -308,11 +311,11 @@ static void CB2_EvolutionSceneLoadGraphics(void)
const struct CompressedSpritePalette* pokePal;
u16 postEvoSpecies;
u32 trainerId, personality;
- struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskID].tPartyID];
+ struct Pokemon* mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskId].tPartyId];
- postEvoSpecies = gTasks[sEvoStructPtr->evoTaskID].tPostEvoSpecies;
- trainerId = GetMonData(Mon, MON_DATA_OT_ID);
- personality = GetMonData(Mon, MON_DATA_PERSONALITY);
+ postEvoSpecies = gTasks[sEvoStructPtr->evoTaskId].tPostEvoSpecies;
+ trainerId = GetMonData(mon, MON_DATA_OT_ID);
+ personality = GetMonData(mon, MON_DATA_PERSONALITY);
SetHBlankCallback(NULL);
SetVBlankCallback(NULL);
@@ -354,7 +357,7 @@ static void CB2_EvolutionSceneLoadGraphics(void)
SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 3);
gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
- sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
+ sEvoStructPtr->postEvoSpriteId = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
gSprites[ID].callback = SpriteCallbackDummy_2;
gSprites[ID].oam.paletteNum = 2;
@@ -375,8 +378,8 @@ static void CB2_EvolutionSceneLoadGraphics(void)
static void CB2_TradeEvolutionSceneLoadGraphics(void)
{
- struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskID].tPartyID];
- u16 postEvoSpecies = gTasks[sEvoStructPtr->evoTaskID].tPostEvoSpecies;
+ struct Pokemon* mon = &gPlayerParty[gTasks[sEvoStructPtr->evoTaskId].tPartyId];
+ u16 postEvoSpecies = gTasks[sEvoStructPtr->evoTaskId].tPostEvoSpecies;
switch (gMain.state)
{
@@ -415,8 +418,8 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
case 4:
{
const struct CompressedSpritePalette* pokePal;
- u32 trainerId = GetMonData(Mon, MON_DATA_OT_ID);
- u32 personality = GetMonData(Mon, MON_DATA_PERSONALITY);
+ u32 trainerId = GetMonData(mon, MON_DATA_OT_ID);
+ u32 personality = GetMonData(mon, MON_DATA_PERSONALITY);
DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
gMonSpritesGfxPtr->sprites.ptr[3],
postEvoSpecies);
@@ -431,7 +434,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 1);
gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
- sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
+ sEvoStructPtr->postEvoSpriteId = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
gSprites[ID].callback = SpriteCallbackDummy_2;
gSprites[ID].oam.paletteNum = 2;
@@ -459,7 +462,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
}
}
-void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID)
+void TradeEvolutionScene(struct Pokemon* mon, u16 postEvoSpecies, u8 preEvoSpriteId, u8 partyId)
{
u8 name[20];
u16 currSpecies;
@@ -469,7 +472,7 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri
GetMonData(mon, MON_DATA_NICKNAME, name);
StringCopy10(gStringVar1, name);
- StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]);
+ StringCopy(gStringVar2, gSpeciesNames[postEvoSpecies]);
gAffineAnimsDisabled = TRUE;
@@ -479,18 +482,18 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri
trainerId = GetMonData(mon, MON_DATA_OT_ID);
sEvoStructPtr = AllocZeroed(sizeof(struct EvoInfo));
- sEvoStructPtr->preEvoSpriteID = preEvoSpriteID;
+ sEvoStructPtr->preEvoSpriteId = preEvoSpriteId;
- DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
+ DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
gMonSpritesGfxPtr->sprites.ptr[1],
- speciesToEvolve);
+ postEvoSpecies);
- pokePal = GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, trainerId, personality);
+ pokePal = GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, trainerId, personality);
LoadCompressedPalette(pokePal->data, 0x120, 0x20);
- SetMultiuseSpriteTemplateToPokemon(speciesToEvolve, 1);
+ SetMultiuseSpriteTemplateToPokemon(postEvoSpecies, 1);
gMultiuseSpriteTemplate.affineAnims = gDummySpriteAffineAnimTable;
- sEvoStructPtr->postEvoSpriteID = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
+ sEvoStructPtr->postEvoSpriteId = ID = CreateSprite(&gMultiuseSpriteTemplate, 120, 64, 30);
gSprites[ID].callback = SpriteCallbackDummy_2;
gSprites[ID].oam.paletteNum = 2;
@@ -498,13 +501,13 @@ void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpri
LoadEvoSparkleSpriteAndPal();
- sEvoStructPtr->evoTaskID = ID = CreateTask(Task_TradeEvolutionScene, 0);
+ sEvoStructPtr->evoTaskId = ID = CreateTask(Task_TradeEvolutionScene, 0);
gTasks[ID].tState = 0;
gTasks[ID].tPreEvoSpecies = currSpecies;
- gTasks[ID].tPostEvoSpecies = speciesToEvolve;
+ gTasks[ID].tPostEvoSpecies = postEvoSpecies;
gTasks[ID].tLearnsFirstMove = TRUE;
gTasks[ID].tEvoWasStopped = FALSE;
- gTasks[ID].tPartyID = partyID;
+ gTasks[ID].tPartyId = partyId;
gBattle_BG0_X = 0;
gBattle_BG0_Y = 0;
@@ -542,7 +545,7 @@ static void CB2_TradeEvolutionSceneUpdate(void)
static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
{
u32 data = 0;
- if (gEvolutionTable[preEvoSpecies][0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6)
+ if (gEvolutionTable[preEvoSpecies][0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < PARTY_SIZE)
{
s32 i;
struct Pokemon* shedinja = &gPlayerParty[gPlayerPartyCount];
@@ -556,9 +559,9 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_MARKINGS, (&data));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_ENCRYPT_SEPARATOR, (&data));
- for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++)
+ for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + CONTEST_CATEGORIES_COUNT; i++)
SetMonData(&gPlayerParty[gPlayerPartyCount], i, (&data));
- for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FATEFUL_ENCOUNTER; i++)
+ for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FILLER; i++)
SetMonData(&gPlayerParty[gPlayerPartyCount], i, (&data));
SetMonData(&gPlayerParty[gPlayerPartyCount], MON_DATA_STATUS, (&data));
@@ -578,195 +581,243 @@ static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
if (GetMonData(shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA
&& GetMonData(shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE
&& GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NINJASK)
- SetMonData(shedinja, MON_DATA_NICKNAME, Text_ShedinjaJapaneseName);
+ SetMonData(shedinja, MON_DATA_NICKNAME, sText_ShedinjaJapaneseName);
}
}
-static void Task_EvolutionScene(u8 taskID)
+// States for the main switch in Task_EvolutionScene
+enum {
+ EVOSTATE_FADE_IN,
+ EVOSTATE_INTRO_MSG,
+ EVOSTATE_INTRO_MON_ANIM,
+ EVOSTATE_INTRO_SOUND,
+ EVOSTATE_START_MUSIC,
+ EVOSTATE_START_BG_AND_SPARKLE_SPIRAL,
+ EVOSTATE_SPARKLE_ARC,
+ EVOSTATE_CYCLE_MON_SPRITE,
+ EVOSTATE_WAIT_CYCLE_MON_SPRITE,
+ EVOSTATE_SPARKLE_CIRCLE,
+ EVOSTATE_SPARKLE_SPRAY,
+ EVOSTATE_EVO_SOUND,
+ EVOSTATE_RESTORE_SCREEN,
+ EVOSTATE_EVO_MON_ANIM,
+ EVOSTATE_SET_MON_EVOLVED,
+ EVOSTATE_TRY_LEARN_MOVE,
+ EVOSTATE_END,
+ EVOSTATE_CANCEL,
+ EVOSTATE_CANCEL_MON_ANIM,
+ EVOSTATE_CANCEL_MSG,
+ EVOSTATE_LEARNED_MOVE,
+ EVOSTATE_TRY_LEARN_ANOTHER_MOVE,
+ EVOSTATE_REPLACE_MOVE,
+};
+
+// States for the switch in EVOSTATE_REPLACE_MOVE
+enum {
+ MVSTATE_INTRO_MSG_1,
+ MVSTATE_INTRO_MSG_2,
+ MVSTATE_INTRO_MSG_3,
+ MVSTATE_PRINT_YES_NO,
+ MVSTATE_HANDLE_YES_NO,
+ MVSTATE_SHOW_MOVE_SELECT,
+ MVSTATE_HANDLE_MOVE_SELECT,
+ MVSTATE_FORGET_MSG_1,
+ MVSTATE_FORGET_MSG_2,
+ MVSTATE_LEARNED_MOVE,
+ MVSTATE_ASK_CANCEL,
+ MVSTATE_CANCEL,
+ MVSTATE_RETRY_AFTER_HM,
+};
+
+// Task data from CycleEvolutionMonSprite
+#define tEvoStopped data[8]
+
+static void Task_EvolutionScene(u8 taskId)
{
u32 var;
- struct Pokemon* mon = &gPlayerParty[gTasks[taskID].tPartyID];
+ struct Pokemon* mon = &gPlayerParty[gTasks[taskId].tPartyId];
// check if B Button was held, so the evolution gets stopped
if (gMain.heldKeys == B_BUTTON
- && gTasks[taskID].tState == 8
- && gTasks[sEvoGraphicsTaskID].isActive
- && gTasks[taskID].tBits & TASK_BIT_CAN_STOP)
+ && gTasks[taskId].tState == EVOSTATE_WAIT_CYCLE_MON_SPRITE
+ && gTasks[sEvoGraphicsTaskId].isActive
+ && gTasks[taskId].tBits & TASK_BIT_CAN_STOP)
{
- gTasks[taskID].tState = 17;
- gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE;
- sub_8140134();
+ gTasks[taskId].tState = EVOSTATE_CANCEL;
+ gTasks[sEvoGraphicsTaskId].tEvoStopped = TRUE;
+ StopBgAnimation();
return;
}
- switch (gTasks[taskID].tState)
+ switch (gTasks[taskId].tState)
{
- case 0:
+ case EVOSTATE_FADE_IN:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
- gSprites[sEvoStructPtr->preEvoSpriteID].invisible = FALSE;
- gTasks[taskID].tState++;
+ gSprites[sEvoStructPtr->preEvoSpriteId].invisible = FALSE;
+ gTasks[taskId].tState++;
ShowBg(0);
ShowBg(1);
ShowBg(2);
ShowBg(3);
break;
- case 1: // print 'whoa, poke is evolving!!!' msg
+ case EVOSTATE_INTRO_MSG:
if (!gPaletteFade.active)
{
StringExpandPlaceholders(gStringVar4, gText_PkmnIsEvolving);
BattlePutTextOnWindow(gStringVar4, 0);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
}
break;
- case 2: // wait for string, animate mon(and play its cry)
+ case EVOSTATE_INTRO_MON_ANIM:
if (!IsTextPrinterActive(0))
{
- EvoScene_DoMonAnimation(sEvoStructPtr->preEvoSpriteID, gTasks[taskID].tPreEvoSpecies);
- gTasks[taskID].tState++;
+ EvoScene_DoMonAnimAndCry(sEvoStructPtr->preEvoSpriteId, gTasks[taskId].tPreEvoSpecies);
+ gTasks[taskId].tState++;
}
break;
- case 3:
- if (EvoScene_IsMonAnimFinished(sEvoStructPtr->preEvoSpriteID)) // wait for animation, play tu du SE
+ case EVOSTATE_INTRO_SOUND:
+ if (EvoScene_IsMonAnimFinished(sEvoStructPtr->preEvoSpriteId))
{
PlaySE(MUS_EVOLUTION_INTRO);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
}
break;
- case 4: // play evolution music and fade screen black
+ case EVOSTATE_START_MUSIC:
if (!IsSEPlaying())
{
+ // Start music, fade background to black
PlayNewMapMusic(MUS_EVOLUTION);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
BeginNormalPaletteFade(0x1C, 4, 0, 0x10, RGB_BLACK);
}
break;
- case 5: // launch moving bg task, preapre evo sparkles
+ case EVOSTATE_START_BG_AND_SPARKLE_SPIRAL:
if (!gPaletteFade.active)
{
- InitMovingBackgroundTask(FALSE);
- sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17);
- gTasks[taskID].tState++;
+ StartBgAnimation(FALSE);
+ sEvoGraphicsTaskId = EvolutionSparkles_SpiralUpward(17);
+ gTasks[taskId].tState++;
}
break;
- case 6: // another set of evo sparkles
- if (!gTasks[sEvoGraphicsTaskID].isActive)
+ case EVOSTATE_SPARKLE_ARC:
+ if (!gTasks[sEvoGraphicsTaskId].isActive)
{
- gTasks[taskID].tState++;
- sEvoStructPtr->field_3 = 1;
- sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2();
+ gTasks[taskId].tState++;
+ sEvoStructPtr->delayTimer = 1;
+ sEvoGraphicsTaskId = EvolutionSparkles_ArcDown();
}
break;
- case 7: // launch task that flashes pre evo with post evo sprites
- if (!gTasks[sEvoGraphicsTaskID].isActive)
+ case EVOSTATE_CYCLE_MON_SPRITE: // launch task that flashes pre evo with post evo sprites
+ if (!gTasks[sEvoGraphicsTaskId].isActive)
{
- sEvoGraphicsTaskID = sub_817C3A0(sEvoStructPtr->preEvoSpriteID, sEvoStructPtr->postEvoSpriteID);
- gTasks[taskID].tState++;
+ sEvoGraphicsTaskId = CycleEvolutionMonSprite(sEvoStructPtr->preEvoSpriteId, sEvoStructPtr->postEvoSpriteId);
+ gTasks[taskId].tState++;
}
break;
- case 8: // wait for the above task to finish
- if (--sEvoStructPtr->field_3 == 0)
+ case EVOSTATE_WAIT_CYCLE_MON_SPRITE:
+ if (--sEvoStructPtr->delayTimer == 0)
{
- sEvoStructPtr->field_3 = 3;
- if (!gTasks[sEvoGraphicsTaskID].isActive)
- gTasks[taskID].tState++;
+ sEvoStructPtr->delayTimer = 3;
+ if (!gTasks[sEvoGraphicsTaskId].isActive)
+ gTasks[taskId].tState++;
}
break;
- case 9: // post evo sparkles
- sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1();
- gTasks[taskID].tState++;
+ case EVOSTATE_SPARKLE_CIRCLE:
+ sEvoGraphicsTaskId = EvolutionSparkles_CircleInward();
+ gTasks[taskId].tState++;
break;
- case 10:
- if (!gTasks[sEvoGraphicsTaskID].isActive)
+ case EVOSTATE_SPARKLE_SPRAY:
+ if (!gTasks[sEvoGraphicsTaskId].isActive)
{
- sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash(gTasks[taskID].tPostEvoSpecies);
- gTasks[taskID].tState++;
+ sEvoGraphicsTaskId = EvolutionSparkles_SprayAndFlash(gTasks[taskId].tPostEvoSpecies);
+ gTasks[taskId].tState++;
}
break;
- case 11: // play tu du sound after evolution
- if (!gTasks[sEvoGraphicsTaskID].isActive)
+ case EVOSTATE_EVO_SOUND:
+ if (!gTasks[sEvoGraphicsTaskId].isActive)
{
PlaySE(SE_EXP);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
}
break;
- case 12: // stop music, return screen to pre-fade state
+ case EVOSTATE_RESTORE_SCREEN: // stop music, return screen to pre-fade state
if (IsSEPlaying())
{
m4aMPlayAllStop();
- memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, 0x60);
- sub_8140174();
+ memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, sizeof(sEvoStructPtr->savedPalette));
+ RestoreBgAfterAnim();
BeginNormalPaletteFade(0x1C, 0, 0x10, 0, RGB_BLACK);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
}
break;
- case 13: // animate mon
+ case EVOSTATE_EVO_MON_ANIM:
if (!gPaletteFade.active)
{
- EvoScene_DoMonAnimation(sEvoStructPtr->postEvoSpriteID, gTasks[taskID].tPostEvoSpecies);
- gTasks[taskID].tState++;
+ EvoScene_DoMonAnimAndCry(sEvoStructPtr->postEvoSpriteId, gTasks[taskId].tPostEvoSpecies);
+ gTasks[taskId].tState++;
}
break;
- case 14: // congratulations string and rename prompt
+ case EVOSTATE_SET_MON_EVOLVED:
if (IsCryFinished())
{
StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved);
BattlePutTextOnWindow(gStringVar4, 0);
PlayBGM(MUS_EVOLVED);
- gTasks[taskID].tState++;
- SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies));
+ gTasks[taskId].tState++;
+ SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskId].tPostEvoSpecies));
CalculateMonStats(mon);
- EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies);
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), FLAG_SET_SEEN);
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), FLAG_SET_CAUGHT);
+ EvolutionRenameMon(mon, gTasks[taskId].tPreEvoSpecies, gTasks[taskId].tPostEvoSpecies);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskId].tPostEvoSpecies), FLAG_SET_SEEN);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskId].tPostEvoSpecies), FLAG_SET_CAUGHT);
IncrementGameStat(GAME_STAT_EVOLVED_POKEMON);
}
break;
- case 15: // check if it wants to learn a new move
+ case EVOSTATE_TRY_LEARN_MOVE:
if (!IsTextPrinterActive(0))
{
- var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove);
- if (var != 0 && !gTasks[taskID].tEvoWasStopped)
+ var = MonTryLearningNewMove(mon, gTasks[taskId].tLearnsFirstMove);
+ if (var != MOVE_NONE && !gTasks[taskId].tEvoWasStopped)
{
u8 text[20];
- if (!(gTasks[taskID].tBits & TASK_BIT_LEARN_MOVE))
+ if (!(gTasks[taskId].tBits & TASK_BIT_LEARN_MOVE))
{
StopMapMusic();
Overworld_PlaySpecialMapMusic();
}
- gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE;
- gTasks[taskID].tLearnsFirstMove = FALSE;
- gTasks[taskID].tLearnMoveState = 0;
+ gTasks[taskId].tBits |= TASK_BIT_LEARN_MOVE;
+ gTasks[taskId].tLearnsFirstMove = FALSE;
+ gTasks[taskId].tLearnMoveState = MVSTATE_INTRO_MSG_1;
GetMonData(mon, MON_DATA_NICKNAME, text);
StringCopy10(gBattleTextBuff1, text);
if (var == MON_HAS_MAX_MOVES)
- gTasks[taskID].tState = 22;
+ gTasks[taskId].tState = EVOSTATE_REPLACE_MOVE;
else if (var == MON_ALREADY_KNOWS_MOVE)
break;
else
- gTasks[taskID].tState = 20; // move has been learned
+ gTasks[taskId].tState = EVOSTATE_LEARNED_MOVE;
}
- else // no move to learn
+ else // no move to learn, or evolution was canceled
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
}
}
break;
- case 16: // task has finished, return
+ case EVOSTATE_END:
if (!gPaletteFade.active)
{
- if (!(gTasks[taskID].tBits & TASK_BIT_LEARN_MOVE))
+ if (!(gTasks[taskId].tBits & TASK_BIT_LEARN_MOVE))
{
StopMapMusic();
Overworld_PlaySpecialMapMusic();
}
- if (!gTasks[taskID].tEvoWasStopped)
- CreateShedinja(gTasks[taskID].tPreEvoSpecies, mon);
+ if (!gTasks[taskId].tEvoWasStopped)
+ CreateShedinja(gTasks[taskId].tPreEvoSpecies, mon);
- DestroyTask(taskID);
+ DestroyTask(taskId);
FreeMonSpritesGfx();
Free(sEvoStructPtr);
sEvoStructPtr = NULL;
@@ -774,91 +825,98 @@ static void Task_EvolutionScene(u8 taskID)
SetMainCallback2(gCB2_AfterEvolution);
}
break;
- case 17: // evolution has been canceled, stop music and re-fade palette
- if (!gTasks[sEvoGraphicsTaskID].isActive)
+ case EVOSTATE_CANCEL:
+ if (!gTasks[sEvoGraphicsTaskId].isActive)
{
m4aMPlayAllStop();
BeginNormalPaletteFade(0x6001C, 0, 0x10, 0, RGB_WHITE);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
}
break;
- case 18: // animate pokemon trying to evolve again, evolution has been stopped
+ case EVOSTATE_CANCEL_MON_ANIM:
if (!gPaletteFade.active)
{
- EvoScene_DoMonAnimation(sEvoStructPtr->preEvoSpriteID, gTasks[taskID].tPreEvoSpecies);
- gTasks[taskID].tState++;
+ EvoScene_DoMonAnimAndCry(sEvoStructPtr->preEvoSpriteId, gTasks[taskId].tPreEvoSpecies);
+ gTasks[taskId].tState++;
}
break;
- case 19: // after the animation, print the string 'WHOA IT DID NOT EVOLVE!!!'
- if (EvoScene_IsMonAnimFinished(sEvoStructPtr->preEvoSpriteID))
+ case EVOSTATE_CANCEL_MSG:
+ if (EvoScene_IsMonAnimFinished(sEvoStructPtr->preEvoSpriteId))
{
- if (gTasks[taskID].tEvoWasStopped)
+ if (gTasks[taskId].tEvoWasStopped)
StringExpandPlaceholders(gStringVar4, gText_EllipsisQuestionMark);
else // Fire Red leftover probably
StringExpandPlaceholders(gStringVar4, gText_PkmnStoppedEvolving);
BattlePutTextOnWindow(gStringVar4, 0);
- gTasks[taskID].tEvoWasStopped = TRUE;
- gTasks[taskID].tState = 15;
+ gTasks[taskId].tEvoWasStopped = TRUE;
+ gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE;
}
break;
- case 20: // pokemon learned a new move, print string and play a fanfare
+ case EVOSTATE_LEARNED_MOVE:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
BufferMoveToLearnIntoBattleTextBuff2();
PlayFanfare(MUS_LEVEL_UP);
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
- gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
- gTasks[taskID].tState++;
+ gTasks[taskId].tLearnsFirstMove = 0x40; // re-used as a counter
+ gTasks[taskId].tState++;
}
break;
- case 21: // wait a bit and check if can learn another move
- if (!IsTextPrinterActive(0) && !IsSEPlaying() && --gTasks[taskID].tLearnsFirstMove == 0)
- gTasks[taskID].tState = 15;
+ case EVOSTATE_TRY_LEARN_ANOTHER_MOVE:
+ if (!IsTextPrinterActive(0) && !IsSEPlaying() && --gTasks[taskId].tLearnsFirstMove == 0)
+ gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE;
break;
- case 22: // try to learn a new move
- switch (gTasks[taskID].tLearnMoveState)
+ case EVOSTATE_REPLACE_MOVE:
+ switch (gTasks[taskId].tLearnMoveState)
{
- case 0:
+ case MVSTATE_INTRO_MSG_1:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
+ // "{mon} is trying to learn {move}"
BufferMoveToLearnIntoBattleTextBuff2();
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
}
break;
- case 1:
+ case MVSTATE_INTRO_MSG_2:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
+ // "But, {mon} can't learn more than four moves"
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
}
break;
- case 2:
+ case MVSTATE_INTRO_MSG_3:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
+ // "Delete a move to make room for {move}?"
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
- gTasks[taskID].tData7 = 5;
- gTasks[taskID].tData8 = 10;
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveYesState = MVSTATE_SHOW_MOVE_SELECT;
+ gTasks[taskId].tLearnMoveNoState = MVSTATE_ASK_CANCEL;
+ gTasks[taskId].tLearnMoveState++;
}
- case 3:
+ case MVSTATE_PRINT_YES_NO:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
sEvoCursorPos = 0;
BattleCreateYesNoCursorAt(0);
}
break;
- case 4:
+ case MVSTATE_HANDLE_YES_NO:
+ // This Yes/No is used for both the initial "delete move?" prompt
+ // and for the "stop learning move?" prompt
+ // What Yes/No do next is determined by tLearnMoveYesState / tLearnMoveNoState
if (JOY_NEW(DPAD_UP) && sEvoCursorPos != 0)
{
+ // Moved onto YES
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(sEvoCursorPos);
sEvoCursorPos = 0;
@@ -866,6 +924,7 @@ static void Task_EvolutionScene(u8 taskID)
}
if (JOY_NEW(DPAD_DOWN) && sEvoCursorPos == 0)
{
+ // Moved onto NO
PlaySE(SE_SELECT);
BattleDestroyYesNoCursorAt(sEvoCursorPos);
sEvoCursorPos = 1;
@@ -878,350 +937,403 @@ static void Task_EvolutionScene(u8 taskID)
if (sEvoCursorPos != 0)
{
- gTasks[taskID].tLearnMoveState = gTasks[taskID].tData8;
+ // NO
+ gTasks[taskId].tLearnMoveState = gTasks[taskId].tLearnMoveNoState;
}
else
{
- gTasks[taskID].tLearnMoveState = gTasks[taskID].tData7;
- if (gTasks[taskID].tLearnMoveState == 5)
+ // YES
+ gTasks[taskId].tLearnMoveState = gTasks[taskId].tLearnMoveYesState;
+ if (gTasks[taskId].tLearnMoveState == MVSTATE_SHOW_MOVE_SELECT)
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
}
}
if (JOY_NEW(B_BUTTON))
{
+ // Equivalent to selecting NO
HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
PlaySE(SE_SELECT);
- gTasks[taskID].tLearnMoveState = gTasks[taskID].tData8;
+ gTasks[taskId].tLearnMoveState = gTasks[taskId].tLearnMoveNoState;
}
break;
- case 5:
+ case MVSTATE_SHOW_MOVE_SELECT:
if (!gPaletteFade.active)
{
FreeAllWindowBuffers();
- ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID,
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskId].tPartyId,
gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics,
gMoveToLearn);
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
}
break;
- case 6:
+ case MVSTATE_HANDLE_MOVE_SELECT:
if (!gPaletteFade.active && gMain.callback2 == CB2_EvolutionSceneUpdate)
{
var = GetMoveSlotToReplace();
if (var == MAX_MON_MOVES)
{
- gTasks[taskID].tLearnMoveState = 10;
+ // Didn't select move slot
+ gTasks[taskId].tLearnMoveState = MVSTATE_ASK_CANCEL;
}
else
{
+ // Selected move to forget
u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
if (IsHMMove2(move))
{
+ // Can't forget HMs
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
- gTasks[taskID].tLearnMoveState = 12;
+ gTasks[taskId].tLearnMoveState = MVSTATE_RETRY_AFTER_HM;
}
else
{
+ // Forget move
PREPARE_MOVE_BUFFER(gBattleTextBuff2, move)
RemoveMonPPBonus(mon, var);
SetMonMoveSlot(mon, gMoveToLearn, var);
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
}
}
}
break;
- case 7:
+ case MVSTATE_FORGET_MSG_1:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
break;
- case 8:
+ case MVSTATE_FORGET_MSG_2:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
}
break;
- case 9:
+ case MVSTATE_LEARNED_MOVE:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
- gTasks[taskID].tState = 20;
+ gTasks[taskId].tState = EVOSTATE_LEARNED_MOVE;
}
break;
- case 10:
+ case MVSTATE_ASK_CANCEL:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
- gTasks[taskID].tData7 = 11;
- gTasks[taskID].tData8 = 0;
- gTasks[taskID].tLearnMoveState = 3;
+ gTasks[taskId].tLearnMoveYesState = MVSTATE_CANCEL;
+ gTasks[taskId].tLearnMoveNoState = MVSTATE_INTRO_MSG_1;
+ gTasks[taskId].tLearnMoveState = MVSTATE_PRINT_YES_NO;
break;
- case 11:
+ case MVSTATE_CANCEL:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]);
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
- gTasks[taskID].tState = 15;
+ gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE;
break;
- case 12:
+ case MVSTATE_RETRY_AFTER_HM:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
- gTasks[taskID].tLearnMoveState = 5;
+ gTasks[taskId].tLearnMoveState = MVSTATE_SHOW_MOVE_SELECT;
break;
}
break;
}
}
-static void Task_TradeEvolutionScene(u8 taskID)
+// States for the main switch in Task_TradeEvolutionScene
+enum {
+ T_EVOSTATE_INTRO_MSG,
+ T_EVOSTATE_INTRO_CRY,
+ T_EVOSTATE_INTRO_SOUND,
+ T_EVOSTATE_START_MUSIC,
+ T_EVOSTATE_START_BG_AND_SPARKLE_SPIRAL,
+ T_EVOSTATE_SPARKLE_ARC,
+ T_EVOSTATE_CYCLE_MON_SPRITE,
+ T_EVOSTATE_WAIT_CYCLE_MON_SPRITE,
+ T_EVOSTATE_SPARKLE_CIRCLE,
+ T_EVOSTATE_SPARKLE_SPRAY,
+ T_EVOSTATE_EVO_SOUND,
+ T_EVOSTATE_EVO_MON_ANIM,
+ T_EVOSTATE_SET_MON_EVOLVED,
+ T_EVOSTATE_TRY_LEARN_MOVE,
+ T_EVOSTATE_END,
+ T_EVOSTATE_CANCEL,
+ T_EVOSTATE_CANCEL_MON_ANIM,
+ T_EVOSTATE_CANCEL_MSG,
+ T_EVOSTATE_LEARNED_MOVE,
+ T_EVOSTATE_TRY_LEARN_ANOTHER_MOVE,
+ T_EVOSTATE_REPLACE_MOVE,
+};
+
+// States for the switch in T_EVOSTATE_REPLACE_MOVE
+enum {
+ T_MVSTATE_INTRO_MSG_1,
+ T_MVSTATE_INTRO_MSG_2,
+ T_MVSTATE_INTRO_MSG_3,
+ T_MVSTATE_PRINT_YES_NO,
+ T_MVSTATE_HANDLE_YES_NO,
+ T_MVSTATE_SHOW_MOVE_SELECT,
+ T_MVSTATE_HANDLE_MOVE_SELECT,
+ T_MVSTATE_FORGET_MSG,
+ T_MVSTATE_LEARNED_MOVE,
+ T_MVSTATE_ASK_CANCEL,
+ T_MVSTATE_CANCEL,
+ T_MVSTATE_RETRY_AFTER_HM,
+};
+
+// Compare to Task_EvolutionScene, very similar
+static void Task_TradeEvolutionScene(u8 taskId)
{
u32 var = 0;
- struct Pokemon* mon = &gPlayerParty[gTasks[taskID].tPartyID];
+ struct Pokemon* mon = &gPlayerParty[gTasks[taskId].tPartyId];
- switch (gTasks[taskID].tState)
+ switch (gTasks[taskId].tState)
{
- case 0:
+ case T_EVOSTATE_INTRO_MSG:
StringExpandPlaceholders(gStringVar4, gText_PkmnIsEvolving);
DrawTextOnTradeWindow(0, gStringVar4, 1);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
break;
- case 1:
+ case T_EVOSTATE_INTRO_CRY:
if (!IsTextPrinterActive(0))
{
- PlayCry1(gTasks[taskID].tPreEvoSpecies, 0);
- gTasks[taskID].tState++;
+ PlayCry1(gTasks[taskId].tPreEvoSpecies, 0);
+ gTasks[taskId].tState++;
}
break;
- case 2:
+ case T_EVOSTATE_INTRO_SOUND:
if (IsCryFinished())
{
m4aSongNumStop(MUS_EVOLUTION);
PlaySE(MUS_EVOLUTION_INTRO);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
}
break;
- case 3:
+ case T_EVOSTATE_START_MUSIC:
if (!IsSEPlaying())
{
PlayBGM(MUS_EVOLUTION);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
BeginNormalPaletteFade(0x1C, 4, 0, 0x10, RGB_BLACK);
}
break;
- case 4:
+ case T_EVOSTATE_START_BG_AND_SPARKLE_SPIRAL:
if (!gPaletteFade.active)
{
- InitMovingBackgroundTask(TRUE);
- var = gSprites[sEvoStructPtr->preEvoSpriteID].oam.paletteNum + 16;
- sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(var);
- gTasks[taskID].tState++;
+ StartBgAnimation(TRUE);
+ var = gSprites[sEvoStructPtr->preEvoSpriteId].oam.paletteNum + 16;
+ sEvoGraphicsTaskId = EvolutionSparkles_SpiralUpward(var);
+ gTasks[taskId].tState++;
SetGpuReg(REG_OFFSET_BG3CNT, 0x603);
}
break;
- case 5:
- if (!gTasks[sEvoGraphicsTaskID].isActive)
+ case T_EVOSTATE_SPARKLE_ARC:
+ if (!gTasks[sEvoGraphicsTaskId].isActive)
{
- gTasks[taskID].tState++;
- sEvoStructPtr->field_3 = 1;
- sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2();
+ gTasks[taskId].tState++;
+ sEvoStructPtr->delayTimer = 1;
+ sEvoGraphicsTaskId = EvolutionSparkles_ArcDown();
}
break;
- case 6:
- if (!gTasks[sEvoGraphicsTaskID].isActive)
+ case T_EVOSTATE_CYCLE_MON_SPRITE:
+ if (!gTasks[sEvoGraphicsTaskId].isActive)
{
- sEvoGraphicsTaskID = sub_817C3A0(sEvoStructPtr->preEvoSpriteID, sEvoStructPtr->postEvoSpriteID);
- gTasks[taskID].tState++;
+ sEvoGraphicsTaskId = CycleEvolutionMonSprite(sEvoStructPtr->preEvoSpriteId, sEvoStructPtr->postEvoSpriteId);
+ gTasks[taskId].tState++;
}
break;
- case 7:
- if (--sEvoStructPtr->field_3 == 0)
+ case T_EVOSTATE_WAIT_CYCLE_MON_SPRITE:
+ if (--sEvoStructPtr->delayTimer == 0)
{
- sEvoStructPtr->field_3 = 3;
- if (!gTasks[sEvoGraphicsTaskID].isActive)
- gTasks[taskID].tState++;
+ sEvoStructPtr->delayTimer = 3;
+ if (!gTasks[sEvoGraphicsTaskId].isActive)
+ gTasks[taskId].tState++;
}
break;
- case 8:
- sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1();
- gTasks[taskID].tState++;
+ case T_EVOSTATE_SPARKLE_CIRCLE:
+ sEvoGraphicsTaskId = EvolutionSparkles_CircleInward();
+ gTasks[taskId].tState++;
break;
- case 9:
- if (!gTasks[sEvoGraphicsTaskID].isActive)
+ case T_EVOSTATE_SPARKLE_SPRAY:
+ if (!gTasks[sEvoGraphicsTaskId].isActive)
{
- sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash_Trade(gTasks[taskID].tPostEvoSpecies);
- gTasks[taskID].tState++;
+ sEvoGraphicsTaskId = EvolutionSparkles_SprayAndFlash_Trade(gTasks[taskId].tPostEvoSpecies);
+ gTasks[taskId].tState++;
}
break;
- case 10:
- if (!gTasks[sEvoGraphicsTaskID].isActive)
+ case T_EVOSTATE_EVO_SOUND:
+ if (!gTasks[sEvoGraphicsTaskId].isActive)
{
PlaySE(SE_EXP);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
}
break;
- case 11:
+ case T_EVOSTATE_EVO_MON_ANIM:
if (IsSEPlaying())
{
- Free(sEvoMovingBgPtr);
- EvoScene_DoMonAnimation(sEvoStructPtr->postEvoSpriteID, gTasks[taskID].tPostEvoSpecies);
- memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, 0x60);
- gTasks[taskID].tState++;
+ // Restore bg, do mon anim/cry
+ Free(sBgAnimPal);
+ EvoScene_DoMonAnimAndCry(sEvoStructPtr->postEvoSpriteId, gTasks[taskId].tPostEvoSpecies);
+ memcpy(&gPlttBufferUnfaded[0x20], sEvoStructPtr->savedPalette, sizeof(sEvoStructPtr->savedPalette));
+ gTasks[taskId].tState++;
}
break;
- case 12:
+ case T_EVOSTATE_SET_MON_EVOLVED:
if (IsCryFinished())
{
StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved);
DrawTextOnTradeWindow(0, gStringVar4, 1);
PlayFanfare(MUS_EVOLVED);
- gTasks[taskID].tState++;
- SetMonData(mon, MON_DATA_SPECIES, (&gTasks[taskID].tPostEvoSpecies));
+ gTasks[taskId].tState++;
+ SetMonData(mon, MON_DATA_SPECIES, (&gTasks[taskId].tPostEvoSpecies));
CalculateMonStats(mon);
- EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies);
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), FLAG_SET_SEEN);
- GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), FLAG_SET_CAUGHT);
+ EvolutionRenameMon(mon, gTasks[taskId].tPreEvoSpecies, gTasks[taskId].tPostEvoSpecies);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskId].tPostEvoSpecies), FLAG_SET_SEEN);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskId].tPostEvoSpecies), FLAG_SET_CAUGHT);
IncrementGameStat(GAME_STAT_EVOLVED_POKEMON);
}
break;
- case 13:
+ case T_EVOSTATE_TRY_LEARN_MOVE:
if (!IsTextPrinterActive(0) && IsFanfareTaskInactive() == TRUE)
{
- var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove);
- if (var != 0 && !gTasks[taskID].tEvoWasStopped)
+ var = MonTryLearningNewMove(mon, gTasks[taskId].tLearnsFirstMove);
+ if (var != MOVE_NONE && !gTasks[taskId].tEvoWasStopped)
{
u8 text[20];
- gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE;
- gTasks[taskID].tLearnsFirstMove = FALSE;
- gTasks[taskID].tLearnMoveState = 0;
+ gTasks[taskId].tBits |= TASK_BIT_LEARN_MOVE;
+ gTasks[taskId].tLearnsFirstMove = FALSE;
+ gTasks[taskId].tLearnMoveState = 0;
GetMonData(mon, MON_DATA_NICKNAME, text);
StringCopy10(gBattleTextBuff1, text);
if (var == MON_HAS_MAX_MOVES)
- gTasks[taskID].tState = 20;
+ gTasks[taskId].tState = T_EVOSTATE_REPLACE_MOVE;
else if (var == MON_ALREADY_KNOWS_MOVE)
break;
else
- gTasks[taskID].tState = 18;
+ gTasks[taskId].tState = T_EVOSTATE_LEARNED_MOVE;
}
else
{
PlayBGM(MUS_EVOLUTION);
DrawTextOnTradeWindow(0, gText_CommunicationStandby5, 1);
- gTasks[taskID].tState++;
+ gTasks[taskId].tState++;
}
}
break;
- case 14:
+ case T_EVOSTATE_END:
if (!IsTextPrinterActive(0))
{
- DestroyTask(taskID);
+ DestroyTask(taskId);
Free(sEvoStructPtr);
sEvoStructPtr = NULL;
gTextFlags.useAlternateDownArrow = 0;
SetMainCallback2(gCB2_AfterEvolution);
}
break;
- case 15:
- if (!gTasks[sEvoGraphicsTaskID].isActive)
+ case T_EVOSTATE_CANCEL:
+ if (!gTasks[sEvoGraphicsTaskId].isActive)
{
m4aMPlayAllStop();
- BeginNormalPaletteFade((1 << (gSprites[sEvoStructPtr->preEvoSpriteID].oam.paletteNum + 16)) | (0x4001C), 0, 0x10, 0, RGB_WHITE);
- gTasks[taskID].tState++;
+ BeginNormalPaletteFade((1 << (gSprites[sEvoStructPtr->preEvoSpriteId].oam.paletteNum + 16)) | (0x4001C), 0, 0x10, 0, RGB_WHITE);
+ gTasks[taskId].tState++;
}
break;
- case 16:
+ case T_EVOSTATE_CANCEL_MON_ANIM:
if (!gPaletteFade.active)
{
- EvoScene_DoMonAnimation(sEvoStructPtr->preEvoSpriteID, gTasks[taskID].tPreEvoSpecies);
- gTasks[taskID].tState++;
+ EvoScene_DoMonAnimAndCry(sEvoStructPtr->preEvoSpriteId, gTasks[taskId].tPreEvoSpecies);
+ gTasks[taskId].tState++;
}
break;
- case 17:
- if (EvoScene_IsMonAnimFinished(sEvoStructPtr->preEvoSpriteID))
+ case T_EVOSTATE_CANCEL_MSG:
+ if (EvoScene_IsMonAnimFinished(sEvoStructPtr->preEvoSpriteId))
{
StringExpandPlaceholders(gStringVar4, gText_EllipsisQuestionMark);
DrawTextOnTradeWindow(0, gStringVar4, 1);
- gTasks[taskID].tEvoWasStopped = 1;
- gTasks[taskID].tState = 13;
+ gTasks[taskId].tEvoWasStopped = TRUE;
+ gTasks[taskId].tState = T_EVOSTATE_TRY_LEARN_MOVE;
}
break;
- case 18:
+ case T_EVOSTATE_LEARNED_MOVE:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
BufferMoveToLearnIntoBattleTextBuff2();
PlayFanfare(MUS_LEVEL_UP);
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]);
DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1);
- gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
- gTasks[taskID].tState++;
+ gTasks[taskId].tLearnsFirstMove = 0x40; // re-used as a counter
+ gTasks[taskId].tState++;
}
break;
- case 19:
- if (!IsTextPrinterActive(0) && IsFanfareTaskInactive() == TRUE && --gTasks[taskID].tLearnsFirstMove == 0)
- gTasks[taskID].tState = 13;
+ case T_EVOSTATE_TRY_LEARN_ANOTHER_MOVE:
+ if (!IsTextPrinterActive(0) && IsFanfareTaskInactive() == TRUE && --gTasks[taskId].tLearnsFirstMove == 0)
+ gTasks[taskId].tState = T_EVOSTATE_TRY_LEARN_MOVE;
break;
- case 20:
- switch (gTasks[taskID].tLearnMoveState)
+ case T_EVOSTATE_REPLACE_MOVE:
+ switch (gTasks[taskId].tLearnMoveState)
{
- case 0:
+ case T_MVSTATE_INTRO_MSG_1:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
+ // "{mon} is trying to learn {move}"
BufferMoveToLearnIntoBattleTextBuff2();
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]);
DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1);
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
}
break;
- case 1:
+ case T_MVSTATE_INTRO_MSG_2:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
+ // "But, {mon} can't learn more than four moves"
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]);
DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1);
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
}
break;
- case 2:
+ case T_MVSTATE_INTRO_MSG_3:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
+ // "Delete a move to make room for {move}?"
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]);
DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1);
- gTasks[taskID].tData7 = 5;
- gTasks[taskID].tData8 = 9;
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveYesState = T_MVSTATE_SHOW_MOVE_SELECT;
+ gTasks[taskId].tLearnMoveNoState = T_MVSTATE_ASK_CANCEL;
+ gTasks[taskId].tLearnMoveState++;
}
- case 3:
+ case T_MVSTATE_PRINT_YES_NO:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
LoadUserWindowBorderGfx(0, 0xA8, 0xE0);
CreateYesNoMenu(&gTradeEvolutionSceneYesNoWindowTemplate, 0xA8, 0xE, 0);
sEvoCursorPos = 0;
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
sEvoCursorPos = 0;
}
break;
- case 4:
+ case T_MVSTATE_HANDLE_YES_NO:
switch (Menu_ProcessInputNoWrapClearOnChoose())
{
- case 0:
+ case 0: // YES
sEvoCursorPos = 0;
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_EMPTYSTRING3 - BATTLESTRINGS_ID_ADDER]);
DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1);
- gTasks[taskID].tLearnMoveState = gTasks[taskID].tData7;
- if (gTasks[taskID].tLearnMoveState == 5)
+ gTasks[taskId].tLearnMoveState = gTasks[taskId].tLearnMoveYesState;
+ if (gTasks[taskId].tLearnMoveState == T_MVSTATE_SHOW_MOVE_SELECT)
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
break;
- case 1:
- case -1:
+ case 1: // NO
+ case MENU_B_PRESSED:
sEvoCursorPos = 1;
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_EMPTYSTRING3 - BATTLESTRINGS_ID_ADDER]);
DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1);
- gTasks[taskID].tLearnMoveState = gTasks[taskID].tData8;
+ gTasks[taskId].tLearnMoveState = gTasks[taskId].tLearnMoveNoState;
break;
}
break;
- case 5:
+ case T_MVSTATE_SHOW_MOVE_SELECT:
if (!gPaletteFade.active)
{
if (gWirelessCommType)
@@ -1232,73 +1344,77 @@ static void Task_TradeEvolutionScene(u8 taskID)
Free(GetBgTilemapBuffer(0));
FreeAllWindowBuffers();
- ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskID].tPartyID,
+ ShowSelectMovePokemonSummaryScreen(gPlayerParty, gTasks[taskId].tPartyId,
gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics,
gMoveToLearn);
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
}
break;
- case 6:
+ case T_MVSTATE_HANDLE_MOVE_SELECT:
if (!gPaletteFade.active && gMain.callback2 == CB2_TradeEvolutionSceneUpdate)
{
var = GetMoveSlotToReplace();
if (var == MAX_MON_MOVES)
{
- gTasks[taskID].tLearnMoveState = 9;
+ // Didn't select move slot
+ gTasks[taskId].tLearnMoveState = T_MVSTATE_ASK_CANCEL;
}
else
{
+ // Selected move to forget
u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
if (IsHMMove2(move))
{
+ // Can't forget HMs
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]);
DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1);
- gTasks[taskID].tLearnMoveState = 11;
+ gTasks[taskId].tLearnMoveState = T_MVSTATE_RETRY_AFTER_HM;
}
else
{
+ // Forget move
PREPARE_MOVE_BUFFER(gBattleTextBuff2, move)
RemoveMonPPBonus(mon, var);
SetMonMoveSlot(mon, gMoveToLearn, var);
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]);
DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1);
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
}
}
}
break;
- case 7:
+ case T_MVSTATE_FORGET_MSG:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]);
DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1);
- gTasks[taskID].tLearnMoveState++;
+ gTasks[taskId].tLearnMoveState++;
}
break;
- case 8:
+ case T_MVSTATE_LEARNED_MOVE:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]);
DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1);
- gTasks[taskID].tState = 18;
+ gTasks[taskId].tState = T_EVOSTATE_LEARNED_MOVE;
}
break;
- case 9:
+ case T_MVSTATE_ASK_CANCEL:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]);
DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1);
- gTasks[taskID].tData7 = 10;
- gTasks[taskID].tData8 = 0;
- gTasks[taskID].tLearnMoveState = 3;
+ gTasks[taskId].tLearnMoveYesState = T_MVSTATE_CANCEL;
+ gTasks[taskId].tLearnMoveNoState = T_MVSTATE_INTRO_MSG_1;
+ gTasks[taskId].tLearnMoveState = T_MVSTATE_PRINT_YES_NO;
break;
- case 10:
+ case T_MVSTATE_CANCEL:
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]);
DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1);
- gTasks[taskID].tState = 13;
+ gTasks[taskId].tState = T_EVOSTATE_TRY_LEARN_MOVE;
break;
- case 11:
+ case T_MVSTATE_RETRY_AFTER_HM:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
- gTasks[taskID].tLearnMoveState = 5;
+ gTasks[taskId].tLearnMoveState = T_MVSTATE_SHOW_MOVE_SELECT;
break;
}
break;
@@ -1312,10 +1428,10 @@ static void Task_TradeEvolutionScene(u8 taskID)
#undef tBits
#undef tLearnsFirstMove
#undef tLearnMoveState
-#undef tData7
-#undef tData8
+#undef tLearnMoveYesState
+#undef tLearnMoveNoState
#undef tEvoWasStopped
-#undef tPartyID
+#undef tPartyId
static void EvoDummyFunc(void)
{
@@ -1355,57 +1471,87 @@ static void VBlankCB_TradeEvolutionScene(void)
ScanlineEffect_InitHBlankDmaTransfer();
}
-static void sub_813FDEC(u8 taskId)
+#define tCycleTimer data[0]
+#define tPalStage data[1]
+#define tControlStage data[2]
+#define tNumCycles data[3]
+#define tStartTimer data[5]
+#define tPaused data[6]
+
+// See comments above sBgAnim_PaletteControl
+#define START_PAL sBgAnim_PaletteControl[tControlStage][0]
+#define END_PAL sBgAnim_PaletteControl[tControlStage][1]
+#define CYCLES sBgAnim_PaletteControl[tControlStage][2]
+#define DELAY sBgAnim_PaletteControl[tControlStage][3]
+
+// Cycles the background through a set range of palettes in a series
+// of stages, each stage having a different palette range and timing
+static void Task_UpdateBgPalette(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (data[6] != 0)
+ if (tPaused)
return;
- if (data[5]++ < 20)
+ if (tStartTimer++ < 20)
return;
- if (data[0]++ > sUnknown_085B58C9[data[2]][3])
+ if (tCycleTimer++ > DELAY)
{
- if (sUnknown_085B58C9[data[2]][1] == data[1])
+ if (END_PAL == tPalStage)
{
- data[3]++;
- if (data[3] == sUnknown_085B58C9[data[2]][2])
+ // Reached final palette in current stage, completed a 'cycle'
+ // If this is the final cycle for this stage, move to the next stage
+ tNumCycles++;
+ if (tNumCycles == CYCLES)
{
- data[3] = 0;
- data[2]++;
+ tNumCycles = 0;
+ tControlStage++;
}
- data[1] = sUnknown_085B58C9[data[2]][0];
+ tPalStage = START_PAL;
}
else
{
- LoadPalette(&sEvoMovingBgPtr[data[1] * 16], 0xA0, 0x20);
- data[0] = 0;
- data[1]++;
+ // Haven't reached final palette in current stage, load the current palette
+ LoadPalette(&sBgAnimPal[tPalStage * 16], 0xA0, 0x20);
+ tCycleTimer = 0;
+ tPalStage++;
}
}
- if (data[2] == 4)
+ if (tControlStage == (int)ARRAY_COUNT(sBgAnim_PaletteControl[0]))
DestroyTask(taskId);
}
-static void sub_813FEA4(bool8 isLink)
+#undef tCycleTimer
+#undef tPalStage
+#undef tControlStage
+#undef tNumCycles
+#undef tStartTimer
+#undef START_PAL
+#undef END_PAL
+#undef CYCLES
+#undef DELAY
+
+#define tIsLink data[2]
+
+static void CreateBgAnimTask(bool8 isLink)
{
- u8 taskId = CreateTask(sub_813FEE8, 7);
+ u8 taskId = CreateTask(Task_AnimateBg, 7);
if (!isLink)
- gTasks[taskId].data[2] = 0;
+ gTasks[taskId].tIsLink = FALSE;
else
- gTasks[taskId].data[2] = 1;
+ gTasks[taskId].tIsLink = TRUE;
}
-static void sub_813FEE8(u8 taskId)
+static void Task_AnimateBg(u8 taskId)
{
u16 *outer_X, *outer_Y;
u16 *inner_X = &gBattle_BG1_X;
u16 *inner_Y = &gBattle_BG1_Y;
- if (!gTasks[taskId].data[2])
+ if (!gTasks[taskId].tIsLink)
{
outer_X = &gBattle_BG2_X;
outer_Y = &gBattle_BG2_Y;
@@ -1425,7 +1571,7 @@ static void sub_813FEE8(u8 taskId)
*outer_X = Cos(gTasks[taskId].data[1], 4) + 8;
*outer_Y = Sin(gTasks[taskId].data[1], 4) + 16;
- if (!FuncIsActiveTask(sub_813FDEC))
+ if (!FuncIsActiveTask(Task_UpdateBgPalette))
{
DestroyTask(taskId);
@@ -1437,37 +1583,39 @@ static void sub_813FEE8(u8 taskId)
}
}
-static void InitMovingBgValues(u16 *movingBgs)
+#undef tIsLink
+
+static void InitMovingBgPalette(u16 *palette)
{
s32 i, j;
- for (i = 0; i < 50; i++)
+ for (i = 0; i < (int)ARRAY_COUNT(sBgAnim_PalIndexes); i++)
{
for (j = 0; j < 16; j++)
{
- movingBgs[i * 16 + j] = sUnknown_085B5884[sUnknown_085B58D9[i][j]];
+ palette[i * 16 + j] = sBgAnim_Pal[sBgAnim_PalIndexes[i][j]];
}
}
}
-static void InitMovingBackgroundTask(bool8 isLink)
+static void StartBgAnimation(bool8 isLink)
{
u8 innerBgId, outerBgId;
- sEvoMovingBgPtr = AllocZeroed(0x640);
- InitMovingBgValues(sEvoMovingBgPtr);
+ sBgAnimPal = AllocZeroed(0x640);
+ InitMovingBgPalette(sBgAnimPal);
if (!isLink)
innerBgId = 1, outerBgId = 2;
else
innerBgId = 1, outerBgId = 3;
- LoadPalette(sUnknown_085B51E4, 0xA0, 0x20);
+ LoadPalette(sBgAnim_Intro_Pal, 0xA0, 0x20);
- DecompressAndLoadBgGfxUsingHeap(1, sUnknown_085B4134, FALSE, 0, 0);
- CopyToBgTilemapBuffer(1, sUnknown_085B482C, 0, 0);
- CopyToBgTilemapBuffer(outerBgId, sUnknown_085B4D10, 0, 0);
- CopyBgTilemapBufferToVram(1);
+ DecompressAndLoadBgGfxUsingHeap(1, sBgAnim_Gfx, FALSE, 0, 0);
+ CopyToBgTilemapBuffer(innerBgId, sBgAnim_Inner_Tilemap, 0, 0);
+ CopyToBgTilemapBuffer(outerBgId, sBgAnim_Outer_Tilemap, 0, 0);
+ CopyBgTilemapBufferToVram(innerBgId);
CopyBgTilemapBufferToVram(outerBgId);
if (!isLink)
@@ -1489,34 +1637,37 @@ static void InitMovingBackgroundTask(bool8 isLink)
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG1_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP);
}
- CreateTask(sub_813FDEC, 5);
- sub_813FEA4(isLink);
+ CreateTask(Task_UpdateBgPalette, 5);
+ CreateBgAnimTask(isLink);
}
-static void sub_8140100(void) // unused
+// Unused
+static void PauseBgPaletteAnim(void)
{
- u8 taskId = FindTaskIdByFunc(sub_813FDEC);
+ u8 taskId = FindTaskIdByFunc(Task_UpdateBgPalette);
if (taskId != 0xFF)
- gTasks[taskId].data[6] = 1;
+ gTasks[taskId].tPaused = TRUE;
FillPalette(0, 0xA0, 0x20);
}
-static void sub_8140134(void)
+#undef tPaused
+
+static void StopBgAnimation(void)
{
u8 taskId;
- if ((taskId = FindTaskIdByFunc(sub_813FDEC)) != 0xFF)
+ if ((taskId = FindTaskIdByFunc(Task_UpdateBgPalette)) != 0xFF)
DestroyTask(taskId);
- if ((taskId = FindTaskIdByFunc(sub_813FEE8)) != 0xFF)
+ if ((taskId = FindTaskIdByFunc(Task_AnimateBg)) != 0xFF)
DestroyTask(taskId);
FillPalette(0, 0xA0, 0x20);
- sub_8140174();
+ RestoreBgAfterAnim();
}
-static void sub_8140174(void)
+static void RestoreBgAfterAnim(void)
{
SetGpuReg(REG_OFFSET_BLDCNT, 0);
gBattle_BG1_X = 0;
@@ -1525,10 +1676,10 @@ static void sub_8140174(void)
SetBgAttribute(1, BG_ATTR_PRIORITY, GetBattleBgTemplateData(1, 5));
SetBgAttribute(2, BG_ATTR_PRIORITY, GetBattleBgTemplateData(2, 5));
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP);
- Free(sEvoMovingBgPtr);
+ Free(sBgAnimPal);
}
-static void EvoScene_DoMonAnimation(u8 monSpriteId, u16 speciesId)
+static void EvoScene_DoMonAnimAndCry(u8 monSpriteId, u16 speciesId)
{
DoMonFrontSpriteAnimation(&gSprites[monSpriteId], speciesId, FALSE, 0);
}
diff --git a/src/field_effect.c b/src/field_effect.c
index b1837c514..467a0f656 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -967,8 +967,8 @@ void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b)
curBlue -= ((curBlue * b) >> 4);
color = curRed;
- color |= curGreen << 5;
- color |= curBlue << 10;
+ color |= (curGreen << 5);
+ color |= (curBlue << 10);
gPlttBufferFaded[i] = color;
}
diff --git a/src/field_weather.c b/src/field_weather.c
index 25ee0582a..02e3a0cb0 100644
--- a/src/field_weather.c
+++ b/src/field_weather.c
@@ -494,7 +494,7 @@ static void ApplyGammaShift(u8 startPalIndex, u8 numPalettes, s8 gammaIndex)
r = gammaTable[baseColor.r];
g = gammaTable[baseColor.g];
b = gammaTable[baseColor.b];
- gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r;
+ gPlttBufferFaded[palOffset++] = RGB2(r, g, b);
}
}
@@ -579,7 +579,7 @@ static void ApplyGammaShiftWithBlend(u8 startPalIndex, u8 numPalettes, s8 gammaI
r += ((rBlend - r) * blendCoeff) >> 4;
g += ((gBlend - g) * blendCoeff) >> 4;
b += ((bBlend - b) * blendCoeff) >> 4;
- gPlttBufferFaded[palOffset++] = (b << 10) | (g << 5) | r;
+ gPlttBufferFaded[palOffset++] = RGB2(r, g, b);
}
}
@@ -636,7 +636,7 @@ static void ApplyDroughtGammaShiftWithBlend(s8 gammaIndex, u8 blendCoeff, u16 bl
g2 += ((gBlend - g2) * blendCoeff) >> 4;
b2 += ((bBlend - b2) * blendCoeff) >> 4;
- gPlttBufferFaded[palOffset++] = (b2 << 10) | (g2 << 5) | r2;
+ gPlttBufferFaded[palOffset++] = RGB2(r2, g2, b2);
}
}
}
@@ -678,7 +678,7 @@ static void ApplyFogBlend(u8 blendCoeff, u16 blendColor)
g += ((gBlend - g) * blendCoeff) >> 4;
b += ((bBlend - b) * blendCoeff) >> 4;
- gPlttBufferFaded[palOffset] = (b << 10) | (g << 5) | r;
+ gPlttBufferFaded[palOffset] = RGB2(r, g, b);
palOffset++;
}
}
diff --git a/src/item_menu.c b/src/item_menu.c
index c63342041..375e15cab 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -86,7 +86,7 @@ u16 BagGetQuantityByPocketPosition(u8, u16);
void BagDestroyPocketSwitchArrowPair(void);
void TaskCloseBagMenu_2(u8);
u8 AddItemMessageWindow(u8);
-void BagMenu_RemoveBagItemMessageindow(u8);
+void BagMenu_RemoveBagItemMessageWindow(u8);
void set_callback3_to_bag(u8);
void PrintItemDepositAmount(u8, s16);
static u8 BagMenu_AddWindow(u8);
@@ -1115,7 +1115,7 @@ void BagMenu_InitListsMenu(u8 taskId)
s16* data = gTasks[taskId].data;
u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket];
u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
- BagMenu_RemoveBagItemMessageindow(4);
+ BagMenu_RemoveBagItemMessageWindow(4);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
UpdatePocketItemList(gBagPositionStruct.pocket);
SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
@@ -2035,7 +2035,7 @@ void BagMenu_CancelSell(u8 taskId)
s16* data = gTasks[taskId].data;
RemoveMoneyWindow();
- BagMenu_RemoveBagItemMessageindow(4);
+ BagMenu_RemoveBagItemMessageWindow(4);
BagMenu_PrintCursor_(data[0], 0);
set_callback3_to_bag(taskId);
}
@@ -2070,7 +2070,7 @@ static void Task_SellHowManyDialogueHandleInput(u8 taskId)
BagMenu_PrintCursor_(data[0], 0);
RemoveMoneyWindow();
BagMenu_RemoveWindow(8);
- BagMenu_RemoveBagItemMessageindow(4);
+ BagMenu_RemoveBagItemMessageWindow(4);
set_callback3_to_bag(taskId);
}
}
@@ -2420,7 +2420,7 @@ u8 AddItemMessageWindow(u8 which)
return *ptr;
}
-void BagMenu_RemoveBagItemMessageindow(u8 which)
+void BagMenu_RemoveBagItemMessageWindow(u8 which)
{
u8 *ptr = &gBagMenu->windowPointers[which];
if (*ptr != 0xFF)
diff --git a/src/menu_specialized.c b/src/menu_specialized.c
index 7de963893..74e3455c3 100644
--- a/src/menu_specialized.c
+++ b/src/menu_specialized.c
@@ -23,7 +23,6 @@
#include "text_window.h"
#include "trig.h"
#include "window.h"
-#include "constants/berry.h"
#include "constants/songs.h"
#include "gba/io_reg.h"
diff --git a/src/party_menu.c b/src/party_menu.c
index 096f87dd2..b2fd358ca 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -3520,9 +3520,9 @@ static void CursorCb_Register(u8 taskId)
{
u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2);
u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
- u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE);
+ u8 isEventLegal = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_EVENT_LEGAL);
- switch (CanRegisterMonForTradingBoard(*(struct GFtgtGnameSub *)GetHostRFUtgtGname(), species2, species, obedience))
+ switch (CanRegisterMonForTradingBoard(*(struct GFtgtGnameSub *)GetHostRFUtgtGname(), species2, species, isEventLegal))
{
case CANT_REGISTER_MON:
StringExpandPlaceholders(gStringVar4, gText_PkmnCantBeTradedNow);
@@ -3547,8 +3547,8 @@ static void CursorCb_Trade1(u8 taskId)
{
u16 species2 = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2);
u16 species = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES);
- u8 obedience = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_OBEDIENCE);
- u32 stringId = GetUnionRoomTradeMessageId(*(struct GFtgtGnameSub *)GetHostRFUtgtGname(), gPartnerTgtGnameSub, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, obedience);
+ u8 isEventLegal = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_EVENT_LEGAL);
+ u32 stringId = GetUnionRoomTradeMessageId(*(struct GFtgtGnameSub *)GetHostRFUtgtGname(), gPartnerTgtGnameSub, species2, gUnionRoomOfferedSpecies, gUnionRoomRequestedMonType, species, isEventLegal);
if (stringId != UR_TRADE_MSG_NONE)
{
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 0bfb10632..4485fe1ef 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -29,7 +29,6 @@
#include "task.h"
#include "text.h"
#include "text_window.h"
-#include "constants/berry.h"
#include "constants/items.h"
#include "constants/songs.h"
#include "constants/rgb.h"
diff --git a/src/pokemon.c b/src/pokemon.c
index 064e206a4..5812e987a 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -2615,12 +2615,12 @@ void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerP
GetMonData(mon, MON_DATA_NICKNAME, dest->nickname);
}
-void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId)
+void CreateEventLegalMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId)
{
- bool32 obedient = TRUE;
+ bool32 isEventLegal = TRUE;
CreateMon(mon, species, level, fixedIV, hasFixedPersonality, fixedPersonality, otIdType, fixedOtId);
- SetMonData(mon, MON_DATA_OBEDIENCE, &obedient);
+ SetMonData(mon, MON_DATA_EVENT_LEGAL, &isEventLegal);
}
// If FALSE, should load this game's Deoxys form. If TRUE, should load normal Deoxys form
@@ -2755,14 +2755,14 @@ u16 GetUnionRoomTrainerClass(void)
return gFacilityClassToTrainerClass[gLinkPlayerFacilityClasses[arrId]];
}
-void CreateObedientEnemyMon(void)
+void CreateEventLegalEnemyMon(void)
{
s32 species = gSpecialVar_0x8004;
s32 level = gSpecialVar_0x8005;
s32 itemId = gSpecialVar_0x8006;
ZeroEnemyPartyMons();
- CreateObedientMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, 0, 0);
+ CreateEventLegalMon(&gEnemyParty[0], species, level, USE_RANDOM_IVS, 0, 0, 0, 0);
if (itemId)
{
u8 heldItem[2];
@@ -2993,7 +2993,7 @@ void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon)
u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove)
{
- u32 retVal = 0;
+ u32 retVal = MOVE_NONE;
u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
u8 level = GetMonData(mon, MON_DATA_LEVEL, NULL);
@@ -3009,7 +3009,7 @@ u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove)
{
sLearningMoveTableID++;
if (gLevelUpLearnsets[species][sLearningMoveTableID] == LEVEL_UP_END)
- return 0;
+ return MOVE_NONE;
}
}
@@ -3907,32 +3907,32 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
case MON_DATA_EFFORT_RIBBON:
retVal = substruct3->effortRibbon;
break;
- case MON_DATA_GIFT_RIBBON_1:
- retVal = substruct3->giftRibbon1;
+ case MON_DATA_MARINE_RIBBON:
+ retVal = substruct3->marineRibbon;
break;
- case MON_DATA_GIFT_RIBBON_2:
- retVal = substruct3->giftRibbon2;
+ case MON_DATA_LAND_RIBBON:
+ retVal = substruct3->landRibbon;
break;
- case MON_DATA_GIFT_RIBBON_3:
- retVal = substruct3->giftRibbon3;
+ case MON_DATA_SKY_RIBBON:
+ retVal = substruct3->skyRibbon;
break;
- case MON_DATA_GIFT_RIBBON_4:
- retVal = substruct3->giftRibbon4;
+ case MON_DATA_COUNTRY_RIBBON:
+ retVal = substruct3->countryRibbon;
break;
- case MON_DATA_GIFT_RIBBON_5:
- retVal = substruct3->giftRibbon5;
+ case MON_DATA_NATIONAL_RIBBON:
+ retVal = substruct3->nationalRibbon;
break;
- case MON_DATA_GIFT_RIBBON_6:
- retVal = substruct3->giftRibbon6;
+ case MON_DATA_EARTH_RIBBON:
+ retVal = substruct3->earthRibbon;
break;
- case MON_DATA_GIFT_RIBBON_7:
- retVal = substruct3->giftRibbon7;
+ case MON_DATA_WORLD_RIBBON:
+ retVal = substruct3->worldRibbon;
break;
- case MON_DATA_FATEFUL_ENCOUNTER:
- retVal = substruct3->fatefulEncounter;
+ case MON_DATA_FILLER:
+ retVal = substruct3->filler;
break;
- case MON_DATA_OBEDIENCE:
- retVal = substruct3->obedient;
+ case MON_DATA_EVENT_LEGAL:
+ retVal = substruct3->eventLegal;
break;
case MON_DATA_SPECIES2:
retVal = substruct0->species;
@@ -3974,13 +3974,13 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
retVal += substruct3->victoryRibbon;
retVal += substruct3->artistRibbon;
retVal += substruct3->effortRibbon;
- retVal += substruct3->giftRibbon1;
- retVal += substruct3->giftRibbon2;
- retVal += substruct3->giftRibbon3;
- retVal += substruct3->giftRibbon4;
- retVal += substruct3->giftRibbon5;
- retVal += substruct3->giftRibbon6;
- retVal += substruct3->giftRibbon7;
+ retVal += substruct3->marineRibbon;
+ retVal += substruct3->landRibbon;
+ retVal += substruct3->skyRibbon;
+ retVal += substruct3->countryRibbon;
+ retVal += substruct3->nationalRibbon;
+ retVal += substruct3->earthRibbon;
+ retVal += substruct3->worldRibbon;
}
break;
case MON_DATA_RIBBONS:
@@ -3997,13 +3997,13 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
| (substruct3->victoryRibbon << 17)
| (substruct3->artistRibbon << 18)
| (substruct3->effortRibbon << 19)
- | (substruct3->giftRibbon1 << 20)
- | (substruct3->giftRibbon2 << 21)
- | (substruct3->giftRibbon3 << 22)
- | (substruct3->giftRibbon4 << 23)
- | (substruct3->giftRibbon5 << 24)
- | (substruct3->giftRibbon6 << 25)
- | (substruct3->giftRibbon7 << 26);
+ | (substruct3->marineRibbon << 20)
+ | (substruct3->landRibbon << 21)
+ | (substruct3->skyRibbon << 22)
+ | (substruct3->countryRibbon << 23)
+ | (substruct3->nationalRibbon << 24)
+ | (substruct3->earthRibbon << 25)
+ | (substruct3->worldRibbon << 26);
}
break;
default:
@@ -4286,32 +4286,32 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
case MON_DATA_EFFORT_RIBBON:
SET8(substruct3->effortRibbon);
break;
- case MON_DATA_GIFT_RIBBON_1:
- SET8(substruct3->giftRibbon1);
+ case MON_DATA_MARINE_RIBBON:
+ SET8(substruct3->marineRibbon);
break;
- case MON_DATA_GIFT_RIBBON_2:
- SET8(substruct3->giftRibbon2);
+ case MON_DATA_LAND_RIBBON:
+ SET8(substruct3->landRibbon);
break;
- case MON_DATA_GIFT_RIBBON_3:
- SET8(substruct3->giftRibbon3);
+ case MON_DATA_SKY_RIBBON:
+ SET8(substruct3->skyRibbon);
break;
- case MON_DATA_GIFT_RIBBON_4:
- SET8(substruct3->giftRibbon4);
+ case MON_DATA_COUNTRY_RIBBON:
+ SET8(substruct3->countryRibbon);
break;
- case MON_DATA_GIFT_RIBBON_5:
- SET8(substruct3->giftRibbon5);
+ case MON_DATA_NATIONAL_RIBBON:
+ SET8(substruct3->nationalRibbon);
break;
- case MON_DATA_GIFT_RIBBON_6:
- SET8(substruct3->giftRibbon6);
+ case MON_DATA_EARTH_RIBBON:
+ SET8(substruct3->earthRibbon);
break;
- case MON_DATA_GIFT_RIBBON_7:
- SET8(substruct3->giftRibbon7);
+ case MON_DATA_WORLD_RIBBON:
+ SET8(substruct3->worldRibbon);
break;
- case MON_DATA_FATEFUL_ENCOUNTER:
- SET8(substruct3->fatefulEncounter);
+ case MON_DATA_FILLER:
+ SET8(substruct3->filler);
break;
- case MON_DATA_OBEDIENCE:
- SET8(substruct3->obedient);
+ case MON_DATA_EVENT_LEGAL:
+ SET8(substruct3->eventLegal);
break;
case MON_DATA_IVS:
{
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index f8b361912..5b80fd428 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -38,9 +38,9 @@ static const struct UnknownStruct sBigMonSizeTable[] =
static const u8 sGiftRibbonsMonDataIds[] =
{
- MON_DATA_GIFT_RIBBON_1, MON_DATA_GIFT_RIBBON_2, MON_DATA_GIFT_RIBBON_3,
- MON_DATA_GIFT_RIBBON_4, MON_DATA_GIFT_RIBBON_5, MON_DATA_GIFT_RIBBON_6,
- MON_DATA_GIFT_RIBBON_7
+ MON_DATA_MARINE_RIBBON, MON_DATA_LAND_RIBBON, MON_DATA_SKY_RIBBON,
+ MON_DATA_COUNTRY_RIBBON, MON_DATA_NATIONAL_RIBBON, MON_DATA_EARTH_RIBBON,
+ MON_DATA_WORLD_RIBBON
};
extern const u8 gText_DecimalPoint[];
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index 50fc04372..eaa9416cf 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -5898,12 +5898,12 @@ static bool8 sub_80CD554(void)
return TRUE;
}
-static void sub_80CD6AC(u8 newCurosrArea, u8 newCursorPosition)
+static void sub_80CD6AC(u8 newCursorArea, u8 newCursorPosition)
{
u16 x, y;
- sub_80CD444(newCurosrArea, newCursorPosition, &x, &y);
- sPSSData->field_CD4 = newCurosrArea;
+ sub_80CD444(newCursorArea, newCursorPosition, &x, &y);
+ sPSSData->field_CD4 = newCursorArea;
sPSSData->field_CD5 = newCursorPosition;
sPSSData->field_CCC = x;
sPSSData->field_CCE = y;
@@ -5955,9 +5955,9 @@ static void sub_80CD70C(void)
sPSSData->field_CC0 = sPSSData->field_CB4->pos1.y << 8;
}
-static void sub_80CD894(u8 newCurosrArea, u8 newCursorPosition)
+static void sub_80CD894(u8 newCursorArea, u8 newCursorPosition)
{
- sub_80CD6AC(newCurosrArea, newCursorPosition);
+ sub_80CD6AC(newCursorArea, newCursorPosition);
sub_80CD70C();
if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
{
@@ -5977,19 +5977,19 @@ static void sub_80CD894(u8 newCurosrArea, u8 newCursorPosition)
else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
sub_80D0E50(CURSOR_AREA_IN_PARTY, sBoxCursorPosition);
- if (newCurosrArea == CURSOR_AREA_IN_BOX)
- sub_80D0D8C(newCurosrArea, newCursorPosition);
- else if (newCurosrArea == CURSOR_AREA_IN_PARTY)
- sub_80D0D8C(newCurosrArea, newCursorPosition);
+ if (newCursorArea == CURSOR_AREA_IN_BOX)
+ sub_80D0D8C(newCursorArea, newCursorPosition);
+ else if (newCursorArea == CURSOR_AREA_IN_PARTY)
+ sub_80D0D8C(newCursorArea, newCursorPosition);
}
- if (newCurosrArea == CURSOR_AREA_IN_PARTY && sBoxCursorArea != CURSOR_AREA_IN_PARTY)
+ if (newCursorArea == CURSOR_AREA_IN_PARTY && sBoxCursorArea != CURSOR_AREA_IN_PARTY)
{
- sPSSData->field_CD6 = newCurosrArea;
+ sPSSData->field_CD6 = newCursorArea;
sPSSData->field_CB8->invisible = TRUE;
}
- switch (newCurosrArea)
+ switch (newCursorArea)
{
case CURSOR_AREA_IN_PARTY:
case CURSOR_AREA_BOX:
diff --git a/src/scrcmd.c b/src/scrcmd.c
index f599a0004..7caaa194b 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -2207,21 +2207,21 @@ bool8 ScrCmd_lockfortrainer(struct ScriptContext *ctx)
}
}
-// This command will force the Pokémon to be obedient, you don't get to make it disobedient.
-bool8 ScrCmd_setmonobedient(struct ScriptContext *ctx)
+// This command will set a Pokémon's eventLegal bit; there is no similar command to clear it.
+bool8 ScrCmd_setmoneventlegal(struct ScriptContext *ctx)
{
- bool8 obedient = TRUE;
+ bool8 isEventLegal = TRUE;
u16 partyIndex = VarGet(ScriptReadHalfword(ctx));
- SetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, &obedient);
+ SetMonData(&gPlayerParty[partyIndex], MON_DATA_EVENT_LEGAL, &isEventLegal);
return FALSE;
}
-bool8 ScrCmd_checkmonobedience(struct ScriptContext *ctx)
+bool8 ScrCmd_checkmoneventlegal(struct ScriptContext *ctx)
{
u16 partyIndex = VarGet(ScriptReadHalfword(ctx));
- gSpecialVar_Result = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, NULL);
+ gSpecialVar_Result = GetMonData(&gPlayerParty[partyIndex], MON_DATA_EVENT_LEGAL, NULL);
return FALSE;
}
diff --git a/src/trade.c b/src/trade.c
index 05c64cb82..afefce93c 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -1489,7 +1489,7 @@ static u8 CheckValidityOfTradeMons(u8 *aliveMons, u8 playerPartyCount, u8 player
// Partner cant trade illegitimate Deoxys or Mew
if (partnerSpecies == SPECIES_DEOXYS || partnerSpecies == SPECIES_MEW)
{
- if (!GetMonData(&gEnemyParty[partnerMonIdx], MON_DATA_OBEDIENCE))
+ if (!GetMonData(&gEnemyParty[partnerMonIdx], MON_DATA_EVENT_LEGAL))
return PARTNER_MON_INVALID;
}
@@ -2329,7 +2329,7 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int
if (species[monIdx] == SPECIES_DEOXYS || species[monIdx] == SPECIES_MEW)
{
- if (!GetMonData(&playerParty[monIdx], MON_DATA_OBEDIENCE))
+ if (!GetMonData(&playerParty[monIdx], MON_DATA_EVENT_LEGAL))
return CANT_TRADE_INVALID_MON;
}
@@ -2394,17 +2394,17 @@ s32 GetGameProgressForLinkTrade(void)
return TRADE_BOTH_PLAYERS_READY;
}
-static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isObedientBitSet)
+static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isEventLegal)
{
if (species == SPECIES_DEOXYS || species == SPECIES_MEW)
{
- if (!isObedientBitSet)
+ if (!isEventLegal)
return TRUE;
}
return FALSE;
}
-int GetUnionRoomTradeMessageId(struct GFtgtGnameSub rfuPlayer, struct GFtgtGnameSub rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isObedientBitSet)
+int GetUnionRoomTradeMessageId(struct GFtgtGnameSub rfuPlayer, struct GFtgtGnameSub rfuPartner, u16 playerSpecies2, u16 partnerSpecies, u8 requestedType, u16 playerSpecies, u8 isEventLegal)
{
bool8 playerHasNationalDex = rfuPlayer.hasNationalDex;
bool8 playerIsChampion = rfuPlayer.isChampion;
@@ -2424,7 +2424,7 @@ int GetUnionRoomTradeMessageId(struct GFtgtGnameSub rfuPlayer, struct GFtgtGname
}
}
- if (IsDeoxysOrMewUntradable(playerSpecies, isObedientBitSet))
+ if (IsDeoxysOrMewUntradable(playerSpecies, isEventLegal))
{
return UR_TRADE_MSG_MON_CANT_BE_TRADED_2;
}
@@ -2475,11 +2475,11 @@ int GetUnionRoomTradeMessageId(struct GFtgtGnameSub rfuPlayer, struct GFtgtGname
return UR_TRADE_MSG_NONE;
}
-int CanRegisterMonForTradingBoard(struct GFtgtGnameSub rfuPlayer, u16 species2, u16 species, u8 isObedientBitSet)
+int CanRegisterMonForTradingBoard(struct GFtgtGnameSub rfuPlayer, u16 species2, u16 species, u8 isEventLegal)
{
bool8 hasNationalDex = rfuPlayer.hasNationalDex;
- if (IsDeoxysOrMewUntradable(species, isObedientBitSet))
+ if (IsDeoxysOrMewUntradable(species, isEventLegal))
return CANT_REGISTER_MON;
if (hasNationalDex)
diff --git a/src/trainer_see.c b/src/trainer_see.c
index 8a7d2a5f9..9833f14bd 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -41,10 +41,10 @@ static bool8 PlayerFaceApproachingTrainer(u8 taskId, struct Task *task, struct O
static bool8 WaitPlayerFaceApproachingTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
static bool8 RevealDisguisedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
static bool8 WaitRevealDisguisedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
-static bool8 RevealHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
-static bool8 PopOutOfAshHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
-static bool8 JumpInPlaceHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
-static bool8 WaitRevealHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
+static bool8 RevealBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
+static bool8 PopOutOfAshBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
+static bool8 JumpInPlaceBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
+static bool8 WaitRevealBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj);
static void SpriteCB_TrainerIcons(struct Sprite *sprite);
@@ -80,10 +80,10 @@ enum {
TRSEE_PLAYER_FACE_WAIT,
TRSEE_REVEAL_DISGUISE,
TRSEE_REVEAL_DISGUISE_WAIT,
- TRSEE_REVEAL_HIDDEN,
- TRSEE_HIDDEN_POP_OUT,
- TRSEE_HIDDEN_JUMP,
- TRSEE_REVEAL_HIDDEN_WAIT,
+ TRSEE_REVEAL_BURIED,
+ TRSEE_BURIED_POP_OUT,
+ TRSEE_BURIED_JUMP,
+ TRSEE_REVEAL_BURIED_WAIT,
};
static bool8 (*const sTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj) =
@@ -96,18 +96,18 @@ static bool8 (*const sTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct
[TRSEE_PLAYER_FACE_WAIT] = WaitPlayerFaceApproachingTrainer,
[TRSEE_REVEAL_DISGUISE] = RevealDisguisedTrainer,
[TRSEE_REVEAL_DISGUISE_WAIT] = WaitRevealDisguisedTrainer,
- [TRSEE_REVEAL_HIDDEN] = RevealHiddenTrainer,
- [TRSEE_HIDDEN_POP_OUT] = PopOutOfAshHiddenTrainer,
- [TRSEE_HIDDEN_JUMP] = JumpInPlaceHiddenTrainer,
- [TRSEE_REVEAL_HIDDEN_WAIT] = WaitRevealHiddenTrainer,
+ [TRSEE_REVEAL_BURIED] = RevealBuriedTrainer,
+ [TRSEE_BURIED_POP_OUT] = PopOutOfAshBuriedTrainer,
+ [TRSEE_BURIED_JUMP] = JumpInPlaceBuriedTrainer,
+ [TRSEE_REVEAL_BURIED_WAIT] = WaitRevealBuriedTrainer,
};
static bool8 (*const sTrainerSeeFuncList2[])(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj) =
{
- RevealHiddenTrainer,
- PopOutOfAshHiddenTrainer,
- JumpInPlaceHiddenTrainer,
- WaitRevealHiddenTrainer,
+ RevealBuriedTrainer,
+ PopOutOfAshBuriedTrainer,
+ JumpInPlaceBuriedTrainer,
+ WaitRevealBuriedTrainer,
};
static const struct OamData sOamData_Icons =
@@ -481,8 +481,8 @@ static bool8 WaitTrainerExclamationMark(u8 taskId, struct Task *task, struct Obj
task->tFuncId++; // TRSEE_MOVE_TO_PLAYER
if (trainerObj->movementType == MOVEMENT_TYPE_TREE_DISGUISE || trainerObj->movementType == MOVEMENT_TYPE_MOUNTAIN_DISGUISE)
task->tFuncId = TRSEE_REVEAL_DISGUISE;
- if (trainerObj->movementType == MOVEMENT_TYPE_HIDDEN)
- task->tFuncId = TRSEE_REVEAL_HIDDEN;
+ if (trainerObj->movementType == MOVEMENT_TYPE_BURIED)
+ task->tFuncId = TRSEE_REVEAL_BURIED;
return TRUE;
}
}
@@ -561,8 +561,8 @@ static bool8 WaitRevealDisguisedTrainer(u8 taskId, struct Task *task, struct Obj
return FALSE;
}
-// TRSEE_REVEAL_HIDDEN
-static bool8 RevealHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
+// TRSEE_REVEAL_BURIED
+static bool8 RevealBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
{
if (!ObjectEventIsMovementOverridden(trainerObj)
|| ObjectEventClearHeldMovementIfFinished(trainerObj))
@@ -573,8 +573,8 @@ static bool8 RevealHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEven
return FALSE;
}
-// TRSEE_HIDDEN_POP_OUT
-static bool8 PopOutOfAshHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
+// TRSEE_BURIED_POP_OUT
+static bool8 PopOutOfAshBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
{
if (ObjectEventCheckHeldMovementStatus(trainerObj))
{
@@ -588,8 +588,8 @@ static bool8 PopOutOfAshHiddenTrainer(u8 taskId, struct Task *task, struct Objec
return FALSE;
}
-// TRSEE_HIDDEN_JUMP
-static bool8 JumpInPlaceHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
+// TRSEE_BURIED_JUMP
+static bool8 JumpInPlaceBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
{
struct Sprite *sprite;
@@ -608,8 +608,8 @@ static bool8 JumpInPlaceHiddenTrainer(u8 taskId, struct Task *task, struct Objec
return FALSE;
}
-// TRSEE_REVEAL_HIDDEN_WAIT
-static bool8 WaitRevealHiddenTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
+// TRSEE_REVEAL_BURIED_WAIT
+static bool8 WaitRevealBuriedTrainer(u8 taskId, struct Task *task, struct ObjectEvent *trainerObj)
{
if (!FieldEffectActiveListContains(FLDEFF_ASH_PUFF))
task->tFuncId = TRSEE_MOVE_TO_PLAYER;
@@ -623,7 +623,7 @@ static bool8 WaitRevealHiddenTrainer(u8 taskId, struct Task *task, struct Object
#define tObjEvent data[1]
-static void Task_SetHiddenTrainerMovement(u8 taskId)
+static void Task_SetBuriedTrainerMovement(u8 taskId)
{
struct Task *task = &gTasks[taskId];
struct ObjectEvent *objEvent;
@@ -647,10 +647,10 @@ static void Task_SetHiddenTrainerMovement(u8 taskId)
}
}
-// Called when a "buried" trainer has the reveal_trainer movement applied, from direct interaction
-void SetHiddenTrainerMovement(struct ObjectEvent *objEvent)
+// Called when a buried Trainer has the reveal_trainer movement applied, from direct interaction
+void SetBuriedTrainerMovement(struct ObjectEvent *objEvent)
{
- StoreWordInTwoHalfwords(&gTasks[CreateTask(Task_SetHiddenTrainerMovement, 0)].tObjEvent, (u32)objEvent);
+ StoreWordInTwoHalfwords(&gTasks[CreateTask(Task_SetBuriedTrainerMovement, 0)].tObjEvent, (u32)objEvent);
}
void DoTrainerApproach(void)
diff --git a/src/tv.c b/src/tv.c
index 990dd6673..99bd609e4 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -2398,13 +2398,13 @@ u8 GetRibbonCount(struct Pokemon *pokemon)
nRibbons += GetMonData(pokemon, MON_DATA_VICTORY_RIBBON);
nRibbons += GetMonData(pokemon, MON_DATA_ARTIST_RIBBON);
nRibbons += GetMonData(pokemon, MON_DATA_EFFORT_RIBBON);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_1);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_2);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_3);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_4);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_5);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_6);
- nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_7);
+ nRibbons += GetMonData(pokemon, MON_DATA_MARINE_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_LAND_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_SKY_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_COUNTRY_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_NATIONAL_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_EARTH_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_WORLD_RIBBON);
return nRibbons;
}
@@ -2420,13 +2420,13 @@ u8 TV_MonDataIdxToRibbon(u8 monDataIdx)
if (monDataIdx == MON_DATA_VICTORY_RIBBON) return 22;
if (monDataIdx == MON_DATA_ARTIST_RIBBON) return 23;
if (monDataIdx == MON_DATA_EFFORT_RIBBON) return 24;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_1) return 25;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_2) return 26;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_3) return 27;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_4) return 28;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_5) return 29;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_6) return 30;
- if (monDataIdx == MON_DATA_GIFT_RIBBON_7) return 31;
+ if (monDataIdx == MON_DATA_MARINE_RIBBON) return 25;
+ if (monDataIdx == MON_DATA_LAND_RIBBON) return 26;
+ if (monDataIdx == MON_DATA_SKY_RIBBON) return 27;
+ if (monDataIdx == MON_DATA_COUNTRY_RIBBON) return 28;
+ if (monDataIdx == MON_DATA_NATIONAL_RIBBON) return 29;
+ if (monDataIdx == MON_DATA_EARTH_RIBBON) return 30;
+ if (monDataIdx == MON_DATA_WORLD_RIBBON) return 31;
return 0;
}
diff --git a/src/util.c b/src/util.c
index 8aa54857a..a4e3fa4cf 100644
--- a/src/util.c
+++ b/src/util.c
@@ -2,6 +2,7 @@
#include "util.h"
#include "sprite.h"
#include "palette.h"
+#include "constants/rgb.h"
const u32 gBitTable[] =
{
@@ -271,8 +272,8 @@ void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor)
s8 g = data1->g;
s8 b = data1->b;
struct PlttData *data2 = (struct PlttData *)&blendColor;
- gPlttBufferFaded[index] = ((r + (((data2->r - r) * coeff) >> 4)) << 0)
- | ((g + (((data2->g - g) * coeff) >> 4)) << 5)
- | ((b + (((data2->b - b) * coeff) >> 4)) << 10);
+ gPlttBufferFaded[index] = RGB(r + (((data2->r - r) * coeff) >> 4),
+ g + (((data2->g - g) * coeff) >> 4),
+ b + (((data2->b - b) * coeff) >> 4));
}
}