diff --git a/charmap.txt b/charmap.txt index 2cb67a861..99aca4c18 100644 --- a/charmap.txt +++ b/charmap.txt @@ -426,13 +426,13 @@ SHADOW = FC 03 @ same as fc 01 COLOR_HIGHLIGHT_SHADOW = FC 04 @ takes 3 bytes PALETTE = FC 05 @ used in credits FONT = FC 06 @ Given a font id, or use font constants below instead -RESET_SIZE = FC 07 +RESET_FONT = FC 07 PAUSE = FC 08 @ manually print the wait byte after this, havent mapped them PAUSE_UNTIL_PRESS = FC 09 WAIT_SE = FC 0A PLAY_BGM = FC 0B ESCAPE = FC 0C -SHIFT_TEXT = FC 0D +SHIFT_RIGHT = FC 0D SHIFT_DOWN = FC 0E FILL_WINDOW = FC 0F PLAY_SE = FC 10 diff --git a/gflib/characters.h b/gflib/characters.h index 714904aa4..8ed440e63 100644 --- a/gflib/characters.h +++ b/gflib/characters.h @@ -212,13 +212,13 @@ #define EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW 0x04 #define EXT_CTRL_CODE_PALETTE 0x05 #define EXT_CTRL_CODE_FONT 0x06 -#define EXT_CTRL_CODE_RESET_SIZE 0x07 +#define EXT_CTRL_CODE_RESET_FONT 0x07 #define EXT_CTRL_CODE_PAUSE 0x08 #define EXT_CTRL_CODE_PAUSE_UNTIL_PRESS 0x09 #define EXT_CTRL_CODE_WAIT_SE 0x0A #define EXT_CTRL_CODE_PLAY_BGM 0x0B #define EXT_CTRL_CODE_ESCAPE 0x0C -#define EXT_CTRL_CODE_SHIFT_TEXT 0x0D +#define EXT_CTRL_CODE_SHIFT_RIGHT 0x0D #define EXT_CTRL_CODE_SHIFT_DOWN 0x0E #define EXT_CTRL_CODE_FILL_WINDOW 0x0F #define EXT_CTRL_CODE_PLAY_SE 0x10 diff --git a/gflib/string_util.c b/gflib/string_util.c index 4bf8d946d..8d969d1bf 100644 --- a/gflib/string_util.c +++ b/gflib/string_util.c @@ -354,7 +354,7 @@ u8 *StringExpandPlaceholders(u8 *dest, const u8 *src) switch (c) { - case EXT_CTRL_CODE_RESET_SIZE: + case EXT_CTRL_CODE_RESET_FONT: case EXT_CTRL_CODE_PAUSE_UNTIL_PRESS: case EXT_CTRL_CODE_FILL_WINDOW: case EXT_CTRL_CODE_JPN: @@ -665,13 +665,13 @@ u8 GetExtCtrlCodeLength(u8 code) [EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW] = 4, [EXT_CTRL_CODE_PALETTE] = 2, [EXT_CTRL_CODE_FONT] = 2, - [EXT_CTRL_CODE_RESET_SIZE] = 1, + [EXT_CTRL_CODE_RESET_FONT] = 1, [EXT_CTRL_CODE_PAUSE] = 2, [EXT_CTRL_CODE_PAUSE_UNTIL_PRESS] = 1, [EXT_CTRL_CODE_WAIT_SE] = 1, [EXT_CTRL_CODE_PLAY_BGM] = 3, [EXT_CTRL_CODE_ESCAPE] = 2, - [EXT_CTRL_CODE_SHIFT_TEXT] = 2, + [EXT_CTRL_CODE_SHIFT_RIGHT] = 2, [EXT_CTRL_CODE_SHIFT_DOWN] = 2, [EXT_CTRL_CODE_FILL_WINDOW] = 1, [EXT_CTRL_CODE_PLAY_SE] = 3, diff --git a/gflib/text.c b/gflib/text.c index e7a7d5957..86dca3829 100644 --- a/gflib/text.c +++ b/gflib/text.c @@ -1009,7 +1009,7 @@ static u16 RenderText(struct TextPrinter *textPrinter) subStruct->fontId = *textPrinter->printerTemplate.currentChar; textPrinter->printerTemplate.currentChar++; return RENDER_REPEAT; - case EXT_CTRL_CODE_RESET_SIZE: + case EXT_CTRL_CODE_RESET_FONT: return RENDER_REPEAT; case EXT_CTRL_CODE_PAUSE: textPrinter->delayCounter = *textPrinter->printerTemplate.currentChar; @@ -1042,7 +1042,7 @@ static u16 RenderText(struct TextPrinter *textPrinter) textPrinter->printerTemplate.currentChar++; PlaySE(currChar); return RENDER_REPEAT; - case EXT_CTRL_CODE_SHIFT_TEXT: + case EXT_CTRL_CODE_SHIFT_RIGHT: textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x + *textPrinter->printerTemplate.currentChar; textPrinter->printerTemplate.currentChar++; return RENDER_REPEAT; @@ -1271,7 +1271,7 @@ static u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpaci case EXT_CTRL_CODE_FONT: case EXT_CTRL_CODE_PAUSE: case EXT_CTRL_CODE_ESCAPE: - case EXT_CTRL_CODE_SHIFT_TEXT: + case EXT_CTRL_CODE_SHIFT_RIGHT: case EXT_CTRL_CODE_SHIFT_DOWN: case EXT_CTRL_CODE_CLEAR: case EXT_CTRL_CODE_SKIP: @@ -1279,7 +1279,7 @@ static u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpaci case EXT_CTRL_CODE_MIN_LETTER_SPACING: ++strPos; break; - case EXT_CTRL_CODE_RESET_SIZE: + case EXT_CTRL_CODE_RESET_FONT: case EXT_CTRL_CODE_PAUSE_UNTIL_PRESS: case EXT_CTRL_CODE_WAIT_SE: case EXT_CTRL_CODE_FILL_WINDOW: @@ -1413,7 +1413,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) case EXT_CTRL_CODE_PALETTE: case EXT_CTRL_CODE_PAUSE: case EXT_CTRL_CODE_ESCAPE: - case EXT_CTRL_CODE_SHIFT_TEXT: + case EXT_CTRL_CODE_SHIFT_RIGHT: case EXT_CTRL_CODE_SHIFT_DOWN: ++str; break; @@ -1444,7 +1444,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) case EXT_CTRL_CODE_ENG: isJapanese = 0; break; - case EXT_CTRL_CODE_RESET_SIZE: + case EXT_CTRL_CODE_RESET_FONT: case EXT_CTRL_CODE_PAUSE_UNTIL_PRESS: case EXT_CTRL_CODE_WAIT_SE: case EXT_CTRL_CODE_FILL_WINDOW: @@ -1556,7 +1556,7 @@ u8 RenderTextHandleBold(u8 *pixels, u8 fontId, u8 *str) case EXT_CTRL_CODE_PALETTE: case EXT_CTRL_CODE_PAUSE: case EXT_CTRL_CODE_ESCAPE: - case EXT_CTRL_CODE_SHIFT_TEXT: + case EXT_CTRL_CODE_SHIFT_RIGHT: case EXT_CTRL_CODE_SHIFT_DOWN: case EXT_CTRL_CODE_CLEAR: case EXT_CTRL_CODE_SKIP: @@ -1564,7 +1564,7 @@ u8 RenderTextHandleBold(u8 *pixels, u8 fontId, u8 *str) case EXT_CTRL_CODE_MIN_LETTER_SPACING: ++strPos; break; - case EXT_CTRL_CODE_RESET_SIZE: + case EXT_CTRL_CODE_RESET_FONT: case EXT_CTRL_CODE_PAUSE_UNTIL_PRESS: case EXT_CTRL_CODE_WAIT_SE: case EXT_CTRL_CODE_FILL_WINDOW: diff --git a/graphics/interface/red_arrow.png b/graphics/interface/arrow_cursor.png similarity index 100% rename from graphics/interface/red_arrow.png rename to graphics/interface/arrow_cursor.png diff --git a/graphics/interface/selector_outline.png b/graphics/interface/outline_cursor.png similarity index 100% rename from graphics/interface/selector_outline.png rename to graphics/interface/outline_cursor.png diff --git a/graphics/interface/red.pal b/graphics/interface/red.pal new file mode 100644 index 000000000..f820b52bb --- /dev/null +++ b/graphics/interface/red.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +115 164 197 +255 82 0 +131 32 0 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/graphics/interface/red_arrow_other.png b/graphics/interface/scroll_indicator.png similarity index 100% rename from graphics/interface/red_arrow_other.png rename to graphics/interface/scroll_indicator.png diff --git a/graphics/link/wireless_info_screen.pal b/graphics/link/wireless_info_screen.pal deleted file mode 100644 index 8e0bc0581..000000000 --- a/graphics/link/wireless_info_screen.pal +++ /dev/null @@ -1,259 +0,0 @@ -JASC-PAL -0100 -256 -0 0 0 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -57 57 57 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -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 -0 0 0 -0 0 0 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -74 246 255 -57 57 57 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -74 246 255 -57 213 230 -57 57 57 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -74 246 255 -57 213 230 -49 180 205 -0 32 98 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -90 90 90 -90 90 90 -90 90 90 -74 246 255 -57 213 230 -49 180 205 -41 148 180 -0 32 98 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -90 90 90 -90 90 90 -74 246 255 -57 213 230 -49 180 205 -41 148 180 -24 123 164 -0 32 98 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -90 90 90 -74 246 255 -57 213 230 -49 180 205 -41 148 180 -24 123 164 -16 90 139 -0 32 98 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -74 246 255 -57 213 230 -49 180 205 -41 148 180 -24 123 164 -16 90 139 -8 57 115 -0 32 98 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -57 213 230 -49 180 205 -41 148 180 -24 123 164 -16 90 139 -8 57 115 -8 57 115 -57 57 57 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -49 180 205 -41 148 180 -24 123 164 -16 90 139 -8 57 115 -8 57 115 -90 90 90 -57 57 57 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -41 148 180 -24 123 164 -16 90 139 -8 57 115 -8 57 115 -90 90 90 -90 90 90 -57 57 57 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -24 123 164 -16 90 139 -8 57 115 -8 57 115 -90 90 90 -90 90 90 -90 90 90 -57 57 57 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -16 90 139 -8 57 115 -8 57 115 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -57 57 57 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -8 57 115 -8 57 115 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -57 57 57 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 -0 0 0 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -90 90 90 -57 57 57 -172 123 0 -90 90 90 -57 57 57 -164 164 164 -255 180 0 -106 106 106 -74 74 74 diff --git a/graphics/link/wireless_info_screen.png b/graphics/link/wireless_info_screen.png deleted file mode 100644 index 796b2771a..000000000 Binary files a/graphics/link/wireless_info_screen.png and /dev/null differ diff --git a/graphics/wireless_status_screen/anim_00.pal b/graphics/wireless_status_screen/anim_00.pal new file mode 100644 index 000000000..7779155a6 --- /dev/null +++ b/graphics/wireless_status_screen/anim_00.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +74 246 255 +57 57 57 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_01.pal b/graphics/wireless_status_screen/anim_01.pal new file mode 100644 index 000000000..30040b471 --- /dev/null +++ b/graphics/wireless_status_screen/anim_01.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +74 246 255 +57 213 230 +57 57 57 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_02.pal b/graphics/wireless_status_screen/anim_02.pal new file mode 100644 index 000000000..3b40e7681 --- /dev/null +++ b/graphics/wireless_status_screen/anim_02.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +74 246 255 +57 213 230 +49 180 205 +0 32 98 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_03.pal b/graphics/wireless_status_screen/anim_03.pal new file mode 100644 index 000000000..b0756a995 --- /dev/null +++ b/graphics/wireless_status_screen/anim_03.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +90 90 90 +90 90 90 +90 90 90 +74 246 255 +57 213 230 +49 180 205 +41 148 180 +0 32 98 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_04.pal b/graphics/wireless_status_screen/anim_04.pal new file mode 100644 index 000000000..60916f08c --- /dev/null +++ b/graphics/wireless_status_screen/anim_04.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +90 90 90 +90 90 90 +74 246 255 +57 213 230 +49 180 205 +41 148 180 +24 123 164 +0 32 98 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_05.pal b/graphics/wireless_status_screen/anim_05.pal new file mode 100644 index 000000000..b59dc5901 --- /dev/null +++ b/graphics/wireless_status_screen/anim_05.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +90 90 90 +74 246 255 +57 213 230 +49 180 205 +41 148 180 +24 123 164 +16 90 139 +0 32 98 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_06.pal b/graphics/wireless_status_screen/anim_06.pal new file mode 100644 index 000000000..3f14d81e7 --- /dev/null +++ b/graphics/wireless_status_screen/anim_06.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +74 246 255 +57 213 230 +49 180 205 +41 148 180 +24 123 164 +16 90 139 +8 57 115 +0 32 98 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_07.pal b/graphics/wireless_status_screen/anim_07.pal new file mode 100644 index 000000000..e3da8baa6 --- /dev/null +++ b/graphics/wireless_status_screen/anim_07.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +57 213 230 +49 180 205 +41 148 180 +24 123 164 +16 90 139 +8 57 115 +8 57 115 +57 57 57 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_08.pal b/graphics/wireless_status_screen/anim_08.pal new file mode 100644 index 000000000..1544a2303 --- /dev/null +++ b/graphics/wireless_status_screen/anim_08.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +49 180 205 +41 148 180 +24 123 164 +16 90 139 +8 57 115 +8 57 115 +90 90 90 +57 57 57 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_09.pal b/graphics/wireless_status_screen/anim_09.pal new file mode 100644 index 000000000..8d3b1d4bc --- /dev/null +++ b/graphics/wireless_status_screen/anim_09.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +41 148 180 +24 123 164 +16 90 139 +8 57 115 +8 57 115 +90 90 90 +90 90 90 +57 57 57 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_10.pal b/graphics/wireless_status_screen/anim_10.pal new file mode 100644 index 000000000..5ab981ba3 --- /dev/null +++ b/graphics/wireless_status_screen/anim_10.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +24 123 164 +16 90 139 +8 57 115 +8 57 115 +90 90 90 +90 90 90 +90 90 90 +57 57 57 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_11.pal b/graphics/wireless_status_screen/anim_11.pal new file mode 100644 index 000000000..46ad15269 --- /dev/null +++ b/graphics/wireless_status_screen/anim_11.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +16 90 139 +8 57 115 +8 57 115 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +57 57 57 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_12.pal b/graphics/wireless_status_screen/anim_12.pal new file mode 100644 index 000000000..d1e4bdd02 --- /dev/null +++ b/graphics/wireless_status_screen/anim_12.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +8 57 115 +8 57 115 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +57 57 57 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/wireless_status_screen/anim_13.pal b/graphics/wireless_status_screen/anim_13.pal new file mode 100644 index 000000000..dd11346b7 --- /dev/null +++ b/graphics/wireless_status_screen/anim_13.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +57 57 57 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics/link/wireless_info_screen.bin b/graphics/wireless_status_screen/bg.bin similarity index 100% rename from graphics/link/wireless_info_screen.bin rename to graphics/wireless_status_screen/bg.bin diff --git a/graphics/wireless_status_screen/bg.png b/graphics/wireless_status_screen/bg.png new file mode 100644 index 000000000..4c453cf1a Binary files /dev/null and b/graphics/wireless_status_screen/bg.png differ diff --git a/graphics/wireless_status_screen/default.pal b/graphics/wireless_status_screen/default.pal new file mode 100644 index 000000000..dd11346b7 --- /dev/null +++ b/graphics/wireless_status_screen/default.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +90 90 90 +57 57 57 +172 123 0 +90 90 90 +57 57 57 +164 164 164 +255 180 0 +106 106 106 +74 74 74 diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index f25a64579..03ca31ad3 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -688,7 +688,7 @@ $(WALLPAPERGFXDIR)/whiscash/tiles.4bpp: $(WALLPAPERGFXDIR)/friends_frame2.4bpp $ $(OBJEVENTGFXDIR)/pics/effects/unknown_4F6D38/0.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 11 -Wnum_tiles -$(INTERFACEGFXDIR)/selector_outline.4bpp: %.4bpp: %.png +$(INTERFACEGFXDIR)/outline_cursor.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 8 -Wnum_tiles $(BATTRANSGFXDIR)/frontier_logo_center.4bpp: %.4bpp: %.png diff --git a/include/battle.h b/include/battle.h index 5d9f57e43..ebc8be057 100644 --- a/include/battle.h +++ b/include/battle.h @@ -240,7 +240,7 @@ struct WishFutureKnock u8 wishCounter[MAX_BATTLERS_COUNT]; u8 wishPartyId[MAX_BATTLERS_COUNT]; u8 weatherDuration; - u8 knockedOffMons[2]; // Each battler is represented by a bit. The array entry is dependent on the battler's side. + u8 knockedOffMons[NUM_BATTLE_SIDES]; // Each battler is represented by a bit. }; struct AI_SavedBattleMon @@ -451,9 +451,9 @@ struct BattleTv_Mon struct BattleTv { - struct BattleTv_Mon mon[2][PARTY_SIZE]; // [side][partyId] - struct BattleTv_Position pos[2][2]; // [side][flank] - struct BattleTv_Side side[2]; // [side] + struct BattleTv_Mon mon[NUM_BATTLE_SIDES][PARTY_SIZE]; + struct BattleTv_Position pos[NUM_BATTLE_SIDES][2]; // [side][flank] + struct BattleTv_Side side[NUM_BATTLE_SIDES]; }; struct BattleTvMovePoints @@ -570,7 +570,7 @@ struct BattleStruct u8 wallyWaitFrames; u8 wallyMoveFrames; u16 lastTakenMove[MAX_BATTLERS_COUNT]; // Last move that a battler was hit with. - u16 hpOnSwitchout[2]; + u16 hpOnSwitchout[NUM_BATTLE_SIDES]; u32 savedBattleTypeFlags; u16 abilityPreventingSwitchout; u8 hpScale; @@ -916,8 +916,8 @@ extern u16 gMoveResultFlags; extern u32 gHitMarker; extern u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT]; extern u8 gUnusedFirstBattleVar2; -extern u32 gSideStatuses[2]; -extern struct SideTimer gSideTimers[2]; +extern u32 gSideStatuses[NUM_BATTLE_SIDES]; +extern struct SideTimer gSideTimers[NUM_BATTLE_SIDES]; extern u32 gStatuses3[MAX_BATTLERS_COUNT]; extern u32 gStatuses4[MAX_BATTLERS_COUNT]; extern struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT]; diff --git a/include/constants/battle.h b/include/constants/battle.h index 366471e47..654df26ed 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -36,6 +36,7 @@ #define B_SIDE_PLAYER 0 #define B_SIDE_OPPONENT 1 +#define NUM_BATTLE_SIDES 2 #define B_FLANK_LEFT 0 #define B_FLANK_RIGHT 1 diff --git a/include/list_menu.h b/include/list_menu.h index e70a92bab..9299ede6c 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -7,12 +7,20 @@ #define LIST_CANCEL -2 #define LIST_HEADER -3 -#define LIST_NO_MULTIPLE_SCROLL 0 -#define LIST_MULTIPLE_SCROLL_DPAD 1 -#define LIST_MULTIPLE_SCROLL_L_R 2 +enum { + LIST_NO_MULTIPLE_SCROLL, + LIST_MULTIPLE_SCROLL_DPAD, + LIST_MULTIPLE_SCROLL_L_R, +}; -enum -{ +enum { + CURSOR_BLACK_ARROW, + CURSOR_INVISIBLE, + CURSOR_RED_OUTLINE, + CURSOR_RED_ARROW, +}; + +enum { SCROLL_ARROW_LEFT, SCROLL_ARROW_RIGHT, SCROLL_ARROW_UP, diff --git a/include/pokemon.h b/include/pokemon.h index 0f0db7da9..f70fda91a 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -293,7 +293,7 @@ struct BattlePokemon /*0x55*/ u32 otId; }; -struct BaseStats +struct SpeciesInfo { /* 0x00 */ u8 baseHP; /* 0x01 */ u8 baseAttack; @@ -394,7 +394,7 @@ extern struct SpriteTemplate gMultiuseSpriteTemplate; extern const struct BattleMove gBattleMoves[]; extern const u8 gFacilityClassToPicIndex[]; extern const u8 gFacilityClassToTrainerClass[]; -extern const struct BaseStats gBaseStats[]; +extern const struct SpeciesInfo gSpeciesInfo[]; extern const u8 *const gItemEffectTable[]; extern const u32 gExperienceTables[][MAX_LEVEL + 1]; extern const struct LevelUpMove *const gLevelUpLearnsets[]; diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 5876e8b47..e7657cc4e 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -209,9 +209,9 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) species = GetMonData(&party[i], MON_DATA_SPECIES); if (GetMonData(&party[i], MON_DATA_ABILITY_NUM) != 0) - monAbility = gBaseStats[species].abilities[1]; + monAbility = gSpeciesInfo[species].abilities[1]; else - monAbility = gBaseStats[species].abilities[0]; + monAbility = gSpeciesInfo[species].abilities[0]; if (absorbingTypeAbility == monAbility && Random() & 1) { @@ -583,9 +583,9 @@ static bool8 FindMonWithFlagsAndSuperEffective(u16 flags, u8 moduloPercent) species = GetMonData(&party[i], MON_DATA_SPECIES); if (GetMonData(&party[i], MON_DATA_ABILITY_NUM) != 0) - monAbility = gBaseStats[species].abilities[1]; + monAbility = gSpeciesInfo[species].abilities[1]; else - monAbility = gBaseStats[species].abilities[0]; + monAbility = gSpeciesInfo[species].abilities[0]; CalcPartyMonTypeEffectivenessMultiplier(gLastLandedMoves[gActiveBattler], species, monAbility); if (gMoveResultFlags & flags) @@ -832,8 +832,8 @@ static u32 GetBestMonTypeMatchup(struct Pokemon *party, int firstId, int lastId, u8 atkType1 = gBattleMons[opposingBattler].type1; u8 atkType2 = gBattleMons[opposingBattler].type2; - u8 defType1 = gBaseStats[species].type1; - u8 defType2 = gBaseStats[species].type2; + u8 defType1 = gSpeciesInfo[species].type1; + u8 defType2 = gSpeciesInfo[species].type2; typeEffectiveness *= GetTypeModifier(atkType1, defType1); if (atkType2 != atkType1) diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 113d5d3e0..35b1b3bfd 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -552,9 +552,9 @@ void SetBattlerData(u8 battlerId) if (BATTLE_HISTORY->abilities[battlerId] != ABILITY_NONE) gBattleMons[battlerId].ability = BATTLE_HISTORY->abilities[battlerId]; // Check if mon can only have one ability. - else if (gBaseStats[gBattleMons[battlerId].species].abilities[1] == ABILITY_NONE - || gBaseStats[gBattleMons[battlerId].species].abilities[1] == gBaseStats[gBattleMons[battlerId].species].abilities[0]) - gBattleMons[battlerId].ability = gBaseStats[gBattleMons[battlerId].species].abilities[0]; + else if (gSpeciesInfo[gBattleMons[battlerId].species].abilities[1] == ABILITY_NONE + || gSpeciesInfo[gBattleMons[battlerId].species].abilities[1] == gSpeciesInfo[gBattleMons[battlerId].species].abilities[0]) + gBattleMons[battlerId].ability = gSpeciesInfo[gBattleMons[battlerId].species].abilities[0]; // The ability is unknown. else gBattleMons[battlerId].ability = ABILITY_NONE; @@ -628,12 +628,12 @@ bool32 IsBattlerTrapped(u8 battler, bool8 checkSwitch) u32 GetTotalBaseStat(u32 species) { - return gBaseStats[species].baseHP - + gBaseStats[species].baseAttack - + gBaseStats[species].baseDefense - + gBaseStats[species].baseSpeed - + gBaseStats[species].baseSpAttack - + gBaseStats[species].baseSpDefense; + return gSpeciesInfo[species].baseHP + + gSpeciesInfo[species].baseAttack + + gSpeciesInfo[species].baseDefense + + gSpeciesInfo[species].baseSpeed + + gSpeciesInfo[species].baseSpAttack + + gSpeciesInfo[species].baseSpDefense; } bool32 IsTruantMonVulnerable(u32 battlerAI, u32 opposingBattler) @@ -1183,12 +1183,12 @@ s32 AI_GetAbility(u32 battlerId) return knownAbility; // Else, guess the ability - if (gBaseStats[gBattleMons[battlerId].species].abilities[0] != ABILITY_NONE) + if (gSpeciesInfo[gBattleMons[battlerId].species].abilities[0] != ABILITY_NONE) { u16 abilityGuess = ABILITY_NONE; while (abilityGuess == ABILITY_NONE) { - abilityGuess = gBaseStats[gBattleMons[battlerId].species].abilities[Random() % NUM_ABILITY_SLOTS]; + abilityGuess = gSpeciesInfo[gBattleMons[battlerId].species].abilities[Random() % NUM_ABILITY_SLOTS]; } return abilityGuess; diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index 93bb49524..0db7f69d5 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -5667,11 +5667,11 @@ static void AnimTipMon_Step(struct Sprite *sprite) void AnimTask_SkullBashPosition(u8 taskId) { - u8 a; + u8 side; gTasks[taskId].data[0] = gBattlerSpriteIds[gBattleAnimAttacker]; - a = GetBattlerSide(gBattleAnimAttacker); - gTasks[taskId].data[1] = a; + side = GetBattlerSide(gBattleAnimAttacker); + gTasks[taskId].data[1] = side; gTasks[taskId].data[2] = 0; switch (gBattleAnimArgs[0]) { @@ -5683,7 +5683,7 @@ void AnimTask_SkullBashPosition(u8 taskId) gTasks[taskId].data[3] = 8; gTasks[taskId].data[4] = 0; gTasks[taskId].data[5] = 3; - if (a == 0) + if (side == B_SIDE_PLAYER) gTasks[taskId].data[5] *= -1; gTasks[taskId].func = AnimTask_SkullBashPositionSet; @@ -5692,7 +5692,7 @@ void AnimTask_SkullBashPosition(u8 taskId) gTasks[taskId].data[3] = 8; gTasks[taskId].data[4] = 0x600; gTasks[taskId].data[5] = 0xC0; - if (a == 0) + if (side == B_SIDE_PLAYER) { gTasks[taskId].data[4] = -gTasks[taskId].data[4]; gTasks[taskId].data[5] = -gTasks[taskId].data[5]; diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 83c3ddb74..d2d0cecd8 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -1384,7 +1384,7 @@ static void Task_GiveExpToMon(u8 taskId) u16 species = GetMonData(mon, MON_DATA_SPECIES); u8 level = GetMonData(mon, MON_DATA_LEVEL); u32 currExp = GetMonData(mon, MON_DATA_EXP); - u32 nextLvlExp = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + u32 nextLvlExp = gExperienceTables[gSpeciesInfo[species].growthRate][level + 1]; if (currExp + gainedExp >= nextLvlExp) { @@ -1427,11 +1427,11 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId) u8 level = GetMonData(mon, MON_DATA_LEVEL); u16 species = GetMonData(mon, MON_DATA_SPECIES); u32 exp = GetMonData(mon, MON_DATA_EXP); - u32 currLvlExp = gExperienceTables[gBaseStats[species].growthRate][level]; + u32 currLvlExp = gExperienceTables[gSpeciesInfo[species].growthRate][level]; u32 expToNextLvl; exp -= currLvlExp; - expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp; + expToNextLvl = gExperienceTables[gSpeciesInfo[species].growthRate][level + 1] - currLvlExp; SetBattleBarStruct(battlerId, gHealthboxSpriteIds[battlerId], expToNextLvl, exp, -gainedExp); PlaySE(SE_EXP); gTasks[taskId].func = Task_GiveExpWithExpBar; @@ -1463,7 +1463,7 @@ static void Task_GiveExpWithExpBar(u8 taskId) level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); currExp = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); - expOnNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + expOnNextLvl = gExperienceTables[gSpeciesInfo[species].growthRate][level + 1]; if (currExp + gainedExp >= expOnNextLvl) { diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index d39d745a6..712f1562d 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -325,7 +325,7 @@ static void Task_GiveExpToMon(u8 taskId) u16 species = GetMonData(mon, MON_DATA_SPECIES); u8 level = GetMonData(mon, MON_DATA_LEVEL); u32 currExp = GetMonData(mon, MON_DATA_EXP); - u32 nextLvlExp = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + u32 nextLvlExp = gExperienceTables[gSpeciesInfo[species].growthRate][level + 1]; if (currExp + gainedExp >= nextLvlExp) { @@ -368,11 +368,11 @@ static void Task_PrepareToGiveExpWithExpBar(u8 taskId) u8 level = GetMonData(mon, MON_DATA_LEVEL); u16 species = GetMonData(mon, MON_DATA_SPECIES); u32 exp = GetMonData(mon, MON_DATA_EXP); - u32 currLvlExp = gExperienceTables[gBaseStats[species].growthRate][level]; + u32 currLvlExp = gExperienceTables[gSpeciesInfo[species].growthRate][level]; u32 expToNextLvl; exp -= currLvlExp; - expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp; + expToNextLvl = gExperienceTables[gSpeciesInfo[species].growthRate][level + 1] - currLvlExp; SetBattleBarStruct(battlerId, gHealthboxSpriteIds[battlerId], expToNextLvl, exp, -gainedExp); PlaySE(SE_EXP); gTasks[taskId].func = Task_GiveExpWithExpBar; @@ -404,7 +404,7 @@ static void Task_GiveExpWithExpBar(u8 taskId) level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); currExp = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); - expOnNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + expOnNextLvl = gExperienceTables[gSpeciesInfo[species].growthRate][level + 1]; if (currExp + gainedExp >= expOnNextLvl) { diff --git a/src/battle_dome.c b/src/battle_dome.c index 84b7652a5..7005890d8 100644 --- a/src/battle_dome.c +++ b/src/battle_dome.c @@ -2348,8 +2348,8 @@ static void InitDomeTrainers(void) rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPDEF, NULL); rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_SPEED, NULL); rankingScores[0] += GetMonData(&gPlayerParty[trainerId], MON_DATA_MAX_HP, NULL); - monTypesBits |= gBitTable[gBaseStats[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].type1]; - monTypesBits |= gBitTable[gBaseStats[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].type2]; + monTypesBits |= gBitTable[gSpeciesInfo[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].type1]; + monTypesBits |= gBitTable[gSpeciesInfo[GetMonData(&gPlayerParty[trainerId], MON_DATA_SPECIES, NULL)].type2]; } // Count the number of types in the players party, to factor into the ranking @@ -2383,8 +2383,8 @@ static void InitDomeTrainers(void) rankingScores[i] += statValues[STAT_SPDEF]; rankingScores[i] += statValues[STAT_SPEED]; rankingScores[i] += statValues[STAT_HP]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type1]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type2]; + monTypesBits |= gBitTable[gSpeciesInfo[gFacilityTrainerMons[DOME_MONS[i][j]].species].type1]; + monTypesBits |= gBitTable[gSpeciesInfo[gFacilityTrainerMons[DOME_MONS[i][j]].species].type2]; } for (monTypesCount = 0, j = 0; j < 32; j++) @@ -2448,7 +2448,7 @@ static void InitDomeTrainers(void) #define CALC_STAT(base, statIndex) \ { \ - u8 baseStat = gBaseStats[species].base; \ + u8 baseStat = gSpeciesInfo[species].base; \ stats[statIndex] = (((2 * baseStat + ivs + evs[statIndex] / 4) * level) / 100) + 5; \ stats[statIndex] = (u8) ModifyStatByNature(nature, stats[statIndex], statIndex); \ } @@ -2481,7 +2481,7 @@ static void CalcDomeMonStats(u16 species, int level, int ivs, u8 evBits, u8 natu } else { - int n = 2 * gBaseStats[species].baseHP; + int n = 2 * gSpeciesInfo[species].baseHP; stats[STAT_HP] = (((n + ivs + evs[STAT_HP] / 4) * level) / 100) + level + 10; } @@ -2750,9 +2750,9 @@ static int GetTypeEffectivenessPoints(int move, int targetSpecies, int mode) if (move == MOVE_NONE || move == MOVE_UNAVAILABLE || IS_MOVE_STATUS(move)) return 0; - defType1 = gBaseStats[targetSpecies].type1; - defType2 = gBaseStats[targetSpecies].type2; - defAbility = gBaseStats[targetSpecies].abilities[0]; + defType1 = gSpeciesInfo[targetSpecies].type1; + defType2 = gSpeciesInfo[targetSpecies].type2; + defAbility = gSpeciesInfo[targetSpecies].abilities[0]; moveType = gBattleMoves[move].type; if (defAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND) @@ -5188,9 +5188,9 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun targetSpecies = gFacilityTrainerMons[DOME_MONS[loserTournamentId][k]].species; if (personality & 1) - targetAbility = gBaseStats[targetSpecies].abilities[1]; + targetAbility = gSpeciesInfo[targetSpecies].abilities[1]; else - targetAbility = gBaseStats[targetSpecies].abilities[0]; + targetAbility = gSpeciesInfo[targetSpecies].abilities[0]; typeMultiplier = CalcPartyMonTypeEffectivenessMultiplier(moveIds[i * 4 + j], targetSpecies, targetAbility); if (typeMultiplier == UQ_4_12(0)) @@ -5865,8 +5865,8 @@ static void InitRandomTourneyTreeResults(void) statSums[i] += statValues[STAT_SPDEF]; statSums[i] += statValues[STAT_SPEED]; statSums[i] += statValues[STAT_HP]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type1]; - monTypesBits |= gBitTable[gBaseStats[gFacilityTrainerMons[DOME_MONS[i][j]].species].type2]; + monTypesBits |= gBitTable[gSpeciesInfo[gFacilityTrainerMons[DOME_MONS[i][j]].species].type1]; + monTypesBits |= gBitTable[gSpeciesInfo[gFacilityTrainerMons[DOME_MONS[i][j]].species].type2]; } // Because GF hates temporary vars, trainerId acts like monTypesCount here. @@ -5992,12 +5992,12 @@ static void DecideRoundWinners(u8 roundId) } } species = gFacilityTrainerMons[DOME_MONS[tournamentId1][monId1]].species; - points1 += ( gBaseStats[species].baseHP - + gBaseStats[species].baseAttack - + gBaseStats[species].baseDefense - + gBaseStats[species].baseSpeed - + gBaseStats[species].baseSpAttack - + gBaseStats[species].baseSpDefense) / 10; + points1 += ( gSpeciesInfo[species].baseHP + + gSpeciesInfo[species].baseAttack + + gSpeciesInfo[species].baseDefense + + gSpeciesInfo[species].baseSpeed + + gSpeciesInfo[species].baseSpAttack + + gSpeciesInfo[species].baseSpDefense) / 10; } // Random part of the formula. points1 += (Random() & 0x1F); @@ -6015,12 +6015,12 @@ static void DecideRoundWinners(u8 roundId) } } species = gFacilityTrainerMons[DOME_MONS[tournamentId2][monId1]].species; - points2 += ( gBaseStats[species].baseHP - + gBaseStats[species].baseAttack - + gBaseStats[species].baseDefense - + gBaseStats[species].baseSpeed - + gBaseStats[species].baseSpAttack - + gBaseStats[species].baseSpDefense) / 10; + points2 += ( gSpeciesInfo[species].baseHP + + gSpeciesInfo[species].baseAttack + + gSpeciesInfo[species].baseDefense + + gSpeciesInfo[species].baseSpeed + + gSpeciesInfo[species].baseSpAttack + + gSpeciesInfo[species].baseSpDefense) / 10; } // Random part of the formula. points2 += (Random() & 0x1F); diff --git a/src/battle_factory.c b/src/battle_factory.c index 12e477e32..77f501387 100644 --- a/src/battle_factory.c +++ b/src/battle_factory.c @@ -618,9 +618,9 @@ static void GetOpponentMostCommonMonType(void) for (i = 0; i < FRONTIER_PARTY_SIZE; i++) { u32 species = gFacilityTrainerMons[gFrontierTempParty[i]].species; - typeCounts[gBaseStats[species].type1]++; - if (gBaseStats[species].type1 != gBaseStats[species].type2) - typeCounts[gBaseStats[species].type2]++; + typeCounts[gSpeciesInfo[species].type1]++; + if (gSpeciesInfo[species].type1 != gSpeciesInfo[species].type2) + typeCounts[gSpeciesInfo[species].type2]++; } // Determine which are the two most-common types. diff --git a/src/battle_interface.c b/src/battle_interface.c index 0754b4ec9..e8bc31608 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -2393,9 +2393,9 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem species = GetMonData(mon, MON_DATA_SPECIES); level = GetMonData(mon, MON_DATA_LEVEL); exp = GetMonData(mon, MON_DATA_EXP); - currLevelExp = gExperienceTables[gBaseStats[species].growthRate][level]; + currLevelExp = gExperienceTables[gSpeciesInfo[species].growthRate][level]; currExpBarValue = exp - currLevelExp; - maxExpBarValue = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLevelExp; + maxExpBarValue = gExperienceTables[gSpeciesInfo[species].growthRate][level + 1] - currLevelExp; SetBattleBarStruct(battlerId, healthboxSpriteId, maxExpBarValue, currExpBarValue, isDoubles); MoveBattleBar(battlerId, healthboxSpriteId, EXP_BAR, 0); } diff --git a/src/battle_main.c b/src/battle_main.c index fb581e196..392e53268 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -193,8 +193,8 @@ EWRAM_DATA u16 gMoveResultFlags = 0; EWRAM_DATA u32 gHitMarker = 0; EWRAM_DATA u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u8 gUnusedFirstBattleVar2 = 0; // Never read -EWRAM_DATA u32 gSideStatuses[2] = {0}; -EWRAM_DATA struct SideTimer gSideTimers[2] = {0}; +EWRAM_DATA u32 gSideStatuses[NUM_BATTLE_SIDES] = {0}; +EWRAM_DATA struct SideTimer gSideTimers[NUM_BATTLE_SIDES] = {0}; EWRAM_DATA u32 gStatuses3[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u32 gStatuses4[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA struct DisableStruct gDisableStructs[MAX_BATTLERS_COUNT] = {0}; @@ -3020,7 +3020,7 @@ static void BattleStartClearSetData(void) gBattleStruct->runTries = 0; gBattleStruct->safariGoNearCounter = 0; gBattleStruct->safariPkblThrowCounter = 0; - gBattleStruct->safariCatchFactor = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275; + gBattleStruct->safariCatchFactor = gSpeciesInfo[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275; gBattleStruct->safariEscapeFactor = 3; gBattleStruct->wildVictorySong = 0; gBattleStruct->moneyMultiplier = 1; @@ -3254,8 +3254,8 @@ void FaintClearSetData(void) gBattleResources->flags->flags[gActiveBattler] = 0; - gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1; - gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2; + gBattleMons[gActiveBattler].type1 = gSpeciesInfo[gBattleMons[gActiveBattler].species].type1; + gBattleMons[gActiveBattler].type2 = gSpeciesInfo[gBattleMons[gActiveBattler].species].type2; gBattleMons[gActiveBattler].type3 = TYPE_MYSTERY; Ai_UpdateFaintData(gActiveBattler); @@ -3357,8 +3357,8 @@ static void DoBattleIntro(void) else { memcpy(&gBattleMons[gActiveBattler], &gBattleResources->bufferB[gActiveBattler][4], sizeof(struct BattlePokemon)); - gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1; - gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2; + gBattleMons[gActiveBattler].type1 = gSpeciesInfo[gBattleMons[gActiveBattler].species].type1; + gBattleMons[gActiveBattler].type2 = gSpeciesInfo[gBattleMons[gActiveBattler].species].type2; gBattleMons[gActiveBattler].type3 = TYPE_MYSTERY; gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].abilityNum); gBattleStruct->hpOnSwitchout[GetBattlerSide(gActiveBattler)] = gBattleMons[gActiveBattler].hp; diff --git a/src/battle_pike.c b/src/battle_pike.c index eca5bd167..dd3028923 100644 --- a/src/battle_pike.c +++ b/src/battle_pike.c @@ -848,24 +848,24 @@ static bool8 DoesTypePreventStatus(u16 species, u32 status) switch (status) { case STATUS1_TOXIC_POISON: - if (gBaseStats[species].type1 == TYPE_STEEL || gBaseStats[species].type1 == TYPE_POISON - || gBaseStats[species].type2 == TYPE_STEEL || gBaseStats[species].type2 == TYPE_POISON) + if (gSpeciesInfo[species].type1 == TYPE_STEEL || gSpeciesInfo[species].type1 == TYPE_POISON + || gSpeciesInfo[species].type2 == TYPE_STEEL || gSpeciesInfo[species].type2 == TYPE_POISON) ret = TRUE; break; case STATUS1_FREEZE: - if (gBaseStats[species].type1 == TYPE_ICE || gBaseStats[species].type2 == TYPE_ICE) + if (gSpeciesInfo[species].type1 == TYPE_ICE || gSpeciesInfo[species].type2 == TYPE_ICE) ret = TRUE; break; case STATUS1_PARALYSIS: - if (gBaseStats[species].type1 == TYPE_GROUND || gBaseStats[species].type2 == TYPE_GROUND + if (gSpeciesInfo[species].type1 == TYPE_GROUND || gSpeciesInfo[species].type2 == TYPE_GROUND #if B_PARALYZE_ELECTRIC >= GEN_6 - || gBaseStats[species].type1 == TYPE_ELECTRIC || gBaseStats[species].type2 == TYPE_ELECTRIC + || gSpeciesInfo[species].type1 == TYPE_ELECTRIC || gSpeciesInfo[species].type2 == TYPE_ELECTRIC #endif ) ret = TRUE; break; case STATUS1_BURN: - if (gBaseStats[species].type1 == TYPE_FIRE || gBaseStats[species].type2 == TYPE_FIRE) + if (gSpeciesInfo[species].type1 == TYPE_FIRE || gSpeciesInfo[species].type2 == TYPE_FIRE) ret = TRUE; break; case STATUS1_SLEEP: @@ -1144,9 +1144,9 @@ bool32 TryGenerateBattlePikeWildMon(bool8 checkKeenEyeIntimidate) SetMonData(&gEnemyParty[0], MON_DATA_EXP, - &gExperienceTables[gBaseStats[wildMons[headerId][pikeMonId].species].growthRate][monLevel]); + &gExperienceTables[gSpeciesInfo[wildMons[headerId][pikeMonId].species].growthRate][monLevel]); - if (gBaseStats[wildMons[headerId][pikeMonId].species].abilities[1]) + if (gSpeciesInfo[wildMons[headerId][pikeMonId].species].abilities[1]) abilityNum = Random() % 2; else abilityNum = 0; diff --git a/src/battle_pyramid.c b/src/battle_pyramid.c index 2c1e20d0d..336582ba5 100644 --- a/src/battle_pyramid.c +++ b/src/battle_pyramid.c @@ -1371,7 +1371,7 @@ void GenerateBattlePyramidWildMon(void) } SetMonData(&gEnemyParty[0], MON_DATA_EXP, - &gExperienceTables[gBaseStats[wildMons[id].species].growthRate][lvl]); + &gExperienceTables[gSpeciesInfo[wildMons[id].species].growthRate][lvl]); switch (wildMons[id].abilityNum) { @@ -1381,7 +1381,7 @@ void GenerateBattlePyramidWildMon(void) break; case ABILITY_RANDOM: default: - if (gBaseStats[wildMons[id].species].abilities[1]) + if (gSpeciesInfo[wildMons[id].species].abilities[1]) { i = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY, NULL) % 2; SetMonData(&gEnemyParty[0], MON_DATA_ABILITY_NUM, &i); diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index 67afaefe1..4f72a7463 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -160,7 +160,7 @@ static const struct ListMenuTemplate sListMenuTemplate = .itemVerticalPadding = 0, .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NARROW, - .cursorKind = 0 + .cursorKind = CURSOR_BLACK_ARROW }; enum { diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index b7551ab9e..257f9848f 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -4036,9 +4036,9 @@ static void Cmd_getexp(void) viaExpShare++; } #if (B_SCALED_EXP >= GEN_5) && (B_SCALED_EXP != GEN_6) - calculatedExp = gBaseStats[gBattleMons[gBattlerFainted].species].expYield * gBattleMons[gBattlerFainted].level / 5; + calculatedExp = gSpeciesInfo[gBattleMons[gBattlerFainted].species].expYield * gBattleMons[gBattlerFainted].level / 5; #else - calculatedExp = gBaseStats[gBattleMons[gBattlerFainted].species].expYield * gBattleMons[gBattlerFainted].level / 7; + calculatedExp = gSpeciesInfo[gBattleMons[gBattlerFainted].species].expYield * gBattleMons[gBattlerFainted].level / 7; #endif #if B_SPLIT_EXP < GEN_6 @@ -6054,8 +6054,8 @@ static void Cmd_switchindataupdate(void) for (i = 0; i < sizeof(struct BattlePokemon); i++) monData[i] = gBattleResources->bufferB[gActiveBattler][4 + i]; - gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1; - gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2; + gBattleMons[gActiveBattler].type1 = gSpeciesInfo[gBattleMons[gActiveBattler].species].type1; + gBattleMons[gActiveBattler].type2 = gSpeciesInfo[gBattleMons[gActiveBattler].species].type2; gBattleMons[gActiveBattler].type3 = TYPE_MYSTERY; gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].abilityNum); @@ -8094,8 +8094,8 @@ static void RecalcBattlerStats(u32 battler, struct Pokemon *mon) gBattleMons[battler].spAttack = GetMonData(mon, MON_DATA_SPATK); gBattleMons[battler].spDefense = GetMonData(mon, MON_DATA_SPDEF); gBattleMons[battler].ability = GetMonAbility(mon); - gBattleMons[battler].type1 = gBaseStats[gBattleMons[battler].species].type1; - gBattleMons[battler].type2 = gBaseStats[gBattleMons[battler].species].type2; + gBattleMons[battler].type1 = gSpeciesInfo[gBattleMons[battler].species].type1; + gBattleMons[battler].type2 = gSpeciesInfo[gBattleMons[battler].species].type2; } static u32 GetHighestStatId(u32 battlerId) @@ -12854,10 +12854,10 @@ static void Cmd_trydobeatup(void) gBattlescriptCurrInstr += 9; - gBattleMoveDamage = gBaseStats[GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES)].baseAttack; + gBattleMoveDamage = gSpeciesInfo[GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES)].baseAttack; gBattleMoveDamage *= gBattleMoves[gCurrentMove].power; gBattleMoveDamage *= (GetMonData(&party[gBattleCommunication[0]], MON_DATA_LEVEL) * 2 / 5 + 2); - gBattleMoveDamage /= gBaseStats[gBattleMons[gBattlerTarget].species].baseDefense; + gBattleMoveDamage /= gSpeciesInfo[gBattleMons[gBattlerTarget].species].baseDefense; gBattleMoveDamage = (gBattleMoveDamage / 50) + 2; if (gProtectStructs[gBattlerAttacker].helpingHand) gBattleMoveDamage = gBattleMoveDamage * 15 / 10; @@ -13719,7 +13719,7 @@ static void Cmd_pickup(void) species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); - ability = gBaseStats[species].abilities[GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM)]; + ability = gSpeciesInfo[species].abilities[GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM)]; if (ability == ABILITY_PICKUP && species != SPECIES_NONE @@ -13755,7 +13755,7 @@ static void Cmd_pickup(void) if (lvlDivBy10 > 9) lvlDivBy10 = 9; - ability = gBaseStats[species].abilities[GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM)]; + ability = gSpeciesInfo[species].abilities[GetMonData(&gPlayerParty[i], MON_DATA_ABILITY_NUM)]; if (ability == ABILITY_PICKUP && species != SPECIES_NONE @@ -14094,9 +14094,9 @@ static void Cmd_handleballthrow(void) if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) catchRate = gBattleStruct->safariCatchFactor * 1275 / 100; else - catchRate = gBaseStats[gBattleMons[gBattlerTarget].species].catchRate; + catchRate = gSpeciesInfo[gBattleMons[gBattlerTarget].species].catchRate; - if (gBaseStats[gBattleMons[gBattlerTarget].species].flags & SPECIES_FLAG_ULTRA_BEAST) + if (gSpeciesInfo[gBattleMons[gBattlerTarget].species].flags & SPECIES_FLAG_ULTRA_BEAST) { if (gLastUsedItem == ITEM_BEAST_BALL) ballMultiplier = 500; @@ -14221,7 +14221,7 @@ static void Cmd_handleballthrow(void) } break; case ITEM_FAST_BALL: - if (gBaseStats[gBattleMons[gBattlerTarget].species].baseSpeed >= 100) + if (gSpeciesInfo[gBattleMons[gBattlerTarget].species].baseSpeed >= 100) ballMultiplier = 400; break; case ITEM_HEAVY_BALL: diff --git a/src/battle_tower.c b/src/battle_tower.c index 3ae7c350c..f66c8c1f7 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -79,72 +79,71 @@ static void FillPartnerParty(u16 trainerId); static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer); static u8 SetTentPtrsGetLevel(void); -// Const rom data. const u16 gBattleFrontierHeldItems[] = { - ITEM_NONE, - ITEM_KINGS_ROCK, - ITEM_SITRUS_BERRY, - ITEM_ORAN_BERRY, - ITEM_CHESTO_BERRY, - ITEM_HARD_STONE, - ITEM_FOCUS_BAND, - ITEM_PERSIM_BERRY, - ITEM_MIRACLE_SEED, - ITEM_BERRY_JUICE, - ITEM_MACHO_BRACE, - ITEM_SILVER_POWDER, - ITEM_CHERI_BERRY, - ITEM_BLACK_GLASSES, - ITEM_BLACK_BELT, - ITEM_SOUL_DEW, - ITEM_CHOICE_BAND, - ITEM_MAGNET, - ITEM_SILK_SCARF, - ITEM_WHITE_HERB, - ITEM_DEEP_SEA_SCALE, - ITEM_DEEP_SEA_TOOTH, - ITEM_MYSTIC_WATER, - ITEM_SHARP_BEAK, - ITEM_QUICK_CLAW, - ITEM_LEFTOVERS, - ITEM_RAWST_BERRY, - ITEM_LIGHT_BALL, - ITEM_POISON_BARB, - ITEM_NEVER_MELT_ICE, - ITEM_ASPEAR_BERRY, - ITEM_SPELL_TAG, - ITEM_BRIGHT_POWDER, - ITEM_LEPPA_BERRY, - ITEM_SCOPE_LENS, - ITEM_TWISTED_SPOON, - ITEM_METAL_COAT, - ITEM_MENTAL_HERB, - ITEM_CHARCOAL, - ITEM_PECHA_BERRY, - ITEM_SOFT_SAND, - ITEM_LUM_BERRY, - ITEM_DRAGON_SCALE, - ITEM_DRAGON_FANG, - ITEM_IAPAPA_BERRY, - ITEM_WIKI_BERRY, - ITEM_SEA_INCENSE, - ITEM_SHELL_BELL, - ITEM_SALAC_BERRY, - ITEM_LANSAT_BERRY, - ITEM_APICOT_BERRY, - ITEM_STARF_BERRY, - ITEM_LIECHI_BERRY, - ITEM_LEEK, - ITEM_LAX_INCENSE, - ITEM_AGUAV_BERRY, - ITEM_FIGY_BERRY, - ITEM_THICK_CLUB, - ITEM_MAGO_BERRY, - ITEM_METAL_POWDER, - ITEM_PETAYA_BERRY, - ITEM_LUCKY_PUNCH, - ITEM_GANLON_BERRY + [BATTLE_FRONTIER_ITEM_NONE] = ITEM_NONE, + [BATTLE_FRONTIER_ITEM_KINGS_ROCK] = ITEM_KINGS_ROCK, + [BATTLE_FRONTIER_ITEM_SITRUS_BERRY] = ITEM_SITRUS_BERRY, + [BATTLE_FRONTIER_ITEM_ORAN_BERRY] = ITEM_ORAN_BERRY, + [BATTLE_FRONTIER_ITEM_CHESTO_BERRY] = ITEM_CHESTO_BERRY, + [BATTLE_FRONTIER_ITEM_HARD_STONE] = ITEM_HARD_STONE, + [BATTLE_FRONTIER_ITEM_FOCUS_BAND] = ITEM_FOCUS_BAND, + [BATTLE_FRONTIER_ITEM_PERSIM_BERRY] = ITEM_PERSIM_BERRY, + [BATTLE_FRONTIER_ITEM_MIRACLE_SEED] = ITEM_MIRACLE_SEED, + [BATTLE_FRONTIER_ITEM_BERRY_JUICE] = ITEM_BERRY_JUICE, + [BATTLE_FRONTIER_ITEM_MACHO_BRACE] = ITEM_MACHO_BRACE, + [BATTLE_FRONTIER_ITEM_SILVER_POWDER] = ITEM_SILVER_POWDER, + [BATTLE_FRONTIER_ITEM_CHERI_BERRY] = ITEM_CHERI_BERRY, + [BATTLE_FRONTIER_ITEM_BLACK_GLASSES] = ITEM_BLACK_GLASSES, + [BATTLE_FRONTIER_ITEM_BLACK_BELT] = ITEM_BLACK_BELT, + [BATTLE_FRONTIER_ITEM_SOUL_DEW] = ITEM_SOUL_DEW, + [BATTLE_FRONTIER_ITEM_CHOICE_BAND] = ITEM_CHOICE_BAND, + [BATTLE_FRONTIER_ITEM_MAGNET] = ITEM_MAGNET, + [BATTLE_FRONTIER_ITEM_SILK_SCARF] = ITEM_SILK_SCARF, + [BATTLE_FRONTIER_ITEM_WHITE_HERB] = ITEM_WHITE_HERB, + [BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE] = ITEM_DEEP_SEA_SCALE, + [BATTLE_FRONTIER_ITEM_DEEP_SEA_TOOTH] = ITEM_DEEP_SEA_TOOTH, + [BATTLE_FRONTIER_ITEM_MYSTIC_WATER] = ITEM_MYSTIC_WATER, + [BATTLE_FRONTIER_ITEM_SHARP_BEAK] = ITEM_SHARP_BEAK, + [BATTLE_FRONTIER_ITEM_QUICK_CLAW] = ITEM_QUICK_CLAW, + [BATTLE_FRONTIER_ITEM_LEFTOVERS] = ITEM_LEFTOVERS, + [BATTLE_FRONTIER_ITEM_RAWST_BERRY] = ITEM_RAWST_BERRY, + [BATTLE_FRONTIER_ITEM_LIGHT_BALL] = ITEM_LIGHT_BALL, + [BATTLE_FRONTIER_ITEM_POISON_BARB] = ITEM_POISON_BARB, + [BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE] = ITEM_NEVER_MELT_ICE, + [BATTLE_FRONTIER_ITEM_ASPEAR_BERRY] = ITEM_ASPEAR_BERRY, + [BATTLE_FRONTIER_ITEM_SPELL_TAG] = ITEM_SPELL_TAG, + [BATTLE_FRONTIER_ITEM_BRIGHT_POWDER] = ITEM_BRIGHT_POWDER, + [BATTLE_FRONTIER_ITEM_LEPPA_BERRY] = ITEM_LEPPA_BERRY, + [BATTLE_FRONTIER_ITEM_SCOPE_LENS] = ITEM_SCOPE_LENS, + [BATTLE_FRONTIER_ITEM_TWISTED_SPOON] = ITEM_TWISTED_SPOON, + [BATTLE_FRONTIER_ITEM_METAL_COAT] = ITEM_METAL_COAT, + [BATTLE_FRONTIER_ITEM_MENTAL_HERB] = ITEM_MENTAL_HERB, + [BATTLE_FRONTIER_ITEM_CHARCOAL] = ITEM_CHARCOAL, + [BATTLE_FRONTIER_ITEM_PECHA_BERRY] = ITEM_PECHA_BERRY, + [BATTLE_FRONTIER_ITEM_SOFT_SAND] = ITEM_SOFT_SAND, + [BATTLE_FRONTIER_ITEM_LUM_BERRY] = ITEM_LUM_BERRY, + [BATTLE_FRONTIER_ITEM_DRAGON_SCALE] = ITEM_DRAGON_SCALE, + [BATTLE_FRONTIER_ITEM_DRAGON_FANG] = ITEM_DRAGON_FANG, + [BATTLE_FRONTIER_ITEM_IAPAPA_BERRY] = ITEM_IAPAPA_BERRY, + [BATTLE_FRONTIER_ITEM_WIKI_BERRY] = ITEM_WIKI_BERRY, + [BATTLE_FRONTIER_ITEM_SEA_INCENSE] = ITEM_SEA_INCENSE, + [BATTLE_FRONTIER_ITEM_SHELL_BELL] = ITEM_SHELL_BELL, + [BATTLE_FRONTIER_ITEM_SALAC_BERRY] = ITEM_SALAC_BERRY, + [BATTLE_FRONTIER_ITEM_LANSAT_BERRY] = ITEM_LANSAT_BERRY, + [BATTLE_FRONTIER_ITEM_APICOT_BERRY] = ITEM_APICOT_BERRY, + [BATTLE_FRONTIER_ITEM_STARF_BERRY] = ITEM_STARF_BERRY, + [BATTLE_FRONTIER_ITEM_LIECHI_BERRY] = ITEM_LIECHI_BERRY, + [BATTLE_FRONTIER_ITEM_LEEK] = ITEM_LEEK, + [BATTLE_FRONTIER_ITEM_LAX_INCENSE] = ITEM_LAX_INCENSE, + [BATTLE_FRONTIER_ITEM_AGUAV_BERRY] = ITEM_AGUAV_BERRY, + [BATTLE_FRONTIER_ITEM_FIGY_BERRY] = ITEM_FIGY_BERRY, + [BATTLE_FRONTIER_ITEM_THICK_CLUB] = ITEM_THICK_CLUB, + [BATTLE_FRONTIER_ITEM_MAGO_BERRY] = ITEM_MAGO_BERRY, + [BATTLE_FRONTIER_ITEM_METAL_POWDER] = ITEM_METAL_POWDER, + [BATTLE_FRONTIER_ITEM_PETAYA_BERRY] = ITEM_PETAYA_BERRY, + [BATTLE_FRONTIER_ITEM_LUCKY_PUNCH] = ITEM_LUCKY_PUNCH, + [BATTLE_FRONTIER_ITEM_GANLON_BERRY] = ITEM_GANLON_BERRY, }; #include "data/battle_frontier/battle_frontier_trainer_mons.h" @@ -3650,7 +3649,7 @@ void TrySetLinkBattleTowerEnemyPartyLevel(void) u32 species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES, NULL); if (species) { - SetMonData(&gEnemyParty[i], MON_DATA_EXP, &gExperienceTables[gBaseStats[species].growthRate][enemyLevel]); + SetMonData(&gEnemyParty[i], MON_DATA_EXP, &gExperienceTables[gSpeciesInfo[species].growthRate][enemyLevel]); CalculateMonStats(&gEnemyParty[i]); } } diff --git a/src/battle_util.c b/src/battle_util.c index dbb5c9989..b629c8322 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -231,7 +231,7 @@ static u8 CalcBeatUpPower(void) party = gEnemyParty; // Party slot is set in the battle script for Beat Up species = GetMonData(&party[gBattleCommunication[0] - 1], MON_DATA_SPECIES); - basePower = (gBaseStats[species].baseAttack / 10) + 5; + basePower = (gSpeciesInfo[species].baseAttack / 10) + 5; return basePower; } @@ -2075,8 +2075,8 @@ u8 GetImprisonedMovesCount(u8 battlerId, u16 move) void RestoreBattlerOriginalTypes(u8 battlerId) { - gBattleMons[battlerId].type1 = gBaseStats[gBattleMons[battlerId].species].type1; - gBattleMons[battlerId].type2 = gBaseStats[gBattleMons[battlerId].species].type2; + gBattleMons[battlerId].type1 = gSpeciesInfo[gBattleMons[battlerId].species].type1; + gBattleMons[battlerId].type2 = gSpeciesInfo[gBattleMons[battlerId].species].type2; } void TryToApplyMimicry(u8 battlerId, bool8 various) @@ -2132,7 +2132,7 @@ u32 GetBattlerFriendshipScore(u8 battlerId) if (side != B_SIDE_PLAYER) return FRIENDSHIP_NONE; - else if (gBaseStats[species].flags & SPECIES_FLAG_MEGA_EVOLUTION + else if (gSpeciesInfo[species].flags & SPECIES_FLAG_MEGA_EVOLUTION || (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_LINK @@ -9612,9 +9612,9 @@ u16 CalcPartyMonTypeEffectivenessMultiplier(u16 move, u16 speciesDef, u16 abilit if (move != MOVE_STRUGGLE && moveType != TYPE_MYSTERY) { - MulByTypeEffectiveness(&modifier, move, moveType, 0, gBaseStats[speciesDef].type1, 0, FALSE); - if (gBaseStats[speciesDef].type2 != gBaseStats[speciesDef].type1) - MulByTypeEffectiveness(&modifier, move, moveType, 0, gBaseStats[speciesDef].type2, 0, FALSE); + MulByTypeEffectiveness(&modifier, move, moveType, 0, gSpeciesInfo[speciesDef].type1, 0, FALSE); + if (gSpeciesInfo[speciesDef].type2 != gSpeciesInfo[speciesDef].type1) + MulByTypeEffectiveness(&modifier, move, moveType, 0, gSpeciesInfo[speciesDef].type2, 0, FALSE); if (moveType == TYPE_GROUND && abilityDef == ABILITY_LEVITATE && !(gFieldStatuses & STATUS_FIELD_GRAVITY)) modifier = UQ_4_12(0.0); diff --git a/src/berry_blender.c b/src/berry_blender.c index 50c24660c..52daa1721 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -2676,7 +2676,7 @@ static void CB2_EndBlenderGame(void) switch (Menu_ProcessInputNoWrapClearOnChoose()) { case 1: - case -1: + case MENU_B_PRESSED: sBerryBlender->yesNoAnswer = 1; sBerryBlender->gameEndState++; for (i = 0; i < BLENDER_MAX_PLAYERS; i++) diff --git a/src/braille.c b/src/braille.c index 704f50760..91872b88a 100644 --- a/src/braille.c +++ b/src/braille.c @@ -88,7 +88,7 @@ u16 FontFunc_Braille(struct TextPrinter *textPrinter) subStruct->fontId = *textPrinter->printerTemplate.currentChar; textPrinter->printerTemplate.currentChar++; return RENDER_REPEAT; - case EXT_CTRL_CODE_RESET_SIZE: + case EXT_CTRL_CODE_RESET_FONT: return RENDER_REPEAT; case EXT_CTRL_CODE_PAUSE: textPrinter->delayCounter = *textPrinter->printerTemplate.currentChar++; @@ -109,7 +109,7 @@ u16 FontFunc_Braille(struct TextPrinter *textPrinter) case EXT_CTRL_CODE_ESCAPE: char_ = *++textPrinter->printerTemplate.currentChar; break; - case EXT_CTRL_CODE_SHIFT_TEXT: + case EXT_CTRL_CODE_SHIFT_RIGHT: textPrinter->printerTemplate.currentX = textPrinter->printerTemplate.x + *textPrinter->printerTemplate.currentChar++; return RENDER_REPEAT; case EXT_CTRL_CODE_SHIFT_DOWN: diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c index 9b79b48f1..ed5461d91 100644 --- a/src/clear_save_data_screen.c +++ b/src/clear_save_data_screen.c @@ -95,7 +95,7 @@ static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId) gTasks[taskId].func = Task_ClearSaveData; break; case 1: - case -1: + case MENU_B_PRESSED: PlaySE(SE_SELECT); DestroyTask(taskId); SetMainCallback2(CB2_FadeAndDoReset); diff --git a/src/contest.c b/src/contest.c index 463b66449..b9ec9add6 100644 --- a/src/contest.c +++ b/src/contest.c @@ -5317,7 +5317,7 @@ static void SetMoveSpecificAnimData(u8 contestant) switch (move) { case MOVE_CURSE: - if (gBaseStats[species].type1 == TYPE_GHOST || gBaseStats[species].type2 == TYPE_GHOST) + if (gSpeciesInfo[species].type1 == TYPE_GHOST || gSpeciesInfo[species].type2 == TYPE_GHOST) gAnimMoveTurn = 0; else gAnimMoveTurn = 1; diff --git a/src/data/pokemon/base_stats.h b/src/data/pokemon/species_info.h similarity index 97% rename from src/data/pokemon/base_stats.h rename to src/data/pokemon/species_info.h index a161fbf90..95ccf90aa 100644 --- a/src/data/pokemon/base_stats.h +++ b/src/data/pokemon/species_info.h @@ -16,7 +16,7 @@ .baseSpDefense = 40 #endif -#define PIKACHU_BASE_STATS(gender, flip) \ +#define PIKACHU_SPECIES_INFO(gender, flip) \ { \ .baseHP = 35, \ .baseAttack = 55, \ @@ -28,7 +28,7 @@ .catchRate = 190, \ .expYield = 112, \ .evYield_Speed = 2, \ - .itemRare = ITEM_LIGHT_BALL, \ + .itemRare = ITEM_LIGHT_BALL, \ .genderRatio = gender, \ .eggCycles = 10, \ .friendship = 70, \ @@ -40,10 +40,10 @@ .noFlip = flip, \ } -#define COSPLAY_PIKACHU_BASE_STATS(flip) PIKACHU_BASE_STATS(MON_FEMALE, flip) -#define CAP_PIKACHU_BASE_STATS(flip) PIKACHU_BASE_STATS(MON_MALE, flip) +#define COSPLAY_PIKACHU_SPECIES_INFO(flip) PIKACHU_SPECIES_INFO(MON_FEMALE, flip) +#define CAP_PIKACHU_SPECIES_INFO(flip) PIKACHU_SPECIES_INFO(MON_MALE, flip) -#define PICHU_BASE_STATS(flip) \ +#define PICHU_SPECIES_INFO(flip) \ { \ .baseHP = 20, \ .baseAttack = 40, \ @@ -67,7 +67,7 @@ .noFlip = flip, \ } -#define UNOWN_BASE_STATS(flip) \ +#define UNOWN_SPECIES_INFO(flip) \ { \ .baseHP = 48, \ .baseAttack = 72, \ @@ -92,7 +92,7 @@ .noFlip = flip, \ } -#define CASTFORM_BASE_STATS(type, color) \ +#define CASTFORM_SPECIES_INFO(type, color) \ { \ .baseHP = 70, \ .baseAttack = 70, \ @@ -105,8 +105,8 @@ .catchRate = 45, \ .expYield = 147, \ .evYield_HP = 1, \ - .itemCommon = ITEM_MYSTIC_WATER, \ - .itemRare = ITEM_MYSTIC_WATER, \ + .itemCommon = ITEM_MYSTIC_WATER, \ + .itemRare = ITEM_MYSTIC_WATER, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 25, \ .friendship = 70, \ @@ -118,7 +118,7 @@ .noFlip = FALSE, \ } -#define BURMY_BASE_STATS(color) \ +#define BURMY_SPECIES_INFO(color) \ { \ .baseHP = 40, \ .baseAttack = 29, \ @@ -142,7 +142,7 @@ .noFlip = FALSE, \ } -#define CHERRIM_BASE_STATS(color) \ +#define CHERRIM_SPECIES_INFO(color) \ { \ .baseHP = 70, \ .baseAttack = 60, \ @@ -155,7 +155,7 @@ .catchRate = 75, \ .expYield = 158, \ .evYield_SpAttack = 2, \ - .itemRare = ITEM_MIRACLE_SEED, \ + .itemRare = ITEM_MIRACLE_SEED, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 20, \ .friendship = 70, \ @@ -167,7 +167,7 @@ .noFlip = FALSE, \ } -#define SHELLOS_BASE_STATS(color) \ +#define SHELLOS_SPECIES_INFO(color) \ { \ .baseHP = 76, \ .baseAttack = 48, \ @@ -191,7 +191,7 @@ .noFlip = FALSE, \ } -#define GASTRODON_BASE_STATS(color) \ +#define GASTRODON_SPECIES_INFO(color) \ { \ .baseHP = 111, \ .baseAttack = 83, \ @@ -215,7 +215,7 @@ .noFlip = FALSE, \ } -#define ROTOM_FORM_BASE_STATS(type, flip) \ +#define ROTOM_FORM_SPECIES_INFO(type, flip) \ { \ .baseHP = 50, \ .baseAttack = 65, \ @@ -240,7 +240,7 @@ .noFlip = flip, \ } -#define ARCEUS_BASE_STATS(type) \ +#define ARCEUS_SPECIES_INFO(type) \ { \ .baseHP = 120, \ .baseAttack = 120, \ @@ -265,7 +265,7 @@ .flags = SPECIES_FLAG_MYTHICAL, \ } -#define DEERLING_BASE_STATS(color) \ +#define DEERLING_SPECIES_INFO(color) \ { \ .baseHP = 60, \ .baseAttack = 60, \ @@ -289,7 +289,7 @@ .noFlip = FALSE, \ } -#define SAWSBUCK_BASE_STATS \ +#define SAWSBUCK_SPECIES_INFO \ { \ .baseHP = 80, \ .baseAttack = 100, \ @@ -313,7 +313,7 @@ .noFlip = FALSE, \ } -#define GENESECT_BASE_STATS \ +#define GENESECT_SPECIES_INFO \ { \ .baseHP = 71, \ .baseAttack = 120, \ @@ -340,7 +340,7 @@ .flags = SPECIES_FLAG_MYTHICAL, \ } -#define VIVILLON_BASE_STATS(color) \ +#define VIVILLON_SPECIES_INFO(color) \ { \ .baseHP = 80, \ .baseAttack = 52, \ @@ -366,7 +366,7 @@ .noFlip = FALSE, \ } -#define FLABEBE_BASE_STATS \ +#define FLABEBE_SPECIES_INFO \ { \ .baseHP = 44, \ .baseAttack = 38, \ @@ -390,7 +390,7 @@ .noFlip = FALSE, \ } -#define FLOETTE_BASE_STATS \ +#define FLOETTE_SPECIES_INFO \ { \ .baseHP = 54, \ .baseAttack = 45, \ @@ -414,7 +414,7 @@ .noFlip = FALSE, \ } -#define FLORGES_BASE_STATS \ +#define FLORGES_SPECIES_INFO \ { \ .baseHP = 78, \ .baseAttack = 65, \ @@ -438,7 +438,7 @@ .noFlip = FALSE, \ } -#define FURFROU_BASE_STATS(flip) \ +#define FURFROU_SPECIES_INFO(flip) \ { \ .baseHP = 75, \ .baseAttack = 80, \ @@ -462,7 +462,7 @@ .noFlip = flip, \ } -#define PUMKPABOO_MISC_STATS \ +#define PUMKPABOO_MISC_INFO \ .type1 = TYPE_GHOST, \ .type2 = TYPE_GRASS, \ .catchRate = 120, \ @@ -478,7 +478,7 @@ .bodyColor = BODY_COLOR_BROWN, \ .noFlip = FALSE -#define GOURGEIST_MISC_STATS \ +#define GOURGEIST_MISC_INFO \ .type1 = TYPE_GHOST, \ .type2 = TYPE_GRASS, \ .catchRate = 60, \ @@ -494,7 +494,7 @@ .bodyColor = BODY_COLOR_BROWN, \ .noFlip = FALSE -#define XERNEAS_BASE_STATS \ +#define XERNEAS_SPECIES_INFO \ { \ .baseHP = 126, \ .baseAttack = 131, \ @@ -519,7 +519,7 @@ .flags = SPECIES_FLAG_LEGENDARY, \ } -#define ZYGARDE_50_BASE_STATS(ability) \ +#define ZYGARDE_50_SPECIES_INFO(ability) \ { \ .baseHP = 108, \ .baseAttack = 100, \ @@ -544,7 +544,7 @@ .flags = SPECIES_FLAG_LEGENDARY, \ } -#define ZYGARDE_10_BASE_STATS(ability) \ +#define ZYGARDE_10_SPECIES_INFO(ability) \ { \ .baseHP = 54, \ .baseAttack = 100, \ @@ -569,7 +569,7 @@ .flags = SPECIES_FLAG_LEGENDARY, \ } -#define ORICORIO_BASE_STATS(type, color) \ +#define ORICORIO_SPECIES_INFO(type, color) \ { \ .baseHP = 75, \ .baseAttack = 70, \ @@ -582,7 +582,7 @@ .catchRate = 45, \ .expYield = 167, \ .evYield_SpAttack = 2, \ - .itemRare = ITEM_HONEY, \ + .itemRare = ITEM_HONEY, \ .genderRatio = PERCENT_FEMALE(75), \ .eggCycles = 20, \ .friendship = 70, \ @@ -594,31 +594,31 @@ .noFlip = FALSE, \ } -#define ROCKRUFF_BASE_STATS(ability1, ability2, hiddenAbility)\ - { \ - .baseHP = 45, \ - .baseAttack = 65, \ - .baseDefense = 40, \ - .baseSpeed = 60, \ - .baseSpAttack = 30, \ - .baseSpDefense = 40, \ - .type1 = TYPE_ROCK, \ - .type2 = TYPE_ROCK, \ - .catchRate = 190, \ - .expYield = 56, \ - .evYield_Attack = 1, \ - .genderRatio = PERCENT_FEMALE(50), \ - .eggCycles = 15, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_FAST, \ - .eggGroup1 = EGG_GROUP_FIELD, \ - .eggGroup2 = EGG_GROUP_FIELD, \ - .abilities = {ability1, ability2, hiddenAbility}, \ - .bodyColor = BODY_COLOR_BROWN, \ - .noFlip = FALSE, \ +#define ROCKRUFF_SPECIES_INFO(ability1, ability2, hiddenAbility)\ + { \ + .baseHP = 45, \ + .baseAttack = 65, \ + .baseDefense = 40, \ + .baseSpeed = 60, \ + .baseSpAttack = 30, \ + .baseSpDefense = 40, \ + .type1 = TYPE_ROCK, \ + .type2 = TYPE_ROCK, \ + .catchRate = 190, \ + .expYield = 56, \ + .evYield_Attack = 1, \ + .genderRatio = PERCENT_FEMALE(50), \ + .eggCycles = 15, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_FAST, \ + .eggGroup1 = EGG_GROUP_FIELD, \ + .eggGroup2 = EGG_GROUP_FIELD, \ + .abilities = {ability1, ability2, hiddenAbility}, \ + .bodyColor = BODY_COLOR_BROWN, \ + .noFlip = FALSE, \ } -#define SILVALLY_BASE_STATS(type) \ +#define SILVALLY_SPECIES_INFO(type) \ { \ .baseHP = 95, \ .baseAttack = 95, \ @@ -659,38 +659,38 @@ .baseSpAttack = 100, \ .baseSpDefense = 60 -#define MINIOR_MISC_STATS(color) \ - .type1 = TYPE_ROCK, \ - .type2 = TYPE_FLYING, \ - .catchRate = 30, \ - .expYield = 154, \ - .evYield_Defense = 1, \ - .evYield_SpDefense = 1, \ - .itemRare = ITEM_STAR_PIECE, \ - .genderRatio = MON_GENDERLESS, \ - .eggCycles = 25, \ - .friendship = 70, \ - .growthRate = GROWTH_MEDIUM_SLOW, \ - .eggGroup1 = EGG_GROUP_MINERAL, \ - .eggGroup2 = EGG_GROUP_MINERAL, \ - .abilities = {ABILITY_SHIELDS_DOWN, ABILITY_NONE},\ - .bodyColor = color, \ +#define MINIOR_MISC_INFO(color) \ + .type1 = TYPE_ROCK, \ + .type2 = TYPE_FLYING, \ + .catchRate = 30, \ + .expYield = 154, \ + .evYield_Defense = 1, \ + .evYield_SpDefense = 1, \ + .itemRare = ITEM_STAR_PIECE, \ + .genderRatio = MON_GENDERLESS, \ + .eggCycles = 25, \ + .friendship = 70, \ + .growthRate = GROWTH_MEDIUM_SLOW, \ + .eggGroup1 = EGG_GROUP_MINERAL, \ + .eggGroup2 = EGG_GROUP_MINERAL, \ + .abilities = {ABILITY_SHIELDS_DOWN, ABILITY_NONE}, \ + .bodyColor = color, \ .noFlip = TRUE -#define MINIOR_METEOR_BASE_STATS \ +#define MINIOR_METEOR_SPECIES_INFO \ { \ MINIOR_METEOR_ATTRIBUTES, \ - MINIOR_MISC_STATS(BODY_COLOR_BROWN),\ + MINIOR_MISC_INFO(BODY_COLOR_BROWN), \ } -#define MINIOR_CORE_BASE_STATS(color)\ - { \ - MINIOR_CORE_ATTRIBUTES, \ - MINIOR_MISC_STATS(color), \ +#define MINIOR_CORE_SPECIES_INFO(color) \ + { \ + MINIOR_CORE_ATTRIBUTES, \ + MINIOR_MISC_INFO(color), \ } -#define MIMIKYU_BASE_STATS \ +#define MIMIKYU_SPECIES_INFO \ { \ .baseHP = 55, \ .baseAttack = 90, \ @@ -703,7 +703,7 @@ .catchRate = 45, \ .expYield = 167, \ .evYield_SpDefense = 2, \ - .itemRare = ITEM_CHESTO_BERRY, \ + .itemRare = ITEM_CHESTO_BERRY, \ .genderRatio = PERCENT_FEMALE(50), \ .eggCycles = 20, \ .friendship = 70, \ @@ -715,7 +715,7 @@ .noFlip = FALSE, \ } -#define MAGEARNA_BASE_STATS(color) \ +#define MAGEARNA_SPECIES_INFO(color) \ { \ .baseHP = 80, \ .baseAttack = 95, \ @@ -740,7 +740,7 @@ .flags = SPECIES_FLAG_MYTHICAL, \ } -#define CRAMORANT_BASE_STATS \ +#define CRAMORANT_SPECIES_INFO \ { \ .baseHP = 70, \ .baseAttack = 85, \ @@ -764,7 +764,7 @@ .noFlip = FALSE, \ } -#define TOXTRICITY_BASE_STATS(ability2) \ +#define TOXTRICITY_SPECIES_INFO(ability2) \ { \ .baseHP = 75, \ .baseAttack = 98, \ @@ -788,7 +788,7 @@ .noFlip = FALSE, \ } -#define SINISTEA_BASE_STATS \ +#define SINISTEA_SPECIES_INFO \ { \ .baseHP = 40, \ .baseAttack = 45, \ @@ -812,7 +812,7 @@ .noFlip = FALSE, \ } -#define POLTEAGEIST_BASE_STATS \ +#define POLTEAGEIST_SPECIES_INFO \ { \ .baseHP = 60, \ .baseAttack = 65, \ @@ -836,7 +836,7 @@ .noFlip = FALSE, \ } -#define ALCREMIE_BASE_STATS(color) \ +#define ALCREMIE_SPECIES_INFO(color) \ { \ .baseHP = 65, \ .baseAttack = 60, \ @@ -860,7 +860,7 @@ .noFlip = FALSE, \ } -#define MORPEKO_BASE_STATS \ +#define MORPEKO_SPECIES_INFO \ { \ .baseHP = 58, \ .baseAttack = 95, \ @@ -884,7 +884,7 @@ .noFlip = FALSE, \ } -#define ZARUDE_BASE_STATS \ +#define ZARUDE_SPECIES_INFO \ { \ .baseHP = 105, \ .baseAttack = 120, \ @@ -909,7 +909,7 @@ .flags = SPECIES_FLAG_MYTHICAL, \ } -const struct BaseStats gBaseStats[] = +const struct SpeciesInfo gSpeciesInfo[] = { [SPECIES_NONE] = {0}, @@ -1515,7 +1515,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_PIKACHU] = PIKACHU_BASE_STATS(PERCENT_FEMALE(50), FLIP), + [SPECIES_PIKACHU] = PIKACHU_SPECIES_INFO(PERCENT_FEMALE(50), FLIP), [SPECIES_RAICHU] = { @@ -5215,7 +5215,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_PICHU] = PICHU_BASE_STATS(FLIP), + [SPECIES_PICHU] = PICHU_SPECIES_INFO(FLIP), [SPECIES_CLEFFA] = { @@ -5941,7 +5941,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_UNOWN] = UNOWN_BASE_STATS(FLIP), + [SPECIES_UNOWN] = UNOWN_SPECIES_INFO(FLIP), [SPECIES_WOBBUFFET] = { @@ -9751,7 +9751,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_CASTFORM] = CASTFORM_BASE_STATS(TYPE_NORMAL, BODY_COLOR_GRAY), + [SPECIES_CASTFORM] = CASTFORM_SPECIES_INFO(TYPE_NORMAL, BODY_COLOR_GRAY), [SPECIES_KECLEON] = { @@ -11261,7 +11261,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_BURMY] = BURMY_BASE_STATS(BODY_COLOR_GREEN), + [SPECIES_BURMY] = BURMY_SPECIES_INFO(BODY_COLOR_GREEN), [SPECIES_WORMADAM] = { @@ -11463,11 +11463,11 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_CHERRIM] = CHERRIM_BASE_STATS(BODY_COLOR_PURPLE), + [SPECIES_CHERRIM] = CHERRIM_SPECIES_INFO(BODY_COLOR_PURPLE), - [SPECIES_SHELLOS] = SHELLOS_BASE_STATS(BODY_COLOR_PURPLE), + [SPECIES_SHELLOS] = SHELLOS_SPECIES_INFO(BODY_COLOR_PURPLE), - [SPECIES_GASTRODON] = GASTRODON_BASE_STATS(BODY_COLOR_PURPLE), + [SPECIES_GASTRODON] = GASTRODON_SPECIES_INFO(BODY_COLOR_PURPLE), [SPECIES_AMBIPOM] = { @@ -15502,9 +15502,9 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_DEERLING] = DEERLING_BASE_STATS(BODY_COLOR_PINK), + [SPECIES_DEERLING] = DEERLING_SPECIES_INFO(BODY_COLOR_PINK), - [SPECIES_SAWSBUCK] = SAWSBUCK_BASE_STATS, + [SPECIES_SAWSBUCK] = SAWSBUCK_SPECIES_INFO, [SPECIES_EMOLGA] = { @@ -17047,7 +17047,7 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_GENESECT] = GENESECT_BASE_STATS, + [SPECIES_GENESECT] = GENESECT_SPECIES_INFO, #endif #if P_GEN_6_POKEMON == TRUE @@ -17435,7 +17435,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_VIVILLON] = VIVILLON_BASE_STATS(BODY_COLOR_WHITE), + [SPECIES_VIVILLON] = VIVILLON_SPECIES_INFO(BODY_COLOR_WHITE), [SPECIES_LITLEO] = { @@ -17486,11 +17486,11 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_GENDER_DIFFERENCE, }, - [SPECIES_FLABEBE] = FLABEBE_BASE_STATS, + [SPECIES_FLABEBE] = FLABEBE_SPECIES_INFO, - [SPECIES_FLOETTE] = FLOETTE_BASE_STATS, + [SPECIES_FLOETTE] = FLOETTE_SPECIES_INFO, - [SPECIES_FLORGES] = FLORGES_BASE_STATS, + [SPECIES_FLORGES] = FLORGES_SPECIES_INFO, [SPECIES_SKIDDO] = { @@ -17590,7 +17590,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_FURFROU] = FURFROU_BASE_STATS(FLIP), + [SPECIES_FURFROU] = FURFROU_SPECIES_INFO(FLIP), [SPECIES_ESPURR] = { @@ -18407,7 +18407,7 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 51, .baseSpAttack = 44, .baseSpDefense = 55, - PUMKPABOO_MISC_STATS, + PUMKPABOO_MISC_INFO, }, [SPECIES_GOURGEIST] = @@ -18418,7 +18418,7 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 84, .baseSpAttack = 58, .baseSpDefense = 75, - GOURGEIST_MISC_STATS, + GOURGEIST_MISC_INFO, }, [SPECIES_BERGMITE] = @@ -18533,7 +18533,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_XERNEAS] = XERNEAS_BASE_STATS, + [SPECIES_XERNEAS] = XERNEAS_SPECIES_INFO, [SPECIES_YVELTAL] = { @@ -18560,7 +18560,7 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_ZYGARDE] = ZYGARDE_50_BASE_STATS(ABILITY_AURA_BREAK), + [SPECIES_ZYGARDE] = ZYGARDE_50_SPECIES_INFO(ABILITY_AURA_BREAK), [SPECIES_DIANCIE] = { @@ -19104,7 +19104,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_ORICORIO] = ORICORIO_BASE_STATS(TYPE_FIRE, BODY_COLOR_RED), + [SPECIES_ORICORIO] = ORICORIO_SPECIES_INFO(TYPE_FIRE, BODY_COLOR_RED), [SPECIES_CUTIEFLY] = { @@ -19156,7 +19156,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_ROCKRUFF] = ROCKRUFF_BASE_STATS(ABILITY_KEEN_EYE, ABILITY_VITAL_SPIRIT, ABILITY_STEADFAST), + [SPECIES_ROCKRUFF] = ROCKRUFF_SPECIES_INFO(ABILITY_KEEN_EYE, ABILITY_VITAL_SPIRIT, ABILITY_STEADFAST), [SPECIES_LYCANROC] = { @@ -19851,9 +19851,9 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_SILVALLY] = SILVALLY_BASE_STATS(TYPE_NORMAL), + [SPECIES_SILVALLY] = SILVALLY_SPECIES_INFO(TYPE_NORMAL), - [SPECIES_MINIOR] = MINIOR_METEOR_BASE_STATS, + [SPECIES_MINIOR] = MINIOR_METEOR_SPECIES_INFO, [SPECIES_KOMALA] = { @@ -19929,7 +19929,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_MIMIKYU] = MIMIKYU_BASE_STATS, + [SPECIES_MIMIKYU] = MIMIKYU_SPECIES_INFO, [SPECIES_BRUXISH] = { @@ -20485,7 +20485,7 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_MAGEARNA] = MAGEARNA_BASE_STATS(BODY_COLOR_GRAY), + [SPECIES_MAGEARNA] = MAGEARNA_SPECIES_INFO(BODY_COLOR_GRAY), [SPECIES_MARSHADOW] = { @@ -21535,7 +21535,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_CRAMORANT] = CRAMORANT_BASE_STATS, + [SPECIES_CRAMORANT] = CRAMORANT_SPECIES_INFO, [SPECIES_ARROKUDA] = { @@ -21609,7 +21609,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_TOXTRICITY] = TOXTRICITY_BASE_STATS(ABILITY_PLUS), + [SPECIES_TOXTRICITY] = TOXTRICITY_SPECIES_INFO(ABILITY_PLUS), [SPECIES_SIZZLIPEDE] = { @@ -21707,9 +21707,9 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_SINISTEA] = SINISTEA_BASE_STATS, + [SPECIES_SINISTEA] = SINISTEA_SPECIES_INFO, - [SPECIES_POLTEAGEIST] = POLTEAGEIST_BASE_STATS, + [SPECIES_POLTEAGEIST] = POLTEAGEIST_SPECIES_INFO, [SPECIES_HATENNA] = { @@ -22024,7 +22024,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_ALCREMIE] = ALCREMIE_BASE_STATS(BODY_COLOR_WHITE), + [SPECIES_ALCREMIE] = ALCREMIE_SPECIES_INFO(BODY_COLOR_WHITE), [SPECIES_FALINKS] = { @@ -22196,7 +22196,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_MORPEKO] = MORPEKO_BASE_STATS, + [SPECIES_MORPEKO] = MORPEKO_SPECIES_INFO, [SPECIES_CUFANT] = { @@ -22565,7 +22565,7 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_ZARUDE] = ZARUDE_BASE_STATS, + [SPECIES_ZARUDE] = ZARUDE_SPECIES_INFO, [SPECIES_REGIELEKI] = { @@ -25497,55 +25497,55 @@ const struct BaseStats gBaseStats[] = }, #endif - [SPECIES_PIKACHU_COSPLAY] = COSPLAY_PIKACHU_BASE_STATS(FLIP), - [SPECIES_PIKACHU_ROCK_STAR] = COSPLAY_PIKACHU_BASE_STATS(FLIP), - [SPECIES_PIKACHU_BELLE] = COSPLAY_PIKACHU_BASE_STATS(NO_FLIP), - [SPECIES_PIKACHU_POP_STAR] = COSPLAY_PIKACHU_BASE_STATS(NO_FLIP), - [SPECIES_PIKACHU_PH_D] = COSPLAY_PIKACHU_BASE_STATS(FLIP), - [SPECIES_PIKACHU_LIBRE] = COSPLAY_PIKACHU_BASE_STATS(FLIP), + [SPECIES_PIKACHU_COSPLAY] = COSPLAY_PIKACHU_SPECIES_INFO(FLIP), + [SPECIES_PIKACHU_ROCK_STAR] = COSPLAY_PIKACHU_SPECIES_INFO(FLIP), + [SPECIES_PIKACHU_BELLE] = COSPLAY_PIKACHU_SPECIES_INFO(NO_FLIP), + [SPECIES_PIKACHU_POP_STAR] = COSPLAY_PIKACHU_SPECIES_INFO(NO_FLIP), + [SPECIES_PIKACHU_PH_D] = COSPLAY_PIKACHU_SPECIES_INFO(FLIP), + [SPECIES_PIKACHU_LIBRE] = COSPLAY_PIKACHU_SPECIES_INFO(FLIP), - [SPECIES_PIKACHU_ORIGINAL_CAP] = CAP_PIKACHU_BASE_STATS(NO_FLIP), - [SPECIES_PIKACHU_HOENN_CAP] = CAP_PIKACHU_BASE_STATS(FLIP), - [SPECIES_PIKACHU_SINNOH_CAP] = CAP_PIKACHU_BASE_STATS(FLIP), - [SPECIES_PIKACHU_UNOVA_CAP] = CAP_PIKACHU_BASE_STATS(FLIP), - [SPECIES_PIKACHU_KALOS_CAP] = CAP_PIKACHU_BASE_STATS(FLIP), - [SPECIES_PIKACHU_ALOLA_CAP] = CAP_PIKACHU_BASE_STATS(FLIP), - [SPECIES_PIKACHU_PARTNER_CAP] = CAP_PIKACHU_BASE_STATS(NO_FLIP), - [SPECIES_PIKACHU_WORLD_CAP] = CAP_PIKACHU_BASE_STATS(FLIP), + [SPECIES_PIKACHU_ORIGINAL_CAP] = CAP_PIKACHU_SPECIES_INFO(NO_FLIP), + [SPECIES_PIKACHU_HOENN_CAP] = CAP_PIKACHU_SPECIES_INFO(FLIP), + [SPECIES_PIKACHU_SINNOH_CAP] = CAP_PIKACHU_SPECIES_INFO(FLIP), + [SPECIES_PIKACHU_UNOVA_CAP] = CAP_PIKACHU_SPECIES_INFO(FLIP), + [SPECIES_PIKACHU_KALOS_CAP] = CAP_PIKACHU_SPECIES_INFO(FLIP), + [SPECIES_PIKACHU_ALOLA_CAP] = CAP_PIKACHU_SPECIES_INFO(FLIP), + [SPECIES_PIKACHU_PARTNER_CAP] = CAP_PIKACHU_SPECIES_INFO(NO_FLIP), + [SPECIES_PIKACHU_WORLD_CAP] = CAP_PIKACHU_SPECIES_INFO(FLIP), - [SPECIES_PICHU_SPIKY_EARED] = PICHU_BASE_STATS(NO_FLIP), + [SPECIES_PICHU_SPIKY_EARED] = PICHU_SPECIES_INFO(NO_FLIP), - [SPECIES_UNOWN_B] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_C] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_D] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_E] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_F] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_G] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_H] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_I] = UNOWN_BASE_STATS(FLIP), - [SPECIES_UNOWN_J] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_K] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_L] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_M] = UNOWN_BASE_STATS(FLIP), - [SPECIES_UNOWN_N] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_O] = UNOWN_BASE_STATS(FLIP), - [SPECIES_UNOWN_P] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_Q] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_R] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_S] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_T] = UNOWN_BASE_STATS(FLIP), - [SPECIES_UNOWN_U] = UNOWN_BASE_STATS(FLIP), - [SPECIES_UNOWN_V] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_W] = UNOWN_BASE_STATS(FLIP), - [SPECIES_UNOWN_X] = UNOWN_BASE_STATS(FLIP), - [SPECIES_UNOWN_Y] = UNOWN_BASE_STATS(FLIP), - [SPECIES_UNOWN_Z] = UNOWN_BASE_STATS(NO_FLIP), - [SPECIES_UNOWN_EMARK] = UNOWN_BASE_STATS(FLIP), - [SPECIES_UNOWN_QMARK] = UNOWN_BASE_STATS(NO_FLIP), + [SPECIES_UNOWN_B] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_C] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_D] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_E] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_F] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_G] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_H] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_I] = UNOWN_SPECIES_INFO(FLIP), + [SPECIES_UNOWN_J] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_K] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_L] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_M] = UNOWN_SPECIES_INFO(FLIP), + [SPECIES_UNOWN_N] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_O] = UNOWN_SPECIES_INFO(FLIP), + [SPECIES_UNOWN_P] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_Q] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_R] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_S] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_T] = UNOWN_SPECIES_INFO(FLIP), + [SPECIES_UNOWN_U] = UNOWN_SPECIES_INFO(FLIP), + [SPECIES_UNOWN_V] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_W] = UNOWN_SPECIES_INFO(FLIP), + [SPECIES_UNOWN_X] = UNOWN_SPECIES_INFO(FLIP), + [SPECIES_UNOWN_Y] = UNOWN_SPECIES_INFO(FLIP), + [SPECIES_UNOWN_Z] = UNOWN_SPECIES_INFO(NO_FLIP), + [SPECIES_UNOWN_EMARK] = UNOWN_SPECIES_INFO(FLIP), + [SPECIES_UNOWN_QMARK] = UNOWN_SPECIES_INFO(NO_FLIP), - [SPECIES_CASTFORM_SUNNY] = CASTFORM_BASE_STATS(TYPE_FIRE, BODY_COLOR_RED), - [SPECIES_CASTFORM_RAINY] = CASTFORM_BASE_STATS(TYPE_WATER, BODY_COLOR_BLUE), - [SPECIES_CASTFORM_SNOWY] = CASTFORM_BASE_STATS(TYPE_ICE, BODY_COLOR_WHITE), + [SPECIES_CASTFORM_SUNNY] = CASTFORM_SPECIES_INFO(TYPE_FIRE, BODY_COLOR_RED), + [SPECIES_CASTFORM_RAINY] = CASTFORM_SPECIES_INFO(TYPE_WATER, BODY_COLOR_BLUE), + [SPECIES_CASTFORM_SNOWY] = CASTFORM_SPECIES_INFO(TYPE_ICE, BODY_COLOR_WHITE), [SPECIES_DEOXYS_ATTACK] = { @@ -25622,8 +25622,8 @@ const struct BaseStats gBaseStats[] = }, #if P_GEN_4_POKEMON == TRUE - [SPECIES_BURMY_SANDY_CLOAK] = BURMY_BASE_STATS(BODY_COLOR_BROWN), - [SPECIES_BURMY_TRASH_CLOAK] = BURMY_BASE_STATS(BODY_COLOR_RED), + [SPECIES_BURMY_SANDY_CLOAK] = BURMY_SPECIES_INFO(BODY_COLOR_BROWN), + [SPECIES_BURMY_TRASH_CLOAK] = BURMY_SPECIES_INFO(BODY_COLOR_RED), [SPECIES_WORMADAM_SANDY_CLOAK] = { @@ -25676,17 +25676,17 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_CHERRIM_SUNSHINE] = CHERRIM_BASE_STATS(BODY_COLOR_PINK), + [SPECIES_CHERRIM_SUNSHINE] = CHERRIM_SPECIES_INFO(BODY_COLOR_PINK), - [SPECIES_SHELLOS_EAST_SEA] = SHELLOS_BASE_STATS(BODY_COLOR_BLUE), + [SPECIES_SHELLOS_EAST_SEA] = SHELLOS_SPECIES_INFO(BODY_COLOR_BLUE), - [SPECIES_GASTRODON_EAST_SEA] = GASTRODON_BASE_STATS(BODY_COLOR_BLUE), + [SPECIES_GASTRODON_EAST_SEA] = GASTRODON_SPECIES_INFO(BODY_COLOR_BLUE), - [SPECIES_ROTOM_HEAT] = ROTOM_FORM_BASE_STATS(TYPE_FIRE, FLIP), - [SPECIES_ROTOM_WASH] = ROTOM_FORM_BASE_STATS(TYPE_WATER, NO_FLIP), - [SPECIES_ROTOM_FROST] = ROTOM_FORM_BASE_STATS(TYPE_ICE, FLIP), - [SPECIES_ROTOM_FAN] = ROTOM_FORM_BASE_STATS(TYPE_FLYING, FLIP), - [SPECIES_ROTOM_MOW] = ROTOM_FORM_BASE_STATS(TYPE_GRASS, FLIP), + [SPECIES_ROTOM_HEAT] = ROTOM_FORM_SPECIES_INFO(TYPE_FIRE, FLIP), + [SPECIES_ROTOM_WASH] = ROTOM_FORM_SPECIES_INFO(TYPE_WATER, NO_FLIP), + [SPECIES_ROTOM_FROST] = ROTOM_FORM_SPECIES_INFO(TYPE_ICE, FLIP), + [SPECIES_ROTOM_FAN] = ROTOM_FORM_SPECIES_INFO(TYPE_FLYING, FLIP), + [SPECIES_ROTOM_MOW] = ROTOM_FORM_SPECIES_INFO(TYPE_GRASS, FLIP), [SPECIES_DIALGA_ORIGIN] = { @@ -25788,23 +25788,23 @@ const struct BaseStats gBaseStats[] = .noFlip = TRUE, }, - [SPECIES_ARCEUS_FIGHTING] = ARCEUS_BASE_STATS(TYPE_FIGHTING), - [SPECIES_ARCEUS_FLYING] = ARCEUS_BASE_STATS(TYPE_FLYING), - [SPECIES_ARCEUS_POISON] = ARCEUS_BASE_STATS(TYPE_POISON), - [SPECIES_ARCEUS_GROUND] = ARCEUS_BASE_STATS(TYPE_GROUND), - [SPECIES_ARCEUS_ROCK] = ARCEUS_BASE_STATS(TYPE_ROCK), - [SPECIES_ARCEUS_BUG] = ARCEUS_BASE_STATS(TYPE_BUG), - [SPECIES_ARCEUS_GHOST] = ARCEUS_BASE_STATS(TYPE_GHOST), - [SPECIES_ARCEUS_STEEL] = ARCEUS_BASE_STATS(TYPE_STEEL), - [SPECIES_ARCEUS_FIRE] = ARCEUS_BASE_STATS(TYPE_FIRE), - [SPECIES_ARCEUS_WATER] = ARCEUS_BASE_STATS(TYPE_WATER), - [SPECIES_ARCEUS_GRASS] = ARCEUS_BASE_STATS(TYPE_GRASS), - [SPECIES_ARCEUS_ELECTRIC] = ARCEUS_BASE_STATS(TYPE_ELECTRIC), - [SPECIES_ARCEUS_PSYCHIC] = ARCEUS_BASE_STATS(TYPE_PSYCHIC), - [SPECIES_ARCEUS_ICE] = ARCEUS_BASE_STATS(TYPE_ICE), - [SPECIES_ARCEUS_DRAGON] = ARCEUS_BASE_STATS(TYPE_DRAGON), - [SPECIES_ARCEUS_DARK] = ARCEUS_BASE_STATS(TYPE_DARK), - [SPECIES_ARCEUS_FAIRY] = ARCEUS_BASE_STATS(TYPE_FAIRY), + [SPECIES_ARCEUS_FIGHTING] = ARCEUS_SPECIES_INFO(TYPE_FIGHTING), + [SPECIES_ARCEUS_FLYING] = ARCEUS_SPECIES_INFO(TYPE_FLYING), + [SPECIES_ARCEUS_POISON] = ARCEUS_SPECIES_INFO(TYPE_POISON), + [SPECIES_ARCEUS_GROUND] = ARCEUS_SPECIES_INFO(TYPE_GROUND), + [SPECIES_ARCEUS_ROCK] = ARCEUS_SPECIES_INFO(TYPE_ROCK), + [SPECIES_ARCEUS_BUG] = ARCEUS_SPECIES_INFO(TYPE_BUG), + [SPECIES_ARCEUS_GHOST] = ARCEUS_SPECIES_INFO(TYPE_GHOST), + [SPECIES_ARCEUS_STEEL] = ARCEUS_SPECIES_INFO(TYPE_STEEL), + [SPECIES_ARCEUS_FIRE] = ARCEUS_SPECIES_INFO(TYPE_FIRE), + [SPECIES_ARCEUS_WATER] = ARCEUS_SPECIES_INFO(TYPE_WATER), + [SPECIES_ARCEUS_GRASS] = ARCEUS_SPECIES_INFO(TYPE_GRASS), + [SPECIES_ARCEUS_ELECTRIC] = ARCEUS_SPECIES_INFO(TYPE_ELECTRIC), + [SPECIES_ARCEUS_PSYCHIC] = ARCEUS_SPECIES_INFO(TYPE_PSYCHIC), + [SPECIES_ARCEUS_ICE] = ARCEUS_SPECIES_INFO(TYPE_ICE), + [SPECIES_ARCEUS_DRAGON] = ARCEUS_SPECIES_INFO(TYPE_DRAGON), + [SPECIES_ARCEUS_DARK] = ARCEUS_SPECIES_INFO(TYPE_DARK), + [SPECIES_ARCEUS_FAIRY] = ARCEUS_SPECIES_INFO(TYPE_FAIRY), #endif #if P_GEN_5_POKEMON == TRUE @@ -25907,13 +25907,13 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_GALARIAN_FORM, }, - [SPECIES_DEERLING_SUMMER] = DEERLING_BASE_STATS(BODY_COLOR_GREEN), - [SPECIES_DEERLING_AUTUMN] = DEERLING_BASE_STATS(BODY_COLOR_RED), - [SPECIES_DEERLING_WINTER] = DEERLING_BASE_STATS(BODY_COLOR_BROWN), + [SPECIES_DEERLING_SUMMER] = DEERLING_SPECIES_INFO(BODY_COLOR_GREEN), + [SPECIES_DEERLING_AUTUMN] = DEERLING_SPECIES_INFO(BODY_COLOR_RED), + [SPECIES_DEERLING_WINTER] = DEERLING_SPECIES_INFO(BODY_COLOR_BROWN), - [SPECIES_SAWSBUCK_SUMMER] = SAWSBUCK_BASE_STATS, - [SPECIES_SAWSBUCK_AUTUMN] = SAWSBUCK_BASE_STATS, - [SPECIES_SAWSBUCK_WINTER] = SAWSBUCK_BASE_STATS, + [SPECIES_SAWSBUCK_SUMMER] = SAWSBUCK_SPECIES_INFO, + [SPECIES_SAWSBUCK_AUTUMN] = SAWSBUCK_SPECIES_INFO, + [SPECIES_SAWSBUCK_WINTER] = SAWSBUCK_SPECIES_INFO, [SPECIES_TORNADUS_THERIAN] = { @@ -26094,10 +26094,10 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_MYTHICAL, }, - [SPECIES_GENESECT_DOUSE_DRIVE] = GENESECT_BASE_STATS, - [SPECIES_GENESECT_SHOCK_DRIVE] = GENESECT_BASE_STATS, - [SPECIES_GENESECT_BURN_DRIVE] = GENESECT_BASE_STATS, - [SPECIES_GENESECT_CHILL_DRIVE] = GENESECT_BASE_STATS, + [SPECIES_GENESECT_DOUSE_DRIVE] = GENESECT_SPECIES_INFO, + [SPECIES_GENESECT_SHOCK_DRIVE] = GENESECT_SPECIES_INFO, + [SPECIES_GENESECT_BURN_DRIVE] = GENESECT_SPECIES_INFO, + [SPECIES_GENESECT_CHILL_DRIVE] = GENESECT_SPECIES_INFO, #endif #if P_GEN_6_POKEMON == TRUE @@ -26149,35 +26149,35 @@ const struct BaseStats gBaseStats[] = .noFlip = TRUE, }, - [SPECIES_VIVILLON_POLAR] = VIVILLON_BASE_STATS(BODY_COLOR_BLUE), - [SPECIES_VIVILLON_TUNDRA] = VIVILLON_BASE_STATS(BODY_COLOR_BLUE), - [SPECIES_VIVILLON_CONTINENTAL] = VIVILLON_BASE_STATS(BODY_COLOR_YELLOW), - [SPECIES_VIVILLON_GARDEN] = VIVILLON_BASE_STATS(BODY_COLOR_GREEN), - [SPECIES_VIVILLON_ELEGANT] = VIVILLON_BASE_STATS(BODY_COLOR_PURPLE), - [SPECIES_VIVILLON_MEADOW] = VIVILLON_BASE_STATS(BODY_COLOR_PINK), - [SPECIES_VIVILLON_MODERN] = VIVILLON_BASE_STATS(BODY_COLOR_RED), - [SPECIES_VIVILLON_MARINE] = VIVILLON_BASE_STATS(BODY_COLOR_BLUE), - [SPECIES_VIVILLON_ARCHIPELAGO] = VIVILLON_BASE_STATS(BODY_COLOR_BROWN), - [SPECIES_VIVILLON_HIGH_PLAINS] = VIVILLON_BASE_STATS(BODY_COLOR_BROWN), - [SPECIES_VIVILLON_SANDSTORM] = VIVILLON_BASE_STATS(BODY_COLOR_BROWN), - [SPECIES_VIVILLON_RIVER] = VIVILLON_BASE_STATS(BODY_COLOR_BROWN), - [SPECIES_VIVILLON_MONSOON] = VIVILLON_BASE_STATS(BODY_COLOR_GRAY), - [SPECIES_VIVILLON_SAVANNA] = VIVILLON_BASE_STATS(BODY_COLOR_GREEN), - [SPECIES_VIVILLON_SUN] = VIVILLON_BASE_STATS(BODY_COLOR_RED), - [SPECIES_VIVILLON_OCEAN] = VIVILLON_BASE_STATS(BODY_COLOR_RED), - [SPECIES_VIVILLON_JUNGLE] = VIVILLON_BASE_STATS(BODY_COLOR_GREEN), - [SPECIES_VIVILLON_FANCY] = VIVILLON_BASE_STATS(BODY_COLOR_PINK), - [SPECIES_VIVILLON_POKE_BALL] = VIVILLON_BASE_STATS(BODY_COLOR_RED), + [SPECIES_VIVILLON_POLAR] = VIVILLON_SPECIES_INFO(BODY_COLOR_BLUE), + [SPECIES_VIVILLON_TUNDRA] = VIVILLON_SPECIES_INFO(BODY_COLOR_BLUE), + [SPECIES_VIVILLON_CONTINENTAL] = VIVILLON_SPECIES_INFO(BODY_COLOR_YELLOW), + [SPECIES_VIVILLON_GARDEN] = VIVILLON_SPECIES_INFO(BODY_COLOR_GREEN), + [SPECIES_VIVILLON_ELEGANT] = VIVILLON_SPECIES_INFO(BODY_COLOR_PURPLE), + [SPECIES_VIVILLON_MEADOW] = VIVILLON_SPECIES_INFO(BODY_COLOR_PINK), + [SPECIES_VIVILLON_MODERN] = VIVILLON_SPECIES_INFO(BODY_COLOR_RED), + [SPECIES_VIVILLON_MARINE] = VIVILLON_SPECIES_INFO(BODY_COLOR_BLUE), + [SPECIES_VIVILLON_ARCHIPELAGO] = VIVILLON_SPECIES_INFO(BODY_COLOR_BROWN), + [SPECIES_VIVILLON_HIGH_PLAINS] = VIVILLON_SPECIES_INFO(BODY_COLOR_BROWN), + [SPECIES_VIVILLON_SANDSTORM] = VIVILLON_SPECIES_INFO(BODY_COLOR_BROWN), + [SPECIES_VIVILLON_RIVER] = VIVILLON_SPECIES_INFO(BODY_COLOR_BROWN), + [SPECIES_VIVILLON_MONSOON] = VIVILLON_SPECIES_INFO(BODY_COLOR_GRAY), + [SPECIES_VIVILLON_SAVANNA] = VIVILLON_SPECIES_INFO(BODY_COLOR_GREEN), + [SPECIES_VIVILLON_SUN] = VIVILLON_SPECIES_INFO(BODY_COLOR_RED), + [SPECIES_VIVILLON_OCEAN] = VIVILLON_SPECIES_INFO(BODY_COLOR_RED), + [SPECIES_VIVILLON_JUNGLE] = VIVILLON_SPECIES_INFO(BODY_COLOR_GREEN), + [SPECIES_VIVILLON_FANCY] = VIVILLON_SPECIES_INFO(BODY_COLOR_PINK), + [SPECIES_VIVILLON_POKE_BALL] = VIVILLON_SPECIES_INFO(BODY_COLOR_RED), - [SPECIES_FLABEBE_YELLOW_FLOWER] = FLABEBE_BASE_STATS, - [SPECIES_FLABEBE_ORANGE_FLOWER] = FLABEBE_BASE_STATS, - [SPECIES_FLABEBE_BLUE_FLOWER] = FLABEBE_BASE_STATS, - [SPECIES_FLABEBE_WHITE_FLOWER] = FLABEBE_BASE_STATS, + [SPECIES_FLABEBE_YELLOW_FLOWER] = FLABEBE_SPECIES_INFO, + [SPECIES_FLABEBE_ORANGE_FLOWER] = FLABEBE_SPECIES_INFO, + [SPECIES_FLABEBE_BLUE_FLOWER] = FLABEBE_SPECIES_INFO, + [SPECIES_FLABEBE_WHITE_FLOWER] = FLABEBE_SPECIES_INFO, - [SPECIES_FLOETTE_YELLOW_FLOWER] = FLOETTE_BASE_STATS, - [SPECIES_FLOETTE_ORANGE_FLOWER] = FLOETTE_BASE_STATS, - [SPECIES_FLOETTE_BLUE_FLOWER] = FLOETTE_BASE_STATS, - [SPECIES_FLOETTE_WHITE_FLOWER] = FLOETTE_BASE_STATS, + [SPECIES_FLOETTE_YELLOW_FLOWER] = FLOETTE_SPECIES_INFO, + [SPECIES_FLOETTE_ORANGE_FLOWER] = FLOETTE_SPECIES_INFO, + [SPECIES_FLOETTE_BLUE_FLOWER] = FLOETTE_SPECIES_INFO, + [SPECIES_FLOETTE_WHITE_FLOWER] = FLOETTE_SPECIES_INFO, [SPECIES_FLOETTE_ETERNAL_FLOWER] = { @@ -26203,20 +26203,20 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_FLORGES_YELLOW_FLOWER] = FLORGES_BASE_STATS, - [SPECIES_FLORGES_ORANGE_FLOWER] = FLORGES_BASE_STATS, - [SPECIES_FLORGES_BLUE_FLOWER] = FLORGES_BASE_STATS, - [SPECIES_FLORGES_WHITE_FLOWER] = FLORGES_BASE_STATS, + [SPECIES_FLORGES_YELLOW_FLOWER] = FLORGES_SPECIES_INFO, + [SPECIES_FLORGES_ORANGE_FLOWER] = FLORGES_SPECIES_INFO, + [SPECIES_FLORGES_BLUE_FLOWER] = FLORGES_SPECIES_INFO, + [SPECIES_FLORGES_WHITE_FLOWER] = FLORGES_SPECIES_INFO, - [SPECIES_FURFROU_HEART_TRIM] = FURFROU_BASE_STATS(FLIP), - [SPECIES_FURFROU_STAR_TRIM] = FURFROU_BASE_STATS(FLIP), - [SPECIES_FURFROU_DIAMOND_TRIM] = FURFROU_BASE_STATS(FLIP), - [SPECIES_FURFROU_DEBUTANTE_TRIM] = FURFROU_BASE_STATS(NO_FLIP), - [SPECIES_FURFROU_MATRON_TRIM] = FURFROU_BASE_STATS(FLIP), - [SPECIES_FURFROU_DANDY_TRIM] = FURFROU_BASE_STATS(FLIP), - [SPECIES_FURFROU_LA_REINE_TRIM] = FURFROU_BASE_STATS(FLIP), - [SPECIES_FURFROU_KABUKI_TRIM] = FURFROU_BASE_STATS(FLIP), - [SPECIES_FURFROU_PHARAOH_TRIM] = FURFROU_BASE_STATS(FLIP), + [SPECIES_FURFROU_HEART_TRIM] = FURFROU_SPECIES_INFO(FLIP), + [SPECIES_FURFROU_STAR_TRIM] = FURFROU_SPECIES_INFO(FLIP), + [SPECIES_FURFROU_DIAMOND_TRIM] = FURFROU_SPECIES_INFO(FLIP), + [SPECIES_FURFROU_DEBUTANTE_TRIM] = FURFROU_SPECIES_INFO(NO_FLIP), + [SPECIES_FURFROU_MATRON_TRIM] = FURFROU_SPECIES_INFO(FLIP), + [SPECIES_FURFROU_DANDY_TRIM] = FURFROU_SPECIES_INFO(FLIP), + [SPECIES_FURFROU_LA_REINE_TRIM] = FURFROU_SPECIES_INFO(FLIP), + [SPECIES_FURFROU_KABUKI_TRIM] = FURFROU_SPECIES_INFO(FLIP), + [SPECIES_FURFROU_PHARAOH_TRIM] = FURFROU_SPECIES_INFO(FLIP), [SPECIES_MEOWSTIC_FEMALE] = { @@ -26280,7 +26280,7 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 56, .baseSpAttack = 44, .baseSpDefense = 55, - PUMKPABOO_MISC_STATS, + PUMKPABOO_MISC_INFO, }, [SPECIES_PUMPKABOO_LARGE] = @@ -26291,7 +26291,7 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 46, .baseSpAttack = 44, .baseSpDefense = 55, - PUMKPABOO_MISC_STATS, + PUMKPABOO_MISC_INFO, }, [SPECIES_PUMPKABOO_SUPER] = @@ -26304,7 +26304,7 @@ const struct BaseStats gBaseStats[] = .baseSpDefense = 55, .itemCommon = ITEM_MIRACLE_SEED, .itemRare = ITEM_MIRACLE_SEED, - PUMKPABOO_MISC_STATS, + PUMKPABOO_MISC_INFO, }, [SPECIES_GOURGEIST_SMALL] = @@ -26315,7 +26315,7 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 99, .baseSpAttack = 58, .baseSpDefense = 75, - GOURGEIST_MISC_STATS, + GOURGEIST_MISC_INFO, }, [SPECIES_GOURGEIST_LARGE] = @@ -26326,7 +26326,7 @@ const struct BaseStats gBaseStats[] = .baseSpeed = 69, .baseSpAttack = 58, .baseSpDefense = 75, - GOURGEIST_MISC_STATS, + GOURGEIST_MISC_INFO, }, [SPECIES_GOURGEIST_SUPER] = @@ -26339,14 +26339,14 @@ const struct BaseStats gBaseStats[] = .baseSpDefense = 75, .itemCommon = ITEM_MIRACLE_SEED, .itemRare = ITEM_MIRACLE_SEED, - GOURGEIST_MISC_STATS, + GOURGEIST_MISC_INFO, }, - [SPECIES_XERNEAS_ACTIVE] = XERNEAS_BASE_STATS, + [SPECIES_XERNEAS_ACTIVE] = XERNEAS_SPECIES_INFO, - [SPECIES_ZYGARDE_10] = ZYGARDE_10_BASE_STATS(ABILITY_AURA_BREAK), - [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = ZYGARDE_50_BASE_STATS(ABILITY_POWER_CONSTRUCT), - [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = ZYGARDE_50_BASE_STATS(ABILITY_POWER_CONSTRUCT), + [SPECIES_ZYGARDE_10] = ZYGARDE_10_SPECIES_INFO(ABILITY_AURA_BREAK), + [SPECIES_ZYGARDE_10_POWER_CONSTRUCT] = ZYGARDE_50_SPECIES_INFO(ABILITY_POWER_CONSTRUCT), + [SPECIES_ZYGARDE_50_POWER_CONSTRUCT] = ZYGARDE_50_SPECIES_INFO(ABILITY_POWER_CONSTRUCT), [SPECIES_ZYGARDE_COMPLETE] = { @@ -26400,11 +26400,11 @@ const struct BaseStats gBaseStats[] = #endif #if P_GEN_7_POKEMON == TRUE - [SPECIES_ORICORIO_POM_POM] = ORICORIO_BASE_STATS(TYPE_ELECTRIC, BODY_COLOR_YELLOW), - [SPECIES_ORICORIO_PAU] = ORICORIO_BASE_STATS(TYPE_PSYCHIC, BODY_COLOR_PINK), - [SPECIES_ORICORIO_SENSU] = ORICORIO_BASE_STATS(TYPE_GHOST, BODY_COLOR_PURPLE), + [SPECIES_ORICORIO_POM_POM] = ORICORIO_SPECIES_INFO(TYPE_ELECTRIC, BODY_COLOR_YELLOW), + [SPECIES_ORICORIO_PAU] = ORICORIO_SPECIES_INFO(TYPE_PSYCHIC, BODY_COLOR_PINK), + [SPECIES_ORICORIO_SENSU] = ORICORIO_SPECIES_INFO(TYPE_GHOST, BODY_COLOR_PURPLE), - [SPECIES_ROCKRUFF_OWN_TEMPO] = ROCKRUFF_BASE_STATS(ABILITY_OWN_TEMPO, ABILITY_NONE, ABILITY_NONE), + [SPECIES_ROCKRUFF_OWN_TEMPO] = ROCKRUFF_SPECIES_INFO(ABILITY_OWN_TEMPO, ABILITY_NONE, ABILITY_NONE), [SPECIES_LYCANROC_MIDNIGHT] = { @@ -26478,40 +26478,40 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_SILVALLY_FIGHTING] = SILVALLY_BASE_STATS(TYPE_FIGHTING), - [SPECIES_SILVALLY_FLYING] = SILVALLY_BASE_STATS(TYPE_FLYING), - [SPECIES_SILVALLY_POISON] = SILVALLY_BASE_STATS(TYPE_POISON), - [SPECIES_SILVALLY_GROUND] = SILVALLY_BASE_STATS(TYPE_GROUND), - [SPECIES_SILVALLY_ROCK] = SILVALLY_BASE_STATS(TYPE_ROCK), - [SPECIES_SILVALLY_BUG] = SILVALLY_BASE_STATS(TYPE_BUG), - [SPECIES_SILVALLY_GHOST] = SILVALLY_BASE_STATS(TYPE_GHOST), - [SPECIES_SILVALLY_STEEL] = SILVALLY_BASE_STATS(TYPE_STEEL), - [SPECIES_SILVALLY_FIRE] = SILVALLY_BASE_STATS(TYPE_FIRE), - [SPECIES_SILVALLY_WATER] = SILVALLY_BASE_STATS(TYPE_WATER), - [SPECIES_SILVALLY_GRASS] = SILVALLY_BASE_STATS(TYPE_GRASS), - [SPECIES_SILVALLY_ELECTRIC] = SILVALLY_BASE_STATS(TYPE_ELECTRIC), - [SPECIES_SILVALLY_PSYCHIC] = SILVALLY_BASE_STATS(TYPE_PSYCHIC), - [SPECIES_SILVALLY_ICE] = SILVALLY_BASE_STATS(TYPE_ICE), - [SPECIES_SILVALLY_DRAGON] = SILVALLY_BASE_STATS(TYPE_DRAGON), - [SPECIES_SILVALLY_DARK] = SILVALLY_BASE_STATS(TYPE_DARK), - [SPECIES_SILVALLY_FAIRY] = SILVALLY_BASE_STATS(TYPE_FAIRY), + [SPECIES_SILVALLY_FIGHTING] = SILVALLY_SPECIES_INFO(TYPE_FIGHTING), + [SPECIES_SILVALLY_FLYING] = SILVALLY_SPECIES_INFO(TYPE_FLYING), + [SPECIES_SILVALLY_POISON] = SILVALLY_SPECIES_INFO(TYPE_POISON), + [SPECIES_SILVALLY_GROUND] = SILVALLY_SPECIES_INFO(TYPE_GROUND), + [SPECIES_SILVALLY_ROCK] = SILVALLY_SPECIES_INFO(TYPE_ROCK), + [SPECIES_SILVALLY_BUG] = SILVALLY_SPECIES_INFO(TYPE_BUG), + [SPECIES_SILVALLY_GHOST] = SILVALLY_SPECIES_INFO(TYPE_GHOST), + [SPECIES_SILVALLY_STEEL] = SILVALLY_SPECIES_INFO(TYPE_STEEL), + [SPECIES_SILVALLY_FIRE] = SILVALLY_SPECIES_INFO(TYPE_FIRE), + [SPECIES_SILVALLY_WATER] = SILVALLY_SPECIES_INFO(TYPE_WATER), + [SPECIES_SILVALLY_GRASS] = SILVALLY_SPECIES_INFO(TYPE_GRASS), + [SPECIES_SILVALLY_ELECTRIC] = SILVALLY_SPECIES_INFO(TYPE_ELECTRIC), + [SPECIES_SILVALLY_PSYCHIC] = SILVALLY_SPECIES_INFO(TYPE_PSYCHIC), + [SPECIES_SILVALLY_ICE] = SILVALLY_SPECIES_INFO(TYPE_ICE), + [SPECIES_SILVALLY_DRAGON] = SILVALLY_SPECIES_INFO(TYPE_DRAGON), + [SPECIES_SILVALLY_DARK] = SILVALLY_SPECIES_INFO(TYPE_DARK), + [SPECIES_SILVALLY_FAIRY] = SILVALLY_SPECIES_INFO(TYPE_FAIRY), - [SPECIES_MINIOR_METEOR_ORANGE] = MINIOR_METEOR_BASE_STATS, - [SPECIES_MINIOR_METEOR_YELLOW] = MINIOR_METEOR_BASE_STATS, - [SPECIES_MINIOR_METEOR_GREEN] = MINIOR_METEOR_BASE_STATS, - [SPECIES_MINIOR_METEOR_BLUE] = MINIOR_METEOR_BASE_STATS, - [SPECIES_MINIOR_METEOR_INDIGO] = MINIOR_METEOR_BASE_STATS, - [SPECIES_MINIOR_METEOR_VIOLET] = MINIOR_METEOR_BASE_STATS, + [SPECIES_MINIOR_METEOR_ORANGE] = MINIOR_METEOR_SPECIES_INFO, + [SPECIES_MINIOR_METEOR_YELLOW] = MINIOR_METEOR_SPECIES_INFO, + [SPECIES_MINIOR_METEOR_GREEN] = MINIOR_METEOR_SPECIES_INFO, + [SPECIES_MINIOR_METEOR_BLUE] = MINIOR_METEOR_SPECIES_INFO, + [SPECIES_MINIOR_METEOR_INDIGO] = MINIOR_METEOR_SPECIES_INFO, + [SPECIES_MINIOR_METEOR_VIOLET] = MINIOR_METEOR_SPECIES_INFO, - [SPECIES_MINIOR_CORE_RED] = MINIOR_CORE_BASE_STATS(BODY_COLOR_RED), - [SPECIES_MINIOR_CORE_ORANGE] = MINIOR_CORE_BASE_STATS(BODY_COLOR_RED), - [SPECIES_MINIOR_CORE_YELLOW] = MINIOR_CORE_BASE_STATS(BODY_COLOR_YELLOW), - [SPECIES_MINIOR_CORE_GREEN] = MINIOR_CORE_BASE_STATS(BODY_COLOR_GREEN), - [SPECIES_MINIOR_CORE_BLUE] = MINIOR_CORE_BASE_STATS(BODY_COLOR_BLUE), - [SPECIES_MINIOR_CORE_INDIGO] = MINIOR_CORE_BASE_STATS(BODY_COLOR_BLUE), - [SPECIES_MINIOR_CORE_VIOLET] = MINIOR_CORE_BASE_STATS(BODY_COLOR_PURPLE), + [SPECIES_MINIOR_CORE_RED] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_RED), + [SPECIES_MINIOR_CORE_ORANGE] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_RED), + [SPECIES_MINIOR_CORE_YELLOW] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_YELLOW), + [SPECIES_MINIOR_CORE_GREEN] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_GREEN), + [SPECIES_MINIOR_CORE_BLUE] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_BLUE), + [SPECIES_MINIOR_CORE_INDIGO] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_BLUE), + [SPECIES_MINIOR_CORE_VIOLET] = MINIOR_CORE_SPECIES_INFO(BODY_COLOR_PURPLE), - [SPECIES_MIMIKYU_BUSTED] = MIMIKYU_BASE_STATS, + [SPECIES_MIMIKYU_BUSTED] = MIMIKYU_SPECIES_INFO, [SPECIES_NECROZMA_DUSK_MANE] = { @@ -26590,27 +26590,27 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_MAGEARNA_ORIGINAL_COLOR] = MAGEARNA_BASE_STATS(BODY_COLOR_RED), + [SPECIES_MAGEARNA_ORIGINAL_COLOR] = MAGEARNA_SPECIES_INFO(BODY_COLOR_RED), #endif #if P_GEN_8_POKEMON == TRUE - [SPECIES_CRAMORANT_GULPING] = CRAMORANT_BASE_STATS, - [SPECIES_CRAMORANT_GORGING] = CRAMORANT_BASE_STATS, + [SPECIES_CRAMORANT_GULPING] = CRAMORANT_SPECIES_INFO, + [SPECIES_CRAMORANT_GORGING] = CRAMORANT_SPECIES_INFO, - [SPECIES_TOXTRICITY_LOW_KEY] = TOXTRICITY_BASE_STATS(ABILITY_MINUS), + [SPECIES_TOXTRICITY_LOW_KEY] = TOXTRICITY_SPECIES_INFO(ABILITY_MINUS), - [SPECIES_SINISTEA_ANTIQUE] = SINISTEA_BASE_STATS, + [SPECIES_SINISTEA_ANTIQUE] = SINISTEA_SPECIES_INFO, - [SPECIES_POLTEAGEIST_ANTIQUE] = POLTEAGEIST_BASE_STATS, + [SPECIES_POLTEAGEIST_ANTIQUE] = POLTEAGEIST_SPECIES_INFO, - [SPECIES_ALCREMIE_RUBY_CREAM] = ALCREMIE_BASE_STATS(BODY_COLOR_PINK), - [SPECIES_ALCREMIE_MATCHA_CREAM] = ALCREMIE_BASE_STATS(BODY_COLOR_GREEN), - [SPECIES_ALCREMIE_MINT_CREAM] = ALCREMIE_BASE_STATS(BODY_COLOR_BLUE), - [SPECIES_ALCREMIE_LEMON_CREAM] = ALCREMIE_BASE_STATS(BODY_COLOR_YELLOW), - [SPECIES_ALCREMIE_SALTED_CREAM] = ALCREMIE_BASE_STATS(BODY_COLOR_WHITE), - [SPECIES_ALCREMIE_RUBY_SWIRL] = ALCREMIE_BASE_STATS(BODY_COLOR_YELLOW), - [SPECIES_ALCREMIE_CARAMEL_SWIRL] = ALCREMIE_BASE_STATS(BODY_COLOR_BROWN), - [SPECIES_ALCREMIE_RAINBOW_SWIRL] = ALCREMIE_BASE_STATS(BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_RUBY_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_PINK), + [SPECIES_ALCREMIE_MATCHA_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_GREEN), + [SPECIES_ALCREMIE_MINT_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_BLUE), + [SPECIES_ALCREMIE_LEMON_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_SALTED_CREAM] = ALCREMIE_SPECIES_INFO(BODY_COLOR_WHITE), + [SPECIES_ALCREMIE_RUBY_SWIRL] = ALCREMIE_SPECIES_INFO(BODY_COLOR_YELLOW), + [SPECIES_ALCREMIE_CARAMEL_SWIRL] = ALCREMIE_SPECIES_INFO(BODY_COLOR_BROWN), + [SPECIES_ALCREMIE_RAINBOW_SWIRL] = ALCREMIE_SPECIES_INFO(BODY_COLOR_YELLOW), [SPECIES_EISCUE_NOICE_FACE] = { @@ -26660,7 +26660,7 @@ const struct BaseStats gBaseStats[] = .noFlip = FALSE, }, - [SPECIES_MORPEKO_HANGRY] = MORPEKO_BASE_STATS, + [SPECIES_MORPEKO_HANGRY] = MORPEKO_SPECIES_INFO, [SPECIES_ZACIAN_CROWNED_SWORD] = { @@ -26762,7 +26762,7 @@ const struct BaseStats gBaseStats[] = .flags = SPECIES_FLAG_LEGENDARY, }, - [SPECIES_ZARUDE_DADA] = ZARUDE_BASE_STATS, + [SPECIES_ZARUDE_DADA] = ZARUDE_SPECIES_INFO, [SPECIES_CALYREX_ICE_RIDER] = { diff --git a/src/data/union_room.h b/src/data/union_room.h index 07f8e4899..f32910388 100644 --- a/src/data/union_room.h +++ b/src/data/union_room.h @@ -717,9 +717,9 @@ static const struct ListMenuTemplate sListMenuTemplate_PossibleGroupMembers = { .cursorShadowPal = 3, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 0, - .fontId = 1, - .cursorKind = 1 + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = FONT_NORMAL, + .cursorKind = CURSOR_INVISIBLE }; static const struct WindowTemplate sWindowTemplate_GroupList = { @@ -777,9 +777,9 @@ static const struct ListMenuTemplate sListMenuTemplate_UnionRoomGroups = { .cursorShadowPal = 3, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 1, - .fontId = 1, - .cursorKind = 0 + .scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD, + .fontId = FONT_NORMAL, + .cursorKind = CURSOR_BLACK_ARROW }; static const struct WindowTemplate sWindowTemplate_InviteToActivity = { @@ -815,9 +815,9 @@ static const struct ListMenuTemplate sListMenuTemplate_InviteToActivity = { .cursorShadowPal = 3, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 0, - .fontId = 1, - .cursorKind = 0 + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = FONT_NORMAL, + .cursorKind = CURSOR_BLACK_ARROW }; static const struct WindowTemplate sWindowTemplate_RegisterForTrade = { @@ -852,9 +852,9 @@ static const struct ListMenuTemplate sListMenuTemplate_RegisterForTrade = { .cursorShadowPal = 3, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 0, - .fontId = 1, - .cursorKind = 0 + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = FONT_NORMAL, + .cursorKind = CURSOR_BLACK_ARROW }; static const struct WindowTemplate sWindowTemplate_TradingBoardRequestType = { @@ -905,9 +905,9 @@ static const struct ListMenuTemplate sMenuTemplate_TradingBoardRequestType = { .cursorShadowPal = 3, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 0, - .fontId = 1, - .cursorKind = 0 + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = FONT_NORMAL, + .cursorKind = CURSOR_BLACK_ARROW }; static const struct WindowTemplate sWindowTemplate_TradingBoardHeader = { @@ -931,7 +931,7 @@ static const struct WindowTemplate sWindowTemplate_TradingBoardMain = { }; static const struct ListMenuItem sTradeBoardListMenuItems[] = { - { sText_EmptyString, -3 }, + { sText_EmptyString, LIST_HEADER }, { sText_EmptyString, 0 }, { sText_EmptyString, 1 }, { sText_EmptyString, 2 }, @@ -959,9 +959,9 @@ static const struct ListMenuTemplate sTradeBoardListMenuTemplate = { .cursorShadowPal = 13, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 0, - .fontId = 1, - .cursorKind = 0 + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = FONT_NORMAL, + .cursorKind = CURSOR_BLACK_ARROW }; // Unused @@ -1011,9 +1011,9 @@ static const struct ListMenuTemplate sEmptyListMenuTemplate = { .cursorShadowPal = 3, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 1, - .fontId = 1, - .cursorKind = 0 + .scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD, + .fontId = FONT_NORMAL, + .cursorKind = CURSOR_BLACK_ARROW }; static const struct RfuPlayerData sUnionRoomPlayer_DummyRfu = {0}; diff --git a/src/daycare.c b/src/daycare.c index 18bc45eb0..a8bdfa0ed 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -80,7 +80,7 @@ static const struct ListMenuTemplate sDaycareListMenuLevelTemplate = .itemVerticalPadding = 0, .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NORMAL, - .cursorKind = 0 + .cursorKind = CURSOR_BLACK_ARROW }; static const u8 *const sCompatibilityMessages[] = @@ -886,7 +886,7 @@ void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation) language = LANGUAGE_JAPANESE; SetMonData(mon, MON_DATA_POKEBALL, &ball); SetMonData(mon, MON_DATA_NICKNAME, sJapaneseEggNickname); - SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles); + SetMonData(mon, MON_DATA_FRIENDSHIP, &gSpeciesInfo[species].eggCycles); SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); SetMonData(mon, MON_DATA_LANGUAGE, &language); if (setHotSpringsLocation) @@ -913,7 +913,7 @@ static void SetInitialEggData(struct Pokemon *mon, u16 species, struct DayCare * language = LANGUAGE_JAPANESE; SetMonData(mon, MON_DATA_POKEBALL, &ball); SetMonData(mon, MON_DATA_NICKNAME, sJapaneseEggNickname); - SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles); + SetMonData(mon, MON_DATA_FRIENDSHIP, &gSpeciesInfo[species].eggCycles); SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel); SetMonData(mon, MON_DATA_LANGUAGE, &language); } @@ -1075,8 +1075,8 @@ static u8 GetDaycareCompatibilityScore(struct DayCare *daycare) trainerIds[i] = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_OT_ID); personality = GetBoxMonData(&daycare->mons[i].mon, MON_DATA_PERSONALITY); genders[i] = GetGenderFromSpeciesAndPersonality(species[i], personality); - eggGroups[i][0] = gBaseStats[species[i]].eggGroup1; - eggGroups[i][1] = gBaseStats[species[i]].eggGroup2; + eggGroups[i][0] = gSpeciesInfo[species[i]].eggGroup1; + eggGroups[i][1] = gSpeciesInfo[species[i]].eggGroup2; } // check unbreedable egg group diff --git a/src/decoration.c b/src/decoration.c index cd3e185da..b149c9d79 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -314,8 +314,9 @@ static const struct ListMenuTemplate sDecorationItemsListMenuTemplate = .cursorShadowPal = 3, .lettersSpacing = FALSE, .itemVerticalPadding = 0, - .scrollMultiple = FALSE, - .fontId = FONT_NARROW + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = FONT_NARROW, + .cursorKind = CURSOR_BLACK_ARROW, }; #include "data/decoration/icon.h" @@ -890,7 +891,7 @@ static void PrintDecorationItemMenuItems(u8 taskId) StringCopy(sDecorationItemsMenu->names[i], gText_Cancel); sDecorationItemsMenu->items[i].name = sDecorationItemsMenu->names[i]; - sDecorationItemsMenu->items[i].id = -2; + sDecorationItemsMenu->items[i].id = LIST_CANCEL; gMultiuseListMenuTemplate = sDecorationItemsListMenuTemplate; gMultiuseListMenuTemplate.windowId = sDecorMenuWindowIds[WINDOW_DECORATION_CATEGORIES]; gMultiuseListMenuTemplate.totalItems = sDecorationItemsMenu->numMenuItems; diff --git a/src/field_specials.c b/src/field_specials.c index 4a3721d10..b73a41821 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1202,7 +1202,7 @@ void IsGrassTypeInParty(void) if (GetMonData(pokemon, MON_DATA_SANITY_HAS_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG)) { species = GetMonData(pokemon, MON_DATA_SPECIES); - if (gBaseStats[species].type1 == TYPE_GRASS || gBaseStats[species].type2 == TYPE_GRASS) + if (gSpeciesInfo[species].type1 == TYPE_GRASS || gSpeciesInfo[species].type2 == TYPE_GRASS) { gSpecialVar_Result = TRUE; return; @@ -2542,9 +2542,9 @@ static void InitScrollableMultichoice(void) gScrollableMultichoice_ListMenuTemplate.cursorShadowPal = 3; gScrollableMultichoice_ListMenuTemplate.lettersSpacing = 0; gScrollableMultichoice_ListMenuTemplate.itemVerticalPadding = 0; - gScrollableMultichoice_ListMenuTemplate.scrollMultiple = 0; + gScrollableMultichoice_ListMenuTemplate.scrollMultiple = LIST_NO_MULTIPLE_SCROLL; gScrollableMultichoice_ListMenuTemplate.fontId = FONT_NORMAL; - gScrollableMultichoice_ListMenuTemplate.cursorKind = 0; + gScrollableMultichoice_ListMenuTemplate.cursorKind = CURSOR_BLACK_ARROW; } static void ScrollableMultichoice_MoveCursor(s32 itemIndex, bool8 onInit, struct ListMenu *list) diff --git a/src/international_string_util.c b/src/international_string_util.c index f71734fa7..457e3260b 100644 --- a/src/international_string_util.c +++ b/src/international_string_util.c @@ -133,7 +133,7 @@ void PadNameString(u8 *dest, u8 padChar) while (length < PLAYER_NAME_LENGTH - 1) { dest[length] = EXT_CTRL_CODE_BEGIN; - dest[length + 1] = EXT_CTRL_CODE_RESET_SIZE; + dest[length + 1] = EXT_CTRL_CODE_RESET_FONT; length += 2; } } diff --git a/src/item_menu.c b/src/item_menu.c index 0a49347a9..608e203a6 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -259,9 +259,9 @@ static const struct ListMenuTemplate sItemListMenu = .cursorShadowPal = 3, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 0, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NARROW, - .cursorKind = 0 + .cursorKind = CURSOR_BLACK_ARROW }; static const struct MenuAction sItemMenuActions[] = { diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c index 4730c74fd..9d66a1837 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -2525,9 +2525,8 @@ u8 RfuGetStatus(void) bool32 RfuHasErrored(void) { - // RFU_STATUS_OK will underflow here intentionally - u32 var = RfuGetStatus() - 1; - if (var < RFU_STATUS_CONNECTION_ERROR) + u32 status = RfuGetStatus(); + if (status == RFU_STATUS_FATAL_ERROR || status == RFU_STATUS_CONNECTION_ERROR) return TRUE; else return FALSE; @@ -2656,7 +2655,7 @@ static u8 GetPartnerIndexByNameAndTrainerID(const u8 *name, u16 id) for (i = 0; i < RFU_CHILD_MAX; i++) { - u16 trainerId = ReadU16(gRfuLinkStatus->partner[i].gname + 2); + u16 trainerId = ReadU16(((struct RfuGameData *)gRfuLinkStatus->partner[i].gname)->compatibility.playerTrainerId); if (IsRfuSerialNumberValid(gRfuLinkStatus->partner[i].serialNo) && !StringCompare(name, gRfuLinkStatus->partner[i].uname) && id == trainerId) @@ -2682,9 +2681,9 @@ static void RfuReqDisconnectSlot(u32 slot) void RequestDisconnectSlotByTrainerNameAndId(const u8 *name, u16 id) { - u8 var = GetPartnerIndexByNameAndTrainerID(name, id); - if (var != 0xFF) - RfuReqDisconnectSlot(1 << var); + u8 index = GetPartnerIndexByNameAndTrainerID(name, id); + if (index != 0xFF) + RfuReqDisconnectSlot(1 << index); } void Rfu_DisconnectPlayerById(u32 playerIdx) diff --git a/src/list_menu.c b/src/list_menu.c index 112fca753..c240564c6 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -13,6 +13,10 @@ #include "sound.h" #include "constants/songs.h" +// Cursors after this point are created using a sprite with their own task. +// This allows them to have idle animations. Cursors prior to this are simply printed text. +#define CURSOR_OBJECT_START CURSOR_RED_OUTLINE + struct UnkIndicatorsStruct { u8 field_0; @@ -70,7 +74,7 @@ static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAn static void ListMenuPrintEntries(struct ListMenu *list, u16 startIndex, u16 yOffset, u16 count); static void ListMenuDrawCursor(struct ListMenu *list); static void ListMenuCallSelectionChangedCallback(struct ListMenu *list, u8 onInit); -static u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorKind); +static u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorObjId); static void Task_ScrollIndicatorArrowPair(u8 taskId); static u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor); static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor); @@ -78,9 +82,9 @@ static void ListMenuUpdateRedOutlineCursorObject(u8 taskId, u16 x, u16 y); static void ListMenuUpdateRedArrowCursorObject(u8 taskId, u16 x, u16 y); static void ListMenuRemoveRedOutlineCursorObject(u8 taskId); static void ListMenuRemoveRedArrowCursorObject(u8 taskId); -static u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind); -static void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorKind); -static void ListMenuRemoveCursorObject(u8 taskId, u32 cursorKind); +static u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorObjId); +static void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorObjId); +static void ListMenuRemoveCursorObject(u8 taskId, u32 cursorObjId); static void SpriteCallback_ScrollIndicatorArrow(struct Sprite *sprite); static void SpriteCallback_RedArrowCursor(struct Sprite *sprite); @@ -301,10 +305,10 @@ static const struct SpriteTemplate sSpriteTemplate_RedArrowCursor = .callback = SpriteCallback_RedArrowCursor, }; -static const u16 sRedArrowPal[] = INCBIN_U16("graphics/interface/red_arrow.gbapal"); -static const u32 sRedArrowOtherGfx[] = INCBIN_U32("graphics/interface/red_arrow_other.4bpp.lz"); -static const u32 sSelectorOutlineGfx[] = INCBIN_U32("graphics/interface/selector_outline.4bpp.lz"); -static const u32 sRedArrowGfx[] = INCBIN_U32("graphics/interface/red_arrow.4bpp.lz"); +static const u16 sRedInterface_Pal[] = INCBIN_U16("graphics/interface/red.gbapal"); // Shared by all of the below gfx +static const u32 sScrollIndicator_Gfx[] = INCBIN_U32("graphics/interface/scroll_indicator.4bpp.lz"); +static const u32 sOutlineCursor_Gfx[] = INCBIN_U32("graphics/interface/outline_cursor.4bpp.lz"); +static const u32 sArrowCursor_Gfx[] = INCBIN_U32("graphics/interface/arrow_cursor.4bpp.lz"); // code static void ListMenuDummyTask(u8 taskId) @@ -477,7 +481,7 @@ void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow) *selectedRow = list->selectedRow; if (list->taskId != TASK_NONE) - ListMenuRemoveCursorObject(list->taskId, list->template.cursorKind - 2); + ListMenuRemoveCursorObject(list->taskId, list->template.cursorKind - CURSOR_OBJECT_START); DestroyTask(listTaskId); } @@ -650,31 +654,33 @@ static void ListMenuDrawCursor(struct ListMenu *list) u8 y = list->selectedRow * yMultiplier + list->template.upText_Y; switch (list->template.cursorKind) { - case 0: + case CURSOR_BLACK_ARROW: ListMenuPrint(list, gText_SelectorArrow2, x, y); break; - case 1: + case CURSOR_INVISIBLE: break; - case 2: + case CURSOR_RED_OUTLINE: if (list->taskId == TASK_NONE) - list->taskId = ListMenuAddCursorObject(list, 0); + list->taskId = ListMenuAddCursorObject(list, CURSOR_RED_OUTLINE - CURSOR_OBJECT_START); ListMenuUpdateCursorObject(list->taskId, GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_LEFT) * 8 - 1, - GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP) * 8 + y - 1, 0); + GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP) * 8 + y - 1, + CURSOR_RED_OUTLINE - CURSOR_OBJECT_START); break; - case 3: + case CURSOR_RED_ARROW: if (list->taskId == TASK_NONE) - list->taskId = ListMenuAddCursorObject(list, 1); + list->taskId = ListMenuAddCursorObject(list, CURSOR_RED_ARROW - CURSOR_OBJECT_START); ListMenuUpdateCursorObject(list->taskId, GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_LEFT) * 8 + x, - GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP) * 8 + y, 1); + GetWindowAttribute(list->template.windowId, WINDOW_TILEMAP_TOP) * 8 + y, + CURSOR_RED_ARROW - CURSOR_OBJECT_START); break; } } #undef TASK_NONE -static u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorKind) +static u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorObjId) { struct CursorStruct cursor; @@ -686,13 +692,13 @@ static u8 ListMenuAddCursorObject(struct ListMenu *list, u32 cursorKind) cursor.palTag = TAG_NONE; cursor.palNum = 15; - return ListMenuAddCursorObjectInternal(&cursor, cursorKind); + return ListMenuAddCursorObjectInternal(&cursor, cursorObjId); } static void ListMenuErasePrintedCursor(struct ListMenu *list, u16 selectedRow) { u8 cursorKind = list->template.cursorKind; - if (cursorKind == 0) + if (cursorKind == CURSOR_BLACK_ARROW) { u8 yMultiplier = GetFontAttribute(list->template.fontId, FONTATTR_MAX_LETTER_HEIGHT) + list->template.itemVerticalPadding; u8 width = GetMenuCursorDimensionByFont(list->template.fontId, 0); @@ -1071,18 +1077,18 @@ u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate *arrowInfo, u16 struct ScrollIndicatorPair *data; u8 taskId; - spriteSheet.data = sRedArrowOtherGfx; + spriteSheet.data = sScrollIndicator_Gfx; spriteSheet.size = 0x100; spriteSheet.tag = arrowInfo->tileTag; LoadCompressedSpriteSheet(&spriteSheet); if (arrowInfo->palTag == TAG_NONE) { - LoadPalette(sRedArrowPal, (16 * arrowInfo->palNum) + 0x100, 0x20); + LoadPalette(sRedInterface_Pal, (16 * arrowInfo->palNum) + 0x100, 0x20); } else { - spritePal.data = sRedArrowPal; + spritePal.data = sRedInterface_Pal; spritePal.tag = arrowInfo->palTag; LoadSpritePalette(&spritePal); } @@ -1190,39 +1196,39 @@ void RemoveScrollIndicatorArrowPair(u8 taskId) DestroyTask(taskId); } -static u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind) +static u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorObjId) { - switch (cursorKind) + switch (cursorObjId) { - case 0: + case CURSOR_RED_OUTLINE - CURSOR_OBJECT_START: default: return ListMenuAddRedOutlineCursorObject(cursor); - case 1: + case CURSOR_RED_ARROW - CURSOR_OBJECT_START: return ListMenuAddRedArrowCursorObject(cursor); } } -static void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorKind) +static void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorObjId) { - switch (cursorKind) + switch (cursorObjId) { - case 0: + case CURSOR_RED_OUTLINE - CURSOR_OBJECT_START: ListMenuUpdateRedOutlineCursorObject(taskId, x, y); break; - case 1: + case CURSOR_RED_ARROW - CURSOR_OBJECT_START: ListMenuUpdateRedArrowCursorObject(taskId, x, y); break; } } -static void ListMenuRemoveCursorObject(u8 taskId, u32 cursorKind) +static void ListMenuRemoveCursorObject(u8 taskId, u32 cursorObjId) { - switch (cursorKind) + switch (cursorObjId) { - case 0: + case CURSOR_RED_OUTLINE - CURSOR_OBJECT_START: ListMenuRemoveRedOutlineCursorObject(taskId); break; - case 1: + case CURSOR_RED_ARROW - CURSOR_OBJECT_START: ListMenuRemoveRedArrowCursorObject(taskId); break; } @@ -1317,18 +1323,18 @@ static u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor) struct SpriteTemplate spriteTemplate; u8 taskId; - spriteSheet.data = sSelectorOutlineGfx; + spriteSheet.data = sOutlineCursor_Gfx; spriteSheet.size = 0x100; spriteSheet.tag = cursor->tileTag; LoadCompressedSpriteSheet(&spriteSheet); if (cursor->palTag == TAG_NONE) { - LoadPalette(sRedArrowPal, (16 * cursor->palNum) + 0x100, 0x20); + LoadPalette(sRedInterface_Pal, (16 * cursor->palNum) + 0x100, 0x20); } else { - spritePal.data = sRedArrowPal; + spritePal.data = sRedInterface_Pal; spritePal.tag = cursor->palTag; LoadSpritePalette(&spritePal); } @@ -1402,18 +1408,18 @@ static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor) struct SpriteTemplate spriteTemplate; u8 taskId; - spriteSheet.data = sRedArrowGfx; + spriteSheet.data = sArrowCursor_Gfx; spriteSheet.size = 0x80; spriteSheet.tag = cursor->tileTag; LoadCompressedSpriteSheet(&spriteSheet); if (cursor->palTag == TAG_NONE) { - LoadPalette(sRedArrowPal, (16 * cursor->palNum) + 0x100, 0x20); + LoadPalette(sRedInterface_Pal, (16 * cursor->palNum) + 0x100, 0x20); } else { - spritePal.data = sRedArrowPal; + spritePal.data = sRedInterface_Pal; spritePal.tag = cursor->palTag; LoadSpritePalette(&spritePal); } diff --git a/src/main_menu.c b/src/main_menu.c index 4fe0f5e61..39554d188 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1631,7 +1631,7 @@ static void Task_NewGameBirchSpeech_ProcessNameYesNoMenu(u8 taskId) NewGameBirchSpeech_StartFadePlatformIn(taskId, 1); gTasks[taskId].func = Task_NewGameBirchSpeech_SlidePlatformAway2; break; - case -1: + case MENU_B_PRESSED: case 1: PlaySE(SE_SELECT); gTasks[taskId].func = Task_NewGameBirchSpeech_BoyOrGirl; diff --git a/src/menu_specialized.c b/src/menu_specialized.c index d844b8225..a5c52a474 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -188,7 +188,7 @@ static const struct ListMenuTemplate sMoveRelearnerMovesListTemplate = .itemVerticalPadding = 0, .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NORMAL, - .cursorKind = 0 + .cursorKind = CURSOR_BLACK_ARROW }; //-------------- @@ -285,7 +285,7 @@ u8 MailboxMenu_CreateList(struct PlayerPCItemPageStruct *page) gMultiuseListMenuTemplate.moveCursorFunc = MailboxMenu_MoveCursorFunc; gMultiuseListMenuTemplate.itemPrintFunc = MailboxMenu_ItemPrintFunc; gMultiuseListMenuTemplate.fontId = FONT_NORMAL; - gMultiuseListMenuTemplate.cursorKind = 0; + gMultiuseListMenuTemplate.cursorKind = CURSOR_BLACK_ARROW; gMultiuseListMenuTemplate.lettersSpacing = 0; gMultiuseListMenuTemplate.itemVerticalPadding = 0; gMultiuseListMenuTemplate.scrollMultiple = LIST_NO_MULTIPLE_SCROLL; @@ -1543,7 +1543,7 @@ void DrawLevelUpWindowPg1(u16 windowId, u16 *statsBefore, u16 *statsAfter, u8 bg 0, 15 * i, color, - -1, + TEXT_SKIP_DRAW, sLvlUpStatStrings[i]); StringCopy(text, (statsDiff[i] >= 0) ? gText_Plus : gText_Dash); @@ -1552,7 +1552,7 @@ void DrawLevelUpWindowPg1(u16 windowId, u16 *statsBefore, u16 *statsAfter, u8 bg 56, 15 * i, color, - -1, + TEXT_SKIP_DRAW, text); if (abs(statsDiff[i]) <= 9) x = 18; @@ -1565,7 +1565,7 @@ void DrawLevelUpWindowPg1(u16 windowId, u16 *statsBefore, u16 *statsAfter, u8 bg 56 + x, 15 * i, color, - -1, + TEXT_SKIP_DRAW, text); } } @@ -1607,7 +1607,7 @@ void DrawLevelUpWindowPg2(u16 windowId, u16 *currStats, u8 bgClr, u8 fgClr, u8 s 0, 15 * i, color, - -1, + TEXT_SKIP_DRAW, sLvlUpStatStrings[i]); AddTextPrinterParameterized3(windowId, @@ -1615,7 +1615,7 @@ void DrawLevelUpWindowPg2(u16 windowId, u16 *currStats, u8 bgClr, u8 fgClr, u8 s 56 + x, 15 * i, color, - -1, + TEXT_SKIP_DRAW, text); } } diff --git a/src/move_relearner.c b/src/move_relearner.c index d9c943b57..3c8b06a78 100644 --- a/src/move_relearner.c +++ b/src/move_relearner.c @@ -553,7 +553,7 @@ static void DoMoveRelearnerMain(void) gSpecialVar_0x8004 = FALSE; sMoveRelearnerStruct->state = MENU_STATE_FADE_AND_RETURN; } - else if (selection == -1 || selection == 1) + else if (selection == MENU_B_PRESSED || selection == 1) { if (sMoveRelearnerMenuSate.showContestInfo == FALSE) { @@ -579,14 +579,14 @@ static void DoMoveRelearnerMain(void) break; case MENU_STATE_CONFIRM_DELETE_OLD_MOVE: { - s8 var = Menu_ProcessInputNoWrapClearOnChoose(); + s8 selection = Menu_ProcessInputNoWrapClearOnChoose(); - if (var == 0) + if (selection == 0) { FormatAndPrintText(gText_MoveRelearnerWhichMoveToForget); sMoveRelearnerStruct->state = MENU_STATE_PRINT_WHICH_MOVE_PROMPT; } - else if (var == -1 || var == 1) + else if (selection == MENU_B_PRESSED || selection == 1) { sMoveRelearnerStruct->state = MENU_STATE_PRINT_STOP_TEACHING; } @@ -606,13 +606,13 @@ static void DoMoveRelearnerMain(void) break; case MENU_STATE_CONFIRM_STOP_TEACHING: { - s8 var = Menu_ProcessInputNoWrapClearOnChoose(); + s8 selection = Menu_ProcessInputNoWrapClearOnChoose(); - if (var == 0) + if (selection == 0) { sMoveRelearnerStruct->state = MENU_STATE_CHOOSE_SETUP_STATE; } - else if (var == MENU_B_PRESSED || var == 1) + else if (selection == MENU_B_PRESSED || selection == 1) { // What's the point? It gets set to MENU_STATE_PRINT_TRYING_TO_LEARN_PROMPT, anyway. if (sMoveRelearnerMenuSate.showContestInfo == FALSE) diff --git a/src/mystery_gift_menu.c b/src/mystery_gift_menu.c index 78afc709c..f5d2b0401 100644 --- a/src/mystery_gift_menu.c +++ b/src/mystery_gift_menu.c @@ -234,9 +234,9 @@ static const struct ListMenuTemplate sListMenuTemplate_ThreeOptions = { .cursorShadowPal = 3, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 0, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NORMAL, - .cursorKind = 0 + .cursorKind = CURSOR_BLACK_ARROW }; static const struct ListMenuItem sListMenuItems_ReceiveSendToss[] = { @@ -279,9 +279,9 @@ static const struct ListMenuTemplate sListMenu_ReceiveSendToss = { .cursorShadowPal = 3, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 0, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NORMAL, - .cursorKind = 0 + .cursorKind = CURSOR_BLACK_ARROW }; static const struct ListMenuTemplate sListMenu_ReceiveToss = { @@ -300,9 +300,9 @@ static const struct ListMenuTemplate sListMenu_ReceiveToss = { .cursorShadowPal = 3, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 0, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NORMAL, - .cursorKind = 0 + .cursorKind = CURSOR_BLACK_ARROW }; static const struct ListMenuTemplate sListMenu_ReceiveSend = { @@ -321,9 +321,9 @@ static const struct ListMenuTemplate sListMenu_ReceiveSend = { .cursorShadowPal = 3, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 0, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NORMAL, - .cursorKind = 0 + .cursorKind = CURSOR_BLACK_ARROW }; static const struct ListMenuTemplate sListMenu_Receive = { @@ -342,9 +342,9 @@ static const struct ListMenuTemplate sListMenu_Receive = { .cursorShadowPal = 3, .lettersSpacing = 0, .itemVerticalPadding = 0, - .scrollMultiple = 0, + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NORMAL, - .cursorKind = 0 + .cursorKind = CURSOR_BLACK_ARROW }; static const u8 *const sUnusedMenuTexts[] = { diff --git a/src/party_menu.c b/src/party_menu.c index 28aee957a..e00ae14a4 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -4466,8 +4466,8 @@ void Task_AbilityCapsule(u8 taskId) { case 0: // Can't use. - if (gBaseStats[tSpecies].abilities[0] == gBaseStats[tSpecies].abilities[1] - || gBaseStats[tSpecies].abilities[1] == 0 + if (gSpeciesInfo[tSpecies].abilities[0] == gSpeciesInfo[tSpecies].abilities[1] + || gSpeciesInfo[tSpecies].abilities[1] == 0 || tAbilityNum > 1 || !tSpecies) { @@ -4554,7 +4554,7 @@ void Task_AbilityPatch(u8 taskId) { case 0: // Can't use. - if (gBaseStats[tSpecies].abilities[tAbilityNum] == 0 + if (gSpeciesInfo[tSpecies].abilities[tAbilityNum] == 0 || !tSpecies || GetMonData(&gPlayerParty[tMonId], MON_DATA_ABILITY_NUM, NULL) > 1 ) diff --git a/src/player_pc.c b/src/player_pc.c index b1a323a32..f53e08f53 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -290,8 +290,9 @@ static const struct ListMenuTemplate sListMenuTemplate_ItemStorage = .cursorShadowPal = 3, .lettersSpacing = FALSE, .itemVerticalPadding = 0, - .scrollMultiple = FALSE, - .fontId = FONT_NARROW + .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, + .fontId = FONT_NARROW, + .cursorKind = CURSOR_BLACK_ARROW, }; static const struct WindowTemplate sWindowTemplates_ItemStorage[ITEMPC_WIN_COUNT] = diff --git a/src/pokeblock.c b/src/pokeblock.c index cf0513f80..481f84c4a 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -440,7 +440,7 @@ static const struct ListMenuTemplate sPokeblockListMenuTemplate = .itemVerticalPadding = 0, .scrollMultiple = LIST_MULTIPLE_SCROLL_DPAD, .fontId = FONT_NORMAL, - .cursorKind = 1 + .cursorKind = CURSOR_INVISIBLE }; void OpenPokeblockCase(u8 caseId, void (*callback)(void)) diff --git a/src/pokedex.c b/src/pokedex.c index de7f186a5..ef71d3129 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -4379,7 +4379,7 @@ bool16 HasAllMons(void) for (i = 1; i < NATIONAL_DEX_COUNT + 1; i++) { - if (!(gBaseStats[i].flags & SPECIES_FLAG_MYTHICAL) && !GetSetPokedexFlag(i, FLAG_GET_CAUGHT)) + if (!(gSpeciesInfo[i].flags & SPECIES_FLAG_MYTHICAL) && !GetSetPokedexFlag(i, FLAG_GET_CAUGHT)) return FALSE; } @@ -4660,7 +4660,7 @@ static int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, u8 bodyColor, u8 t { species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum); - if (bodyColor == gBaseStats[species].bodyColor) + if (bodyColor == gSpeciesInfo[species].bodyColor) { sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i]; resultsCount++; @@ -4686,8 +4686,8 @@ static int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, u8 bodyColor, u8 t { species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum); - types[0] = gBaseStats[species].type1; - types[1] = gBaseStats[species].type2; + types[0] = gSpeciesInfo[species].type1; + types[1] = gSpeciesInfo[species].type2; if (types[0] == type1 || types[1] == type1) { sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i]; @@ -4704,8 +4704,8 @@ static int DoPokedexSearch(u8 dexMode, u8 order, u8 abcGroup, u8 bodyColor, u8 t { species = NationalPokedexNumToSpecies(sPokedexView->pokedexList[i].dexNum); - types[0] = gBaseStats[species].type1; - types[1] = gBaseStats[species].type2; + types[0] = gSpeciesInfo[species].type1; + types[1] = gSpeciesInfo[species].type2; if ((types[0] == type1 && types[1] == type2) || (types[0] == type2 && types[1] == type1)) { sPokedexView->pokedexList[resultsCount] = sPokedexView->pokedexList[i]; diff --git a/src/pokemon.c b/src/pokemon.c index b21c9939c..8e8166fb3 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1949,7 +1949,7 @@ const s8 gNatureStatTable[NUM_NATURES][NUM_NATURE_STATS] = #include "data/pokemon/trainer_class_lookups.h" #include "data/pokemon/experience_tables.h" -#include "data/pokemon/base_stats.h" +#include "data/pokemon/species_info.h" #include "data/pokemon/level_up_learnsets.h" #include "data/pokemon/teachable_learnsets.h" #include "data/pokemon/evolution.h" @@ -3510,8 +3510,8 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, SetBoxMonData(boxMon, MON_DATA_LANGUAGE, &gGameLanguage); SetBoxMonData(boxMon, MON_DATA_OT_NAME, gSaveBlock2Ptr->playerName); SetBoxMonData(boxMon, MON_DATA_SPECIES, &species); - SetBoxMonData(boxMon, MON_DATA_EXP, &gExperienceTables[gBaseStats[species].growthRate][level]); - SetBoxMonData(boxMon, MON_DATA_FRIENDSHIP, &gBaseStats[species].friendship); + SetBoxMonData(boxMon, MON_DATA_EXP, &gExperienceTables[gSpeciesInfo[species].growthRate][level]); + SetBoxMonData(boxMon, MON_DATA_FRIENDSHIP, &gSpeciesInfo[species].friendship); value = GetCurrentRegionMapSectionId(); SetBoxMonData(boxMon, MON_DATA_MET_LOCATION, &value); SetBoxMonData(boxMon, MON_DATA_MET_LEVEL, &level); @@ -3550,7 +3550,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, iv = (value & (MAX_IV_MASK << 10)) >> 10; SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); - if (gBaseStats[species].flags & SPECIES_FLAG_ALL_PERFECT_IVS) + if (gSpeciesInfo[species].flags & SPECIES_FLAG_ALL_PERFECT_IVS) { iv = MAX_PER_STAT_IVS; SetBoxMonData(boxMon, MON_DATA_HP_IV, &iv); @@ -3561,7 +3561,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &iv); } #if P_LEGENDARY_PERFECT_IVS >= GEN_6 - else if (gBaseStats[species].flags & (SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MYTHICAL | SPECIES_FLAG_ULTRA_BEAST)) + else if (gSpeciesInfo[species].flags & (SPECIES_FLAG_LEGENDARY | SPECIES_FLAG_MYTHICAL | SPECIES_FLAG_ULTRA_BEAST)) { iv = MAX_PER_STAT_IVS; // Initialize a list of IV indices. @@ -3605,7 +3605,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV, #endif } - if (gBaseStats[species].abilities[1]) + if (gSpeciesInfo[species].abilities[1]) { value = personality & 1; SetBoxMonData(boxMon, MON_DATA_ABILITY_NUM, &value); @@ -4080,7 +4080,7 @@ static u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon) #define CALC_STAT(base, iv, ev, statIndex, field) \ { \ - u8 baseStat = gBaseStats[species].base; \ + u8 baseStat = gSpeciesInfo[species].base; \ s32 n = (((2 * baseStat + iv + ev / 4) * level) / 100) + 5; \ u8 nature = GetNature(mon); \ n = ModifyStatByNature(nature, n, statIndex); \ @@ -4115,7 +4115,7 @@ void CalculateMonStats(struct Pokemon *mon) } else { - s32 n = 2 * gBaseStats[species].baseHP + hpIV; + s32 n = 2 * gSpeciesInfo[species].baseHP + hpIV; newMaxHP = (((n + hpEV / 4) * level) / 100) + level + 10; } @@ -4175,7 +4175,7 @@ u8 GetLevelFromMonExp(struct Pokemon *mon) u32 exp = GetMonData(mon, MON_DATA_EXP, NULL); s32 level = 1; - while (level <= MAX_LEVEL && gExperienceTables[gBaseStats[species].growthRate][level] <= exp) + while (level <= MAX_LEVEL && gExperienceTables[gSpeciesInfo[species].growthRate][level] <= exp) level++; return level - 1; @@ -4187,7 +4187,7 @@ u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon) u32 exp = GetBoxMonData(boxMon, MON_DATA_EXP, NULL); s32 level = 1; - while (level <= MAX_LEVEL && gExperienceTables[gBaseStats[species].growthRate][level] <= exp) + while (level <= MAX_LEVEL && gExperienceTables[gSpeciesInfo[species].growthRate][level] <= exp) level++; return level - 1; @@ -4429,15 +4429,15 @@ u8 GetBoxMonGender(struct BoxPokemon *boxMon) u16 species = GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL); u32 personality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY, NULL); - switch (gBaseStats[species].genderRatio) + switch (gSpeciesInfo[species].genderRatio) { case MON_MALE: case MON_FEMALE: case MON_GENDERLESS: - return gBaseStats[species].genderRatio; + return gSpeciesInfo[species].genderRatio; } - if (gBaseStats[species].genderRatio > (personality & 0xFF)) + if (gSpeciesInfo[species].genderRatio > (personality & 0xFF)) return MON_FEMALE; else return MON_MALE; @@ -4445,15 +4445,15 @@ u8 GetBoxMonGender(struct BoxPokemon *boxMon) u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality) { - switch (gBaseStats[species].genderRatio) + switch (gSpeciesInfo[species].genderRatio) { case MON_MALE: case MON_FEMALE: case MON_GENDERLESS: - return gBaseStats[species].genderRatio; + return gSpeciesInfo[species].genderRatio; } - if (gBaseStats[species].genderRatio > (personality & 0xFF)) + if (gSpeciesInfo[species].genderRatio > (personality & 0xFF)) return MON_FEMALE; else return MON_MALE; @@ -5483,7 +5483,7 @@ u16 GetAbilityBySpecies(u16 species, u8 abilityNum) int i; if (abilityNum < NUM_ABILITY_SLOTS) - gLastUsedAbility = gBaseStats[species].abilities[abilityNum]; + gLastUsedAbility = gSpeciesInfo[species].abilities[abilityNum]; else gLastUsedAbility = ABILITY_NONE; @@ -5491,13 +5491,13 @@ u16 GetAbilityBySpecies(u16 species, u8 abilityNum) { for (i = NUM_NORMAL_ABILITY_SLOTS; i < NUM_ABILITY_SLOTS && gLastUsedAbility == ABILITY_NONE; i++) { - gLastUsedAbility = gBaseStats[species].abilities[i]; + gLastUsedAbility = gSpeciesInfo[species].abilities[i]; } } for (i = 0; i < NUM_ABILITY_SLOTS && gLastUsedAbility == ABILITY_NONE; i++) // look for any non-empty ability { - gLastUsedAbility = gBaseStats[species].abilities[i]; + gLastUsedAbility = gSpeciesInfo[species].abilities[i]; } return gLastUsedAbility; @@ -5649,8 +5649,8 @@ void PokemonToBattleMon(struct Pokemon *src, struct BattlePokemon *dst) dst->spDefense = GetMonData(src, MON_DATA_SPDEF, NULL); dst->abilityNum = GetMonData(src, MON_DATA_ABILITY_NUM, NULL); dst->otId = GetMonData(src, MON_DATA_OT_ID, NULL); - dst->type1 = gBaseStats[dst->species].type1; - dst->type2 = gBaseStats[dst->species].type2; + dst->type1 = gSpeciesInfo[dst->species].type1; + dst->type2 = gSpeciesInfo[dst->species].type2; dst->type3 = TYPE_MYSTERY; dst->ability = GetAbilityBySpecies(dst->species, dst->abilityNum); GetMonData(src, MON_DATA_NICKNAME, nickname); @@ -5902,14 +5902,14 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov if (param == 0) // Rare Candy { - dataUnsigned = gExperienceTables[gBaseStats[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; + dataUnsigned = gExperienceTables[gSpeciesInfo[GetMonData(mon, MON_DATA_SPECIES, NULL)].growthRate][GetMonData(mon, MON_DATA_LEVEL, NULL) + 1]; } else if (param - 1 < ARRAY_COUNT(sExpCandyExperienceTable)) // EXP Candies { u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); dataUnsigned = sExpCandyExperienceTable[param - 1] + GetMonData(mon, MON_DATA_EXP, NULL); - if (dataUnsigned > gExperienceTables[gBaseStats[species].growthRate][MAX_LEVEL]) - dataUnsigned = gExperienceTables[gBaseStats[species].growthRate][MAX_LEVEL]; + if (dataUnsigned > gExperienceTables[gSpeciesInfo[species].growthRate][MAX_LEVEL]) + dataUnsigned = gExperienceTables[gSpeciesInfo[species].growthRate][MAX_LEVEL]; } if (dataUnsigned != 0) // Failsafe @@ -6703,8 +6703,8 @@ u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 mode, u16 evolutionItem, s for (j = 0; j < PARTY_SIZE; j++) { u16 currSpecies = GetMonData(&gPlayerParty[j], MON_DATA_SPECIES, NULL); - if (gBaseStats[currSpecies].type1 == TYPE_DARK - || gBaseStats[currSpecies].type2 == TYPE_DARK) + if (gSpeciesInfo[currSpecies].type1 == TYPE_DARK + || gSpeciesInfo[currSpecies].type2 == TYPE_DARK) { targetSpecies = gEvolutionTable[species][i].targetSpecies; break; @@ -7252,39 +7252,39 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies) { case STAT_HP: if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_HP) - evIncrease = (gBaseStats[defeatedSpecies].evYield_HP + bonus) * multiplier; + evIncrease = (gSpeciesInfo[defeatedSpecies].evYield_HP + bonus) * multiplier; else - evIncrease = gBaseStats[defeatedSpecies].evYield_HP * multiplier; + evIncrease = gSpeciesInfo[defeatedSpecies].evYield_HP * multiplier; break; case STAT_ATK: if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_ATK) - evIncrease = (gBaseStats[defeatedSpecies].evYield_Attack + bonus) * multiplier; + evIncrease = (gSpeciesInfo[defeatedSpecies].evYield_Attack + bonus) * multiplier; else - evIncrease = gBaseStats[defeatedSpecies].evYield_Attack * multiplier; + evIncrease = gSpeciesInfo[defeatedSpecies].evYield_Attack * multiplier; break; case STAT_DEF: if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_DEF) - evIncrease = (gBaseStats[defeatedSpecies].evYield_Defense + bonus) * multiplier; + evIncrease = (gSpeciesInfo[defeatedSpecies].evYield_Defense + bonus) * multiplier; else - evIncrease = gBaseStats[defeatedSpecies].evYield_Defense * multiplier; + evIncrease = gSpeciesInfo[defeatedSpecies].evYield_Defense * multiplier; break; case STAT_SPEED: if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_SPEED) - evIncrease = (gBaseStats[defeatedSpecies].evYield_Speed + bonus) * multiplier; + evIncrease = (gSpeciesInfo[defeatedSpecies].evYield_Speed + bonus) * multiplier; else - evIncrease = gBaseStats[defeatedSpecies].evYield_Speed * multiplier; + evIncrease = gSpeciesInfo[defeatedSpecies].evYield_Speed * multiplier; break; case STAT_SPATK: if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_SPATK) - evIncrease = (gBaseStats[defeatedSpecies].evYield_SpAttack + bonus) * multiplier; + evIncrease = (gSpeciesInfo[defeatedSpecies].evYield_SpAttack + bonus) * multiplier; else - evIncrease = gBaseStats[defeatedSpecies].evYield_SpAttack * multiplier; + evIncrease = gSpeciesInfo[defeatedSpecies].evYield_SpAttack * multiplier; break; case STAT_SPDEF: if (holdEffect == HOLD_EFFECT_POWER_ITEM && stat == STAT_SPDEF) - evIncrease = (gBaseStats[defeatedSpecies].evYield_SpDefense + bonus) * multiplier; + evIncrease = (gSpeciesInfo[defeatedSpecies].evYield_SpDefense + bonus) * multiplier; else - evIncrease = gBaseStats[defeatedSpecies].evYield_SpDefense * multiplier; + evIncrease = gSpeciesInfo[defeatedSpecies].evYield_SpDefense * multiplier; break; } @@ -7473,12 +7473,12 @@ bool8 TryIncrementMonLevel(struct Pokemon *mon) u16 species = GetMonData(mon, MON_DATA_SPECIES, 0); u8 nextLevel = GetMonData(mon, MON_DATA_LEVEL, 0) + 1; u32 expPoints = GetMonData(mon, MON_DATA_EXP, 0); - if (expPoints > gExperienceTables[gBaseStats[species].growthRate][MAX_LEVEL]) + if (expPoints > gExperienceTables[gSpeciesInfo[species].growthRate][MAX_LEVEL]) { - expPoints = gExperienceTables[gBaseStats[species].growthRate][MAX_LEVEL]; + expPoints = gExperienceTables[gSpeciesInfo[species].growthRate][MAX_LEVEL]; SetMonData(mon, MON_DATA_EXP, &expPoints); } - if (nextLevel > MAX_LEVEL || expPoints < gExperienceTables[gBaseStats[species].growthRate][nextLevel]) + if (nextLevel > MAX_LEVEL || expPoints < gExperienceTables[gSpeciesInfo[species].growthRate][nextLevel]) { return FALSE; } @@ -7835,7 +7835,7 @@ bool32 IsHMMove2(u16 move) bool8 IsMonSpriteNotFlipped(u16 species) { - return gBaseStats[species].noFlip; + return gSpeciesInfo[species].noFlip; } s8 GetMonFlavorRelation(struct Pokemon *mon, u8 flavor) @@ -7968,26 +7968,26 @@ void SetWildMonHeldItem(void) if (rnd < chanceNoItem) continue; if (rnd < chanceNotRare) - SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBaseStats[species].itemCommon); + SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gSpeciesInfo[species].itemCommon); else - SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBaseStats[species].itemRare); + SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gSpeciesInfo[species].itemRare); } } else { - if (gBaseStats[species].itemCommon == gBaseStats[species].itemRare && gBaseStats[species].itemCommon != ITEM_NONE) + if (gSpeciesInfo[species].itemCommon == gSpeciesInfo[species].itemRare && gSpeciesInfo[species].itemCommon != ITEM_NONE) { // Both held items are the same, 100% chance to hold item - SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBaseStats[species].itemCommon); + SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gSpeciesInfo[species].itemCommon); } else { if (rnd < chanceNoItem) continue; if (rnd < chanceNotRare) - SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBaseStats[species].itemCommon); + SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gSpeciesInfo[species].itemCommon); else - SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gBaseStats[species].itemRare); + SetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, &gSpeciesInfo[species].itemRare); } } } @@ -8621,7 +8621,7 @@ void TrySpecialOverworldEvo(void) bool32 ShouldShowFemaleDifferences(u16 species, u32 personality) { - return (gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE; + return (gSpeciesInfo[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && GetGenderFromSpeciesAndPersonality(species, personality) == MON_FEMALE; } void TryToSetBattleFormChangeMoves(struct Pokemon *mon) diff --git a/src/pokemon_debug.c b/src/pokemon_debug.c index 99db43540..2e9f04506 100644 --- a/src/pokemon_debug.c +++ b/src/pokemon_debug.c @@ -417,21 +417,21 @@ static void PrintInstructionsOnWindow(struct PokemonDebugMenu *data) FillWindowPixelBuffer(WIN_INSTRUCTIONS, 0x11); if (data->currentSubmenu == 0) { - if (gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) + if (gSpeciesInfo[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructionsGender, x, 0, 0, NULL); else AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructions, x, 0, 0, NULL); } else if (data->currentSubmenu == 1) { - if (gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) + if (gSpeciesInfo[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructionsSubmenuOneGender, x, 0, 0, NULL); else AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructionsSubmenuOne, x, 0, 0, NULL); } else if (data->currentSubmenu == 2) { - if (gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) + if (gSpeciesInfo[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructionsSubmenuTwoGender, x, 0, 0, NULL); else AddTextPrinterParameterized(WIN_INSTRUCTIONS, fontId, textInstructionsSubmenuTwo, x, 0, 0, NULL); @@ -485,7 +485,7 @@ static void PrintDigitChars(struct PokemonDebugMenu *data) text[i++] = CHAR_SPACE; text[i++] = CHAR_HYPHEN; - if (gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) + if (gSpeciesInfo[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) { if (data->isFemale) text[i++] = CHAR_FEMALE; @@ -688,14 +688,14 @@ static const struct CompressedSpritePalette *GetMonSpritePalStructCustom(u16 spe { if (isShiny) { - if ((gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && isFemale) + if ((gSpeciesInfo[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && isFemale) return &gMonShinyPaletteTableFemale[species]; else return &gMonShinyPaletteTable[species]; } else { - if ((gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && isFemale) + if ((gSpeciesInfo[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && isFemale) return &gMonPaletteTableFemale[species]; else return &gMonPaletteTable[species]; @@ -714,14 +714,14 @@ static void BattleLoadOpponentMonSpriteGfxCustom(u16 species, bool8 isFemale, bo if (isShiny) { - if ((gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && isFemale) + if ((gSpeciesInfo[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && isFemale) lzPaletteData = gMonShinyPaletteTableFemale[species].data; else lzPaletteData = gMonShinyPaletteTable[species].data; } else { - if ((gBaseStats[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && isFemale) + if ((gSpeciesInfo[species].flags & SPECIES_FLAG_GENDER_DIFFERENCE) && isFemale) lzPaletteData = gMonPaletteTableFemale[species].data; else lzPaletteData = gMonPaletteTable[species].data; @@ -1493,7 +1493,7 @@ static void Handle_Input_Debug_Pokemon(u8 taskId) ReloadPokemonSprites(data); ApplyOffsetSpriteValues(data); } - if (JOY_NEW(SELECT_BUTTON) && (gBaseStats[data->currentmonId].flags & SPECIES_FLAG_GENDER_DIFFERENCE)) + if (JOY_NEW(SELECT_BUTTON) && (gSpeciesInfo[data->currentmonId].flags & SPECIES_FLAG_GENDER_DIFFERENCE)) { data->isFemale = !data->isFemale; PrintDigitChars(data); diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 96eced57e..0e21d1e59 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -2713,8 +2713,8 @@ static void DrawExperienceProgressBar(struct Pokemon *unused) if (summary->level < MAX_LEVEL) { - u32 expBetweenLevels = gExperienceTables[gBaseStats[summary->species].growthRate][summary->level + 1] - gExperienceTables[gBaseStats[summary->species].growthRate][summary->level]; - u32 expSinceLastLevel = summary->exp - gExperienceTables[gBaseStats[summary->species].growthRate][summary->level]; + u32 expBetweenLevels = gExperienceTables[gSpeciesInfo[summary->species].growthRate][summary->level + 1] - gExperienceTables[gSpeciesInfo[summary->species].growthRate][summary->level]; + u32 expSinceLastLevel = summary->exp - gExperienceTables[gSpeciesInfo[summary->species].growthRate][summary->level]; // Calculate the number of 1-pixel "ticks" to illuminate in the experience progress bar. // There are 8 tiles that make up the bar, and each tile has 8 "ticks". Hence, the numerator @@ -3517,7 +3517,7 @@ static void PrintExpPointsNextLevel(void) PrintTextOnWindow(windowId, gStringVar1, x, 1, 0, 0); if (sum->level < MAX_LEVEL) - expToNextLevel = gExperienceTables[gBaseStats[sum->species].growthRate][sum->level + 1] - sum->exp; + expToNextLevel = gExperienceTables[gSpeciesInfo[sum->species].growthRate][sum->level + 1] - sum->exp; else expToNextLevel = 0; @@ -3902,10 +3902,10 @@ static void SetMonTypeIcons(void) } else { - SetTypeSpritePosAndPal(gBaseStats[summary->species].type1, 120, 48, SPRITE_ARR_ID_TYPE); - if (gBaseStats[summary->species].type1 != gBaseStats[summary->species].type2) + SetTypeSpritePosAndPal(gSpeciesInfo[summary->species].type1, 120, 48, SPRITE_ARR_ID_TYPE); + if (gSpeciesInfo[summary->species].type1 != gSpeciesInfo[summary->species].type2) { - SetTypeSpritePosAndPal(gBaseStats[summary->species].type2, 160, 48, SPRITE_ARR_ID_TYPE + 1); + SetTypeSpritePosAndPal(gSpeciesInfo[summary->species].type2, 160, 48, SPRITE_ARR_ID_TYPE + 1); SetSpriteInvisibility(SPRITE_ARR_ID_TYPE + 1, FALSE); } else diff --git a/src/rom_header_gf.c b/src/rom_header_gf.c index 558bfdb8c..118cc5e27 100644 --- a/src/rom_header_gf.c +++ b/src/rom_header_gf.c @@ -69,7 +69,7 @@ struct GFRomHeader u32 externalEventFlagsOffset; u32 externalEventDataOffset; u32 unk18; - const struct BaseStats * baseStats; + const struct SpeciesInfo * speciesInfo; const u8 (* abilityNames)[]; const u8 *const * abilityDescriptions; const struct Item * items; @@ -150,7 +150,7 @@ static const struct GFRomHeader sGFRomHeader = { .externalEventFlagsOffset = offsetof(struct SaveBlock1, externalEventFlags), .externalEventDataOffset = offsetof(struct SaveBlock1, externalEventData), .unk18 = 0x00000000, - .baseStats = gBaseStats, + .speciesInfo = gSpeciesInfo, .abilityNames = gAbilityNames, .abilityDescriptions = gAbilityDescriptionPointers, .items = gItems, diff --git a/src/secret_base.c b/src/secret_base.c index ea1999343..1a4a0ac9c 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -214,7 +214,7 @@ static const struct ListMenuTemplate sRegistryListMenuTemplate = .itemVerticalPadding = 0, .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NORMAL, - .cursorKind = 0, + .cursorKind = CURSOR_BLACK_ARROW, }; static void ClearSecretBase(struct SecretBase *secretBase) @@ -953,7 +953,7 @@ static void BuildRegistryMenuItems(u8 taskId) } sRegistryMenu->items[count].name = gText_Cancel; - sRegistryMenu->items[count].id = -2; + sRegistryMenu->items[count].id = LIST_CANCEL; tNumBases = count + 1; if (tNumBases < 8) tMaxShownItems = tNumBases; diff --git a/src/shop.c b/src/shop.c index b34bded84..d5e954635 100644 --- a/src/shop.c +++ b/src/shop.c @@ -216,7 +216,7 @@ static const struct ListMenuTemplate sShopBuyMenuListTemplate = .itemVerticalPadding = 0, .scrollMultiple = LIST_NO_MULTIPLE_SCROLL, .fontId = FONT_NARROW, - .cursorKind = 0 + .cursorKind = CURSOR_BLACK_ARROW }; static const struct BgTemplate sShopBuyMenuBgTemplates[] = diff --git a/src/start_menu.c b/src/start_menu.c index 8525813d3..3e5025f8f 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -1044,7 +1044,7 @@ static u8 SaveConfirmInputCallback(void) sSaveDialogCallback = SaveFileExistsCallback; return SAVE_IN_PROGRESS; } - case -1: // B Button + case MENU_B_PRESSED: case 1: // No HideSaveInfoWindow(); HideSaveMessageWindow(); @@ -1090,7 +1090,7 @@ static u8 SaveOverwriteInputCallback(void) case 0: // Yes sSaveDialogCallback = SaveSavingMessageCallback; return SAVE_IN_PROGRESS; - case -1: // B Button + case MENU_B_PRESSED: case 1: // No HideSaveInfoWindow(); HideSaveMessageWindow(); @@ -1209,7 +1209,7 @@ static u8 BattlePyramidRetireInputCallback(void) { case 0: // Yes return SAVE_CANCELED; - case -1: // B Button + case MENU_B_PRESSED: case 1: // No HideSaveMessageWindow(); return SAVE_SUCCESS; diff --git a/src/trade.c b/src/trade.c index 8ded41a1e..03a05681e 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1505,7 +1505,7 @@ static u8 CheckValidityOfTradeMons(u8 *aliveMons, u8 playerPartyCount, u8 player } // Can't trade specific species - if (gBaseStats[partnerSpecies].flags & SPECIES_FLAG_CANNOT_BE_TRADED) + if (gSpeciesInfo[partnerSpecies].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return PARTNER_MON_INVALID; // Partner cant trade Egg or non-Hoenn mon if player doesn't have National Dex @@ -2365,7 +2365,7 @@ static u32 CanTradeSelectedMon(struct Pokemon *playerParty, int partyCount, int } // Can't trade specific species - if (gBaseStats[species[monIdx]].flags & SPECIES_FLAG_CANNOT_BE_TRADED) + if (gSpeciesInfo[species[monIdx]].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return CANT_TRADE_INVALID_MON; // Make Eggs not count for numMonsLeft @@ -2461,7 +2461,7 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf return UR_TRADE_MSG_MON_CANT_BE_TRADED; // Can't trade specific species - if (gBaseStats[playerSpecies].flags & SPECIES_FLAG_CANNOT_BE_TRADED) + if (gSpeciesInfo[playerSpecies].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return UR_TRADE_MSG_MON_CANT_BE_TRADED; if (partnerSpecies == SPECIES_EGG) @@ -2473,8 +2473,8 @@ int GetUnionRoomTradeMessageId(struct RfuGameCompatibilityData player, struct Rf else { // Player's Pokémon must be of the type the partner requested - if (gBaseStats[playerSpecies2].type1 != requestedType - && gBaseStats[playerSpecies2].type2 != requestedType) + if (gSpeciesInfo[playerSpecies2].type1 != requestedType + && gSpeciesInfo[playerSpecies2].type2 != requestedType) return UR_TRADE_MSG_NOT_MON_PARTNER_WANTS; } @@ -2512,7 +2512,7 @@ int CanRegisterMonForTradingBoard(struct RfuGameCompatibilityData player, u16 sp return CANT_REGISTER_MON_NOW; // Can't trade specific species - if (gBaseStats[species].flags & SPECIES_FLAG_CANNOT_BE_TRADED) + if (gSpeciesInfo[species].flags & SPECIES_FLAG_CANNOT_BE_TRADED) return CANT_REGISTER_MON; if (hasNationalDex) diff --git a/src/trainer_hill.c b/src/trainer_hill.c index 206060f1b..ac73c3fae 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -924,7 +924,7 @@ u8 GetTrainerEncounterMusicIdInTrainerHill(u16 trainerId) static void SetTrainerHillMonLevel(struct Pokemon *mon, u8 level) { u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); - u32 exp = gExperienceTables[gBaseStats[species].growthRate][level]; + u32 exp = gExperienceTables[gSpeciesInfo[species].growthRate][level]; SetMonData(mon, MON_DATA_EXP, &exp); SetMonData(mon, MON_DATA_LEVEL, &level); diff --git a/src/union_room.c b/src/union_room.c index 5bc010a46..2a170e304 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -271,7 +271,7 @@ static void GetURoomActivityRejectMsg(u8 *, s32, u32); static u32 ConvPartnerUnameAndGetWhetherMetAlready(struct RfuPlayer *); static void GetURoomActivityStartMsg(u8 *, u8); static void UR_ClearBg0(void); -static s32 IsRequestedTypeOrEggInPlayerParty(u32, u32); +static s32 IsRequestedTradeInPlayerParty(u32, u32); static bool32 UR_PrintFieldMessage(const u8 *); static s32 GetChatLeaderActionRequestMessage(u8 *, u32, u16 *, struct WirelessLink_URoom *); static void Task_InitUnionRoom(u8 taskId); @@ -319,9 +319,9 @@ static void PrintPlayerNameAndIdOnWindow(u8 windowId) PrintUnionRoomText(windowId, FONT_NORMAL, text, 0, 17, UR_COLOR_DEFAULT); } -static void GetAwaitingCommunicationText(u8 *dst, u8 caseId) +static void GetAwaitingCommunicationText(u8 *dst, u8 activity) { - switch (caseId) + switch (activity) { case ACTIVITY_BATTLE_SINGLE: case ACTIVITY_BATTLE_DOUBLE: @@ -343,18 +343,18 @@ static void GetAwaitingCommunicationText(u8 *dst, u8 caseId) case ACTIVITY_CONTEST_TOUGH: // BUG: argument *dst isn't used, instead it always prints to gStringVar4 // not an issue in practice since Gamefreak never used any other arguments here besides gStringVar4 - #ifndef BUGFIX + #ifndef BUGFIX StringExpandPlaceholders(gStringVar4, sText_AwaitingCommunication); - #else + #else StringExpandPlaceholders(dst, sText_AwaitingCommunication); - #endif + #endif break; } } -static bool32 IsActivityWithVariableGroupSize(u32 caseId) +static bool32 IsActivityWithVariableGroupSize(u32 activity) { - switch (caseId) + switch (activity) { case ACTIVITY_POKEMON_JUMP: case ACTIVITY_BERRY_CRUSH: @@ -507,11 +507,11 @@ static void Task_TryBecomeLinkLeader(u8 taskId) // BUG: sPlayerActivityGroupSize was meant below, not gPlayerCurrActivity // This will be false for all but ACTIVITY_BATTLE_DOUBLE and ACTIVITY_DECLINE // All this changes is which of two texts gets printed - #ifdef BUGFIX + #ifdef BUGFIX id = (GROUP_MAX(sPlayerActivityGroupSize) == 2) ? 0 : 1; - #else + #else id = (GROUP_MAX(gPlayerCurrActivity) == 2) ? 1 : 0; - #endif + #endif if (PrintOnTextbox(&data->textState, sPlayerUnavailableTexts[id])) { data->playerCount = LeaderPrunePlayerList(data->playerList); @@ -559,6 +559,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId) { if (data->joinRequestAnswer == RFU_STATUS_JOIN_GROUP_OK) { + // Sent "OK" data->playerList->players[data->playerCount].newPlayerCountdown = 0; RedrawListMenu(data->listTaskId); data->playerCount++; @@ -596,6 +597,7 @@ static void Task_TryBecomeLinkLeader(u8 taskId) } else if (val == 2) { + // Disconnect RfuSetStatus(RFU_STATUS_OK, 0); data->state = LL_STATE_GET_AWAITING_PLAYERS_TEXT; } @@ -734,9 +736,9 @@ static void Leader_DestroyResources(struct WirelessLink_Leader *data) Free(data->incomingPlayerList); } -static void Leader_GetAcceptNewMemberPrompt(u8 *dst, u8 caseId) +static void Leader_GetAcceptNewMemberPrompt(u8 *dst, u8 activity) { - switch (caseId) + switch (activity) { case ACTIVITY_BATTLE_SINGLE: case ACTIVITY_BATTLE_DOUBLE: @@ -765,9 +767,9 @@ static void Leader_GetAcceptNewMemberPrompt(u8 *dst, u8 caseId) } } -static void GetYouDeclinedTheOfferMessage(u8 *dst, u8 caseId) +static void GetYouDeclinedTheOfferMessage(u8 *dst, u8 activity) { - switch (caseId) + switch (activity) { case ACTIVITY_BATTLE_SINGLE | IN_UNION_ROOM: case ACTIVITY_TRADE | IN_UNION_ROOM: @@ -780,9 +782,9 @@ static void GetYouDeclinedTheOfferMessage(u8 *dst, u8 caseId) } } -static void GetYouAskedToJoinGroupPleaseWaitMessage(u8 *dst, u8 caseId) +static void GetYouAskedToJoinGroupPleaseWaitMessage(u8 *dst, u8 activity) { - switch (caseId) + switch (activity) { case ACTIVITY_BATTLE_SINGLE: case ACTIVITY_BATTLE_DOUBLE: @@ -809,9 +811,9 @@ static void GetYouAskedToJoinGroupPleaseWaitMessage(u8 *dst, u8 caseId) } } -static void GetGroupLeaderSentAnOKMessage(u8 *dst, u8 caseId) +static void GetGroupLeaderSentAnOKMessage(u8 *dst, u8 activity) { - switch (caseId) + switch (activity) { case ACTIVITY_BATTLE_SINGLE: case ACTIVITY_BATTLE_DOUBLE: @@ -1039,7 +1041,7 @@ static void Task_TryJoinLinkGroup(u8 taskId) break; case 0: id = ListMenu_ProcessInput(data->listTaskId); - if (JOY_NEW(A_BUTTON) && id != MENU_B_PRESSED) + if (JOY_NEW(A_BUTTON) && id != LIST_NOTHING_CHOSEN) { // this unused variable along with the assignment is needed to match u32 activity = data->playerList->players[id].rfu.data.activity; @@ -1469,9 +1471,7 @@ static void Task_CreateTradeMenu(u8 taskId) u8 CreateTask_CreateTradeMenu(void) { - u8 taskId = CreateTask(Task_CreateTradeMenu, 0); - - return taskId; + return CreateTask(Task_CreateTradeMenu, 0); } static void Task_StartUnionRoomTrade(u8 taskId) @@ -2147,11 +2147,10 @@ static void Task_CardOrNewsWithFriend(u8 taskId) break; case 0: id = ListMenu_ProcessInput(data->listTaskId); - if (JOY_NEW(A_BUTTON) && id != -1) + if (JOY_NEW(A_BUTTON) && id != LIST_NOTHING_CHOSEN) { // this unused variable along with the assignment is needed to match - u32 unusedVar; - unusedVar = data->playerList->players[id].rfu.data.activity; + u32 activity = data->playerList->players[id].rfu.data.activity; if (data->playerList->players[id].groupScheduledAnim == UNION_ROOM_SPAWN_IN && !data->playerList->players[id].rfu.data.startedActivity) { @@ -2504,7 +2503,7 @@ static void Task_RunUnionRoom(u8 taskId) break; case UR_STATE_INIT_OBJECTS: CreateUnionRoomPlayerSprites(uroom->spriteIds, taskData[0]); - if (++taskData[0] == 8) + if (++taskData[0] == MAX_UNION_ROOM_LEADERS) uroom->state = UR_STATE_INIT_LINK; break; case UR_STATE_INIT_LINK: @@ -2711,7 +2710,7 @@ static void Task_RunUnionRoom(u8 taskId) &uroom->topListMenuId, &sWindowTemplate_InviteToActivity, &sListMenuTemplate_InviteToActivity); - if (input != -1) + if (input != LIST_NOTHING_CHOSEN) { if (!gReceivedRemoteLinkPlayers) { @@ -2721,7 +2720,7 @@ static void Task_RunUnionRoom(u8 taskId) { uroom->partnerYesNoResponse = 0; playerGender = GetUnionRoomPlayerGender(taskData[1], uroom->playerList); - if (input == -2 || input == IN_UNION_ROOM) + if (input == LIST_CANCEL || input == IN_UNION_ROOM) { uroom->playerSendBuffer[0] = IN_UNION_ROOM; Rfu_SendPacket(uroom->playerSendBuffer); @@ -3068,9 +3067,9 @@ static void Task_RunUnionRoom(u8 taskId) &uroom->tradeBoardHeaderWindowId, &sWindowTemplate_RegisterForTrade, &sListMenuTemplate_RegisterForTrade); - if (input != -1) + if (input != LIST_NOTHING_CHOSEN) { - if (input == -2 || input == 3) + if (input == LIST_CANCEL || input == 3) // Exit { uroom->state = UR_STATE_MAIN; HandleCancelActivity(TRUE); @@ -3090,7 +3089,7 @@ static void Task_RunUnionRoom(u8 taskId) } break; case UR_STATE_REGISTER_SELECT_MON_FADE: - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); uroom->state = UR_STATE_REGISTER_SELECT_MON; break; case UR_STATE_REGISTER_SELECT_MON: @@ -3107,11 +3106,11 @@ static void Task_RunUnionRoom(u8 taskId) &uroom->tradeBoardHeaderWindowId, &sWindowTemplate_TradingBoardRequestType, &sMenuTemplate_TradingBoardRequestType); - if (input != -1) + if (input != LIST_NOTHING_CHOSEN) { switch (input) { - case -2: + case LIST_CANCEL: case NUMBER_OF_MON_TYPES: // Exit ResetUnionRoomTrade(&sUnionRoomTrade); SetTradeBoardRegisteredMonInfo(TYPE_NORMAL, SPECIES_NONE, 0); @@ -3166,18 +3165,18 @@ static void Task_RunUnionRoom(u8 taskId) &sWindowTemplate_TradingBoardMain, &sTradeBoardListMenuTemplate, uroom->playerList); - if (input != -1) + if (input != LIST_NOTHING_CHOSEN) { switch (input) { - case -2: + case LIST_CANCEL: case 8: // EXIT HandleCancelActivity(TRUE); uroom->state = UR_STATE_MAIN; break; default: UR_ClearBg0(); - switch (IsRequestedTypeOrEggInPlayerParty(uroom->playerList->players[input].rfu.data.tradeType, uroom->playerList->players[input].rfu.data.tradeSpecies)) + switch (IsRequestedTradeInPlayerParty(uroom->playerList->players[input].rfu.data.tradeType, uroom->playerList->players[input].rfu.data.tradeSpecies)) { case UR_TRADE_MATCH: CopyAndTranslatePlayerName(gStringVar1, &uroom->playerList->players[input]); @@ -3707,12 +3706,12 @@ static s32 ListMenuHandler_AllItemsAvailable(u8 *state, u8 *windowId, u8 *listMe ClearStdWindowAndFrame(*windowId, TRUE); RemoveWindow(*windowId); *state = 0; - return -2; + return LIST_CANCEL; } break; } - return -1; + return LIST_NOTHING_CHOSEN; } static s32 TradeBoardMenuHandler(u8 *state, u8 *mainWindowId, u8 *listMenuId, u8 *headerWindowId, @@ -3742,13 +3741,14 @@ static s32 TradeBoardMenuHandler(u8 *state, u8 *mainWindowId, u8 *listMenuId, u8 input = ListMenu_ProcessInput(*listMenuId); if (JOY_NEW(A_BUTTON | B_BUTTON)) { + // Exit or B button if (input == 8 || JOY_NEW(B_BUTTON)) { DestroyListMenuTask(*listMenuId, NULL, NULL); RemoveWindow(*mainWindowId); DeleteTradeBoardWindow(*headerWindowId); *state = 0; - return -2; + return LIST_CANCEL; } else { @@ -3770,7 +3770,7 @@ static s32 TradeBoardMenuHandler(u8 *state, u8 *mainWindowId, u8 *listMenuId, u8 break; } - return -1; + return LIST_NOTHING_CHOSEN; } static void UR_ClearBg0(void) @@ -4090,7 +4090,7 @@ static s32 UnionRoomGetPlayerInteractionResponse(struct RfuPlayerList *list, boo } } -void ItemPrintFunc_EmptyList(u8 windowId, u32 itemId, u8 y) +static void ItemPrintFunc_EmptyList(u8 windowId, u32 itemId, u8 y) { } @@ -4120,7 +4120,7 @@ static void TradeBoardListMenuItemPrintFunc(u8 windowId, u32 itemId, u8 y) struct WirelessLink_Leader *leader = sWirelessLinkMain.leader; struct RfuGameData *gameData; s32 i, j; - u8 playerName[11]; + u8 playerName[RFU_USER_NAME_LENGTH + 1]; if (itemId == LIST_HEADER && y == sTradeBoardListMenuTemplate.upText_Y) { @@ -4168,7 +4168,7 @@ static s32 GetUnionRoomPlayerGender(s32 playerIdx, struct RfuPlayerList *list) return list->players[playerIdx].rfu.data.playerGender; } -static s32 IsRequestedTypeOrEggInPlayerParty(u32 type, u32 species) +static s32 IsRequestedTradeInPlayerParty(u32 type, u32 species) { s32 i; @@ -4187,7 +4187,7 @@ static s32 IsRequestedTypeOrEggInPlayerParty(u32 type, u32 species) for (i = 0; i < gPlayerPartyCount; i++) { species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); - if (gBaseStats[species].type1 == type || gBaseStats[species].type2 == type) + if (gSpeciesInfo[species].type1 == type || gSpeciesInfo[species].type2 == type) return UR_TRADE_MATCH; } return UR_TRADE_NOTYPE; diff --git a/src/union_room_chat.c b/src/union_room_chat.c index e1ca7c0b0..eb902fbe6 100755 --- a/src/union_room_chat.c +++ b/src/union_room_chat.c @@ -1171,7 +1171,7 @@ static void Chat_AskQuitChatting(void) input = ProcessMenuInput(); switch (input) { - case -1: + case MENU_B_PRESSED: case 1: StartDisplaySubtask(CHATDISPLAY_FUNC_DESTROY_YESNO, 0); sChat->funcState = 3; @@ -1210,7 +1210,7 @@ static void Chat_AskQuitChatting(void) input = ProcessMenuInput(); switch (input) { - case -1: + case MENU_B_PRESSED: case 1: StartDisplaySubtask(CHATDISPLAY_FUNC_DESTROY_YESNO, 0); sChat->funcState = 3; @@ -1512,7 +1512,7 @@ static void Chat_SaveAndExit(void) input = ProcessMenuInput(); switch (input) { - case -1: + case MENU_B_PRESSED: case 1: sChat->funcState = 12; break; @@ -1537,7 +1537,7 @@ static void Chat_SaveAndExit(void) input = ProcessMenuInput(); switch (input) { - case -1: + case MENU_B_PRESSED: case 1: sChat->funcState = 12; break; diff --git a/src/union_room_player_avatar.c b/src/union_room_player_avatar.c index 0eed65a63..31f535310 100644 --- a/src/union_room_player_avatar.c +++ b/src/union_room_player_avatar.c @@ -340,15 +340,10 @@ static void AnimateUnionRoomPlayer(u32 leaderId, struct UnionRoomObject * object } break; case 1: - if (object->schedAnim == UNION_ROOM_SPAWN_OUT) - { - object->state = 3; - object->animState = 0; - } - else - { + if (object->schedAnim != UNION_ROOM_SPAWN_OUT) break; - } + object->state = 3; + object->animState = 0; // fallthrough case 3: if (AnimateUnionRoomPlayerDespawn(&object->animState, leaderId, object) == 1) diff --git a/src/wild_encounter.c b/src/wild_encounter.c index 596feeb57..fe6af5a20 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -433,7 +433,7 @@ static void CreateWildMon(u16 species, u8 level) ZeroEnemyPartyMons(); checkCuteCharm = TRUE; - switch (gBaseStats[species].genderRatio) + switch (gSpeciesInfo[species].genderRatio) { case MON_MALE: case MON_FEMALE: @@ -1030,7 +1030,7 @@ static bool8 TryGetRandomWildMonIndexByType(const struct WildPokemon *wildMon, u for (validMonCount = 0, i = 0; i < numMon; i++) { - if (gBaseStats[wildMon[i].species].type1 == type || gBaseStats[wildMon[i].species].type2 == type) + if (gSpeciesInfo[wildMon[i].species].type1 == type || gSpeciesInfo[wildMon[i].species].type2 == type) validIndexes[validMonCount++] = i; } diff --git a/src/wireless_communication_status_screen.c b/src/wireless_communication_status_screen.c index 40e4bb84d..d18df8bc7 100644 --- a/src/wireless_communication_status_screen.c +++ b/src/wireless_communication_status_screen.c @@ -18,6 +18,7 @@ #include "union_room.h" #include "constants/songs.h" #include "constants/union_room.h" +#include "constants/rgb.h" enum { COLORMODE_NORMAL, @@ -51,9 +52,26 @@ static void Task_WirelessCommunicationScreen(u8); static void WCSS_AddTextPrinterParameterized(u8, u8, const u8 *, u8, u8, u8); static bool32 UpdateCommunicationCounts(u32 *, u32 *, u32 *, u8); -static const u16 sBgTiles_Pal[] = INCBIN_U16("graphics/link/wireless_info_screen.gbapal"); -static const u32 sBgTiles_Gfx[] = INCBIN_U32("graphics/link/wireless_info_screen.4bpp.lz"); -static const u32 sBgTiles_Tilemap[] = INCBIN_U32("graphics/link/wireless_info_screen.bin.lz"); +static const u16 sPalettes[][16] = { + INCBIN_U16("graphics/wireless_status_screen/default.gbapal"), + {}, // All black. Never read + INCBIN_U16("graphics/wireless_status_screen/anim_00.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_01.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_02.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_03.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_04.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_05.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_06.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_07.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_08.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_09.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_10.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_11.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_12.gbapal"), + INCBIN_U16("graphics/wireless_status_screen/anim_13.gbapal") +}; +static const u32 sBgTiles_Gfx[] = INCBIN_U32("graphics/wireless_status_screen/bg.4bpp.lz"); +static const u32 sBgTiles_Tilemap[] = INCBIN_U32("graphics/wireless_status_screen/bg.bin.lz"); static const struct BgTemplate sBgTemplates[] = { { @@ -193,7 +211,7 @@ static void CB2_InitWirelessCommunicationScreen(void) ChangeBgY(0, 0, BG_COORD_SET); ChangeBgX(1, 0, BG_COORD_SET); ChangeBgY(1, 0, BG_COORD_SET); - LoadPalette(sBgTiles_Pal, 0x00, 0x20); + LoadPalette(sPalettes, 0x00, 0x20); Menu_LoadStdPalAt(0xF0); DynamicPlaceholderTextUtil_Reset(); FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0x0F); @@ -218,16 +236,19 @@ static void CB2_ExitWirelessCommunicationStatusScreen(void) SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } -static void WCSS_CyclePalette(s16 * counter, s16 * palIdx) +// Cycle through palettes that relocate various shades of blue to create the wave effect at the bottom of the screen. +static void CyclePalette(s16 * counter, s16 * palIdx) { + s32 idx; if (++(*counter) > 5) { - if (++(*palIdx) == 14) + if (++(*palIdx) == (int)ARRAY_COUNT(sPalettes) - 2) *palIdx = 0; *counter = 0; } - LoadPalette(sBgTiles_Pal + 16 * (*palIdx + 2), 0, 0x10); + idx = *palIdx + 2; // +2 skips over default.pal and the empty black palette after it + LoadPalette(sPalettes[idx], 0, 16); } static void PrintHeaderTexts(void) @@ -236,12 +257,17 @@ static void PrintHeaderTexts(void) FillWindowPixelBuffer(0, PIXEL_FILL(0)); FillWindowPixelBuffer(1, PIXEL_FILL(0)); FillWindowPixelBuffer(2, PIXEL_FILL(0)); + + // Print title WCSS_AddTextPrinterParameterized(0, FONT_NORMAL, sHeaderTexts[0], GetStringCenterAlignXOffset(FONT_NORMAL, sHeaderTexts[0], 0xC0), 6, COLORMODE_GREEN); - for (i = 0; i < (int)ARRAY_COUNT(*sHeaderTexts) - 1; i++) - { + + // Print label for each group (excluding total) + for (i = 0; i < NUM_GROUPTYPES - 1; i++) WCSS_AddTextPrinterParameterized(1, FONT_NORMAL, sHeaderTexts[i + 1], 0, 30 * i + 8, COLORMODE_WHITE_LGRAY); - } + + // Print label for total WCSS_AddTextPrinterParameterized(1, FONT_NORMAL, sHeaderTexts[i + 1], 0, 30 * i + 8, COLORMODE_RED); + PutWindowTilemap(0); CopyWindowToVram(0, COPYWIN_GFX); PutWindowTilemap(1); @@ -260,7 +286,7 @@ static void Task_WirelessCommunicationScreen(u8 taskId) gTasks[taskId].tState++; break; case 1: - BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, 0); + BeginNormalPaletteFade(PALETTES_ALL, 0, 16, 0, RGB_BLACK); ShowBg(1); CopyBgTilemapBufferToVram(0); ShowBg(0); @@ -268,9 +294,7 @@ static void Task_WirelessCommunicationScreen(u8 taskId) break; case 2: if (!gPaletteFade.active) - { gTasks[taskId].tState++; - } break; case 3: if (UpdateCommunicationCounts(sStatusScreen->groupCounts, sStatusScreen->prevGroupCounts, sStatusScreen->activities, sStatusScreen->rfuTaskId)) @@ -293,10 +317,10 @@ static void Task_WirelessCommunicationScreen(u8 taskId) gTasks[sStatusScreen->rfuTaskId].data[15] = 0xFF; gTasks[taskId].tState++; } - WCSS_CyclePalette(&gTasks[taskId].data[7], &gTasks[taskId].data[8]); + CyclePalette(&gTasks[taskId].data[7], &gTasks[taskId].data[8]); break; case 4: - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, 0); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); gTasks[taskId].tState++; break; case 5: